From fe186702abf23e5ecf6d16235215acb8c4d5e02f Mon Sep 17 00:00:00 2001 From: Simon Cozens Date: Mon, 21 Sep 2020 14:35:05 +0100 Subject: [PATCH] Put the flags back in and serialize clusters. Note that now JSON glyph buffers and Unicode buffers look very similar, except for the g/u property difference. --- src/hb-buffer-deserialize-json.hh | 587 ++++++++++++++---------------- src/hb-buffer-deserialize-json.rl | 9 +- src/hb-buffer-deserialize-text.hh | 498 +++++++++++++------------ src/hb-buffer-deserialize-text.rl | 2 +- src/hb-buffer-serialize.cc | 45 ++- src/hb-buffer.h | 3 +- test/api/test-buffer.c | 19 +- 7 files changed, 592 insertions(+), 571 deletions(-) diff --git a/src/hb-buffer-deserialize-json.hh b/src/hb-buffer-deserialize-json.hh index 285d898eb..64fac02c5 100644 --- a/src/hb-buffer-deserialize-json.hh +++ b/src/hb-buffer-deserialize-json.hh @@ -34,33 +34,33 @@ #line 36 "hb-buffer-deserialize-json.hh" static const unsigned char _deserialize_json_trans_keys[] = { - 0u, 0u, 9u, 123u, 9u, 93u, 9u, 44u, 9u, 57u, 9u, 93u, 9u, 34u, 97u, 103u, - 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 9u, 123u, - 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 108u, 108u, - 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, 120u, 121u, 34u, 34u, 9u, 58u, - 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, - 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 65u, 122u, 34u, 122u, 9u, 125u, - 9u, 125u, 9u, 57u, 0u, 0u, 9u, 93u, 9u, 123u, 0 + 0u, 0u, 9u, 123u, 9u, 34u, 97u, 117u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, + 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, + 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, + 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, + 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, + 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 93u, + 9u, 123u, 0u, 0u, 0 }; static const char _deserialize_json_key_spans[] = { - 0, 115, 85, 36, 49, 85, 26, 7, - 2, 1, 50, 49, 10, 117, 117, 115, - 117, 1, 50, 49, 10, 117, 117, 1, - 1, 50, 49, 117, 117, 2, 1, 50, - 49, 10, 117, 117, 1, 50, 49, 10, - 117, 117, 1, 50, 49, 58, 89, 117, - 117, 49, 0, 85, 115 + 0, 115, 26, 21, 2, 1, 50, 49, + 10, 117, 117, 117, 1, 50, 49, 10, + 117, 117, 1, 1, 50, 49, 117, 117, + 2, 1, 50, 49, 10, 117, 117, 1, + 50, 49, 10, 117, 117, 1, 50, 49, + 58, 89, 117, 117, 1, 50, 49, 85, + 115, 0 }; static const short _deserialize_json_index_offsets[] = { - 0, 0, 116, 202, 239, 289, 375, 402, - 410, 413, 415, 466, 516, 527, 645, 763, - 879, 997, 999, 1050, 1100, 1111, 1229, 1347, - 1349, 1351, 1402, 1452, 1570, 1688, 1691, 1693, - 1744, 1794, 1805, 1923, 2041, 2043, 2094, 2144, - 2155, 2273, 2391, 2393, 2444, 2494, 2553, 2643, - 2761, 2879, 2929, 2930, 3016 + 0, 0, 116, 143, 165, 168, 170, 221, + 271, 282, 400, 518, 636, 638, 689, 739, + 750, 868, 986, 988, 990, 1041, 1091, 1209, + 1327, 1330, 1332, 1383, 1433, 1444, 1562, 1680, + 1682, 1733, 1783, 1794, 1912, 2030, 2032, 2083, + 2133, 2192, 2282, 2400, 2518, 2520, 2571, 2621, + 2707, 2823 }; static const char _deserialize_json_indicies[] = { @@ -69,72 +69,56 @@ static const char _deserialize_json_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 4, 1, + 5, 1, 6, 7, 1, 1, 8, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 9, 1, 10, 11, + 1, 12, 1, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 12, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 13, 1, 13, 13, + 13, 13, 13, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 13, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 14, 1, 1, 15, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 1, + 17, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 1, 19, 19, 19, 19, 19, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 19, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 1, 5, 5, 5, - 5, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 5, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 7, 1, 8, 8, 8, 8, 8, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 8, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 9, 1, - 9, 9, 9, 9, 9, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 9, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 5, 5, 5, 5, 5, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 6, 1, 1, - 1, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 1, - 11, 11, 11, 11, 11, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 11, - 1, 12, 1, 13, 1, 14, 15, 1, - 1, 16, 1, 17, 18, 1, 19, 1, - 19, 19, 19, 19, 19, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 19, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 20, 1, 20, 20, 20, 20, 20, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, - 1, 1, 22, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 1, 24, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 1, - 26, 26, 26, 26, 26, 1, 1, 1, + 1, 22, 22, 22, 22, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 27, 1, 1, 1, 1, + 22, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -144,12 +128,13 @@ static const char _deserialize_json_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 28, 1, 29, 29, - 29, 29, 29, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 23, 1, 19, + 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 29, 1, 1, + 1, 1, 1, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 11, 1, 1, 1, 1, 1, 1, + 1, 1, 20, 1, 1, 1, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -158,264 +143,269 @@ static const char _deserialize_json_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 21, 1, 24, 1, 24, + 24, 24, 24, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 30, 1, 31, 31, 31, 31, - 31, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 25, 1, 25, 25, 25, 25, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 25, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 26, 1, + 1, 27, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 1, 29, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 1, 31, + 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, - 26, 26, 26, 26, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 27, 1, 1, 1, 25, - 25, 25, 25, 25, 25, 25, 25, 25, - 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 33, 1, 31, 31, 31, + 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 32, 1, 1, 1, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 28, 1, 32, 1, - 32, 32, 32, 32, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 33, 1, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 33, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 34, - 1, 1, 35, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1, 37, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 1, - 39, 39, 39, 39, 39, 1, 1, 1, + 1, 33, 1, 34, 1, 35, 1, 35, + 35, 35, 35, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 1, 1, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 36, 1, 36, 36, 36, 36, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 37, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 1, 39, 39, 39, 39, + 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 39, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 41, 1, 39, 39, - 39, 39, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 40, 1, 1, 1, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 41, 1, 39, 39, 39, 39, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 40, 1, 1, + 1, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 41, 1, 42, 1, 43, 1, - 43, 43, 43, 43, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 44, 1, 44, 44, 44, 44, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 44, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 41, 1, + 43, 44, 1, 45, 1, 45, 45, 45, + 45, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 45, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 1, 47, 47, 47, - 47, 47, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 48, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 46, 1, + 46, 46, 46, 46, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 47, 1, 1, 48, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 1, 50, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 1, 52, 52, 52, + 52, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 49, 1, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 47, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 48, 1, - 1, 1, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 54, 1, 52, 52, 52, 52, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 52, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 53, 1, + 1, 1, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 49, - 1, 51, 52, 1, 53, 1, 53, 53, - 53, 53, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, - 1, 54, 54, 54, 54, 54, 1, 1, + 1, 55, 1, 55, 55, 55, 55, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 54, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 55, 1, 1, - 56, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 1, 58, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 1, 60, 60, - 60, 60, 60, 1, 1, 1, 1, 1, + 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 1, 56, 56, + 56, 56, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 57, 1, 1, 58, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 1, + 60, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 1, 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 62, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 62, 1, 60, 60, 60, 60, - 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 60, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 61, - 1, 1, 1, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 64, + 1, 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 62, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 63, 1, 1, 1, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 62, 1, 63, 1, 63, 63, 63, 63, - 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 64, 1, 64, - 64, 64, 64, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 64, 1, + 1, 1, 1, 1, 1, 64, 1, 65, + 1, 65, 65, 65, 65, 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 65, 1, 1, 66, 67, - 67, 67, 67, 67, 67, 67, 67, 67, - 1, 68, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 1, 70, 70, 70, 70, - 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 70, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 71, + 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 66, 1, 66, 66, 66, 66, + 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 66, 1, 67, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 68, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 1, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 1, 1, 1, 1, 1, 1, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 1, 71, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 72, 72, 1, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 1, 1, 1, 1, 1, 1, 1, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 1, 1, 1, 1, 72, 1, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 1, 73, 73, 73, 73, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 73, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 72, 1, 70, 70, 70, 70, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 70, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 71, 1, 1, - 1, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 75, + 1, 73, 73, 73, 73, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 73, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 74, 1, 1, 1, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 72, 1, - 73, 1, 73, 73, 73, 73, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 74, 1, 74, 74, 74, - 74, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 74, 1, 75, 1, + 1, 1, 1, 1, 1, 75, 1, 77, + 1, 77, 77, 77, 77, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 76, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 1, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 1, 1, 1, 1, 1, 1, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 1, 79, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 80, 80, 1, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 1, 1, 1, 1, 1, 1, - 1, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 1, 1, 1, 1, 80, - 1, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 1, 81, 81, 81, 81, - 81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 81, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 82, + 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 78, 1, 78, 78, 78, 78, + 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 68, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 1, 79, 79, + 79, 79, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 83, 1, 81, 81, 81, 81, 81, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 81, 1, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 81, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 82, 1, 1, - 1, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -423,77 +413,49 @@ static const char _deserialize_json_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 83, 1, - 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 85, 85, 85, 85, 85, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 85, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 86, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 87, - 1, 31, 31, 31, 31, 31, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 31, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 1, 0 + 1, 1, 1, 1, 1, 1, 2, 1, + 1, 0 }; static const char _deserialize_json_trans_targs[] = { - 1, 0, 2, 5, 6, 3, 49, 50, - 3, 4, 5, 6, 7, 8, 23, 29, - 42, 9, 17, 10, 11, 12, 13, 16, - 13, 16, 14, 6, 51, 14, 51, 15, - 18, 19, 20, 21, 22, 21, 22, 14, - 6, 51, 24, 25, 26, 27, 28, 14, - 6, 51, 28, 30, 36, 31, 32, 33, - 34, 35, 34, 35, 14, 6, 51, 37, - 38, 39, 40, 41, 40, 41, 14, 6, - 51, 43, 44, 45, 47, 48, 46, 14, - 46, 14, 6, 51, 48, 51, 52, 50 + 1, 0, 2, 2, 3, 4, 18, 24, + 37, 44, 5, 12, 6, 7, 8, 9, + 11, 9, 11, 10, 2, 47, 10, 47, + 13, 14, 15, 16, 17, 16, 17, 10, + 2, 47, 19, 20, 21, 22, 23, 10, + 2, 47, 23, 25, 31, 26, 27, 28, + 29, 30, 29, 30, 10, 2, 47, 32, + 33, 34, 35, 36, 35, 36, 10, 2, + 47, 38, 39, 40, 42, 43, 41, 10, + 41, 10, 2, 47, 43, 45, 46, 47, + 48, 49 }; static const char _deserialize_json_trans_actions[] = { - 0, 0, 1, 1, 2, 3, 3, 3, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 4, 4, - 0, 0, 5, 5, 6, 0, 7, 0, - 0, 0, 4, 4, 4, 0, 0, 8, - 8, 9, 0, 0, 0, 4, 4, 10, - 10, 11, 0, 0, 0, 0, 0, 4, - 4, 4, 0, 0, 12, 12, 13, 0, - 0, 4, 4, 4, 0, 0, 14, 14, - 15, 0, 0, 0, 4, 4, 4, 16, - 0, 17, 17, 3, 0, 0, 0, 0 + 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 0, 3, 3, 4, 0, 5, + 0, 0, 2, 2, 2, 0, 0, 6, + 6, 7, 0, 0, 0, 2, 2, 8, + 8, 9, 0, 0, 0, 0, 0, 2, + 2, 2, 0, 0, 10, 10, 11, 0, + 0, 2, 2, 2, 0, 0, 12, 12, + 13, 0, 0, 0, 2, 2, 2, 14, + 0, 15, 15, 16, 0, 0, 0, 0, + 0, 0 }; static const int deserialize_json_start = 1; -static const int deserialize_json_first_final = 49; +static const int deserialize_json_first_final = 47; static const int deserialize_json_error = 0; static const int deserialize_json_en_main = 1; -#line 101 "hb-buffer-deserialize-json.rl" +#line 98 "hb-buffer-deserialize-json.rl" static hb_bool_t @@ -520,12 +482,12 @@ _hb_buffer_deserialize_json (hb_buffer_t *buffer, hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; -#line 524 "hb-buffer-deserialize-json.hh" +#line 486 "hb-buffer-deserialize-json.hh" { cs = deserialize_json_start; } -#line 529 "hb-buffer-deserialize-json.hh" +#line 491 "hb-buffer-deserialize-json.hh" { int _slen; int _trans; @@ -550,14 +512,14 @@ _resume: goto _again; switch ( _deserialize_json_trans_actions[_trans] ) { - case 2: + case 1: #line 38 "hb-buffer-deserialize-json.rl" { memset (&info, 0, sizeof (info)); memset (&pos , 0, sizeof (pos )); } break; - case 7: + case 5: #line 43 "hb-buffer-deserialize-json.rl" { buffer->add_info (info); @@ -567,13 +529,13 @@ _resume: *end_ptr = p; } break; - case 4: + case 2: #line 51 "hb-buffer-deserialize-json.rl" { tok = p; } break; - case 16: + case 14: #line 55 "hb-buffer-deserialize-json.rl" { if (!hb_font_glyph_from_string (font, @@ -582,42 +544,31 @@ _resume: return false; } break; - case 17: + case 15: #line 62 "hb-buffer-deserialize-json.rl" { if (!parse_uint (tok, p, &info.codepoint)) return false; } break; - case 10: + case 8: #line 63 "hb-buffer-deserialize-json.rl" { if (!parse_uint (tok, p, &info.cluster )) return false; } break; - case 12: + case 10: #line 64 "hb-buffer-deserialize-json.rl" { if (!parse_int (tok, p, &pos.x_offset )) return false; } break; - case 14: + case 12: #line 65 "hb-buffer-deserialize-json.rl" { if (!parse_int (tok, p, &pos.y_offset )) return false; } break; - case 5: + case 3: #line 66 "hb-buffer-deserialize-json.rl" { if (!parse_int (tok, p, &pos.x_advance)) return false; } break; - case 8: + case 6: #line 67 "hb-buffer-deserialize-json.rl" { if (!parse_int (tok, p, &pos.y_advance)) return false; } break; - case 1: -#line 38 "hb-buffer-deserialize-json.rl" - { - memset (&info, 0, sizeof (info)); - memset (&pos , 0, sizeof (pos )); -} -#line 51 "hb-buffer-deserialize-json.rl" - { - tok = p; -} - break; - case 3: + case 16: #line 62 "hb-buffer-deserialize-json.rl" { if (!parse_uint (tok, p, &info.codepoint)) return false; } #line 43 "hb-buffer-deserialize-json.rl" @@ -627,57 +578,57 @@ _resume: return false; buffer->pos[buffer->len - 1] = pos; *end_ptr = p; -} - break; - case 11: -#line 63 "hb-buffer-deserialize-json.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 13: -#line 64 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_offset )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 15: -#line 65 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 6: -#line 66 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; } break; case 9: +#line 63 "hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 13: +#line 65 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 4: +#line 66 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 7: #line 67 "hb-buffer-deserialize-json.rl" { if (!parse_int (tok, p, &pos.y_advance)) return false; } #line 43 "hb-buffer-deserialize-json.rl" @@ -689,7 +640,7 @@ _resume: *end_ptr = p; } break; -#line 693 "hb-buffer-deserialize-json.hh" +#line 644 "hb-buffer-deserialize-json.hh" } _again: @@ -701,7 +652,7 @@ _again: _out: {} } -#line 129 "hb-buffer-deserialize-json.rl" +#line 126 "hb-buffer-deserialize-json.rl" *end_ptr = p; diff --git a/src/hb-buffer-deserialize-json.rl b/src/hb-buffer-deserialize-json.rl index caaa15449..336a5ea76 100644 --- a/src/hb-buffer-deserialize-json.rl +++ b/src/hb-buffer-deserialize-json.rl @@ -79,24 +79,21 @@ glyph_string = '"' (glyph_name >tok %parse_glyph) '"'; glyph_number = (glyph_id >tok %parse_gid); glyph = "\"g\"" colon (glyph_string | glyph_number); +codepoint = "\"u\"" colon glyph_number; cluster = "\"cl\"" colon (unum >tok %parse_cluster); xoffset = "\"dx\"" colon (num >tok %parse_x_offset); yoffset = "\"dy\"" colon (num >tok %parse_y_offset); xadvance= "\"ax\"" colon (num >tok %parse_x_advance); yadvance= "\"ay\"" colon (num >tok %parse_y_advance); -element = glyph | cluster | xoffset | yoffset | xadvance | yadvance; +element = glyph | codepoint | cluster | xoffset | yoffset | xadvance | yadvance; item = ( '{' space* element (comma element)* space* '}') >clear_item @add_item ; -json_glyphs = space* item (comma item)* space* (','|']')?; -unicode_item = (glyph_number >clear_item %add_item); -json_unicode = space* unicode_item (comma unicode_item)* (','|']'); - -main := json_glyphs | json_unicode; +main := space* item (comma item)* space* (','|']')?; }%% diff --git a/src/hb-buffer-deserialize-text.hh b/src/hb-buffer-deserialize-text.hh index 70de5be6e..90275b8db 100644 --- a/src/hb-buffer-deserialize-text.hh +++ b/src/hb-buffer-deserialize-text.hh @@ -34,27 +34,27 @@ #line 36 "hb-buffer-deserialize-text.hh" static const unsigned char _deserialize_text_trans_keys[] = { - 0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 122u, 9u, 122u, - 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 44u, 44u, - 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u, 9u, 124u, - 9u, 124u, 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, - 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 0 + 0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 57u, 48u, 122u, + 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, + 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u, + 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, + 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 0 }; static const char _deserialize_text_key_spans[] = { - 0, 83, 1, 1, 55, 77, 75, 114, - 13, 10, 13, 10, 10, 13, 10, 1, - 13, 10, 14, 116, 116, 0, 77, 116, - 116, 114, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116 + 0, 83, 1, 1, 55, 77, 10, 75, + 114, 13, 10, 13, 10, 10, 13, 10, + 1, 13, 10, 14, 116, 116, 0, 77, + 116, 116, 116, 116, 114, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116 }; static const short _deserialize_text_index_offsets[] = { - 0, 0, 84, 86, 88, 144, 222, 298, - 413, 427, 438, 452, 463, 474, 488, 499, - 501, 515, 526, 541, 658, 775, 776, 854, - 971, 1088, 1203, 1320, 1437, 1554, 1671, 1788, - 1905, 2022, 2139, 2256 + 0, 0, 84, 86, 88, 144, 222, 233, + 309, 424, 438, 449, 463, 474, 485, 499, + 510, 512, 526, 537, 552, 669, 786, 787, + 865, 982, 1099, 1216, 1333, 1448, 1565, 1682, + 1799, 1916, 2033, 2150, 2267, 2384, 2501 }; static const char _deserialize_text_indicies[] = { @@ -87,102 +87,92 @@ static const char _deserialize_text_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 8, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 1, 1, 1, 1, 1, 1, 1, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 1, 1, 1, 1, 1, 1, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 1, 11, 11, 11, 11, 11, + 9, 1, 10, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 1, 1, 1, 1, + 1, 1, 1, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 1, 1, 1, + 1, 1, 1, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 1, 13, 13, + 13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 11, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 8, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 1, 1, 1, 1, - 1, 1, 1, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 1, 1, 1, - 1, 1, 1, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 1, 12, 1, - 1, 13, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 1, 15, 16, 16, 16, + 1, 1, 1, 1, 1, 10, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 1, + 1, 1, 1, 1, 1, 1, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 1, 1, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 1, 14, 1, 1, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 17, - 1, 1, 18, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 1, 20, 21, 21, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 1, 19, 1, 1, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 22, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 1, 24, 1, 1, 25, 26, - 26, 26, 26, 26, 26, 26, 26, 26, + 23, 23, 1, 24, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 1, 26, 1, 1, 27, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 1, 29, 1, 30, 1, - 1, 31, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 1, 33, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 1, 29, - 1, 1, 1, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 1, 35, 35, - 35, 35, 35, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 35, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 1, - 1, 1, 1, 37, 1, 1, 36, 36, - 36, 36, 36, 36, 1, 1, 1, 1, + 28, 28, 28, 1, 29, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 1, 31, + 1, 32, 1, 1, 33, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 1, 35, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 1, 31, 1, 1, 1, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 1, 37, 37, 37, 37, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 36, 36, - 36, 36, 36, 36, 1, 1, 1, 1, + 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 38, 1, 39, 39, 39, 39, 39, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 39, 1, 1, 1, 1, 1, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 1, 1, 1, 39, 40, 1, + 1, 38, 38, 38, 38, 38, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 40, 1, 1, 1, 1, 1, 1, 1, + 1, 38, 38, 38, 38, 38, 38, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 41, 1, 42, 42, + 42, 42, 42, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 42, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 41, 1, - 1, 7, 7, 7, 7, 7, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 44, 1, 1, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 1, 42, - 42, 42, 42, 42, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 42, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 43, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 44, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 46, 1, 1, 1, 1, + 4, 1, 45, 45, 45, 45, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 47, 1, 48, 48, 48, 48, - 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 48, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -190,207 +180,250 @@ static const char _deserialize_text_indicies[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 40, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 47, 1, 45, + 45, 45, 45, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 49, - 1, 11, 11, 11, 11, 11, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 11, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 8, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 1, 1, 1, 1, 1, 1, - 1, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 1, 1, 1, 1, 1, - 1, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 1, 42, 42, 42, 42, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 42, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 43, 1, - 1, 1, 1, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 1, 1, 1, - 44, 1, 1, 45, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 46, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 47, - 1, 51, 51, 51, 51, 51, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 51, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 47, 1, 49, 49, 49, 49, + 49, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 49, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 50, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 51, 1, 1, 52, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 53, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 54, + 1, 55, 55, 55, 55, 55, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 55, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 43, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 1, 13, 13, + 13, 13, 13, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 13, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 10, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 1, + 1, 1, 1, 1, 1, 1, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 1, 1, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 1, 49, 49, 49, 49, 49, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 49, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 50, 1, 1, 1, 1, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 1, 1, 1, 51, 1, 1, + 52, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 54, 1, 55, 55, - 55, 55, 55, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 54, 1, 58, 58, + 58, 58, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 55, 1, 1, + 1, 1, 1, 1, 1, 58, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 59, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 60, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 61, 1, 62, 62, 62, 62, 62, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 56, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 57, 1, 55, 55, 55, 55, 55, + 1, 1, 1, 1, 1, 1, 64, 1, + 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 62, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 55, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 23, + 23, 23, 23, 23, 23, 23, 23, 23, + 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 56, + 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 57, 1, - 51, 51, 51, 51, 51, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 51, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 52, 1, 1, 1, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 53, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 54, 1, 58, 58, 58, + 1, 1, 1, 64, 1, 58, 58, 58, 58, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 60, 1, 1, 1, + 59, 1, 1, 1, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 62, 1, 63, 63, 63, 63, 63, 1, + 61, 1, 65, 65, 65, 65, 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 63, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 64, 1, 1, 1, + 1, 65, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 66, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 67, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 46, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 68, 1, 69, + 69, 69, 69, 69, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 69, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 65, 1, + 1, 1, 1, 71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 66, 1, 63, - 63, 63, 63, 63, 1, 1, 1, 1, + 1, 1, 72, 1, 69, 69, 69, 69, + 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 63, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 64, 1, 1, 1, 1, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, + 1, 1, 1, 69, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 70, 1, + 1, 1, 1, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 65, 1, 1, 1, 1, + 71, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 72, + 1, 65, 65, 65, 65, 65, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 65, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 66, 1, 1, 1, 1, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 1, 1, 1, 1, 1, 1, + 67, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 66, 1, 58, 58, 58, 58, - 58, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 68, 1, 49, 49, + 49, 49, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 58, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 59, 1, - 1, 1, 1, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 1, 1, 1, - 1, 1, 1, 60, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 61, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 62, - 1, 42, 42, 42, 42, 42, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 43, 1, 68, 68, 1, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 1, 1, 1, 44, 1, 1, - 45, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 1, 1, 46, 1, 68, - 1, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 1, 47, 1, 0 + 50, 1, 74, 74, 1, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 1, + 1, 1, 51, 1, 1, 52, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 1, 1, 53, 1, 74, 1, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 1, 54, 1, 0 }; static const char _deserialize_text_trans_targs[] = { - 1, 0, 2, 6, 3, 4, 19, 5, - 23, 26, 35, 7, 9, 27, 30, 27, - 30, 11, 28, 29, 28, 29, 31, 34, - 14, 15, 18, 15, 18, 16, 17, 32, - 33, 32, 33, 20, 19, 21, 22, 20, - 21, 22, 24, 8, 12, 13, 21, 25, - 24, 25, 26, 24, 10, 21, 25, 24, - 21, 25, 24, 8, 13, 21, 25, 24, - 8, 21, 25, 34, 35 + 1, 0, 2, 7, 3, 4, 20, 5, + 24, 25, 26, 29, 38, 8, 10, 30, + 33, 30, 33, 12, 31, 32, 31, 32, + 34, 37, 15, 16, 19, 16, 19, 17, + 18, 35, 36, 35, 36, 21, 20, 6, + 22, 23, 21, 22, 23, 21, 22, 23, + 25, 27, 9, 13, 14, 22, 28, 27, + 28, 29, 27, 11, 22, 28, 27, 22, + 28, 27, 9, 14, 28, 27, 9, 22, + 28, 37, 38 }; static const char _deserialize_text_trans_actions[] = { - 0, 0, 0, 0, 0, 0, 1, 0, - 1, 1, 1, 0, 2, 2, 2, 0, - 0, 2, 2, 2, 0, 0, 2, 2, - 2, 2, 2, 0, 0, 3, 2, 2, - 2, 0, 0, 4, 0, 4, 4, 0, - 0, 0, 5, 6, 6, 6, 5, 5, - 0, 0, 0, 7, 8, 7, 7, 9, - 9, 9, 10, 11, 11, 10, 10, 12, - 13, 12, 12, 0, 0 + 0, 0, 0, 0, 0, 1, 2, 0, + 2, 2, 3, 3, 3, 0, 2, 2, + 2, 0, 0, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 0, 0, 4, + 2, 2, 2, 0, 0, 5, 0, 6, + 5, 5, 0, 0, 0, 7, 7, 7, + 0, 8, 9, 9, 9, 8, 8, 0, + 0, 0, 10, 11, 10, 10, 12, 12, + 12, 7, 13, 13, 7, 14, 15, 14, + 14, 0, 0 }; static const char _deserialize_text_eof_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 0, 5, - 0, 0, 5, 7, 9, 9, 7, 10, - 12, 12, 10, 5 + 0, 0, 0, 0, 5, 0, 0, 0, + 7, 7, 8, 0, 0, 8, 10, 12, + 12, 10, 7, 14, 14, 7, 8 }; static const int deserialize_text_start = 1; -static const int deserialize_text_first_final = 19; +static const int deserialize_text_first_final = 20; static const int deserialize_text_error = 0; static const int deserialize_text_en_main = 1; @@ -419,12 +452,12 @@ _hb_buffer_deserialize_text (hb_buffer_t *buffer, hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; -#line 423 "hb-buffer-deserialize-text.hh" +#line 456 "hb-buffer-deserialize-text.hh" { cs = deserialize_text_start; } -#line 428 "hb-buffer-deserialize-text.hh" +#line 461 "hb-buffer-deserialize-text.hh" { int _slen; int _trans; @@ -449,13 +482,20 @@ _resume: goto _again; switch ( _deserialize_text_trans_actions[_trans] ) { + case 1: +#line 38 "hb-buffer-deserialize-text.rl" + { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} + break; case 2: #line 51 "hb-buffer-deserialize-text.rl" { tok = p; } break; - case 6: + case 9: #line 55 "hb-buffer-deserialize-text.rl" { if (!hb_font_glyph_from_string (font, @@ -464,23 +504,27 @@ _resume: return false; } break; - case 11: + case 6: +#line 62 "hb-buffer-deserialize-text.rl" + {if (!parse_hex (tok, p, &info.codepoint )) return false; } + break; + case 13: #line 64 "hb-buffer-deserialize-text.rl" { if (!parse_uint (tok, p, &info.cluster )) return false; } break; - case 3: + case 4: #line 65 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.x_offset )) return false; } break; - case 13: + case 15: #line 66 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.y_offset )) return false; } break; - case 8: + case 11: #line 67 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.x_advance)) return false; } break; - case 1: + case 3: #line 38 "hb-buffer-deserialize-text.rl" { memset (&info, 0, sizeof (info)); @@ -491,7 +535,7 @@ _resume: tok = p; } break; - case 5: + case 8: #line 55 "hb-buffer-deserialize-text.rl" { if (!hb_font_glyph_from_string (font, @@ -508,7 +552,7 @@ _resume: *end_ptr = p; } break; - case 4: + case 5: #line 62 "hb-buffer-deserialize-text.rl" {if (!parse_hex (tok, p, &info.codepoint )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -520,7 +564,7 @@ _resume: *end_ptr = p; } break; - case 10: + case 7: #line 64 "hb-buffer-deserialize-text.rl" { if (!parse_uint (tok, p, &info.cluster )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -532,7 +576,7 @@ _resume: *end_ptr = p; } break; - case 12: + case 14: #line 66 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.y_offset )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -544,7 +588,7 @@ _resume: *end_ptr = p; } break; - case 7: + case 10: #line 67 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.x_advance)) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -556,7 +600,7 @@ _resume: *end_ptr = p; } break; - case 9: + case 12: #line 68 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.y_advance)) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -568,7 +612,7 @@ _resume: *end_ptr = p; } break; -#line 572 "hb-buffer-deserialize-text.hh" +#line 616 "hb-buffer-deserialize-text.hh" } _again: @@ -580,7 +624,7 @@ _again: if ( p == eof ) { switch ( _deserialize_text_eof_actions[cs] ) { - case 5: + case 8: #line 55 "hb-buffer-deserialize-text.rl" { if (!hb_font_glyph_from_string (font, @@ -597,7 +641,7 @@ _again: *end_ptr = p; } break; - case 4: + case 5: #line 62 "hb-buffer-deserialize-text.rl" {if (!parse_hex (tok, p, &info.codepoint )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -609,7 +653,7 @@ _again: *end_ptr = p; } break; - case 10: + case 7: #line 64 "hb-buffer-deserialize-text.rl" { if (!parse_uint (tok, p, &info.cluster )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -621,7 +665,7 @@ _again: *end_ptr = p; } break; - case 12: + case 14: #line 66 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.y_offset )) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -633,7 +677,7 @@ _again: *end_ptr = p; } break; - case 7: + case 10: #line 67 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.x_advance)) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -645,7 +689,7 @@ _again: *end_ptr = p; } break; - case 9: + case 12: #line 68 "hb-buffer-deserialize-text.rl" { if (!parse_int (tok, p, &pos.y_advance)) return false; } #line 43 "hb-buffer-deserialize-text.rl" @@ -657,7 +701,7 @@ _again: *end_ptr = p; } break; -#line 661 "hb-buffer-deserialize-text.hh" +#line 705 "hb-buffer-deserialize-text.hh" } } diff --git a/src/hb-buffer-deserialize-text.rl b/src/hb-buffer-deserialize-text.rl index 3faa852aa..f01e2d3a1 100644 --- a/src/hb-buffer-deserialize-text.rl +++ b/src/hb-buffer-deserialize-text.rl @@ -79,7 +79,7 @@ offsets = '@' (num >tok %parse_x_offset) ',' (num >tok %parse_y_offset ); advances= '+' (num >tok %parse_x_advance) (',' (num >tok %parse_y_advance))?; codepoint = xdigit+ >tok %parse_hexdigits; -unicode_id = 'U' '+' codepoint >clear_item %add_item; +unicode_id = 'U' '+' >clear_item codepoint cluster? %add_item; item = ( diff --git a/src/hb-buffer-serialize.cc b/src/hb-buffer-serialize.cc index c6bc7c73e..7c31788b0 100644 --- a/src/hb-buffer-serialize.cc +++ b/src/hb-buffer-serialize.cc @@ -206,7 +206,8 @@ _hb_buffer_serialize_unicode_json (hb_buffer_t *buffer, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed) + unsigned int *buf_consumed, + hb_buffer_serialize_flags_t flags) { hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); @@ -215,13 +216,24 @@ _hb_buffer_serialize_unicode_json (hb_buffer_t *buffer, { char b[1024]; char *p = b; + if (i) *p++ = ','; else *p++ = '['; + *p++ = '{'; + + APPEND ("\"u\":"); + p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint)); + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { + p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster)); + } + + *p++ = '}'; + if (i == end-1) *p++ = ']'; @@ -340,7 +352,8 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer, unsigned int end, char *buf, unsigned int buf_size, - unsigned int *buf_consumed) + unsigned int *buf_consumed, + hb_buffer_serialize_flags_t flags) { hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); *buf_consumed = 0; @@ -356,6 +369,10 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer, p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "U+%04X", info[i].codepoint)); + if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) { + p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster)); + } + if (i == end-1) *p++ = '>'; @@ -508,18 +525,25 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, * The serialized codepoints will look something like: * * ``` - * + * * ``` * - Glyphs are separated with `|` * - Unicode codepoints are expressed as zero-padded four (or more) * digit hexadecimal numbers preceded by `U+` + * - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, the cluster + * will be indicated with a `=` then #hb_glyph_info_t.cluster. * * ## json * A machine-readable, structured format. - * The serialized codepoints will be a list of Unicode codepoints as - * decimal integers. For example: + * The serialized codepoints will be a list of objects with the following + * properties: + * - `g`: the Unicode codepoint as a decimal integer + * - `cl`: #hb_glyph_info_t.cluster if + * #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set. + * + * For example: * ``` - * [1617,1576] + * [{g:1617,cl:0},{g:1576,cl:1}] * ``` * * Return value: @@ -534,7 +558,8 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer, char *buf, unsigned int buf_size, unsigned int *buf_consumed, - hb_buffer_serialize_format_t format) + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags) { assert (start <= end && end <= buffer->len); @@ -555,11 +580,11 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer, { case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return _hb_buffer_serialize_unicode_text (buffer, start, end, - buf, buf_size, buf_consumed); + buf, buf_size, buf_consumed, flags); case HB_BUFFER_SERIALIZE_FORMAT_JSON: return _hb_buffer_serialize_unicode_json (buffer, start, end, - buf, buf_size, buf_consumed); + buf, buf_size, buf_consumed, flags); default: case HB_BUFFER_SERIALIZE_FORMAT_INVALID: @@ -609,7 +634,7 @@ hb_buffer_serialize (hb_buffer_t *buffer, buf_consumed, font, format, flags); else return hb_buffer_serialize_unicode(buffer, start, end, buf, buf_size, - buf_consumed, format); + buf_consumed, format, flags); } static bool diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 8e0298ceb..e20c879d8 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -525,7 +525,8 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer, char *buf, unsigned int buf_size, unsigned int *buf_consumed, - hb_buffer_serialize_format_t format); + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags); HB_EXTERN unsigned int hb_buffer_serialize (hb_buffer_t *buffer, diff --git a/test/api/test-buffer.c b/test/api/test-buffer.c index bf8a45fdd..1418cf8fd 100644 --- a/test/api/test-buffer.c +++ b/test/api/test-buffer.c @@ -863,8 +863,8 @@ typedef struct { } serialization_test_t; static const serialization_test_t serialization_tests[] = { - { "", HB_BUFFER_SERIALIZE_FORMAT_TEXT, 2 }, - { "[1600,1589]", HB_BUFFER_SERIALIZE_FORMAT_JSON, 2 }, + { "", HB_BUFFER_SERIALIZE_FORMAT_TEXT, 2 }, + { "[{\"u\":1600,\"cl\":0},{\"u\":1589,\"cl\":1}]", HB_BUFFER_SERIALIZE_FORMAT_JSON, 2 }, }; static void @@ -873,13 +873,14 @@ test_buffer_serialize_deserialize (void) hb_buffer_t *b; unsigned int i; - b = hb_buffer_create (); - hb_buffer_set_replacement_codepoint (b, (hb_codepoint_t) -1); - for (i = 0; i < G_N_ELEMENTS (serialization_tests); i++) { unsigned int num_glyphs, consumed; char round_trip[1024]; + + b = hb_buffer_create (); + hb_buffer_set_replacement_codepoint (b, (hb_codepoint_t) -1); + const serialization_test_t *test = &serialization_tests[i]; g_test_message ("serialize test #%d", i); @@ -889,11 +890,13 @@ test_buffer_serialize_deserialize (void) g_assert_cmpint (num_glyphs, ==, test->num_items); hb_buffer_serialize_unicode(b, 0, num_glyphs, round_trip, - sizeof(round_trip), &consumed, test->format); + sizeof(round_trip), &consumed, test->format, + HB_BUFFER_SERIALIZE_FLAG_DEFAULT); g_assert_cmpstr (round_trip, ==, test->contents); - } - hb_buffer_destroy (b); + hb_buffer_destroy (b); + + } } int