Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/harfbuzz/src/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 36 kB image not shown  

Quelle  hb-ot-shaper-use-machine.hh

  Sprache: C
 


#line 1 "hb-ot-shaper-use-machine.rl"
/*
 * Copyright © 2015  Mozilla Foundation.
 * Copyright © 2015  Google, Inc.
 *
 *  This is part of HarfBuzz, a text shaping library.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 *
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
 * Mozilla Author(s): Jonathan Kew
 * Google Author(s): Behdad Esfahbod
 */


#ifndef HB_OT_SHAPER_USE_MACHINE_HH
#define HB_OT_SHAPER_USE_MACHINE_HH

#include "hb.hh"

#include "hb-ot-shaper-syllabic.hh"

/* buffer var allocations */
#define use_category() ot_shaper_var_u8_category()

#define USE(Cat) use_syllable_machine_ex_##Cat

enum use_syllable_type_t {
  use_virama_terminated_cluster,
  use_sakot_terminated_cluster,
  use_standard_cluster,
  use_number_joiner_terminated_cluster,
  use_numeral_cluster,
  use_symbol_cluster,
  use_hieroglyph_cluster,
  use_broken_cluster,
  use_non_cluster,
};


#line 57 "hb-ot-shaper-use-machine.hh"
#define use_syllable_machine_ex_B 1u
#define use_syllable_machine_ex_CGJ 6u
#define use_syllable_machine_ex_CMAbv 31u
#define use_syllable_machine_ex_CMBlw 32u
#define use_syllable_machine_ex_CS 43u
#define use_syllable_machine_ex_FAbv 24u
#define use_syllable_machine_ex_FBlw 25u
#define use_syllable_machine_ex_FMAbv 45u
#define use_syllable_machine_ex_FMBlw 46u
#define use_syllable_machine_ex_FMPst 47u
#define use_syllable_machine_ex_FPst 26u
#define use_syllable_machine_ex_G 49u
#define use_syllable_machine_ex_GB 5u
#define use_syllable_machine_ex_H 12u
#define use_syllable_machine_ex_HM 54u
#define use_syllable_machine_ex_HN 13u
#define use_syllable_machine_ex_HR 55u
#define use_syllable_machine_ex_HVM 53u
#define use_syllable_machine_ex_IS 44u
#define use_syllable_machine_ex_J 50u
#define use_syllable_machine_ex_MAbv 27u
#define use_syllable_machine_ex_MBlw 28u
#define use_syllable_machine_ex_MPre 30u
#define use_syllable_machine_ex_MPst 29u
#define use_syllable_machine_ex_N 4u
#define use_syllable_machine_ex_O 0u
#define use_syllable_machine_ex_R 18u
#define use_syllable_machine_ex_RK 56u
#define use_syllable_machine_ex_SB 51u
#define use_syllable_machine_ex_SE 52u
#define use_syllable_machine_ex_SMAbv 41u
#define use_syllable_machine_ex_SMBlw 42u
#define use_syllable_machine_ex_SUB 11u
#define use_syllable_machine_ex_Sk 48u
#define use_syllable_machine_ex_VAbv 33u
#define use_syllable_machine_ex_VBlw 34u
#define use_syllable_machine_ex_VMAbv 37u
#define use_syllable_machine_ex_VMBlw 38u
#define use_syllable_machine_ex_VMPre 23u
#define use_syllable_machine_ex_VMPst 39u
#define use_syllable_machine_ex_VPre 22u
#define use_syllable_machine_ex_VPst 35u
#define use_syllable_machine_ex_WJ 16u
#define use_syllable_machine_ex_ZWNJ 14u


#line 104 "hb-ot-shaper-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
 49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 
 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 
 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 
 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u, 
 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 
 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 
 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 
 1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u, 
 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 
 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 
 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u, 
 1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 
 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 
 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 
 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u, 
 14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0
};

static const char _use_syllable_machine_key_spans[] = {
 357464653353434
 343333135353514
 3540404040424042
 4242461448292946
 533534343433331
 3535351435404040
 4042404242424614
 14481211464653
 353434343333135
 3535143540404040
 4240424242461414
 481465335343434
 333313535351435
 4040404042404242
 424614481125629
 2954238394146
};

static const short _use_syllable_machine_index_offsets[] = {
 0462109156210246281
 316351385419421457493529
 544580621662703744787828
 87191495710041019106810981128
 11751229126513001335137014041438
 14401476151215481563159916401681
 17221763180618471890193319762023
 20382053210221042107211921662213
 22672303233823732408244224762478
 25142550258626012637267827192760
 28012844288529282971301430613076
 30913140314231893243327933143349
 33843418345234543490352635623577
 36133654369537363777382038613904
 39473990403740524101411341164173
 4203423342394282432143614403
};

static const unsigned char _use_syllable_machine_indicies[] = {
 10203455
 67555558
 91011555125
 55131415161718
 192021822232425
 52627285293031
 32333435321536
 537553854041
 3942393939393939
 3943444546474849
 5051405253545539
 5657583959603961
 6263646139393939
 6539396439404139
 4239393939393939
 4344454647484950
 5140525354553956
 5758393939396162
 6364613939393965
 3939643940393939
 3939393939393939
 3942393939393939
 3939444546473939
 3939393939393939
 5657583939393939
 6263646639393939
 4439423939393939
 3939394445464739
 3939393939393939
 3956575839393939
 3962636466394239
 3939393939393939
 4546473939393939
 3939393939393939
 3939393939626364
 3942393939393939
 3939393946473939
 3939393939393939
 3939393939393939
 6263643942393939
 3939393939393939
 4739393939393939
 3939393939393939
 3939396263643942
 3939393939393939
 3939393939393939
 3939393939393939
 3939393939396263
 3942393939393939
 3939393939393939
 3939393939393939
 3939393939393939
 3963394239423939
 3939393939393945
 4647393939393939
 3939393956575839
 3939393962636466
 3942393939393939
 3939394546473939
 3939393939393939
 3957583939393939
 6263646639423939
 3939393939393945
 4647393939393939
 3939393939395839
 3939393962636466
 3967393939393939
 3939393939394239
 4239393939393939
 3939454647393939
 3939393939393939
 3939393939393962
 6364663942393939
 3939393943444546
 4739393939393953
 5455395657583939
 3939396263646639
 3939394439423939
 3939393939394445
 4647393939393939
 5354553956575839
 3939393962636466
 3939393944394239
 3939393939393944
 4546473939393939
 3939545539565758
 3939393939626364
 6639393939443942
 3939393939393939
 4445464739393939
 3939393955395657
 5839393939396263
 6466393939394439
 6839423939393939
 3939434445464739
 4950393939535455
 3956575839393939
 3962636466393939
 3944394239393939
 3939393944454647
 3939393939393939
 3939565758393939
 3939626364663939
 3939443968394239
 3939393939394344
 4546473939503939
 3953545539565758
 3939393939626364
 6639393939443968
 3942393939393939
 3943444546473939
 3939393953545539
 5657583939393939
 6263646639393939
 4439683942393939
 3939393943444546
 4748495039393953
 5455395657583939
 3939396263646639
 3939394439404139
 4239393939393939
 4344454647484950
 5139525354553956
 5758393939396162
 6364613939393965
 3939643940393939
 3939393939393939
 3942394039393939
 3939393939393939
 4239393939393939
 3944454647393939
 3939393939393956
 5758393939393962
 6364663942393939
 3939393939393939
 3939393939393939
 3939393939393959
 6039423939393939
 3939393939393939
 3939393939393939
 3939393939396039
 470697169696969
 6969697273747576
 777879804818283
 8469858687696969
 6988899091926969
 696993696994694
 6969696969696969
 6969696971696969
 6969696969737475
 7669696969696969
 6969698586876969
 6969698990919569
 6969697369716969
 6969696969697374
 7576696969696969
 6969696985868769
 6969696989909195
 6971696969696969
 6969697475766969
 6969696969696969
 6969696969696969
 8990916971696969
 6969696969696975
 7669696969696969
 6969696969696969
 6969698990916971
 6969696969696969
 6969697669696969
 6969696969696969
 6969696969698990
 9169716969696969
 6969696969696969
 6969696969696969
 6969696969696969
 6989906971696969
 6969696969696969
 6969696969696969
 6969696969696969
 6969696990697169
 7169696969696969
 6969747576696969
 6969696969696985
 8687696969696989
 9091956971696969
 6969696969697475
 7669696969696969
 6969696986876969
 6969698990919569
 7169696969696969
 6969747576696969
 6969696969696969
 6987696969696989
 9091956997969696
 9696969696969696
 9698967169696969
 6969696969747576
 6969696969696969
 6969696969696969
 6969899091956971
 6969696969696972
 7374757669696969
 6969828384698586
 8769696969698990
 9195696969697369
 7169696969696969
 6973747576696969
 6969698283846985
 8687696969696989
 9091956969696973
 6971696969696969
 6969737475766969
 6969696969838469
 8586876969696969
 8990919569696969
 7369716969696969
 6969697374757669
 6969696969696984
 6985868769696969
 6989909195696969
 6973699969716969
 6969696969727374
 7576697879696969
 8283846985868769
 6969696989909195
 6969696973697169
 6969696969696973
 7475766969696969
 6969696969858687
 6969696969899091
 9569696969736999
 6971696969696969
 6972737475766969
 7969696982838469
 8586876969696969
 8990919569696969
 7369996971696969
 6969696972737475
 7669696969696982
 8384698586876969
 6969698990919569
 6969697369996971
 6969696969696972
 7374757677787969
 6969828384698586
 8769696969698990
 9195696969697369
 470697169696969
 6969697273747576
 7778798069818283
 8469858687696969
 6988899091926969
 696993696994694
 100100100100100100100100
 100100100100101100496
 9696969696969696
 969696989646969
 6969696969696969
 6969716969696969
 6969697374757669
 6969696969696969
 6985868769696969
 698990919569101100
 1031041026105105105105
 105105105105105106105107
 10869716969696969
 6969109110111112113114
 115116117107118119120121
 6912212312469596069
 125126127128129696969
 69130696913169107108
 6971696969696969
 69109110111112113114115
 11611710711811912012169
 12212312469696969125
 12612712812969696969
 1306969131691076969
 6969696969696969
 6969716969696969
 69696911011111211369
 6969696969696969
 6912212312469696969
 69126127128132696969
 69110697169696969
 69696969110111112113
 6969696969696969
 6969122123124696969
 69691261271281326971
 6969696969696969
 6911111211369696969
 6969696969696969
 696969696969126127
 12869716969696969
 696969696911211369
 6969696969696969
 6969696969696969
 6912612712869716969
 6969696969696969
 69113696969696969
 6969696969696969
 6969696912612712869
 7169696969696969
 6969696969696969
 6969696969696969
 69696969696969126
 12769716969696969
 6969696969696969
 6969696969696969
 6969696969696969
 69691276971697169
 6969696969696969
 1111121136969696969
 6969696969122123124
 6969696969126127128
 13269716969696969
 6969696911111211369
 6969696969696969
 696912312469696969
 69126127128132697169
 6969696969696969
 1111121136969696969
 69696969696969124
 6969696969126127128
 132691339696969696
 9696969696969698
 9671696969696969
 6969691111121136969
 6969696969696969
 6969696969696969
 12612712813269716969
 6969696969109110111
 112113696969696969
 1191201216912212312469
 69696969126127128132
 69696969110697169
 69696969696969110
 1111121136969696969
 6911912012169122123124
 6969696969126127128
 132696969691106971
 6969696969696969
 11011111211369696969
 69696912012169122123
 1246969696969126127
 1281326969696911069
 7169696969696969
 69110111112113696969
 696969696912169122
 1231246969696969126
 12712813269696969110
 69134697169696969
 696969109110111112113
 69115116696969119120
 12169122123124696969
 69691261271281326969
 69691106971696969
 6969696969110111112
 11369696969696969
 6969691221231246969
 69696912612712813269
 696969110691346971
 69696969696969109
 110111112113696911669
 696911912012169122123
 1246969696969126127
 1281326969696911069
 13469716969696969
 696910911011111211369
 6969696969119120121
 6912212312469696969
 69126127128132696969
 691106913469716969
 6969696969109110111
 112113114115116696969
 1191201216912212312469
 69696969126127128132
 6969696911069107108
 6971696969696969
 69109110111112113114115
 1161176911811912012169
 12212312469696969125
 12612712812969696969
 130696913169107100100
 100100100100100100100100
 100100101100107969696
 9696969696969696
 96989610769696969
 6969696969696969
 7169696969696969
 69110111112113696969
 69696969696969122
 1231246969696969126
 1271281326910110089
 13511135135135135135135
 13513141516171819
 2021822232425135
 26272813513513513532
 33343832135135135135
 37135135381358135135
 135135135135135135135135
 13513511135135135135135
 13513513514151617135
 135135135135135135135135
 135262728135135135135
 135333438136135135135
 1351413511135135135135
 13513513513514151617
 135135135135135135135135
 135135262728135135135
 13513533343813613511
 135135135135135135135135
 135151617135135135135
 135135135135135135135135
 1351351351351351353334
 3813511135135135135135
 1351351351351351617135
 135135135135135135135135
 135135135135135135135135
 13533343813511135135
 135135135135135135135135
 13517135135135135135135
 135135135135135135135135
 135135135135333438135
 11135135135135135135135
 135135135135135135135135
 135135135135135135135135
 13513513513513513513533
 3413511135135135135135
 135135135135135135135135
 135135135135135135135135
 135135135135135135135135
 135135341351113711135
 135135135135135135135135
 151617135135135135135
 135135135135135262728
 135135135135135333438
 13613511135135135135135
 135135135135151617135
 135135135135135135135135
 1351352728135135135135
 13533343813613511135
 135135135135135135135135
 151617135135135135135
 13513513513513513513528
 135135135135135333438
 136135138135135135135135
 13513513513513513513511
 13511135135135135135135
 135135135151617135135
 135135135135135135135135
 135135135135135135135135
 33343813613511135135
 135135135135135131415
 1617135135135135135135
 232425135262728135
 135135135135333438136
 1351351351351413511135
 13513513513513513513514
 151617135135135135135
 135232425135262728
 135135135135135333438
 1361351351351351413511
 135135135135135135135135
 14151617135135135135
 13513513524251352627
 281351351351351353334
 3813613513513513514135
 11135135135135135135135
 13514151617135135135
 1351351351351352513526
 272813513513513513533
 343813613513513513514
 13513913511135135135135
 1351351351314151617
 13519201351351352324
 25135262728135135135
 135135333438136135135
 1351351413511135135135
 135135135135135141516
 17135135135135135135135
 135135135262728135135
 135135135333438136135
 1351351351413513913511
 13513513513513513513513
 1415161713513520135
 1351352324251352627
 281351351351351353334
 3813613513513513514135
 13913511135135135135135
 1351351314151617135
 135135135135135232425
 135262728135135135135
 135333438136135135135
 1351413513913511135135
 135135135135135131415
 1617181920135135135
 232425135262728135
 135135135135333438136
 1351351351351413589
 13511135135135135135135
 13513141516171819
 202113522232425135
 26272813513513513532
 33343832135135135135
 37135135381358135135
 135135135135135135135135
 135135111358135135135
 135135135135135135135135
 13511135135135135135135
 13513514151617135135
 135135135135135135135135
 262728135135135135135
 333438136135140135135
 13513513513513513513511
 13510111354135135135
 413513513513513589
 1011135135135135135135
 13513141516171819
 2021822232425135
 262728135293013532
 33343832135135135135
 371351353813511135135
 135135135135135135135135
 135135135135135135135135
 135135135135135135135135
 293013511135135135135
 135135135135135135135135
 135135135135135135135135
 13513513513513513513530
 13541411411414141143
 142142142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142144142145142145
 146142143142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142142142142
 1421421421421421144144
 142143142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142144142145
 142143142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142142142142
 142142142142142144142145
 1421451424041394239
 3939393939394344
 4546474849505140
 5253545539565758
 3959603961626364
 61139239653939
 64390
};

static const char _use_syllable_machine_trans_targs[] = {
 1122023115961
 909111611181049293
 9495108110111112113105
 10610799100101119120121
 114969798126115981
 341175678
 2123242526181920
 121314293027910
 11281516221321
 4533343536495152
 5354464748404142
 5537383956575843
 14415011160
 1116263766465
 6667808283848577
 7879717273866869
 708788897475811
 1021103109117111
 123124125
};

static const char _use_syllable_machine_trans_actions[] = {
 10000400
 00050000
 00000000
 00000000
 00067089
 001000000
 00000000
 00000000
 0000011012
 00000000
 00000000
 00000000
 1301401516170
 18192000000
 00000000
 00000000
 000000021
 022000232425
 000
};

static const char _use_syllable_machine_to_state_actions[] = {
 02000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 0000000
};

static const char _use_syllable_machine_from_state_actions[] = {
 03000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 00000000
 0000000
};

static const short _use_syllable_machine_eof_trans[] = {
 10404040404040
 4040404040404040
 4040404040404040
 4040404040404070
 7070707070707070
 7070709770707070
 70707070707070101
 9770101103106707070
 7070707070707070
 7070977070707070
 70707070707010197
 70101136136136136136136
 136136138136136136136136
 136136136136136136136136
 136136136136136136136136
 13614214314314314340
};

static const int use_syllable_machine_start = 1;
static const int use_syllable_machine_first_final = 1;
static const int use_syllable_machine_error = -1;

static const int use_syllable_machine_en_main = 1;


#line 58 "hb-ot-shaper-use-machine.rl"



#line 186 "hb-ot-shaper-use-machine.rl"


#define found_syllable(syllable_type) \
  HB_STMT_START { \
    if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
    for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
    syllable_serial++; \
    if (syllable_serial == 16) syllable_serial = 1; \
  } HB_STMT_END


template <typename Iter>
struct machine_index_t :
  hb_iter_with_fallback_t<machine_index_t<Iter>,
     typename Iter::item_t>
{
  machine_index_t (const Iter& it) : it (it) {}
  machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
               typename Iter::item_t> (),
            it (o.it), is_null (o.is_null) {}

  static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
  static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;

  typename Iter::item_t __item__ () const { return *it; }
  typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
  unsigned __len__ () const { return it.len (); }
  void __next__ () { ++it; }
  void __forward__ (unsigned n) { it += n; }
  void __prev__ () { --it; }
  void __rewind__ (unsigned n) { it -= n; }

  void operator = (unsigned n)
  {
    assert (n == 0);
    is_null = true;
  }
  explicit operator bool () { return !is_null; }

  void operator = (const machine_index_t& o)
  {
    is_null = o.is_null;
    unsigned index = (*it).first;
    unsigned n = (*o.it).first;
    if (index < n) it += n - index; else if (index > n) it -= index - n;
  }
  bool operator == (const machine_index_t& o) const
  { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
  bool operator != (const machine_index_t& o) const { return !(*this == o); }

  private:
  Iter it;
  bool is_null = false;
};
struct
{
  template <typename Iter,
     hb_requires (hb_is_iterable (Iter))>
  machine_index_t<hb_iter_type<Iter>>
  operator () (Iter&& it) const
  { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
}
HB_FUNCOBJ (machine_index);



static bool
not_ccs_default_ignorable (const hb_glyph_info_t &i)
return i.use_category() != USE(CGJ); }

static inline void
find_syllables_use (hb_buffer_t *buffer)
{
  hb_glyph_info_t *info = buffer->info;
  auto p =
    + hb_iter (info, buffer->len)
    | hb_enumerate
    | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
   hb_second)
    | hb_filter ([&] (const hb_pair_t<unsignedconst hb_glyph_info_t &> p)
   {
     if (p.second.use_category() == USE(ZWNJ))
       for (unsigned i = p.first + 1; i < buffer->len; ++i)
         if (not_ccs_default_ignorable (info[i]))
    return !_hb_glyph_info_is_unicode_mark (&info[i]);
     return true;
   })
    | hb_enumerate
    | machine_index
    ;
  auto pe = p + p.len ();
  auto eof = +pe;
  auto ts = +p;
  auto te = +p;
  unsigned int act HB_UNUSED;
  int cs;
  
#line 933 "hb-ot-shaper-use-machine.hh"
 {
 cs = use_syllable_machine_start;
 ts = 0;
 te = 0;
 act = 0;
 }

#line 286 "hb-ot-shaper-use-machine.rl"


  unsigned int syllable_serial = 1;
  
#line 946 "hb-ot-shaper-use-machine.hh"
 {
 int _slen;
 int _trans;
 const unsigned char *_keys;
 const unsigned char *_inds;
 if ( p == pe )
  goto _test_eof;
_resume:
 switch ( _use_syllable_machine_from_state_actions[cs] ) {
 case 3:
#line 1 "NONE"
 {ts = p;}
 break;
#line 960 "hb-ot-shaper-use-machine.hh"
 }

 _keys = _use_syllable_machine_trans_keys + (cs<<1);
 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];

 _slen = _use_syllable_machine_key_spans[cs];
 _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
  ( (*p).second.second.use_category()) <= _keys[1] ?
  ( (*p).second.second.use_category()) - _keys[0] : _slen ];

_eof_trans:
 cs = _use_syllable_machine_trans_targs[_trans];

 if ( _use_syllable_machine_trans_actions[_trans] == 0 )
  goto _again;

 switch ( _use_syllable_machine_trans_actions[_trans] ) {
 case 7:
#line 1 "NONE"
 {te = p+1;}
 break;
 case 16:
#line 173 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
 break;
 case 14:
#line 174 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
 break;
 case 12:
#line 175 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_standard_cluster); }}
 break;
 case 20:
#line 176 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
 break;
 case 18:
#line 177 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_numeral_cluster); }}
 break;
 case 10:
#line 178 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_symbol_cluster); }}
 break;
 case 25:
#line 179 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
 break;
 case 5:
#line 181 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
 break;
 case 4:
#line 182 "hb-ot-shaper-use-machine.rl"
 {te = p+1;{ found_syllable (use_non_cluster); }}
 break;
 case 15:
#line 173 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
 break;
 case 13:
#line 174 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
 break;
 case 11:
#line 175 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_standard_cluster); }}
 break;
 case 19:
#line 176 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
 break;
 case 17:
#line 177 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
 break;
 case 9:
#line 178 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
 break;
 case 24:
#line 179 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
 break;
 case 21:
#line 181 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
 break;
 case 23:
#line 182 "hb-ot-shaper-use-machine.rl"
 {te = p;p--;{ found_syllable (use_non_cluster); }}
 break;
 case 1:
#line 178 "hb-ot-shaper-use-machine.rl"
 {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
 break;
 case 22:
#line 1 "NONE"
 { switch( act ) {
 case 8:
 {{p = ((te))-1;} found_syllable (use_non_cluster); }
 break;
 case 9:
 {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
 break;
 }
 }
 break;
 case 6:
#line 1 "NONE"
 {te = p+1;}
#line 180 "hb-ot-shaper-use-machine.rl"
 {act = 8;}
 break;
 case 8:
#line 1 "NONE"
 {te = p+1;}
#line 181 "hb-ot-shaper-use-machine.rl"
 {act = 9;}
 break;
#line 1082 "hb-ot-shaper-use-machine.hh"
 }

_again:
 switch ( _use_syllable_machine_to_state_actions[cs] ) {
 case 2:
#line 1 "NONE"
 {ts = 0;}
 break;
#line 1091 "hb-ot-shaper-use-machine.hh"
 }

 if ( ++p != pe )
  goto _resume;
 _test_eof: {}
 if ( p == eof )
 {
 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
  _trans = _use_syllable_machine_eof_trans[cs] - 1;
  goto _eof_trans;
 }
 }

 }

#line 291 "hb-ot-shaper-use-machine.rl"

}

#undef found_syllable

#endif /* HB_OT_SHAPER_USE_MACHINE_HH */

Messung V0.5 in Prozent
C=95 H=96 G=95

¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.