jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar-machine.hh
changeset 34414 e496a8d8fc8a
child 40435 553eb1a50733
equal deleted inserted replaced
34413:bbed9966db6e 34414:e496a8d8fc8a
       
     1 
       
     2 #line 1 "hb-ot-shape-complex-myanmar-machine.rl"
       
     3 /*
       
     4  * Copyright © 2011,2012  Google, Inc.
       
     5  *
       
     6  *  This is part of HarfBuzz, a text shaping library.
       
     7  *
       
     8  * Permission is hereby granted, without written agreement and without
       
     9  * license or royalty fees, to use, copy, modify, and distribute this
       
    10  * software and its documentation for any purpose, provided that the
       
    11  * above copyright notice and the following two paragraphs appear in
       
    12  * all copies of this software.
       
    13  *
       
    14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
       
    15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
       
    16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
       
    17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
       
    18  * DAMAGE.
       
    19  *
       
    20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
       
    21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
       
    22  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
       
    23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
       
    24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
       
    25  *
       
    26  * Google Author(s): Behdad Esfahbod
       
    27  */
       
    28 
       
    29 #ifndef HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
       
    30 #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
       
    31 
       
    32 #include "hb-private.hh"
       
    33 
       
    34 
       
    35 #line 36 "hb-ot-shape-complex-myanmar-machine.hh"
       
    36 static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
       
    37         1u, 31u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u,
       
    38         3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u,
       
    39         3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u, 5u, 8u,
       
    40         5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
       
    41         3u, 30u, 3u, 29u, 1u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
       
    42         3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 8u, 8u, 0
       
    43 };
       
    44 
       
    45 static const char _myanmar_syllable_machine_key_spans[] = {
       
    46         31, 28, 25, 4, 25, 23, 21, 21,
       
    47         27, 27, 27, 27, 16, 27, 27, 27,
       
    48         27, 27, 27, 27, 27, 27, 25, 4,
       
    49         25, 23, 21, 21, 27, 27, 27, 27,
       
    50         28, 27, 30, 27, 27, 27, 27, 27,
       
    51         27, 27, 27, 27, 1
       
    52 };
       
    53 
       
    54 static const short _myanmar_syllable_machine_index_offsets[] = {
       
    55         0, 32, 61, 87, 92, 118, 142, 164,
       
    56         186, 214, 242, 270, 298, 315, 343, 371,
       
    57         399, 427, 455, 483, 511, 539, 567, 593,
       
    58         598, 624, 648, 670, 692, 720, 748, 776,
       
    59         804, 833, 861, 892, 920, 948, 976, 1004,
       
    60         1032, 1060, 1088, 1116, 1144
       
    61 };
       
    62 
       
    63 static const char _myanmar_syllable_machine_indicies[] = {
       
    64         1, 1, 2, 3, 4, 4, 0, 5,
       
    65         0, 6, 1, 0, 0, 0, 0, 7,
       
    66         0, 8, 1, 0, 9, 10, 11, 12,
       
    67         13, 14, 15, 16, 17, 18, 19, 0,
       
    68         21, 22, 23, 23, 20, 24, 20, 25,
       
    69         20, 20, 20, 20, 20, 20, 20, 26,
       
    70         20, 20, 27, 28, 29, 30, 31, 32,
       
    71         33, 34, 35, 36, 20, 23, 23, 20,
       
    72         24, 20, 20, 20, 20, 20, 20, 20,
       
    73         20, 20, 37, 20, 20, 20, 20, 20,
       
    74         20, 31, 20, 20, 20, 35, 20, 23,
       
    75         23, 20, 24, 20, 23, 23, 20, 24,
       
    76         20, 20, 20, 20, 20, 20, 20, 20,
       
    77         20, 20, 20, 20, 20, 20, 20, 20,
       
    78         31, 20, 20, 20, 35, 20, 38, 20,
       
    79         23, 23, 20, 24, 20, 31, 20, 20,
       
    80         20, 20, 20, 20, 20, 39, 20, 20,
       
    81         20, 20, 20, 20, 31, 20, 23, 23,
       
    82         20, 24, 20, 20, 20, 20, 20, 20,
       
    83         20, 20, 20, 39, 20, 20, 20, 20,
       
    84         20, 20, 31, 20, 23, 23, 20, 24,
       
    85         20, 20, 20, 20, 20, 20, 20, 20,
       
    86         20, 20, 20, 20, 20, 20, 20, 20,
       
    87         31, 20, 21, 20, 23, 23, 20, 24,
       
    88         20, 25, 20, 20, 20, 20, 20, 20,
       
    89         20, 40, 20, 20, 40, 20, 20, 20,
       
    90         31, 41, 20, 20, 35, 20, 21, 20,
       
    91         23, 23, 20, 24, 20, 25, 20, 20,
       
    92         20, 20, 20, 20, 20, 20, 20, 20,
       
    93         20, 20, 20, 20, 31, 20, 20, 20,
       
    94         35, 20, 21, 20, 23, 23, 20, 24,
       
    95         20, 25, 20, 20, 20, 20, 20, 20,
       
    96         20, 40, 20, 20, 20, 20, 20, 20,
       
    97         31, 41, 20, 20, 35, 20, 21, 20,
       
    98         23, 23, 20, 24, 20, 25, 20, 20,
       
    99         20, 20, 20, 20, 20, 20, 20, 20,
       
   100         20, 20, 20, 20, 31, 41, 20, 20,
       
   101         35, 20, 1, 1, 20, 20, 20, 20,
       
   102         20, 20, 20, 20, 20, 20, 20, 20,
       
   103         20, 1, 20, 21, 20, 23, 23, 20,
       
   104         24, 20, 25, 20, 20, 20, 20, 20,
       
   105         20, 20, 26, 20, 20, 27, 28, 29,
       
   106         30, 31, 32, 33, 34, 35, 20, 21,
       
   107         20, 23, 23, 20, 24, 20, 25, 20,
       
   108         20, 20, 20, 20, 20, 20, 34, 20,
       
   109         20, 20, 20, 20, 20, 31, 32, 33,
       
   110         34, 35, 20, 21, 20, 23, 23, 20,
       
   111         24, 20, 25, 20, 20, 20, 20, 20,
       
   112         20, 20, 20, 20, 20, 20, 20, 20,
       
   113         20, 31, 32, 33, 34, 35, 20, 21,
       
   114         20, 23, 23, 20, 24, 20, 25, 20,
       
   115         20, 20, 20, 20, 20, 20, 20, 20,
       
   116         20, 20, 20, 20, 20, 31, 32, 33,
       
   117         20, 35, 20, 21, 20, 23, 23, 20,
       
   118         24, 20, 25, 20, 20, 20, 20, 20,
       
   119         20, 20, 20, 20, 20, 20, 20, 20,
       
   120         20, 31, 20, 33, 20, 35, 20, 21,
       
   121         20, 23, 23, 20, 24, 20, 25, 20,
       
   122         20, 20, 20, 20, 20, 20, 34, 20,
       
   123         20, 27, 20, 29, 20, 31, 32, 33,
       
   124         34, 35, 20, 21, 20, 23, 23, 20,
       
   125         24, 20, 25, 20, 20, 20, 20, 20,
       
   126         20, 20, 34, 20, 20, 27, 20, 20,
       
   127         20, 31, 32, 33, 34, 35, 20, 21,
       
   128         20, 23, 23, 20, 24, 20, 25, 20,
       
   129         20, 20, 20, 20, 20, 20, 34, 20,
       
   130         20, 27, 28, 29, 20, 31, 32, 33,
       
   131         34, 35, 20, 21, 22, 23, 23, 20,
       
   132         24, 20, 25, 20, 20, 20, 20, 20,
       
   133         20, 20, 26, 20, 20, 27, 28, 29,
       
   134         30, 31, 32, 33, 34, 35, 20, 3,
       
   135         3, 42, 5, 42, 42, 42, 42, 42,
       
   136         42, 42, 42, 42, 43, 42, 42, 42,
       
   137         42, 42, 42, 13, 42, 42, 42, 17,
       
   138         42, 3, 3, 42, 5, 42, 3, 3,
       
   139         42, 5, 42, 42, 42, 42, 42, 42,
       
   140         42, 42, 42, 42, 42, 42, 42, 42,
       
   141         42, 42, 13, 42, 42, 42, 17, 42,
       
   142         44, 42, 3, 3, 42, 5, 42, 13,
       
   143         42, 42, 42, 42, 42, 42, 42, 45,
       
   144         42, 42, 42, 42, 42, 42, 13, 42,
       
   145         3, 3, 42, 5, 42, 42, 42, 42,
       
   146         42, 42, 42, 42, 42, 45, 42, 42,
       
   147         42, 42, 42, 42, 13, 42, 3, 3,
       
   148         42, 5, 42, 42, 42, 42, 42, 42,
       
   149         42, 42, 42, 42, 42, 42, 42, 42,
       
   150         42, 42, 13, 42, 2, 42, 3, 3,
       
   151         42, 5, 42, 6, 42, 42, 42, 42,
       
   152         42, 42, 42, 46, 42, 42, 46, 42,
       
   153         42, 42, 13, 47, 42, 42, 17, 42,
       
   154         2, 42, 3, 3, 42, 5, 42, 6,
       
   155         42, 42, 42, 42, 42, 42, 42, 42,
       
   156         42, 42, 42, 42, 42, 42, 13, 42,
       
   157         42, 42, 17, 42, 2, 42, 3, 3,
       
   158         42, 5, 42, 6, 42, 42, 42, 42,
       
   159         42, 42, 42, 46, 42, 42, 42, 42,
       
   160         42, 42, 13, 47, 42, 42, 17, 42,
       
   161         2, 42, 3, 3, 42, 5, 42, 6,
       
   162         42, 42, 42, 42, 42, 42, 42, 42,
       
   163         42, 42, 42, 42, 42, 42, 13, 47,
       
   164         42, 42, 17, 42, 21, 22, 23, 23,
       
   165         20, 24, 20, 25, 20, 20, 20, 20,
       
   166         20, 20, 20, 48, 20, 20, 27, 28,
       
   167         29, 30, 31, 32, 33, 34, 35, 36,
       
   168         20, 21, 49, 23, 23, 20, 24, 20,
       
   169         25, 20, 20, 20, 20, 20, 20, 20,
       
   170         26, 20, 20, 27, 28, 29, 30, 31,
       
   171         32, 33, 34, 35, 20, 1, 1, 2,
       
   172         3, 3, 3, 42, 5, 42, 6, 1,
       
   173         42, 42, 42, 42, 1, 42, 8, 1,
       
   174         42, 9, 10, 11, 12, 13, 14, 15,
       
   175         16, 17, 18, 42, 2, 42, 3, 3,
       
   176         42, 5, 42, 6, 42, 42, 42, 42,
       
   177         42, 42, 42, 8, 42, 42, 9, 10,
       
   178         11, 12, 13, 14, 15, 16, 17, 42,
       
   179         2, 42, 3, 3, 42, 5, 42, 6,
       
   180         42, 42, 42, 42, 42, 42, 42, 16,
       
   181         42, 42, 42, 42, 42, 42, 13, 14,
       
   182         15, 16, 17, 42, 2, 42, 3, 3,
       
   183         42, 5, 42, 6, 42, 42, 42, 42,
       
   184         42, 42, 42, 42, 42, 42, 42, 42,
       
   185         42, 42, 13, 14, 15, 16, 17, 42,
       
   186         2, 42, 3, 3, 42, 5, 42, 6,
       
   187         42, 42, 42, 42, 42, 42, 42, 42,
       
   188         42, 42, 42, 42, 42, 42, 13, 14,
       
   189         15, 42, 17, 42, 2, 42, 3, 3,
       
   190         42, 5, 42, 6, 42, 42, 42, 42,
       
   191         42, 42, 42, 42, 42, 42, 42, 42,
       
   192         42, 42, 13, 42, 15, 42, 17, 42,
       
   193         2, 42, 3, 3, 42, 5, 42, 6,
       
   194         42, 42, 42, 42, 42, 42, 42, 16,
       
   195         42, 42, 9, 42, 11, 42, 13, 14,
       
   196         15, 16, 17, 42, 2, 42, 3, 3,
       
   197         42, 5, 42, 6, 42, 42, 42, 42,
       
   198         42, 42, 42, 16, 42, 42, 9, 42,
       
   199         42, 42, 13, 14, 15, 16, 17, 42,
       
   200         2, 42, 3, 3, 42, 5, 42, 6,
       
   201         42, 42, 42, 42, 42, 42, 42, 16,
       
   202         42, 42, 9, 10, 11, 42, 13, 14,
       
   203         15, 16, 17, 42, 2, 3, 3, 3,
       
   204         42, 5, 42, 6, 42, 42, 42, 42,
       
   205         42, 42, 42, 8, 42, 42, 9, 10,
       
   206         11, 12, 13, 14, 15, 16, 17, 42,
       
   207         51, 50, 0
       
   208 };
       
   209 
       
   210 static const char _myanmar_syllable_machine_trans_targs[] = {
       
   211         0, 1, 22, 0, 0, 23, 29, 32,
       
   212         35, 36, 40, 41, 42, 25, 38, 39,
       
   213         37, 28, 43, 44, 0, 2, 12, 0,
       
   214         3, 9, 13, 14, 18, 19, 20, 5,
       
   215         16, 17, 15, 8, 21, 4, 6, 7,
       
   216         10, 11, 0, 24, 26, 27, 30, 31,
       
   217         33, 34, 0, 0
       
   218 };
       
   219 
       
   220 static const char _myanmar_syllable_machine_trans_actions[] = {
       
   221         3, 0, 0, 4, 5, 0, 0, 0,
       
   222         0, 0, 0, 0, 0, 0, 0, 0,
       
   223         0, 0, 0, 0, 6, 0, 0, 7,
       
   224         0, 0, 0, 0, 0, 0, 0, 0,
       
   225         0, 0, 0, 0, 0, 0, 0, 0,
       
   226         0, 0, 8, 0, 0, 0, 0, 0,
       
   227         0, 0, 9, 10
       
   228 };
       
   229 
       
   230 static const char _myanmar_syllable_machine_to_state_actions[] = {
       
   231         1, 0, 0, 0, 0, 0, 0, 0,
       
   232         0, 0, 0, 0, 0, 0, 0, 0,
       
   233         0, 0, 0, 0, 0, 0, 0, 0,
       
   234         0, 0, 0, 0, 0, 0, 0, 0,
       
   235         0, 0, 0, 0, 0, 0, 0, 0,
       
   236         0, 0, 0, 0, 0
       
   237 };
       
   238 
       
   239 static const char _myanmar_syllable_machine_from_state_actions[] = {
       
   240         2, 0, 0, 0, 0, 0, 0, 0,
       
   241         0, 0, 0, 0, 0, 0, 0, 0,
       
   242         0, 0, 0, 0, 0, 0, 0, 0,
       
   243         0, 0, 0, 0, 0, 0, 0, 0,
       
   244         0, 0, 0, 0, 0, 0, 0, 0,
       
   245         0, 0, 0, 0, 0
       
   246 };
       
   247 
       
   248 static const short _myanmar_syllable_machine_eof_trans[] = {
       
   249         0, 21, 21, 21, 21, 21, 21, 21,
       
   250         21, 21, 21, 21, 21, 21, 21, 21,
       
   251         21, 21, 21, 21, 21, 21, 43, 43,
       
   252         43, 43, 43, 43, 43, 43, 43, 43,
       
   253         21, 21, 43, 43, 43, 43, 43, 43,
       
   254         43, 43, 43, 43, 51
       
   255 };
       
   256 
       
   257 static const int myanmar_syllable_machine_start = 0;
       
   258 static const int myanmar_syllable_machine_first_final = 0;
       
   259 static const int myanmar_syllable_machine_error = -1;
       
   260 
       
   261 static const int myanmar_syllable_machine_en_main = 0;
       
   262 
       
   263 
       
   264 #line 36 "hb-ot-shape-complex-myanmar-machine.rl"
       
   265 
       
   266 
       
   267 
       
   268 #line 93 "hb-ot-shape-complex-myanmar-machine.rl"
       
   269 
       
   270 
       
   271 #define found_syllable(syllable_type) \
       
   272   HB_STMT_START { \
       
   273     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
       
   274     for (unsigned int i = last; i < p+1; i++) \
       
   275       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
       
   276     last = p+1; \
       
   277     syllable_serial++; \
       
   278     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
       
   279   } HB_STMT_END
       
   280 
       
   281 static void
       
   282 find_syllables (hb_buffer_t *buffer)
       
   283 {
       
   284   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
       
   285   int cs;
       
   286   hb_glyph_info_t *info = buffer->info;
       
   287 
       
   288 #line 289 "hb-ot-shape-complex-myanmar-machine.hh"
       
   289         {
       
   290         cs = myanmar_syllable_machine_start;
       
   291         ts = 0;
       
   292         te = 0;
       
   293         act = 0;
       
   294         }
       
   295 
       
   296 #line 114 "hb-ot-shape-complex-myanmar-machine.rl"
       
   297 
       
   298 
       
   299   p = 0;
       
   300   pe = eof = buffer->len;
       
   301 
       
   302   unsigned int last = 0;
       
   303   unsigned int syllable_serial = 1;
       
   304 
       
   305 #line 306 "hb-ot-shape-complex-myanmar-machine.hh"
       
   306         {
       
   307         int _slen;
       
   308         int _trans;
       
   309         const unsigned char *_keys;
       
   310         const char *_inds;
       
   311         if ( p == pe )
       
   312                 goto _test_eof;
       
   313 _resume:
       
   314         switch ( _myanmar_syllable_machine_from_state_actions[cs] ) {
       
   315         case 2:
       
   316 #line 1 "NONE"
       
   317         {ts = p;}
       
   318         break;
       
   319 #line 320 "hb-ot-shape-complex-myanmar-machine.hh"
       
   320         }
       
   321 
       
   322         _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
       
   323         _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs];
       
   324 
       
   325         _slen = _myanmar_syllable_machine_key_spans[cs];
       
   326         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) &&
       
   327                 ( info[p].myanmar_category()) <= _keys[1] ?
       
   328                 ( info[p].myanmar_category()) - _keys[0] : _slen ];
       
   329 
       
   330 _eof_trans:
       
   331         cs = _myanmar_syllable_machine_trans_targs[_trans];
       
   332 
       
   333         if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 )
       
   334                 goto _again;
       
   335 
       
   336         switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
       
   337         case 7:
       
   338 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
       
   339         {te = p+1;{ found_syllable (consonant_syllable); }}
       
   340         break;
       
   341         case 5:
       
   342 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
       
   343         {te = p+1;{ found_syllable (non_myanmar_cluster); }}
       
   344         break;
       
   345         case 10:
       
   346 #line 87 "hb-ot-shape-complex-myanmar-machine.rl"
       
   347         {te = p+1;{ found_syllable (punctuation_cluster); }}
       
   348         break;
       
   349         case 4:
       
   350 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
       
   351         {te = p+1;{ found_syllable (broken_cluster); }}
       
   352         break;
       
   353         case 3:
       
   354 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
       
   355         {te = p+1;{ found_syllable (non_myanmar_cluster); }}
       
   356         break;
       
   357         case 6:
       
   358 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
       
   359         {te = p;p--;{ found_syllable (consonant_syllable); }}
       
   360         break;
       
   361         case 8:
       
   362 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
       
   363         {te = p;p--;{ found_syllable (broken_cluster); }}
       
   364         break;
       
   365         case 9:
       
   366 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
       
   367         {te = p;p--;{ found_syllable (non_myanmar_cluster); }}
       
   368         break;
       
   369 #line 370 "hb-ot-shape-complex-myanmar-machine.hh"
       
   370         }
       
   371 
       
   372 _again:
       
   373         switch ( _myanmar_syllable_machine_to_state_actions[cs] ) {
       
   374         case 1:
       
   375 #line 1 "NONE"
       
   376         {ts = 0;}
       
   377         break;
       
   378 #line 379 "hb-ot-shape-complex-myanmar-machine.hh"
       
   379         }
       
   380 
       
   381         if ( ++p != pe )
       
   382                 goto _resume;
       
   383         _test_eof: {}
       
   384         if ( p == eof )
       
   385         {
       
   386         if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) {
       
   387                 _trans = _myanmar_syllable_machine_eof_trans[cs] - 1;
       
   388                 goto _eof_trans;
       
   389         }
       
   390         }
       
   391 
       
   392         }
       
   393 
       
   394 #line 123 "hb-ot-shape-complex-myanmar-machine.rl"
       
   395 
       
   396 }
       
   397 
       
   398 #undef found_syllable
       
   399 
       
   400 #endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */