jdk/src/java.desktop/share/classes/sun/font/ScriptRunData.java
changeset 25859 3317bb8137f4
parent 5506 202f599c92aa
child 26037 508779ce6619
equal deleted inserted replaced
25858:836adbf7a2cd 25859:3317bb8137f4
       
     1 /*
       
     2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     3  *
       
     4  * This code is free software; you can redistribute it and/or modify it
       
     5  * under the terms of the GNU General Public License version 2 only, as
       
     6  * published by the Free Software Foundation.  Oracle designates this
       
     7  * particular file as subject to the "Classpath" exception as provided
       
     8  * by Oracle in the LICENSE file that accompanied this code.
       
     9  *
       
    10  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    13  * version 2 for more details (a copy is included in the LICENSE file that
       
    14  * accompanied this code).
       
    15  *
       
    16  * You should have received a copy of the GNU General Public License version
       
    17  * 2 along with this work; if not, write to the Free Software Foundation,
       
    18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    19  *
       
    20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    21  * or visit www.oracle.com if you need additional information or have any
       
    22  * questions.
       
    23  *
       
    24  */
       
    25 
       
    26 /*
       
    27  *******************************************************************************
       
    28  * Copyright (C) 2003, International Business Machines Corporation and         *
       
    29  * others. All Rights Reserved.                                                *
       
    30  *******************************************************************************
       
    31  */
       
    32 
       
    33 package sun.font;
       
    34 
       
    35 public final class ScriptRunData {
       
    36     private ScriptRunData() {}
       
    37 
       
    38     private static final int CHAR_START = 0;
       
    39     private static final int CHAR_LIMIT = 0x110000;
       
    40 
       
    41     private static int cache = 0;
       
    42     public static final int getScript(int cp) {
       
    43         // optimize for runs of characters in the same script
       
    44         if (cp >= data[cache] && cp < data[cache+2]) {
       
    45             return data[cache+1];
       
    46         }
       
    47         if (cp >= CHAR_START & cp < CHAR_LIMIT) {
       
    48             int probe = dataPower;
       
    49             int index = 0;
       
    50 
       
    51             if (cp >= data[dataExtra]) {
       
    52                 index = dataExtra;
       
    53             }
       
    54 
       
    55             while (probe > 2) {
       
    56                 probe >>= 1;
       
    57                 if (cp >= data[index + probe]) {
       
    58                     index += probe;
       
    59                 }
       
    60             }
       
    61 
       
    62             cache = index;
       
    63             return data[index+1];
       
    64         }
       
    65 
       
    66         throw new IllegalArgumentException(Integer.toString(cp));
       
    67     }
       
    68 
       
    69     private static final int[] data = {
       
    70         0x000000, 0x00,
       
    71         0x000041, 0x19, // 'latn' latin
       
    72         0x00005B, 0x00,
       
    73         0x000061, 0x19, // 'latn' latin
       
    74         0x00007B, 0x00,
       
    75         0x0000AA, 0x19, // 'latn' latin
       
    76         0x0000AB, 0x00,
       
    77         0x0000B5, 0x0E, // 'grek' greek
       
    78         0x0000B6, 0x00,
       
    79         0x0000BA, 0x19, // 'latn' latin
       
    80         0x0000BB, 0x00,
       
    81         0x0000C0, 0x19, // 'latn' latin
       
    82         0x0000D7, 0x00,
       
    83         0x0000D8, 0x19, // 'latn' latin
       
    84         0x0000F7, 0x00,
       
    85         0x0000F8, 0x19, // 'latn' latin
       
    86         0x000221, 0x00,
       
    87         0x000222, 0x19, // 'latn' latin
       
    88         0x000234, 0x00,
       
    89         0x000250, 0x19, // 'latn' latin
       
    90         0x0002AE, 0x00,
       
    91         0x0002B0, 0x19, // 'latn' latin
       
    92         0x0002B9, 0x00,
       
    93         0x0002E0, 0x19, // 'latn' latin
       
    94         0x0002E5, 0x00,
       
    95         0x000300, 0x01, // 'qaai' inherited
       
    96         0x000350, 0x00,
       
    97         0x000360, 0x01, // 'qaai' inherited
       
    98         0x000370, 0x00,
       
    99         0x00037A, 0x0E, // 'grek' greek
       
   100         0x00037B, 0x00,
       
   101         0x000386, 0x0E, // 'grek' greek
       
   102         0x000387, 0x00,
       
   103         0x000388, 0x0E, // 'grek' greek
       
   104         0x00038B, 0x00,
       
   105         0x00038C, 0x0E, // 'grek' greek
       
   106         0x00038D, 0x00,
       
   107         0x00038E, 0x0E, // 'grek' greek
       
   108         0x0003A2, 0x00,
       
   109         0x0003A3, 0x0E, // 'grek' greek
       
   110         0x0003CF, 0x00,
       
   111         0x0003D0, 0x0E, // 'grek' greek
       
   112         0x0003F6, 0x00,
       
   113         0x000400, 0x08, // 'cyrl' cyrillic
       
   114         0x000482, 0x00,
       
   115         0x000483, 0x08, // 'cyrl' cyrillic
       
   116         0x000487, 0x00,
       
   117         0x000488, 0x01, // 'qaai' inherited
       
   118         0x00048A, 0x08, // 'cyrl' cyrillic
       
   119         0x0004CF, 0x00,
       
   120         0x0004D0, 0x08, // 'cyrl' cyrillic
       
   121         0x0004F6, 0x00,
       
   122         0x0004F8, 0x08, // 'cyrl' cyrillic
       
   123         0x0004FA, 0x00,
       
   124         0x000500, 0x08, // 'cyrl' cyrillic
       
   125         0x000510, 0x00,
       
   126         0x000531, 0x03, // 'armn' armenian
       
   127         0x000557, 0x00,
       
   128         0x000559, 0x03, // 'armn' armenian
       
   129         0x00055A, 0x00,
       
   130         0x000561, 0x03, // 'armn' armenian
       
   131         0x000588, 0x00,
       
   132         0x000591, 0x01, // 'qaai' inherited
       
   133         0x0005A2, 0x00,
       
   134         0x0005A3, 0x01, // 'qaai' inherited
       
   135         0x0005BA, 0x00,
       
   136         0x0005BB, 0x01, // 'qaai' inherited
       
   137         0x0005BE, 0x00,
       
   138         0x0005BF, 0x01, // 'qaai' inherited
       
   139         0x0005C0, 0x00,
       
   140         0x0005C1, 0x01, // 'qaai' inherited
       
   141         0x0005C3, 0x00,
       
   142         0x0005C4, 0x01, // 'qaai' inherited
       
   143         0x0005C5, 0x00,
       
   144         0x0005D0, 0x13, // 'hebr' hebrew
       
   145         0x0005EB, 0x00,
       
   146         0x0005F0, 0x13, // 'hebr' hebrew
       
   147         0x0005F3, 0x00,
       
   148         0x000621, 0x02, // 'arab' arabic
       
   149         0x00063B, 0x00,
       
   150         0x000641, 0x02, // 'arab' arabic
       
   151         0x00064B, 0x01, // 'qaai' inherited
       
   152         0x000656, 0x00,
       
   153         0x00066E, 0x02, // 'arab' arabic
       
   154         0x000670, 0x01, // 'qaai' inherited
       
   155         0x000671, 0x02, // 'arab' arabic
       
   156         0x0006D4, 0x00,
       
   157         0x0006D5, 0x02, // 'arab' arabic
       
   158         0x0006D6, 0x01, // 'qaai' inherited
       
   159         0x0006E5, 0x02, // 'arab' arabic
       
   160         0x0006E7, 0x01, // 'qaai' inherited
       
   161         0x0006E9, 0x00,
       
   162         0x0006EA, 0x01, // 'qaai' inherited
       
   163         0x0006EE, 0x00,
       
   164         0x0006FA, 0x02, // 'arab' arabic
       
   165         0x0006FD, 0x00,
       
   166         0x000710, 0x22, // 'syrc' syriac
       
   167         0x00072D, 0x00,
       
   168         0x000730, 0x22, // 'syrc' syriac
       
   169         0x00074B, 0x00,
       
   170         0x000780, 0x25, // 'thaa' thaana
       
   171         0x0007B2, 0x00,
       
   172         0x000901, 0x0A, // 'deva' devanagari
       
   173         0x000904, 0x00,
       
   174         0x000905, 0x0A, // 'deva' devanagari
       
   175         0x00093A, 0x00,
       
   176         0x00093C, 0x0A, // 'deva' devanagari
       
   177         0x00094E, 0x00,
       
   178         0x000950, 0x0A, // 'deva' devanagari
       
   179         0x000955, 0x00,
       
   180         0x000958, 0x0A, // 'deva' devanagari
       
   181         0x000964, 0x00,
       
   182         0x000966, 0x0A, // 'deva' devanagari
       
   183         0x000970, 0x00,
       
   184         0x000981, 0x04, // 'beng' bengali
       
   185         0x000984, 0x00,
       
   186         0x000985, 0x04, // 'beng' bengali
       
   187         0x00098D, 0x00,
       
   188         0x00098F, 0x04, // 'beng' bengali
       
   189         0x000991, 0x00,
       
   190         0x000993, 0x04, // 'beng' bengali
       
   191         0x0009A9, 0x00,
       
   192         0x0009AA, 0x04, // 'beng' bengali
       
   193         0x0009B1, 0x00,
       
   194         0x0009B2, 0x04, // 'beng' bengali
       
   195         0x0009B3, 0x00,
       
   196         0x0009B6, 0x04, // 'beng' bengali
       
   197         0x0009BA, 0x00,
       
   198         0x0009BC, 0x04, // 'beng' bengali
       
   199         0x0009BD, 0x00,
       
   200         0x0009BE, 0x04, // 'beng' bengali
       
   201         0x0009C5, 0x00,
       
   202         0x0009C7, 0x04, // 'beng' bengali
       
   203         0x0009C9, 0x00,
       
   204         0x0009CB, 0x04, // 'beng' bengali
       
   205         0x0009CE, 0x00,
       
   206         0x0009D7, 0x04, // 'beng' bengali
       
   207         0x0009D8, 0x00,
       
   208         0x0009DC, 0x04, // 'beng' bengali
       
   209         0x0009DE, 0x00,
       
   210         0x0009DF, 0x04, // 'beng' bengali
       
   211         0x0009E4, 0x00,
       
   212         0x0009E6, 0x04, // 'beng' bengali
       
   213         0x0009F2, 0x00,
       
   214         0x000A02, 0x10, // 'guru' gurmukhi
       
   215         0x000A03, 0x00,
       
   216         0x000A05, 0x10, // 'guru' gurmukhi
       
   217         0x000A0B, 0x00,
       
   218         0x000A0F, 0x10, // 'guru' gurmukhi
       
   219         0x000A11, 0x00,
       
   220         0x000A13, 0x10, // 'guru' gurmukhi
       
   221         0x000A29, 0x00,
       
   222         0x000A2A, 0x10, // 'guru' gurmukhi
       
   223         0x000A31, 0x00,
       
   224         0x000A32, 0x10, // 'guru' gurmukhi
       
   225         0x000A34, 0x00,
       
   226         0x000A35, 0x10, // 'guru' gurmukhi
       
   227         0x000A37, 0x00,
       
   228         0x000A38, 0x10, // 'guru' gurmukhi
       
   229         0x000A3A, 0x00,
       
   230         0x000A3C, 0x10, // 'guru' gurmukhi
       
   231         0x000A3D, 0x00,
       
   232         0x000A3E, 0x10, // 'guru' gurmukhi
       
   233         0x000A43, 0x00,
       
   234         0x000A47, 0x10, // 'guru' gurmukhi
       
   235         0x000A49, 0x00,
       
   236         0x000A4B, 0x10, // 'guru' gurmukhi
       
   237         0x000A4E, 0x00,
       
   238         0x000A59, 0x10, // 'guru' gurmukhi
       
   239         0x000A5D, 0x00,
       
   240         0x000A5E, 0x10, // 'guru' gurmukhi
       
   241         0x000A5F, 0x00,
       
   242         0x000A66, 0x10, // 'guru' gurmukhi
       
   243         0x000A75, 0x00,
       
   244         0x000A81, 0x0F, // 'gujr' gujarati
       
   245         0x000A84, 0x00,
       
   246         0x000A85, 0x0F, // 'gujr' gujarati
       
   247         0x000A8C, 0x00,
       
   248         0x000A8D, 0x0F, // 'gujr' gujarati
       
   249         0x000A8E, 0x00,
       
   250         0x000A8F, 0x0F, // 'gujr' gujarati
       
   251         0x000A92, 0x00,
       
   252         0x000A93, 0x0F, // 'gujr' gujarati
       
   253         0x000AA9, 0x00,
       
   254         0x000AAA, 0x0F, // 'gujr' gujarati
       
   255         0x000AB1, 0x00,
       
   256         0x000AB2, 0x0F, // 'gujr' gujarati
       
   257         0x000AB4, 0x00,
       
   258         0x000AB5, 0x0F, // 'gujr' gujarati
       
   259         0x000ABA, 0x00,
       
   260         0x000ABC, 0x0F, // 'gujr' gujarati
       
   261         0x000AC6, 0x00,
       
   262         0x000AC7, 0x0F, // 'gujr' gujarati
       
   263         0x000ACA, 0x00,
       
   264         0x000ACB, 0x0F, // 'gujr' gujarati
       
   265         0x000ACE, 0x00,
       
   266         0x000AD0, 0x0F, // 'gujr' gujarati
       
   267         0x000AD1, 0x00,
       
   268         0x000AE0, 0x0F, // 'gujr' gujarati
       
   269         0x000AE1, 0x00,
       
   270         0x000AE6, 0x0F, // 'gujr' gujarati
       
   271         0x000AF0, 0x00,
       
   272         0x000B01, 0x1F, // 'orya' oriya
       
   273         0x000B04, 0x00,
       
   274         0x000B05, 0x1F, // 'orya' oriya
       
   275         0x000B0D, 0x00,
       
   276         0x000B0F, 0x1F, // 'orya' oriya
       
   277         0x000B11, 0x00,
       
   278         0x000B13, 0x1F, // 'orya' oriya
       
   279         0x000B29, 0x00,
       
   280         0x000B2A, 0x1F, // 'orya' oriya
       
   281         0x000B31, 0x00,
       
   282         0x000B32, 0x1F, // 'orya' oriya
       
   283         0x000B34, 0x00,
       
   284         0x000B36, 0x1F, // 'orya' oriya
       
   285         0x000B3A, 0x00,
       
   286         0x000B3C, 0x1F, // 'orya' oriya
       
   287         0x000B44, 0x00,
       
   288         0x000B47, 0x1F, // 'orya' oriya
       
   289         0x000B49, 0x00,
       
   290         0x000B4B, 0x1F, // 'orya' oriya
       
   291         0x000B4E, 0x00,
       
   292         0x000B56, 0x1F, // 'orya' oriya
       
   293         0x000B58, 0x00,
       
   294         0x000B5C, 0x1F, // 'orya' oriya
       
   295         0x000B5E, 0x00,
       
   296         0x000B5F, 0x1F, // 'orya' oriya
       
   297         0x000B62, 0x00,
       
   298         0x000B66, 0x1F, // 'orya' oriya
       
   299         0x000B70, 0x00,
       
   300         0x000B82, 0x23, // 'taml' tamil
       
   301         0x000B84, 0x00,
       
   302         0x000B85, 0x23, // 'taml' tamil
       
   303         0x000B8B, 0x00,
       
   304         0x000B8E, 0x23, // 'taml' tamil
       
   305         0x000B91, 0x00,
       
   306         0x000B92, 0x23, // 'taml' tamil
       
   307         0x000B96, 0x00,
       
   308         0x000B99, 0x23, // 'taml' tamil
       
   309         0x000B9B, 0x00,
       
   310         0x000B9C, 0x23, // 'taml' tamil
       
   311         0x000B9D, 0x00,
       
   312         0x000B9E, 0x23, // 'taml' tamil
       
   313         0x000BA0, 0x00,
       
   314         0x000BA3, 0x23, // 'taml' tamil
       
   315         0x000BA5, 0x00,
       
   316         0x000BA8, 0x23, // 'taml' tamil
       
   317         0x000BAB, 0x00,
       
   318         0x000BAE, 0x23, // 'taml' tamil
       
   319         0x000BB6, 0x00,
       
   320         0x000BB7, 0x23, // 'taml' tamil
       
   321         0x000BBA, 0x00,
       
   322         0x000BBE, 0x23, // 'taml' tamil
       
   323         0x000BC3, 0x00,
       
   324         0x000BC6, 0x23, // 'taml' tamil
       
   325         0x000BC9, 0x00,
       
   326         0x000BCA, 0x23, // 'taml' tamil
       
   327         0x000BCE, 0x00,
       
   328         0x000BD7, 0x23, // 'taml' tamil
       
   329         0x000BD8, 0x00,
       
   330         0x000BE7, 0x23, // 'taml' tamil
       
   331         0x000BF3, 0x00,
       
   332         0x000C01, 0x24, // 'telu' telugu
       
   333         0x000C04, 0x00,
       
   334         0x000C05, 0x24, // 'telu' telugu
       
   335         0x000C0D, 0x00,
       
   336         0x000C0E, 0x24, // 'telu' telugu
       
   337         0x000C11, 0x00,
       
   338         0x000C12, 0x24, // 'telu' telugu
       
   339         0x000C29, 0x00,
       
   340         0x000C2A, 0x24, // 'telu' telugu
       
   341         0x000C34, 0x00,
       
   342         0x000C35, 0x24, // 'telu' telugu
       
   343         0x000C3A, 0x00,
       
   344         0x000C3E, 0x24, // 'telu' telugu
       
   345         0x000C45, 0x00,
       
   346         0x000C46, 0x24, // 'telu' telugu
       
   347         0x000C49, 0x00,
       
   348         0x000C4A, 0x24, // 'telu' telugu
       
   349         0x000C4E, 0x00,
       
   350         0x000C55, 0x24, // 'telu' telugu
       
   351         0x000C57, 0x00,
       
   352         0x000C60, 0x24, // 'telu' telugu
       
   353         0x000C62, 0x00,
       
   354         0x000C66, 0x24, // 'telu' telugu
       
   355         0x000C70, 0x00,
       
   356         0x000C82, 0x15, // 'knda' kannada
       
   357         0x000C84, 0x00,
       
   358         0x000C85, 0x15, // 'knda' kannada
       
   359         0x000C8D, 0x00,
       
   360         0x000C8E, 0x15, // 'knda' kannada
       
   361         0x000C91, 0x00,
       
   362         0x000C92, 0x15, // 'knda' kannada
       
   363         0x000CA9, 0x00,
       
   364         0x000CAA, 0x15, // 'knda' kannada
       
   365         0x000CB4, 0x00,
       
   366         0x000CB5, 0x15, // 'knda' kannada
       
   367         0x000CBA, 0x00,
       
   368         0x000CBE, 0x15, // 'knda' kannada
       
   369         0x000CC5, 0x00,
       
   370         0x000CC6, 0x15, // 'knda' kannada
       
   371         0x000CC9, 0x00,
       
   372         0x000CCA, 0x15, // 'knda' kannada
       
   373         0x000CCE, 0x00,
       
   374         0x000CD5, 0x15, // 'knda' kannada
       
   375         0x000CD7, 0x00,
       
   376         0x000CDE, 0x15, // 'knda' kannada
       
   377         0x000CDF, 0x00,
       
   378         0x000CE0, 0x15, // 'knda' kannada
       
   379         0x000CE2, 0x00,
       
   380         0x000CE6, 0x15, // 'knda' kannada
       
   381         0x000CF0, 0x00,
       
   382         0x000D02, 0x1A, // 'mlym' malayalam
       
   383         0x000D04, 0x00,
       
   384         0x000D05, 0x1A, // 'mlym' malayalam
       
   385         0x000D0D, 0x00,
       
   386         0x000D0E, 0x1A, // 'mlym' malayalam
       
   387         0x000D11, 0x00,
       
   388         0x000D12, 0x1A, // 'mlym' malayalam
       
   389         0x000D29, 0x00,
       
   390         0x000D2A, 0x1A, // 'mlym' malayalam
       
   391         0x000D3A, 0x00,
       
   392         0x000D3E, 0x1A, // 'mlym' malayalam
       
   393         0x000D44, 0x00,
       
   394         0x000D46, 0x1A, // 'mlym' malayalam
       
   395         0x000D49, 0x00,
       
   396         0x000D4A, 0x1A, // 'mlym' malayalam
       
   397         0x000D4E, 0x00,
       
   398         0x000D57, 0x1A, // 'mlym' malayalam
       
   399         0x000D58, 0x00,
       
   400         0x000D60, 0x1A, // 'mlym' malayalam
       
   401         0x000D62, 0x00,
       
   402         0x000D66, 0x1A, // 'mlym' malayalam
       
   403         0x000D70, 0x00,
       
   404         0x000D82, 0x21, // 'sinh' sinhala
       
   405         0x000D84, 0x00,
       
   406         0x000D85, 0x21, // 'sinh' sinhala
       
   407         0x000D97, 0x00,
       
   408         0x000D9A, 0x21, // 'sinh' sinhala
       
   409         0x000DB2, 0x00,
       
   410         0x000DB3, 0x21, // 'sinh' sinhala
       
   411         0x000DBC, 0x00,
       
   412         0x000DBD, 0x21, // 'sinh' sinhala
       
   413         0x000DBE, 0x00,
       
   414         0x000DC0, 0x21, // 'sinh' sinhala
       
   415         0x000DC7, 0x00,
       
   416         0x000DCA, 0x21, // 'sinh' sinhala
       
   417         0x000DCB, 0x00,
       
   418         0x000DCF, 0x21, // 'sinh' sinhala
       
   419         0x000DD5, 0x00,
       
   420         0x000DD6, 0x21, // 'sinh' sinhala
       
   421         0x000DD7, 0x00,
       
   422         0x000DD8, 0x21, // 'sinh' sinhala
       
   423         0x000DE0, 0x00,
       
   424         0x000DF2, 0x21, // 'sinh' sinhala
       
   425         0x000DF4, 0x00,
       
   426         0x000E01, 0x26, // 'thai' thai
       
   427         0x000E3B, 0x00,
       
   428         0x000E40, 0x26, // 'thai' thai
       
   429         0x000E4F, 0x00,
       
   430         0x000E50, 0x26, // 'thai' thai
       
   431         0x000E5A, 0x00,
       
   432         0x000E81, 0x18, // 'laoo' lao
       
   433         0x000E83, 0x00,
       
   434         0x000E84, 0x18, // 'laoo' lao
       
   435         0x000E85, 0x00,
       
   436         0x000E87, 0x18, // 'laoo' lao
       
   437         0x000E89, 0x00,
       
   438         0x000E8A, 0x18, // 'laoo' lao
       
   439         0x000E8B, 0x00,
       
   440         0x000E8D, 0x18, // 'laoo' lao
       
   441         0x000E8E, 0x00,
       
   442         0x000E94, 0x18, // 'laoo' lao
       
   443         0x000E98, 0x00,
       
   444         0x000E99, 0x18, // 'laoo' lao
       
   445         0x000EA0, 0x00,
       
   446         0x000EA1, 0x18, // 'laoo' lao
       
   447         0x000EA4, 0x00,
       
   448         0x000EA5, 0x18, // 'laoo' lao
       
   449         0x000EA6, 0x00,
       
   450         0x000EA7, 0x18, // 'laoo' lao
       
   451         0x000EA8, 0x00,
       
   452         0x000EAA, 0x18, // 'laoo' lao
       
   453         0x000EAC, 0x00,
       
   454         0x000EAD, 0x18, // 'laoo' lao
       
   455         0x000EBA, 0x00,
       
   456         0x000EBB, 0x18, // 'laoo' lao
       
   457         0x000EBE, 0x00,
       
   458         0x000EC0, 0x18, // 'laoo' lao
       
   459         0x000EC5, 0x00,
       
   460         0x000EC6, 0x18, // 'laoo' lao
       
   461         0x000EC7, 0x00,
       
   462         0x000EC8, 0x18, // 'laoo' lao
       
   463         0x000ECE, 0x00,
       
   464         0x000ED0, 0x18, // 'laoo' lao
       
   465         0x000EDA, 0x00,
       
   466         0x000EDC, 0x18, // 'laoo' lao
       
   467         0x000EDE, 0x00,
       
   468         0x000F00, 0x27, // 'tibt' tibetan
       
   469         0x000F01, 0x00,
       
   470         0x000F18, 0x27, // 'tibt' tibetan
       
   471         0x000F1A, 0x00,
       
   472         0x000F20, 0x27, // 'tibt' tibetan
       
   473         0x000F34, 0x00,
       
   474         0x000F35, 0x27, // 'tibt' tibetan
       
   475         0x000F36, 0x00,
       
   476         0x000F37, 0x27, // 'tibt' tibetan
       
   477         0x000F38, 0x00,
       
   478         0x000F39, 0x27, // 'tibt' tibetan
       
   479         0x000F3A, 0x00,
       
   480         0x000F40, 0x27, // 'tibt' tibetan
       
   481         0x000F48, 0x00,
       
   482         0x000F49, 0x27, // 'tibt' tibetan
       
   483         0x000F6B, 0x00,
       
   484         0x000F71, 0x27, // 'tibt' tibetan
       
   485         0x000F85, 0x00,
       
   486         0x000F86, 0x27, // 'tibt' tibetan
       
   487         0x000F8C, 0x00,
       
   488         0x000F90, 0x27, // 'tibt' tibetan
       
   489         0x000F98, 0x00,
       
   490         0x000F99, 0x27, // 'tibt' tibetan
       
   491         0x000FBD, 0x00,
       
   492         0x000FC6, 0x27, // 'tibt' tibetan
       
   493         0x000FC7, 0x00,
       
   494         0x001000, 0x1C, // 'mymr' myanmar
       
   495         0x001022, 0x00,
       
   496         0x001023, 0x1C, // 'mymr' myanmar
       
   497         0x001028, 0x00,
       
   498         0x001029, 0x1C, // 'mymr' myanmar
       
   499         0x00102B, 0x00,
       
   500         0x00102C, 0x1C, // 'mymr' myanmar
       
   501         0x001033, 0x00,
       
   502         0x001036, 0x1C, // 'mymr' myanmar
       
   503         0x00103A, 0x00,
       
   504         0x001040, 0x1C, // 'mymr' myanmar
       
   505         0x00104A, 0x00,
       
   506         0x001050, 0x1C, // 'mymr' myanmar
       
   507         0x00105A, 0x00,
       
   508         0x0010A0, 0x0C, // 'geor' georgian
       
   509         0x0010C6, 0x00,
       
   510         0x0010D0, 0x0C, // 'geor' georgian
       
   511         0x0010F9, 0x00,
       
   512         0x001100, 0x12, // 'hang' hangul
       
   513         0x00115A, 0x00,
       
   514         0x00115F, 0x12, // 'hang' hangul
       
   515         0x0011A3, 0x00,
       
   516         0x0011A8, 0x12, // 'hang' hangul
       
   517         0x0011FA, 0x00,
       
   518         0x001200, 0x0B, // 'ethi' ethiopic
       
   519         0x001207, 0x00,
       
   520         0x001208, 0x0B, // 'ethi' ethiopic
       
   521         0x001247, 0x00,
       
   522         0x001248, 0x0B, // 'ethi' ethiopic
       
   523         0x001249, 0x00,
       
   524         0x00124A, 0x0B, // 'ethi' ethiopic
       
   525         0x00124E, 0x00,
       
   526         0x001250, 0x0B, // 'ethi' ethiopic
       
   527         0x001257, 0x00,
       
   528         0x001258, 0x0B, // 'ethi' ethiopic
       
   529         0x001259, 0x00,
       
   530         0x00125A, 0x0B, // 'ethi' ethiopic
       
   531         0x00125E, 0x00,
       
   532         0x001260, 0x0B, // 'ethi' ethiopic
       
   533         0x001287, 0x00,
       
   534         0x001288, 0x0B, // 'ethi' ethiopic
       
   535         0x001289, 0x00,
       
   536         0x00128A, 0x0B, // 'ethi' ethiopic
       
   537         0x00128E, 0x00,
       
   538         0x001290, 0x0B, // 'ethi' ethiopic
       
   539         0x0012AF, 0x00,
       
   540         0x0012B0, 0x0B, // 'ethi' ethiopic
       
   541         0x0012B1, 0x00,
       
   542         0x0012B2, 0x0B, // 'ethi' ethiopic
       
   543         0x0012B6, 0x00,
       
   544         0x0012B8, 0x0B, // 'ethi' ethiopic
       
   545         0x0012BF, 0x00,
       
   546         0x0012C0, 0x0B, // 'ethi' ethiopic
       
   547         0x0012C1, 0x00,
       
   548         0x0012C2, 0x0B, // 'ethi' ethiopic
       
   549         0x0012C6, 0x00,
       
   550         0x0012C8, 0x0B, // 'ethi' ethiopic
       
   551         0x0012CF, 0x00,
       
   552         0x0012D0, 0x0B, // 'ethi' ethiopic
       
   553         0x0012D7, 0x00,
       
   554         0x0012D8, 0x0B, // 'ethi' ethiopic
       
   555         0x0012EF, 0x00,
       
   556         0x0012F0, 0x0B, // 'ethi' ethiopic
       
   557         0x00130F, 0x00,
       
   558         0x001310, 0x0B, // 'ethi' ethiopic
       
   559         0x001311, 0x00,
       
   560         0x001312, 0x0B, // 'ethi' ethiopic
       
   561         0x001316, 0x00,
       
   562         0x001318, 0x0B, // 'ethi' ethiopic
       
   563         0x00131F, 0x00,
       
   564         0x001320, 0x0B, // 'ethi' ethiopic
       
   565         0x001347, 0x00,
       
   566         0x001348, 0x0B, // 'ethi' ethiopic
       
   567         0x00135B, 0x00,
       
   568         0x001369, 0x0B, // 'ethi' ethiopic
       
   569         0x00137D, 0x00,
       
   570         0x0013A0, 0x06, // 'cher' cherokee
       
   571         0x0013F5, 0x00,
       
   572         0x001401, 0x28, // 'cans' canadian_aboriginal
       
   573         0x00166D, 0x00,
       
   574         0x00166F, 0x28, // 'cans' canadian_aboriginal
       
   575         0x001677, 0x00,
       
   576         0x001681, 0x1D, // 'ogam' ogham
       
   577         0x00169B, 0x00,
       
   578         0x0016A0, 0x20, // 'runr' runic
       
   579         0x0016EB, 0x00,
       
   580         0x0016EE, 0x20, // 'runr' runic
       
   581         0x0016F1, 0x00,
       
   582         0x001700, 0x2A, // 'tglg' tagalog
       
   583         0x00170D, 0x00,
       
   584         0x00170E, 0x2A, // 'tglg' tagalog
       
   585         0x001715, 0x00,
       
   586         0x001720, 0x2B, // 'hano' hanunoo
       
   587         0x001735, 0x00,
       
   588         0x001740, 0x2C, // 'buhd' buhid
       
   589         0x001754, 0x00,
       
   590         0x001760, 0x2D, // 'tagb' tagbanwa
       
   591         0x00176D, 0x00,
       
   592         0x00176E, 0x2D, // 'tagb' tagbanwa
       
   593         0x001771, 0x00,
       
   594         0x001772, 0x2D, // 'tagb' tagbanwa
       
   595         0x001774, 0x00,
       
   596         0x001780, 0x17, // 'khmr' khmer
       
   597         0x0017D4, 0x00,
       
   598         0x0017E0, 0x17, // 'khmr' khmer
       
   599         0x0017EA, 0x00,
       
   600         0x00180B, 0x01, // 'qaai' inherited
       
   601         0x00180E, 0x00,
       
   602         0x001810, 0x1B, // 'mong' mongolian
       
   603         0x00181A, 0x00,
       
   604         0x001820, 0x1B, // 'mong' mongolian
       
   605         0x001878, 0x00,
       
   606         0x001880, 0x1B, // 'mong' mongolian
       
   607         0x0018AA, 0x00,
       
   608         0x001E00, 0x19, // 'latn' latin
       
   609         0x001E9C, 0x00,
       
   610         0x001EA0, 0x19, // 'latn' latin
       
   611         0x001EFA, 0x00,
       
   612         0x001F00, 0x0E, // 'grek' greek
       
   613         0x001F16, 0x00,
       
   614         0x001F18, 0x0E, // 'grek' greek
       
   615         0x001F1E, 0x00,
       
   616         0x001F20, 0x0E, // 'grek' greek
       
   617         0x001F46, 0x00,
       
   618         0x001F48, 0x0E, // 'grek' greek
       
   619         0x001F4E, 0x00,
       
   620         0x001F50, 0x0E, // 'grek' greek
       
   621         0x001F58, 0x00,
       
   622         0x001F59, 0x0E, // 'grek' greek
       
   623         0x001F5A, 0x00,
       
   624         0x001F5B, 0x0E, // 'grek' greek
       
   625         0x001F5C, 0x00,
       
   626         0x001F5D, 0x0E, // 'grek' greek
       
   627         0x001F5E, 0x00,
       
   628         0x001F5F, 0x0E, // 'grek' greek
       
   629         0x001F7E, 0x00,
       
   630         0x001F80, 0x0E, // 'grek' greek
       
   631         0x001FB5, 0x00,
       
   632         0x001FB6, 0x0E, // 'grek' greek
       
   633         0x001FBD, 0x00,
       
   634         0x001FBE, 0x0E, // 'grek' greek
       
   635         0x001FBF, 0x00,
       
   636         0x001FC2, 0x0E, // 'grek' greek
       
   637         0x001FC5, 0x00,
       
   638         0x001FC6, 0x0E, // 'grek' greek
       
   639         0x001FCD, 0x00,
       
   640         0x001FD0, 0x0E, // 'grek' greek
       
   641         0x001FD4, 0x00,
       
   642         0x001FD6, 0x0E, // 'grek' greek
       
   643         0x001FDC, 0x00,
       
   644         0x001FE0, 0x0E, // 'grek' greek
       
   645         0x001FED, 0x00,
       
   646         0x001FF2, 0x0E, // 'grek' greek
       
   647         0x001FF5, 0x00,
       
   648         0x001FF6, 0x0E, // 'grek' greek
       
   649         0x001FFD, 0x00,
       
   650         0x002071, 0x19, // 'latn' latin
       
   651         0x002072, 0x00,
       
   652         0x00207F, 0x19, // 'latn' latin
       
   653         0x002080, 0x00,
       
   654         0x0020D0, 0x01, // 'qaai' inherited
       
   655         0x0020EB, 0x00,
       
   656         0x002126, 0x0E, // 'grek' greek
       
   657         0x002127, 0x00,
       
   658         0x00212A, 0x19, // 'latn' latin
       
   659         0x00212C, 0x00,
       
   660         0x002E80, 0x11, // 'hani' han
       
   661         0x002E9A, 0x00,
       
   662         0x002E9B, 0x11, // 'hani' han
       
   663         0x002EF4, 0x00,
       
   664         0x002F00, 0x11, // 'hani' han
       
   665         0x002FD6, 0x00,
       
   666         0x003005, 0x11, // 'hani' han
       
   667         0x003006, 0x00,
       
   668         0x003007, 0x11, // 'hani' han
       
   669         0x003008, 0x00,
       
   670         0x003021, 0x11, // 'hani' han
       
   671         0x00302A, 0x01, // 'qaai' inherited
       
   672         0x003030, 0x00,
       
   673         0x003038, 0x11, // 'hani' han
       
   674         0x00303C, 0x00,
       
   675         0x003041, 0x14, // 'hira' hiragana
       
   676         0x003097, 0x00,
       
   677         0x003099, 0x01, // 'qaai' inherited
       
   678         0x00309B, 0x00,
       
   679         0x00309D, 0x14, // 'hira' hiragana
       
   680         0x0030A0, 0x00,
       
   681         0x0030A1, 0x16, // 'kana' katakana
       
   682         0x0030FB, 0x00,
       
   683         0x0030FD, 0x16, // 'kana' katakana
       
   684         0x003100, 0x00,
       
   685         0x003105, 0x05, // 'bopo' bopomofo
       
   686         0x00312D, 0x00,
       
   687         0x003131, 0x12, // 'hang' hangul
       
   688         0x00318F, 0x00,
       
   689         0x0031A0, 0x05, // 'bopo' bopomofo
       
   690         0x0031B8, 0x00,
       
   691         0x0031F0, 0x16, // 'kana' katakana
       
   692         0x003200, 0x00,
       
   693         0x003400, 0x11, // 'hani' han
       
   694         0x004DB6, 0x00,
       
   695         0x004E00, 0x11, // 'hani' han
       
   696         0x009FA6, 0x00,
       
   697         0x00A000, 0x29, // 'yiii' yi
       
   698         0x00A48D, 0x00,
       
   699         0x00A490, 0x29, // 'yiii' yi
       
   700         0x00A4A2, 0x00,
       
   701         0x00A4A4, 0x29, // 'yiii' yi
       
   702         0x00A4B4, 0x00,
       
   703         0x00A4B5, 0x29, // 'yiii' yi
       
   704         0x00A4C1, 0x00,
       
   705         0x00A4C2, 0x29, // 'yiii' yi
       
   706         0x00A4C5, 0x00,
       
   707         0x00A4C6, 0x29, // 'yiii' yi
       
   708         0x00A4C7, 0x00,
       
   709         0x00AC00, 0x12, // 'hang' hangul
       
   710         0x00D7A4, 0x00,
       
   711         0x00F900, 0x11, // 'hani' han
       
   712         0x00FA2E, 0x00,
       
   713         0x00FA30, 0x11, // 'hani' han
       
   714         0x00FA6B, 0x00,
       
   715         0x00FB00, 0x19, // 'latn' latin
       
   716         0x00FB07, 0x00,
       
   717         0x00FB13, 0x03, // 'armn' armenian
       
   718         0x00FB18, 0x00,
       
   719         0x00FB1D, 0x13, // 'hebr' hebrew
       
   720         0x00FB1E, 0x01, // 'qaai' inherited
       
   721         0x00FB1F, 0x13, // 'hebr' hebrew
       
   722         0x00FB29, 0x00,
       
   723         0x00FB2A, 0x13, // 'hebr' hebrew
       
   724         0x00FB37, 0x00,
       
   725         0x00FB38, 0x13, // 'hebr' hebrew
       
   726         0x00FB3D, 0x00,
       
   727         0x00FB3E, 0x13, // 'hebr' hebrew
       
   728         0x00FB3F, 0x00,
       
   729         0x00FB40, 0x13, // 'hebr' hebrew
       
   730         0x00FB42, 0x00,
       
   731         0x00FB43, 0x13, // 'hebr' hebrew
       
   732         0x00FB45, 0x00,
       
   733         0x00FB46, 0x13, // 'hebr' hebrew
       
   734         0x00FB50, 0x02, // 'arab' arabic
       
   735         0x00FBB2, 0x00,
       
   736         0x00FBD3, 0x02, // 'arab' arabic
       
   737         0x00FD3E, 0x00,
       
   738         0x00FD50, 0x02, // 'arab' arabic
       
   739         0x00FD90, 0x00,
       
   740         0x00FD92, 0x02, // 'arab' arabic
       
   741         0x00FDC8, 0x00,
       
   742         0x00FDF0, 0x02, // 'arab' arabic
       
   743         0x00FDFC, 0x00,
       
   744         0x00FE00, 0x01, // 'qaai' inherited
       
   745         0x00FE10, 0x00,
       
   746         0x00FE20, 0x01, // 'qaai' inherited
       
   747         0x00FE24, 0x00,
       
   748         0x00FE70, 0x02, // 'arab' arabic
       
   749         0x00FE75, 0x00,
       
   750         0x00FE76, 0x02, // 'arab' arabic
       
   751         0x00FEFD, 0x00,
       
   752         0x00FF21, 0x19, // 'latn' latin
       
   753         0x00FF3B, 0x00,
       
   754         0x00FF41, 0x19, // 'latn' latin
       
   755         0x00FF5B, 0x00,
       
   756         0x00FF66, 0x16, // 'kana' katakana
       
   757         0x00FF70, 0x00,
       
   758         0x00FF71, 0x16, // 'kana' katakana
       
   759         0x00FF9E, 0x00,
       
   760         0x00FFA0, 0x12, // 'hang' hangul
       
   761         0x00FFBF, 0x00,
       
   762         0x00FFC2, 0x12, // 'hang' hangul
       
   763         0x00FFC8, 0x00,
       
   764         0x00FFCA, 0x12, // 'hang' hangul
       
   765         0x00FFD0, 0x00,
       
   766         0x00FFD2, 0x12, // 'hang' hangul
       
   767         0x00FFD8, 0x00,
       
   768         0x00FFDA, 0x12, // 'hang' hangul
       
   769         0x00FFDD, 0x00,
       
   770         0x010300, 0x1E, // 'ital' old_italic
       
   771         0x01031F, 0x00,
       
   772         0x010330, 0x0D, // 'goth' gothic
       
   773         0x01034B, 0x00,
       
   774         0x010400, 0x09, // 'dsrt' deseret
       
   775         0x010426, 0x00,
       
   776         0x010428, 0x09, // 'dsrt' deseret
       
   777         0x01044E, 0x00,
       
   778         0x01D167, 0x01, // 'qaai' inherited
       
   779         0x01D16A, 0x00,
       
   780         0x01D17B, 0x01, // 'qaai' inherited
       
   781         0x01D183, 0x00,
       
   782         0x01D185, 0x01, // 'qaai' inherited
       
   783         0x01D18C, 0x00,
       
   784         0x01D1AA, 0x01, // 'qaai' inherited
       
   785         0x01D1AE, 0x00,
       
   786         0x020000, 0x11, // 'hani' han
       
   787         0x02A6D7, 0x00,
       
   788         0x02F800, 0x11, // 'hani' han
       
   789         0x02FA1E, 0x00,
       
   790         0x110000, -1, // (NO NAME)
       
   791     };
       
   792 
       
   793     private static final int dataPower = 1 << 10;
       
   794     private static final int dataExtra = data.length - dataPower;
       
   795 }