hb-buffer-deserialize-text.hh 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917
  1. #line 1 "hb-buffer-deserialize-text.rl"
  2. /*
  3. * Copyright © 2013 Google, Inc.
  4. *
  5. * This is part of HarfBuzz, a text shaping library.
  6. *
  7. * Permission is hereby granted, without written agreement and without
  8. * license or royalty fees, to use, copy, modify, and distribute this
  9. * software and its documentation for any purpose, provided that the
  10. * above copyright notice and the following two paragraphs appear in
  11. * all copies of this software.
  12. *
  13. * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
  14. * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  15. * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
  16. * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  17. * DAMAGE.
  18. *
  19. * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
  20. * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  21. * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
  22. * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
  23. * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  24. *
  25. * Google Author(s): Behdad Esfahbod
  26. */
  27. #ifndef HB_BUFFER_DESERIALIZE_TEXT_HH
  28. #define HB_BUFFER_DESERIALIZE_TEXT_HH
  29. #include "hb.hh"
  30. #line 33 "hb-buffer-deserialize-text.hh"
  31. static const unsigned char _deserialize_text_trans_keys[] = {
  32. 0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 57u, 48u, 57u,
  33. 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 44u, 44u,
  34. 45u, 57u, 48u, 57u, 44u, 57u, 43u, 124u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u,
  35. 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
  36. 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
  37. 0
  38. };
  39. static const char _deserialize_text_key_spans[] = {
  40. 0, 83, 1, 1, 55, 77, 10, 10,
  41. 13, 10, 13, 10, 10, 13, 10, 1,
  42. 13, 10, 14, 82, 116, 116, 0, 77,
  43. 116, 116, 116, 116, 116, 116, 116, 116,
  44. 116, 116, 116, 116, 116, 116, 116, 116
  45. };
  46. static const short _deserialize_text_index_offsets[] = {
  47. 0, 0, 84, 86, 88, 144, 222, 233,
  48. 244, 258, 269, 283, 294, 305, 319, 330,
  49. 332, 346, 357, 372, 455, 572, 689, 690,
  50. 768, 885, 1002, 1119, 1236, 1353, 1470, 1587,
  51. 1704, 1821, 1938, 2055, 2172, 2289, 2406, 2523
  52. };
  53. static const char _deserialize_text_indicies[] = {
  54. 0, 0, 0, 0, 0, 1, 1,
  55. 1, 1, 1, 1, 1, 1, 1, 1,
  56. 1, 1, 1, 1, 1, 1, 1, 1,
  57. 0, 1, 1, 1, 1, 1, 1, 1,
  58. 1, 1, 1, 1, 1, 1, 1, 1,
  59. 1, 1, 1, 1, 1, 1, 1, 1,
  60. 1, 1, 1, 1, 2, 1, 1, 1,
  61. 1, 1, 1, 1, 1, 1, 1, 1,
  62. 1, 1, 1, 1, 1, 1, 1, 1,
  63. 1, 1, 1, 1, 1, 1, 1, 1,
  64. 1, 1, 1, 3, 1, 4, 1, 5,
  65. 1, 6, 6, 6, 6, 6, 6, 6,
  66. 6, 6, 6, 1, 1, 1, 1, 1,
  67. 1, 1, 6, 6, 6, 6, 6, 6,
  68. 1, 1, 1, 1, 1, 1, 1, 1,
  69. 1, 1, 1, 1, 1, 1, 1, 1,
  70. 1, 1, 1, 1, 1, 1, 1, 1,
  71. 1, 1, 6, 6, 6, 6, 6, 6,
  72. 1, 7, 7, 7, 7, 7, 1, 1,
  73. 1, 1, 1, 1, 1, 1, 1, 1,
  74. 1, 1, 1, 1, 1, 1, 1, 1,
  75. 7, 1, 1, 1, 1, 1, 1, 1,
  76. 1, 1, 1, 1, 1, 1, 1, 1,
  77. 1, 1, 1, 1, 1, 1, 1, 1,
  78. 1, 1, 1, 1, 1, 1, 1, 1,
  79. 1, 1, 1, 1, 1, 1, 1, 1,
  80. 1, 1, 1, 1, 1, 1, 1, 1,
  81. 1, 1, 1, 1, 1, 4, 1, 8,
  82. 9, 9, 9, 9, 9, 9, 9, 9,
  83. 9, 1, 10, 11, 11, 11, 11, 11,
  84. 11, 11, 11, 11, 1, 12, 1, 1,
  85. 13, 14, 14, 14, 14, 14, 14, 14,
  86. 14, 14, 1, 15, 16, 16, 16, 16,
  87. 16, 16, 16, 16, 16, 1, 17, 1,
  88. 1, 18, 19, 19, 19, 19, 19, 19,
  89. 19, 19, 19, 1, 20, 21, 21, 21,
  90. 21, 21, 21, 21, 21, 21, 1, 22,
  91. 23, 23, 23, 23, 23, 23, 23, 23,
  92. 23, 1, 24, 1, 1, 25, 26, 26,
  93. 26, 26, 26, 26, 26, 26, 26, 1,
  94. 27, 28, 28, 28, 28, 28, 28, 28,
  95. 28, 28, 1, 29, 1, 30, 1, 1,
  96. 31, 32, 32, 32, 32, 32, 32, 32,
  97. 32, 32, 1, 33, 34, 34, 34, 34,
  98. 34, 34, 34, 34, 34, 1, 29, 1,
  99. 1, 1, 28, 28, 28, 28, 28, 28,
  100. 28, 28, 28, 28, 1, 35, 35, 1,
  101. 1, 1, 1, 1, 1, 1, 1, 1,
  102. 1, 1, 1, 1, 1, 1, 1, 35,
  103. 1, 1, 35, 1, 1, 1, 1, 1,
  104. 1, 1, 1, 1, 1, 1, 1, 1,
  105. 1, 1, 1, 1, 1, 1, 1, 1,
  106. 1, 1, 1, 1, 1, 1, 35, 35,
  107. 1, 1, 1, 1, 1, 1, 1, 1,
  108. 1, 1, 1, 1, 1, 1, 1, 1,
  109. 1, 1, 1, 1, 1, 1, 1, 1,
  110. 1, 1, 1, 1, 1, 1, 35, 1,
  111. 36, 36, 36, 36, 36, 1, 1, 1,
  112. 1, 1, 1, 1, 1, 1, 1, 1,
  113. 1, 1, 1, 1, 1, 1, 1, 36,
  114. 1, 1, 1, 1, 1, 1, 1, 1,
  115. 1, 1, 1, 1, 1, 1, 1, 37,
  116. 37, 37, 37, 37, 37, 37, 37, 37,
  117. 37, 1, 1, 1, 38, 39, 1, 1,
  118. 37, 37, 37, 37, 37, 37, 1, 1,
  119. 1, 1, 1, 1, 1, 1, 1, 1,
  120. 1, 1, 1, 1, 1, 1, 1, 1,
  121. 1, 1, 1, 1, 1, 1, 1, 1,
  122. 37, 37, 37, 37, 37, 37, 1, 1,
  123. 1, 1, 1, 1, 1, 1, 1, 1,
  124. 1, 1, 1, 1, 1, 1, 1, 1,
  125. 1, 1, 1, 40, 1, 41, 41, 41,
  126. 41, 41, 1, 1, 1, 1, 1, 1,
  127. 1, 1, 1, 1, 1, 1, 1, 1,
  128. 1, 1, 1, 1, 41, 1, 1, 1,
  129. 1, 1, 1, 1, 1, 1, 1, 1,
  130. 1, 1, 1, 1, 1, 1, 1, 1,
  131. 1, 1, 1, 1, 1, 1, 1, 1,
  132. 1, 1, 42, 1, 1, 1, 1, 1,
  133. 1, 1, 1, 1, 1, 1, 1, 1,
  134. 1, 1, 1, 1, 1, 1, 1, 1,
  135. 1, 1, 1, 1, 1, 1, 1, 1,
  136. 1, 1, 1, 1, 1, 1, 1, 1,
  137. 1, 1, 1, 1, 1, 1, 1, 1,
  138. 1, 1, 1, 1, 1, 1, 1, 1,
  139. 1, 1, 1, 1, 1, 1, 1, 1,
  140. 43, 1, 1, 7, 7, 7, 7, 7,
  141. 1, 1, 1, 1, 1, 1, 1, 1,
  142. 1, 1, 1, 1, 1, 1, 1, 1,
  143. 1, 1, 7, 1, 1, 1, 1, 1,
  144. 1, 1, 1, 1, 1, 1, 1, 1,
  145. 1, 1, 1, 1, 1, 1, 1, 1,
  146. 1, 1, 1, 1, 1, 1, 1, 1,
  147. 1, 1, 1, 1, 1, 1, 1, 1,
  148. 1, 1, 1, 1, 1, 1, 1, 1,
  149. 1, 1, 1, 1, 1, 1, 1, 4,
  150. 1, 44, 44, 44, 44, 44, 1, 1,
  151. 1, 1, 1, 1, 1, 1, 1, 1,
  152. 1, 1, 1, 1, 1, 1, 1, 1,
  153. 44, 1, 1, 1, 1, 1, 1, 1,
  154. 1, 1, 1, 1, 1, 1, 1, 1,
  155. 1, 1, 1, 1, 1, 1, 1, 1,
  156. 1, 1, 1, 1, 1, 1, 45, 1,
  157. 1, 1, 1, 1, 1, 1, 1, 1,
  158. 1, 1, 1, 1, 1, 1, 1, 1,
  159. 1, 1, 1, 1, 1, 1, 1, 1,
  160. 1, 1, 1, 1, 1, 1, 1, 1,
  161. 1, 1, 1, 1, 1, 1, 1, 1,
  162. 1, 1, 1, 1, 1, 1, 1, 1,
  163. 1, 1, 1, 1, 1, 1, 1, 1,
  164. 1, 1, 1, 1, 46, 1, 44, 44,
  165. 44, 44, 44, 1, 1, 1, 1, 1,
  166. 1, 1, 1, 1, 1, 1, 1, 1,
  167. 1, 1, 1, 1, 1, 44, 1, 1,
  168. 1, 1, 1, 1, 1, 1, 1, 1,
  169. 1, 1, 1, 1, 1, 47, 47, 47,
  170. 47, 47, 47, 47, 47, 47, 47, 1,
  171. 1, 1, 1, 45, 1, 1, 1, 1,
  172. 1, 1, 1, 1, 1, 1, 1, 1,
  173. 1, 1, 1, 1, 1, 1, 1, 1,
  174. 1, 1, 1, 1, 1, 1, 1, 1,
  175. 1, 1, 1, 1, 1, 1, 1, 1,
  176. 1, 1, 1, 1, 1, 1, 1, 1,
  177. 1, 1, 1, 1, 1, 1, 1, 1,
  178. 1, 1, 1, 1, 1, 1, 1, 1,
  179. 1, 46, 1, 49, 49, 49, 49, 49,
  180. 48, 48, 48, 48, 48, 48, 48, 48,
  181. 48, 48, 48, 48, 48, 48, 48, 48,
  182. 48, 48, 49, 48, 48, 50, 48, 48,
  183. 48, 48, 48, 48, 48, 51, 1, 48,
  184. 48, 48, 48, 48, 48, 48, 48, 48,
  185. 48, 48, 48, 48, 48, 48, 48, 52,
  186. 48, 48, 53, 48, 48, 48, 48, 48,
  187. 48, 48, 48, 48, 48, 48, 48, 48,
  188. 48, 48, 48, 48, 48, 48, 48, 48,
  189. 48, 48, 48, 48, 48, 48, 54, 55,
  190. 48, 48, 48, 48, 48, 48, 48, 48,
  191. 48, 48, 48, 48, 48, 48, 48, 48,
  192. 48, 48, 48, 48, 48, 48, 48, 48,
  193. 48, 48, 48, 48, 48, 48, 56, 48,
  194. 57, 57, 57, 57, 57, 35, 35, 35,
  195. 35, 35, 35, 35, 35, 35, 35, 35,
  196. 35, 35, 35, 35, 35, 35, 35, 57,
  197. 35, 35, 58, 35, 35, 35, 35, 35,
  198. 35, 35, 59, 1, 35, 35, 35, 35,
  199. 35, 35, 35, 35, 35, 35, 35, 35,
  200. 35, 35, 35, 35, 60, 35, 35, 61,
  201. 35, 35, 35, 35, 35, 35, 35, 35,
  202. 35, 35, 35, 35, 35, 35, 35, 35,
  203. 35, 35, 35, 35, 35, 35, 35, 35,
  204. 35, 35, 35, 62, 63, 35, 35, 35,
  205. 35, 35, 35, 35, 35, 35, 35, 35,
  206. 35, 35, 35, 35, 35, 35, 35, 35,
  207. 35, 35, 35, 35, 35, 35, 35, 35,
  208. 35, 35, 35, 64, 35, 65, 65, 65,
  209. 65, 65, 1, 1, 1, 1, 1, 1,
  210. 1, 1, 1, 1, 1, 1, 1, 1,
  211. 1, 1, 1, 1, 65, 1, 1, 1,
  212. 1, 1, 1, 1, 1, 1, 1, 1,
  213. 1, 1, 1, 1, 1, 1, 1, 1,
  214. 1, 1, 1, 1, 1, 1, 1, 1,
  215. 1, 1, 1, 1, 1, 1, 1, 1,
  216. 1, 1, 1, 1, 1, 1, 1, 1,
  217. 1, 1, 1, 1, 1, 1, 1, 1,
  218. 1, 1, 1, 1, 1, 1, 1, 1,
  219. 1, 66, 1, 1, 1, 1, 1, 1,
  220. 1, 1, 1, 1, 1, 1, 1, 1,
  221. 1, 1, 1, 1, 1, 1, 1, 1,
  222. 1, 1, 1, 1, 1, 1, 1, 1,
  223. 67, 1, 68, 68, 68, 68, 68, 1,
  224. 1, 1, 1, 1, 1, 1, 1, 1,
  225. 1, 1, 1, 1, 1, 1, 1, 1,
  226. 1, 68, 1, 1, 1, 1, 1, 1,
  227. 1, 1, 1, 1, 1, 1, 1, 1,
  228. 1, 1, 1, 1, 1, 1, 1, 1,
  229. 1, 1, 1, 1, 1, 1, 1, 1,
  230. 1, 1, 1, 1, 1, 1, 1, 1,
  231. 1, 1, 1, 1, 1, 1, 1, 1,
  232. 1, 1, 1, 1, 1, 1, 1, 1,
  233. 1, 1, 1, 1, 1, 1, 42, 1,
  234. 1, 1, 1, 1, 1, 1, 1, 1,
  235. 1, 1, 1, 1, 1, 1, 1, 1,
  236. 1, 1, 1, 1, 1, 1, 1, 1,
  237. 1, 1, 1, 1, 1, 69, 1, 70,
  238. 70, 70, 70, 70, 48, 48, 48, 48,
  239. 48, 48, 48, 48, 48, 48, 48, 48,
  240. 48, 48, 48, 48, 48, 48, 70, 48,
  241. 48, 50, 48, 48, 48, 48, 48, 48,
  242. 48, 51, 1, 48, 48, 48, 48, 48,
  243. 48, 48, 48, 48, 48, 48, 48, 48,
  244. 48, 48, 48, 52, 48, 48, 53, 48,
  245. 48, 48, 48, 48, 48, 48, 48, 48,
  246. 48, 48, 48, 48, 48, 48, 48, 48,
  247. 48, 48, 48, 48, 48, 48, 48, 48,
  248. 48, 48, 54, 55, 48, 48, 48, 48,
  249. 48, 48, 48, 48, 48, 48, 48, 48,
  250. 48, 48, 48, 48, 48, 48, 48, 48,
  251. 48, 48, 48, 48, 48, 48, 48, 48,
  252. 48, 48, 56, 48, 71, 71, 71, 71,
  253. 71, 1, 1, 1, 1, 1, 1, 1,
  254. 1, 1, 1, 1, 1, 1, 1, 1,
  255. 1, 1, 1, 71, 1, 1, 72, 1,
  256. 1, 1, 1, 1, 1, 1, 1, 73,
  257. 1, 1, 1, 1, 1, 1, 1, 1,
  258. 1, 1, 1, 1, 1, 1, 1, 1,
  259. 1, 1, 1, 1, 1, 1, 1, 1,
  260. 1, 1, 1, 1, 1, 1, 1, 1,
  261. 1, 1, 1, 1, 1, 1, 1, 1,
  262. 1, 1, 1, 1, 1, 1, 1, 1,
  263. 74, 1, 1, 1, 1, 1, 1, 1,
  264. 1, 1, 1, 1, 1, 1, 1, 1,
  265. 1, 1, 1, 1, 1, 1, 1, 1,
  266. 1, 1, 1, 1, 1, 1, 1, 75,
  267. 1, 76, 76, 76, 76, 76, 1, 1,
  268. 1, 1, 1, 1, 1, 1, 1, 1,
  269. 1, 1, 1, 1, 1, 1, 1, 1,
  270. 76, 1, 1, 77, 1, 1, 1, 1,
  271. 1, 1, 1, 1, 1, 1, 1, 1,
  272. 1, 1, 1, 1, 1, 1, 1, 1,
  273. 1, 1, 1, 1, 1, 1, 1, 1,
  274. 1, 1, 1, 1, 1, 1, 1, 1,
  275. 1, 1, 1, 1, 1, 1, 1, 1,
  276. 1, 1, 1, 1, 1, 1, 1, 1,
  277. 1, 1, 1, 1, 1, 78, 1, 1,
  278. 1, 1, 1, 1, 1, 1, 1, 1,
  279. 1, 1, 1, 1, 1, 1, 1, 1,
  280. 1, 1, 1, 1, 1, 1, 1, 1,
  281. 1, 1, 1, 1, 79, 1, 76, 76,
  282. 76, 76, 76, 1, 1, 1, 1, 1,
  283. 1, 1, 1, 1, 1, 1, 1, 1,
  284. 1, 1, 1, 1, 1, 76, 1, 1,
  285. 77, 1, 1, 1, 1, 1, 1, 1,
  286. 1, 1, 1, 1, 1, 21, 21, 21,
  287. 21, 21, 21, 21, 21, 21, 21, 1,
  288. 1, 1, 1, 1, 1, 1, 1, 1,
  289. 1, 1, 1, 1, 1, 1, 1, 1,
  290. 1, 1, 1, 1, 1, 1, 1, 1,
  291. 1, 1, 1, 1, 1, 1, 1, 1,
  292. 1, 1, 78, 1, 1, 1, 1, 1,
  293. 1, 1, 1, 1, 1, 1, 1, 1,
  294. 1, 1, 1, 1, 1, 1, 1, 1,
  295. 1, 1, 1, 1, 1, 1, 1, 1,
  296. 1, 79, 1, 71, 71, 71, 71, 71,
  297. 1, 1, 1, 1, 1, 1, 1, 1,
  298. 1, 1, 1, 1, 1, 1, 1, 1,
  299. 1, 1, 71, 1, 1, 72, 1, 1,
  300. 1, 1, 1, 1, 1, 1, 73, 1,
  301. 1, 1, 16, 16, 16, 16, 16, 16,
  302. 16, 16, 16, 16, 1, 1, 1, 1,
  303. 1, 1, 1, 1, 1, 1, 1, 1,
  304. 1, 1, 1, 1, 1, 1, 1, 1,
  305. 1, 1, 1, 1, 1, 1, 1, 1,
  306. 1, 1, 1, 1, 1, 1, 1, 74,
  307. 1, 1, 1, 1, 1, 1, 1, 1,
  308. 1, 1, 1, 1, 1, 1, 1, 1,
  309. 1, 1, 1, 1, 1, 1, 1, 1,
  310. 1, 1, 1, 1, 1, 1, 75, 1,
  311. 80, 80, 80, 80, 80, 1, 1, 1,
  312. 1, 1, 1, 1, 1, 1, 1, 1,
  313. 1, 1, 1, 1, 1, 1, 1, 80,
  314. 1, 1, 81, 1, 1, 1, 1, 1,
  315. 1, 1, 82, 1, 1, 1, 1, 1,
  316. 1, 1, 1, 1, 1, 1, 1, 1,
  317. 1, 1, 1, 1, 1, 1, 1, 83,
  318. 1, 1, 1, 1, 1, 1, 1, 1,
  319. 1, 1, 1, 1, 1, 1, 1, 1,
  320. 1, 1, 1, 1, 1, 1, 1, 1,
  321. 1, 1, 1, 1, 45, 1, 1, 1,
  322. 1, 1, 1, 1, 1, 1, 1, 1,
  323. 1, 1, 1, 1, 1, 1, 1, 1,
  324. 1, 1, 1, 1, 1, 1, 1, 1,
  325. 1, 1, 1, 84, 1, 85, 85, 85,
  326. 85, 85, 1, 1, 1, 1, 1, 1,
  327. 1, 1, 1, 1, 1, 1, 1, 1,
  328. 1, 1, 1, 1, 85, 1, 1, 86,
  329. 1, 1, 1, 1, 1, 1, 1, 87,
  330. 1, 1, 1, 1, 1, 1, 1, 1,
  331. 1, 1, 1, 1, 1, 1, 1, 1,
  332. 1, 1, 1, 1, 1, 1, 1, 1,
  333. 1, 1, 1, 1, 1, 1, 1, 1,
  334. 1, 1, 1, 1, 1, 1, 1, 1,
  335. 1, 1, 1, 1, 1, 1, 1, 1,
  336. 1, 88, 1, 1, 1, 1, 1, 1,
  337. 1, 1, 1, 1, 1, 1, 1, 1,
  338. 1, 1, 1, 1, 1, 1, 1, 1,
  339. 1, 1, 1, 1, 1, 1, 1, 1,
  340. 89, 1, 85, 85, 85, 85, 85, 1,
  341. 1, 1, 1, 1, 1, 1, 1, 1,
  342. 1, 1, 1, 1, 1, 1, 1, 1,
  343. 1, 85, 1, 1, 86, 1, 1, 1,
  344. 1, 1, 1, 1, 87, 1, 1, 1,
  345. 1, 34, 34, 34, 34, 34, 34, 34,
  346. 34, 34, 34, 1, 1, 1, 1, 1,
  347. 1, 1, 1, 1, 1, 1, 1, 1,
  348. 1, 1, 1, 1, 1, 1, 1, 1,
  349. 1, 1, 1, 1, 1, 1, 1, 1,
  350. 1, 1, 1, 1, 1, 1, 88, 1,
  351. 1, 1, 1, 1, 1, 1, 1, 1,
  352. 1, 1, 1, 1, 1, 1, 1, 1,
  353. 1, 1, 1, 1, 1, 1, 1, 1,
  354. 1, 1, 1, 1, 1, 89, 1, 80,
  355. 80, 80, 80, 80, 1, 1, 1, 1,
  356. 1, 1, 1, 1, 1, 1, 1, 1,
  357. 1, 1, 1, 1, 1, 1, 80, 1,
  358. 1, 81, 1, 1, 1, 1, 1, 1,
  359. 1, 82, 1, 1, 1, 1, 90, 90,
  360. 90, 90, 90, 90, 90, 90, 90, 90,
  361. 1, 1, 1, 1, 1, 1, 83, 1,
  362. 1, 1, 1, 1, 1, 1, 1, 1,
  363. 1, 1, 1, 1, 1, 1, 1, 1,
  364. 1, 1, 1, 1, 1, 1, 1, 1,
  365. 1, 1, 1, 45, 1, 1, 1, 1,
  366. 1, 1, 1, 1, 1, 1, 1, 1,
  367. 1, 1, 1, 1, 1, 1, 1, 1,
  368. 1, 1, 1, 1, 1, 1, 1, 1,
  369. 1, 1, 84, 1, 65, 65, 65, 65,
  370. 65, 1, 1, 1, 1, 1, 1, 1,
  371. 1, 1, 1, 1, 1, 1, 1, 1,
  372. 1, 1, 1, 65, 1, 1, 1, 1,
  373. 1, 1, 1, 1, 1, 1, 1, 1,
  374. 1, 1, 1, 91, 91, 91, 91, 91,
  375. 91, 91, 91, 91, 91, 1, 1, 1,
  376. 1, 1, 1, 1, 1, 1, 1, 1,
  377. 1, 1, 1, 1, 1, 1, 1, 1,
  378. 1, 1, 1, 1, 1, 1, 1, 1,
  379. 1, 1, 1, 1, 1, 1, 1, 1,
  380. 66, 1, 1, 1, 1, 1, 1, 1,
  381. 1, 1, 1, 1, 1, 1, 1, 1,
  382. 1, 1, 1, 1, 1, 1, 1, 1,
  383. 1, 1, 1, 1, 1, 1, 1, 67,
  384. 1, 0
  385. };
  386. static const char _deserialize_text_trans_targs[] = {
  387. 1, 0, 2, 26, 3, 4, 20, 5,
  388. 24, 25, 28, 39, 9, 31, 34, 31,
  389. 34, 11, 32, 33, 32, 33, 35, 38,
  390. 14, 15, 18, 15, 18, 16, 17, 36,
  391. 37, 36, 37, 27, 21, 20, 6, 22,
  392. 23, 21, 22, 23, 21, 22, 23, 25,
  393. 27, 27, 7, 8, 12, 13, 19, 22,
  394. 30, 27, 7, 8, 12, 13, 19, 22,
  395. 30, 29, 22, 30, 29, 30, 30, 29,
  396. 7, 10, 22, 30, 29, 7, 22, 30,
  397. 29, 7, 8, 13, 30, 29, 7, 8,
  398. 22, 30, 38, 39
  399. };
  400. static const char _deserialize_text_trans_actions[] = {
  401. 0, 0, 0, 0, 1, 0, 2, 0,
  402. 2, 2, 3, 3, 4, 3, 3, 5,
  403. 5, 4, 3, 3, 5, 5, 3, 3,
  404. 4, 4, 4, 0, 0, 6, 4, 3,
  405. 3, 5, 5, 5, 7, 8, 9, 7,
  406. 7, 0, 0, 0, 10, 10, 10, 8,
  407. 12, 13, 14, 14, 14, 14, 15, 11,
  408. 11, 17, 18, 18, 18, 18, 0, 16,
  409. 16, 19, 19, 19, 0, 0, 13, 20,
  410. 21, 21, 20, 20, 22, 23, 22, 22,
  411. 10, 24, 24, 24, 10, 25, 26, 26,
  412. 25, 25, 5, 5
  413. };
  414. static const char _deserialize_text_eof_actions[] = {
  415. 0, 0, 0, 0, 0, 0, 0, 0,
  416. 0, 0, 0, 0, 0, 0, 0, 0,
  417. 0, 0, 0, 0, 7, 0, 0, 0,
  418. 10, 10, 11, 16, 19, 0, 11, 20,
  419. 22, 22, 20, 10, 25, 25, 10, 19
  420. };
  421. static const int deserialize_text_start = 1;
  422. static const int deserialize_text_first_final = 20;
  423. static const int deserialize_text_error = 0;
  424. static const int deserialize_text_en_main = 1;
  425. #line 117 "hb-buffer-deserialize-text.rl"
  426. static hb_bool_t
  427. _hb_buffer_deserialize_text (hb_buffer_t *buffer,
  428. const char *buf,
  429. unsigned int buf_len,
  430. const char **end_ptr,
  431. hb_font_t *font)
  432. {
  433. const char *p = buf, *pe = buf + buf_len;
  434. /* Ensure we have positions. */
  435. (void) hb_buffer_get_glyph_positions (buffer, nullptr);
  436. while (p < pe && ISSPACE (*p))
  437. p++;
  438. const char *eof = pe, *tok = nullptr;
  439. int cs;
  440. hb_glyph_info_t info = {0};
  441. hb_glyph_position_t pos = {0};
  442. #line 457 "hb-buffer-deserialize-text.hh"
  443. {
  444. cs = deserialize_text_start;
  445. }
  446. #line 460 "hb-buffer-deserialize-text.hh"
  447. {
  448. int _slen;
  449. int _trans;
  450. const unsigned char *_keys;
  451. const char *_inds;
  452. if ( p == pe )
  453. goto _test_eof;
  454. if ( cs == 0 )
  455. goto _out;
  456. _resume:
  457. _keys = _deserialize_text_trans_keys + (cs<<1);
  458. _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs];
  459. _slen = _deserialize_text_key_spans[cs];
  460. _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
  461. (*p) <= _keys[1] ?
  462. (*p) - _keys[0] : _slen ];
  463. cs = _deserialize_text_trans_targs[_trans];
  464. if ( _deserialize_text_trans_actions[_trans] == 0 )
  465. goto _again;
  466. switch ( _deserialize_text_trans_actions[_trans] ) {
  467. case 1:
  468. #line 38 "hb-buffer-deserialize-text.rl"
  469. {
  470. hb_memset (&info, 0, sizeof (info));
  471. hb_memset (&pos , 0, sizeof (pos ));
  472. }
  473. break;
  474. case 4:
  475. #line 51 "hb-buffer-deserialize-text.rl"
  476. {
  477. tok = p;
  478. }
  479. break;
  480. case 5:
  481. #line 55 "hb-buffer-deserialize-text.rl"
  482. { if (unlikely (!buffer->ensure_glyphs ())) return false; }
  483. break;
  484. case 8:
  485. #line 56 "hb-buffer-deserialize-text.rl"
  486. { if (unlikely (!buffer->ensure_unicode ())) return false; }
  487. break;
  488. case 18:
  489. #line 58 "hb-buffer-deserialize-text.rl"
  490. {
  491. /* TODO Unescape delimiters. */
  492. if (!hb_font_glyph_from_string (font,
  493. tok, p - tok,
  494. &info.codepoint))
  495. return false;
  496. }
  497. break;
  498. case 9:
  499. #line 66 "hb-buffer-deserialize-text.rl"
  500. {if (!parse_hex (tok, p, &info.codepoint )) return false; }
  501. break;
  502. case 24:
  503. #line 68 "hb-buffer-deserialize-text.rl"
  504. { if (!parse_uint (tok, p, &info.cluster )) return false; }
  505. break;
  506. case 6:
  507. #line 69 "hb-buffer-deserialize-text.rl"
  508. { if (!parse_int (tok, p, &pos.x_offset )) return false; }
  509. break;
  510. case 26:
  511. #line 70 "hb-buffer-deserialize-text.rl"
  512. { if (!parse_int (tok, p, &pos.y_offset )) return false; }
  513. break;
  514. case 21:
  515. #line 71 "hb-buffer-deserialize-text.rl"
  516. { if (!parse_int (tok, p, &pos.x_advance)) return false; }
  517. break;
  518. case 23:
  519. #line 72 "hb-buffer-deserialize-text.rl"
  520. { if (!parse_int (tok, p, &pos.y_advance)) return false; }
  521. break;
  522. case 15:
  523. #line 38 "hb-buffer-deserialize-text.rl"
  524. {
  525. hb_memset (&info, 0, sizeof (info));
  526. hb_memset (&pos , 0, sizeof (pos ));
  527. }
  528. #line 51 "hb-buffer-deserialize-text.rl"
  529. {
  530. tok = p;
  531. }
  532. break;
  533. case 3:
  534. #line 51 "hb-buffer-deserialize-text.rl"
  535. {
  536. tok = p;
  537. }
  538. #line 55 "hb-buffer-deserialize-text.rl"
  539. { if (unlikely (!buffer->ensure_glyphs ())) return false; }
  540. break;
  541. case 2:
  542. #line 51 "hb-buffer-deserialize-text.rl"
  543. {
  544. tok = p;
  545. }
  546. #line 56 "hb-buffer-deserialize-text.rl"
  547. { if (unlikely (!buffer->ensure_unicode ())) return false; }
  548. break;
  549. case 16:
  550. #line 58 "hb-buffer-deserialize-text.rl"
  551. {
  552. /* TODO Unescape delimiters. */
  553. if (!hb_font_glyph_from_string (font,
  554. tok, p - tok,
  555. &info.codepoint))
  556. return false;
  557. }
  558. #line 43 "hb-buffer-deserialize-text.rl"
  559. {
  560. buffer->add_info (info);
  561. if (unlikely (!buffer->successful))
  562. return false;
  563. buffer->pos[buffer->len - 1] = pos;
  564. *end_ptr = p;
  565. }
  566. break;
  567. case 7:
  568. #line 66 "hb-buffer-deserialize-text.rl"
  569. {if (!parse_hex (tok, p, &info.codepoint )) return false; }
  570. #line 43 "hb-buffer-deserialize-text.rl"
  571. {
  572. buffer->add_info (info);
  573. if (unlikely (!buffer->successful))
  574. return false;
  575. buffer->pos[buffer->len - 1] = pos;
  576. *end_ptr = p;
  577. }
  578. break;
  579. case 10:
  580. #line 68 "hb-buffer-deserialize-text.rl"
  581. { if (!parse_uint (tok, p, &info.cluster )) return false; }
  582. #line 43 "hb-buffer-deserialize-text.rl"
  583. {
  584. buffer->add_info (info);
  585. if (unlikely (!buffer->successful))
  586. return false;
  587. buffer->pos[buffer->len - 1] = pos;
  588. *end_ptr = p;
  589. }
  590. break;
  591. case 25:
  592. #line 70 "hb-buffer-deserialize-text.rl"
  593. { if (!parse_int (tok, p, &pos.y_offset )) return false; }
  594. #line 43 "hb-buffer-deserialize-text.rl"
  595. {
  596. buffer->add_info (info);
  597. if (unlikely (!buffer->successful))
  598. return false;
  599. buffer->pos[buffer->len - 1] = pos;
  600. *end_ptr = p;
  601. }
  602. break;
  603. case 20:
  604. #line 71 "hb-buffer-deserialize-text.rl"
  605. { if (!parse_int (tok, p, &pos.x_advance)) return false; }
  606. #line 43 "hb-buffer-deserialize-text.rl"
  607. {
  608. buffer->add_info (info);
  609. if (unlikely (!buffer->successful))
  610. return false;
  611. buffer->pos[buffer->len - 1] = pos;
  612. *end_ptr = p;
  613. }
  614. break;
  615. case 22:
  616. #line 72 "hb-buffer-deserialize-text.rl"
  617. { if (!parse_int (tok, p, &pos.y_advance)) return false; }
  618. #line 43 "hb-buffer-deserialize-text.rl"
  619. {
  620. buffer->add_info (info);
  621. if (unlikely (!buffer->successful))
  622. return false;
  623. buffer->pos[buffer->len - 1] = pos;
  624. *end_ptr = p;
  625. }
  626. break;
  627. case 19:
  628. #line 73 "hb-buffer-deserialize-text.rl"
  629. { if (!parse_uint (tok, p, &info.mask )) return false; }
  630. #line 43 "hb-buffer-deserialize-text.rl"
  631. {
  632. buffer->add_info (info);
  633. if (unlikely (!buffer->successful))
  634. return false;
  635. buffer->pos[buffer->len - 1] = pos;
  636. *end_ptr = p;
  637. }
  638. break;
  639. case 12:
  640. #line 38 "hb-buffer-deserialize-text.rl"
  641. {
  642. hb_memset (&info, 0, sizeof (info));
  643. hb_memset (&pos , 0, sizeof (pos ));
  644. }
  645. #line 51 "hb-buffer-deserialize-text.rl"
  646. {
  647. tok = p;
  648. }
  649. #line 55 "hb-buffer-deserialize-text.rl"
  650. { if (unlikely (!buffer->ensure_glyphs ())) return false; }
  651. break;
  652. case 14:
  653. #line 38 "hb-buffer-deserialize-text.rl"
  654. {
  655. hb_memset (&info, 0, sizeof (info));
  656. hb_memset (&pos , 0, sizeof (pos ));
  657. }
  658. #line 51 "hb-buffer-deserialize-text.rl"
  659. {
  660. tok = p;
  661. }
  662. #line 58 "hb-buffer-deserialize-text.rl"
  663. {
  664. /* TODO Unescape delimiters. */
  665. if (!hb_font_glyph_from_string (font,
  666. tok, p - tok,
  667. &info.codepoint))
  668. return false;
  669. }
  670. break;
  671. case 17:
  672. #line 58 "hb-buffer-deserialize-text.rl"
  673. {
  674. /* TODO Unescape delimiters. */
  675. if (!hb_font_glyph_from_string (font,
  676. tok, p - tok,
  677. &info.codepoint))
  678. return false;
  679. }
  680. #line 55 "hb-buffer-deserialize-text.rl"
  681. { if (unlikely (!buffer->ensure_glyphs ())) return false; }
  682. #line 43 "hb-buffer-deserialize-text.rl"
  683. {
  684. buffer->add_info (info);
  685. if (unlikely (!buffer->successful))
  686. return false;
  687. buffer->pos[buffer->len - 1] = pos;
  688. *end_ptr = p;
  689. }
  690. break;
  691. case 11:
  692. #line 38 "hb-buffer-deserialize-text.rl"
  693. {
  694. hb_memset (&info, 0, sizeof (info));
  695. hb_memset (&pos , 0, sizeof (pos ));
  696. }
  697. #line 51 "hb-buffer-deserialize-text.rl"
  698. {
  699. tok = p;
  700. }
  701. #line 58 "hb-buffer-deserialize-text.rl"
  702. {
  703. /* TODO Unescape delimiters. */
  704. if (!hb_font_glyph_from_string (font,
  705. tok, p - tok,
  706. &info.codepoint))
  707. return false;
  708. }
  709. #line 43 "hb-buffer-deserialize-text.rl"
  710. {
  711. buffer->add_info (info);
  712. if (unlikely (!buffer->successful))
  713. return false;
  714. buffer->pos[buffer->len - 1] = pos;
  715. *end_ptr = p;
  716. }
  717. break;
  718. case 13:
  719. #line 38 "hb-buffer-deserialize-text.rl"
  720. {
  721. hb_memset (&info, 0, sizeof (info));
  722. hb_memset (&pos , 0, sizeof (pos ));
  723. }
  724. #line 51 "hb-buffer-deserialize-text.rl"
  725. {
  726. tok = p;
  727. }
  728. #line 58 "hb-buffer-deserialize-text.rl"
  729. {
  730. /* TODO Unescape delimiters. */
  731. if (!hb_font_glyph_from_string (font,
  732. tok, p - tok,
  733. &info.codepoint))
  734. return false;
  735. }
  736. #line 55 "hb-buffer-deserialize-text.rl"
  737. { if (unlikely (!buffer->ensure_glyphs ())) return false; }
  738. #line 43 "hb-buffer-deserialize-text.rl"
  739. {
  740. buffer->add_info (info);
  741. if (unlikely (!buffer->successful))
  742. return false;
  743. buffer->pos[buffer->len - 1] = pos;
  744. *end_ptr = p;
  745. }
  746. break;
  747. #line 715 "hb-buffer-deserialize-text.hh"
  748. }
  749. _again:
  750. if ( cs == 0 )
  751. goto _out;
  752. if ( ++p != pe )
  753. goto _resume;
  754. _test_eof: {}
  755. if ( p == eof )
  756. {
  757. switch ( _deserialize_text_eof_actions[cs] ) {
  758. case 16:
  759. #line 58 "hb-buffer-deserialize-text.rl"
  760. {
  761. /* TODO Unescape delimiters. */
  762. if (!hb_font_glyph_from_string (font,
  763. tok, p - tok,
  764. &info.codepoint))
  765. return false;
  766. }
  767. #line 43 "hb-buffer-deserialize-text.rl"
  768. {
  769. buffer->add_info (info);
  770. if (unlikely (!buffer->successful))
  771. return false;
  772. buffer->pos[buffer->len - 1] = pos;
  773. *end_ptr = p;
  774. }
  775. break;
  776. case 7:
  777. #line 66 "hb-buffer-deserialize-text.rl"
  778. {if (!parse_hex (tok, p, &info.codepoint )) return false; }
  779. #line 43 "hb-buffer-deserialize-text.rl"
  780. {
  781. buffer->add_info (info);
  782. if (unlikely (!buffer->successful))
  783. return false;
  784. buffer->pos[buffer->len - 1] = pos;
  785. *end_ptr = p;
  786. }
  787. break;
  788. case 10:
  789. #line 68 "hb-buffer-deserialize-text.rl"
  790. { if (!parse_uint (tok, p, &info.cluster )) return false; }
  791. #line 43 "hb-buffer-deserialize-text.rl"
  792. {
  793. buffer->add_info (info);
  794. if (unlikely (!buffer->successful))
  795. return false;
  796. buffer->pos[buffer->len - 1] = pos;
  797. *end_ptr = p;
  798. }
  799. break;
  800. case 25:
  801. #line 70 "hb-buffer-deserialize-text.rl"
  802. { if (!parse_int (tok, p, &pos.y_offset )) return false; }
  803. #line 43 "hb-buffer-deserialize-text.rl"
  804. {
  805. buffer->add_info (info);
  806. if (unlikely (!buffer->successful))
  807. return false;
  808. buffer->pos[buffer->len - 1] = pos;
  809. *end_ptr = p;
  810. }
  811. break;
  812. case 20:
  813. #line 71 "hb-buffer-deserialize-text.rl"
  814. { if (!parse_int (tok, p, &pos.x_advance)) return false; }
  815. #line 43 "hb-buffer-deserialize-text.rl"
  816. {
  817. buffer->add_info (info);
  818. if (unlikely (!buffer->successful))
  819. return false;
  820. buffer->pos[buffer->len - 1] = pos;
  821. *end_ptr = p;
  822. }
  823. break;
  824. case 22:
  825. #line 72 "hb-buffer-deserialize-text.rl"
  826. { if (!parse_int (tok, p, &pos.y_advance)) return false; }
  827. #line 43 "hb-buffer-deserialize-text.rl"
  828. {
  829. buffer->add_info (info);
  830. if (unlikely (!buffer->successful))
  831. return false;
  832. buffer->pos[buffer->len - 1] = pos;
  833. *end_ptr = p;
  834. }
  835. break;
  836. case 19:
  837. #line 73 "hb-buffer-deserialize-text.rl"
  838. { if (!parse_uint (tok, p, &info.mask )) return false; }
  839. #line 43 "hb-buffer-deserialize-text.rl"
  840. {
  841. buffer->add_info (info);
  842. if (unlikely (!buffer->successful))
  843. return false;
  844. buffer->pos[buffer->len - 1] = pos;
  845. *end_ptr = p;
  846. }
  847. break;
  848. case 11:
  849. #line 38 "hb-buffer-deserialize-text.rl"
  850. {
  851. hb_memset (&info, 0, sizeof (info));
  852. hb_memset (&pos , 0, sizeof (pos ));
  853. }
  854. #line 51 "hb-buffer-deserialize-text.rl"
  855. {
  856. tok = p;
  857. }
  858. #line 58 "hb-buffer-deserialize-text.rl"
  859. {
  860. /* TODO Unescape delimiters. */
  861. if (!hb_font_glyph_from_string (font,
  862. tok, p - tok,
  863. &info.codepoint))
  864. return false;
  865. }
  866. #line 43 "hb-buffer-deserialize-text.rl"
  867. {
  868. buffer->add_info (info);
  869. if (unlikely (!buffer->successful))
  870. return false;
  871. buffer->pos[buffer->len - 1] = pos;
  872. *end_ptr = p;
  873. }
  874. break;
  875. #line 825 "hb-buffer-deserialize-text.hh"
  876. }
  877. }
  878. _out: {}
  879. }
  880. #line 141 "hb-buffer-deserialize-text.rl"
  881. *end_ptr = p;
  882. return p == pe && *(p-1) != ']';
  883. }
  884. #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */