[ucd] Use custom encoding to shrink composition data

Saves another 2.5kb.

Part of https://github.com/harfbuzz/harfbuzz/issues/1652
This commit is contained in:
Behdad Esfahbod 2019-06-24 12:37:23 -07:00
parent 9c933acaa4
commit ec8e635e0c
4 changed files with 705 additions and 336 deletions

View File

@ -38,13 +38,22 @@ assert all((v[0] >> 16) in (0,2) for v in dm1)
dm1_p0_array = ['0x%04Xu' % (v[0] & 0xFFFF) for v in dm1 if (v[0] >> 16) == 0]
dm1_p2_array = ['0x%04Xu' % (v[0] & 0xFFFF) for v in dm1 if (v[0] >> 16) == 2]
dm1_order = {v:i+1 for i,v in enumerate(dm1)}
dm2 = sorted((v, i) for i,v in dm.items() if len(v) == 2)
dm2 = [("HB_CODEPOINT_ENCODE3 (0x%04Xu, 0x%04Xu, 0x%04Xu)" %
(v+(i if i not in ce and not ccc[i] else 0,)), v)
for v,i in dm2]
dm2_array = [s for s,v in dm2]
dm2 = sorted((v+(i if i not in ce and not ccc[i] else 0,), v)
for i,v in dm.items() if len(v) == 2)
filt = lambda v: ((v[0] & 0xFFFFF800) == 0x0000 and
(v[1] & 0xFFFFFF80) == 0x0300 and
(v[2] & 0xFFF0C000) == 0x0000)
dm2_u32_array = [v for v in dm2 if filt(v[0])]
dm2_u64_array = [v for v in dm2 if not filt(v[0])]
assert dm2_u32_array + dm2_u64_array == dm2
dm2_u32_array = ["HB_CODEPOINT_ENCODE3_11_7_14 (0x%04Xu, 0x%04Xu, 0x%04Xu)" % v[0] for v in dm2_u32_array]
dm2_u64_array = ["HB_CODEPOINT_ENCODE3 (0x%04Xu, 0x%04Xu, 0x%04Xu)" % v[0] for v in dm2_u64_array]
l = 1 + len(dm1_p0_array) + len(dm1_p2_array)
dm2_order = {v[1]:i+l for i,v in enumerate(dm2)}
dm_order = {None: 0}
dm_order.update(dm1_order)
dm_order.update(dm2_order)
@ -96,7 +105,8 @@ code = packTab.Code('_hb_ucd')
sc_array, _ = code.addArray('hb_script_t', 'sc_map', sc_array)
dm1_p0_array, _ = code.addArray('uint16_t', 'dm1_p0_map', dm1_p0_array)
dm1_p2_array, _ = code.addArray('uint16_t', 'dm1_p2_map', dm1_p2_array)
dm2_array, _ = code.addArray('uint64_t', 'dm2_map', dm2_array)
dm2_u32_array, _ = code.addArray('uint32_t', 'dm2_u32_map', dm2_u32_array)
dm2_u64_array, _ = code.addArray('uint64_t', 'dm2_u64_map', dm2_u64_array)
code.print_c(linkage='static inline')
datasets = [

View File

@ -41,6 +41,11 @@
#define HB_CODEPOINT_DECODE3_2(v) ((hb_codepoint_t) ((v) >> 21) & 0x1FFFFFu)
#define HB_CODEPOINT_DECODE3_3(v) ((hb_codepoint_t) (v) & 0x1FFFFFu)
/* Custom encoding used by hb-ucd. */
#define HB_CODEPOINT_ENCODE3_11_7_14(x,y,z) (((uint32_t) ((x) & 0x07FFu) << 21) | (((uint32_t) (y) & 0x007Fu) << 14) | (uint32_t) ((z) & 0x3FFFu))
#define HB_CODEPOINT_DECODE3_11_7_14_1(v) ((hb_codepoint_t) ((v) >> 21))
#define HB_CODEPOINT_DECODE3_11_7_14_2(v) ((hb_codepoint_t) (((v) >> 14) & 0x007Fu) | 0x0300)
#define HB_CODEPOINT_DECODE3_11_7_14_3(v) ((hb_codepoint_t) (v) & 0x3FFFu)
struct
{

View File

@ -211,328 +211,651 @@ _hb_ucd_dm1_p2_map[110] =
0x8D77u, 0x9145u, 0x91DFu, 0x921Au, 0x940Au, 0x9496u, 0x95B6u, 0x9B30u,
0xA0CEu, 0xA105u, 0xA20Eu, 0xA291u, 0xA392u, 0xA600u,
};
static const uint64_t
_hb_ucd_dm2_map[1025] =
static const uint32_t
_hb_ucd_dm2_u32_map[638] =
{
HB_CODEPOINT_ENCODE3_11_7_14 (0x003Cu, 0x0338u, 0x226Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x003Du, 0x0338u, 0x2260u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x003Eu, 0x0338u, 0x226Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0300u, 0x00C0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0301u, 0x00C1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0302u, 0x00C2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0303u, 0x00C3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0304u, 0x0100u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0306u, 0x0102u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0307u, 0x0226u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0308u, 0x00C4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0309u, 0x1EA2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x030Au, 0x00C5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x030Cu, 0x01CDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x030Fu, 0x0200u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0311u, 0x0202u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0323u, 0x1EA0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0325u, 0x1E00u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0041u, 0x0328u, 0x0104u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0042u, 0x0307u, 0x1E02u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0042u, 0x0323u, 0x1E04u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0042u, 0x0331u, 0x1E06u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0043u, 0x0301u, 0x0106u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0043u, 0x0302u, 0x0108u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0043u, 0x0307u, 0x010Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0043u, 0x030Cu, 0x010Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0043u, 0x0327u, 0x00C7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x0307u, 0x1E0Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x030Cu, 0x010Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x0323u, 0x1E0Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x0327u, 0x1E10u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x032Du, 0x1E12u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0044u, 0x0331u, 0x1E0Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0300u, 0x00C8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0301u, 0x00C9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0302u, 0x00CAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0303u, 0x1EBCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0304u, 0x0112u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0306u, 0x0114u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0307u, 0x0116u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0308u, 0x00CBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0309u, 0x1EBAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x030Cu, 0x011Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x030Fu, 0x0204u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0311u, 0x0206u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0323u, 0x1EB8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0327u, 0x0228u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0328u, 0x0118u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x032Du, 0x1E18u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0045u, 0x0330u, 0x1E1Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0046u, 0x0307u, 0x1E1Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0301u, 0x01F4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0302u, 0x011Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0304u, 0x1E20u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0306u, 0x011Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0307u, 0x0120u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x030Cu, 0x01E6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0047u, 0x0327u, 0x0122u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x0302u, 0x0124u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x0307u, 0x1E22u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x0308u, 0x1E26u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x030Cu, 0x021Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x0323u, 0x1E24u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x0327u, 0x1E28u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0048u, 0x032Eu, 0x1E2Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0300u, 0x00CCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0301u, 0x00CDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0302u, 0x00CEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0303u, 0x0128u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0304u, 0x012Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0306u, 0x012Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0307u, 0x0130u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0308u, 0x00CFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0309u, 0x1EC8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x030Cu, 0x01CFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x030Fu, 0x0208u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0311u, 0x020Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0323u, 0x1ECAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0328u, 0x012Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0049u, 0x0330u, 0x1E2Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Au, 0x0302u, 0x0134u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Bu, 0x0301u, 0x1E30u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Bu, 0x030Cu, 0x01E8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Bu, 0x0323u, 0x1E32u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Bu, 0x0327u, 0x0136u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Bu, 0x0331u, 0x1E34u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x0301u, 0x0139u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x030Cu, 0x013Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x0323u, 0x1E36u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x0327u, 0x013Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x032Du, 0x1E3Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Cu, 0x0331u, 0x1E3Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Du, 0x0301u, 0x1E3Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Du, 0x0307u, 0x1E40u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Du, 0x0323u, 0x1E42u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0300u, 0x01F8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0301u, 0x0143u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0303u, 0x00D1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0307u, 0x1E44u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x030Cu, 0x0147u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0323u, 0x1E46u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0327u, 0x0145u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x032Du, 0x1E4Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Eu, 0x0331u, 0x1E48u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0300u, 0x00D2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0301u, 0x00D3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0302u, 0x00D4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0303u, 0x00D5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0304u, 0x014Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0306u, 0x014Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0307u, 0x022Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0308u, 0x00D6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0309u, 0x1ECEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x030Bu, 0x0150u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x030Cu, 0x01D1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x030Fu, 0x020Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0311u, 0x020Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x031Bu, 0x01A0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0323u, 0x1ECCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x004Fu, 0x0328u, 0x01EAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0050u, 0x0301u, 0x1E54u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0050u, 0x0307u, 0x1E56u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0301u, 0x0154u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0307u, 0x1E58u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x030Cu, 0x0158u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x030Fu, 0x0210u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0311u, 0x0212u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0323u, 0x1E5Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0327u, 0x0156u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0052u, 0x0331u, 0x1E5Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0301u, 0x015Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0302u, 0x015Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0307u, 0x1E60u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x030Cu, 0x0160u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0323u, 0x1E62u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0326u, 0x0218u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0053u, 0x0327u, 0x015Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x0307u, 0x1E6Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x030Cu, 0x0164u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x0323u, 0x1E6Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x0326u, 0x021Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x0327u, 0x0162u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x032Du, 0x1E70u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0054u, 0x0331u, 0x1E6Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0300u, 0x00D9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0301u, 0x00DAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0302u, 0x00DBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0303u, 0x0168u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0304u, 0x016Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0306u, 0x016Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0308u, 0x00DCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0309u, 0x1EE6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x030Au, 0x016Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x030Bu, 0x0170u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x030Cu, 0x01D3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x030Fu, 0x0214u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0311u, 0x0216u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x031Bu, 0x01AFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0323u, 0x1EE4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0324u, 0x1E72u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0328u, 0x0172u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x032Du, 0x1E76u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0055u, 0x0330u, 0x1E74u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0056u, 0x0303u, 0x1E7Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0056u, 0x0323u, 0x1E7Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0300u, 0x1E80u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0301u, 0x1E82u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0302u, 0x0174u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0307u, 0x1E86u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0308u, 0x1E84u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0057u, 0x0323u, 0x1E88u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0058u, 0x0307u, 0x1E8Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0058u, 0x0308u, 0x1E8Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0300u, 0x1EF2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0301u, 0x00DDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0302u, 0x0176u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0303u, 0x1EF8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0304u, 0x0232u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0307u, 0x1E8Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0308u, 0x0178u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0309u, 0x1EF6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0059u, 0x0323u, 0x1EF4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x0301u, 0x0179u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x0302u, 0x1E90u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x0307u, 0x017Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x030Cu, 0x017Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x0323u, 0x1E92u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x005Au, 0x0331u, 0x1E94u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0300u, 0x00E0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0301u, 0x00E1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0302u, 0x00E2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0303u, 0x00E3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0304u, 0x0101u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0306u, 0x0103u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0307u, 0x0227u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0308u, 0x00E4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0309u, 0x1EA3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x030Au, 0x00E5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x030Cu, 0x01CEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x030Fu, 0x0201u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0311u, 0x0203u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0323u, 0x1EA1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0325u, 0x1E01u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0061u, 0x0328u, 0x0105u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0062u, 0x0307u, 0x1E03u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0062u, 0x0323u, 0x1E05u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0062u, 0x0331u, 0x1E07u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0063u, 0x0301u, 0x0107u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0063u, 0x0302u, 0x0109u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0063u, 0x0307u, 0x010Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0063u, 0x030Cu, 0x010Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0063u, 0x0327u, 0x00E7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x0307u, 0x1E0Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x030Cu, 0x010Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x0323u, 0x1E0Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x0327u, 0x1E11u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x032Du, 0x1E13u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0064u, 0x0331u, 0x1E0Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0300u, 0x00E8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0301u, 0x00E9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0302u, 0x00EAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0303u, 0x1EBDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0304u, 0x0113u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0306u, 0x0115u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0307u, 0x0117u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0308u, 0x00EBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0309u, 0x1EBBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x030Cu, 0x011Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x030Fu, 0x0205u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0311u, 0x0207u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0323u, 0x1EB9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0327u, 0x0229u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0328u, 0x0119u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x032Du, 0x1E19u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0065u, 0x0330u, 0x1E1Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0066u, 0x0307u, 0x1E1Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0301u, 0x01F5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0302u, 0x011Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0304u, 0x1E21u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0306u, 0x011Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0307u, 0x0121u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x030Cu, 0x01E7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0067u, 0x0327u, 0x0123u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0302u, 0x0125u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0307u, 0x1E23u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0308u, 0x1E27u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x030Cu, 0x021Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0323u, 0x1E25u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0327u, 0x1E29u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x032Eu, 0x1E2Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0068u, 0x0331u, 0x1E96u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0300u, 0x00ECu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0301u, 0x00EDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0302u, 0x00EEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0303u, 0x0129u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0304u, 0x012Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0306u, 0x012Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0308u, 0x00EFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0309u, 0x1EC9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x030Cu, 0x01D0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x030Fu, 0x0209u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0311u, 0x020Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0323u, 0x1ECBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0328u, 0x012Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0069u, 0x0330u, 0x1E2Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Au, 0x0302u, 0x0135u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Au, 0x030Cu, 0x01F0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Bu, 0x0301u, 0x1E31u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Bu, 0x030Cu, 0x01E9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Bu, 0x0323u, 0x1E33u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Bu, 0x0327u, 0x0137u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Bu, 0x0331u, 0x1E35u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x0301u, 0x013Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x030Cu, 0x013Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x0323u, 0x1E37u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x0327u, 0x013Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x032Du, 0x1E3Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Cu, 0x0331u, 0x1E3Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Du, 0x0301u, 0x1E3Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Du, 0x0307u, 0x1E41u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Du, 0x0323u, 0x1E43u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0300u, 0x01F9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0301u, 0x0144u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0303u, 0x00F1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0307u, 0x1E45u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x030Cu, 0x0148u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0323u, 0x1E47u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0327u, 0x0146u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x032Du, 0x1E4Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Eu, 0x0331u, 0x1E49u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0300u, 0x00F2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0301u, 0x00F3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0302u, 0x00F4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0303u, 0x00F5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0304u, 0x014Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0306u, 0x014Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0307u, 0x022Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0308u, 0x00F6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0309u, 0x1ECFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x030Bu, 0x0151u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x030Cu, 0x01D2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x030Fu, 0x020Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0311u, 0x020Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x031Bu, 0x01A1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0323u, 0x1ECDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x006Fu, 0x0328u, 0x01EBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0070u, 0x0301u, 0x1E55u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0070u, 0x0307u, 0x1E57u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0301u, 0x0155u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0307u, 0x1E59u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x030Cu, 0x0159u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x030Fu, 0x0211u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0311u, 0x0213u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0323u, 0x1E5Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0327u, 0x0157u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0072u, 0x0331u, 0x1E5Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0301u, 0x015Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0302u, 0x015Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0307u, 0x1E61u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x030Cu, 0x0161u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0323u, 0x1E63u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0326u, 0x0219u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0073u, 0x0327u, 0x015Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0307u, 0x1E6Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0308u, 0x1E97u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x030Cu, 0x0165u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0323u, 0x1E6Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0326u, 0x021Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0327u, 0x0163u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x032Du, 0x1E71u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0074u, 0x0331u, 0x1E6Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0300u, 0x00F9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0301u, 0x00FAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0302u, 0x00FBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0303u, 0x0169u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0304u, 0x016Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0306u, 0x016Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0308u, 0x00FCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0309u, 0x1EE7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x030Au, 0x016Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x030Bu, 0x0171u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x030Cu, 0x01D4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x030Fu, 0x0215u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0311u, 0x0217u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x031Bu, 0x01B0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0323u, 0x1EE5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0324u, 0x1E73u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0328u, 0x0173u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x032Du, 0x1E77u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0075u, 0x0330u, 0x1E75u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0076u, 0x0303u, 0x1E7Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0076u, 0x0323u, 0x1E7Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0300u, 0x1E81u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0301u, 0x1E83u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0302u, 0x0175u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0307u, 0x1E87u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0308u, 0x1E85u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x030Au, 0x1E98u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0077u, 0x0323u, 0x1E89u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0078u, 0x0307u, 0x1E8Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0078u, 0x0308u, 0x1E8Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0300u, 0x1EF3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0301u, 0x00FDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0302u, 0x0177u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0303u, 0x1EF9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0304u, 0x0233u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0307u, 0x1E8Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0308u, 0x00FFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0309u, 0x1EF7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x030Au, 0x1E99u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0079u, 0x0323u, 0x1EF5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x0301u, 0x017Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x0302u, 0x1E91u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x0307u, 0x017Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x030Cu, 0x017Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x0323u, 0x1E93u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x007Au, 0x0331u, 0x1E95u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00A8u, 0x0300u, 0x1FEDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00A8u, 0x0301u, 0x0385u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00A8u, 0x0342u, 0x1FC1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C2u, 0x0300u, 0x1EA6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C2u, 0x0301u, 0x1EA4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C2u, 0x0303u, 0x1EAAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C2u, 0x0309u, 0x1EA8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C4u, 0x0304u, 0x01DEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C5u, 0x0301u, 0x01FAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C6u, 0x0301u, 0x01FCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C6u, 0x0304u, 0x01E2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00C7u, 0x0301u, 0x1E08u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00CAu, 0x0300u, 0x1EC0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00CAu, 0x0301u, 0x1EBEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00CAu, 0x0303u, 0x1EC4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00CAu, 0x0309u, 0x1EC2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00CFu, 0x0301u, 0x1E2Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D4u, 0x0300u, 0x1ED2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D4u, 0x0301u, 0x1ED0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D4u, 0x0303u, 0x1ED6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D4u, 0x0309u, 0x1ED4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D5u, 0x0301u, 0x1E4Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D5u, 0x0304u, 0x022Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D5u, 0x0308u, 0x1E4Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D6u, 0x0304u, 0x022Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00D8u, 0x0301u, 0x01FEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00DCu, 0x0300u, 0x01DBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00DCu, 0x0301u, 0x01D7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00DCu, 0x0304u, 0x01D5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00DCu, 0x030Cu, 0x01D9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E2u, 0x0300u, 0x1EA7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E2u, 0x0301u, 0x1EA5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E2u, 0x0303u, 0x1EABu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E2u, 0x0309u, 0x1EA9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E4u, 0x0304u, 0x01DFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E5u, 0x0301u, 0x01FBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E6u, 0x0301u, 0x01FDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E6u, 0x0304u, 0x01E3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00E7u, 0x0301u, 0x1E09u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00EAu, 0x0300u, 0x1EC1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00EAu, 0x0301u, 0x1EBFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00EAu, 0x0303u, 0x1EC5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00EAu, 0x0309u, 0x1EC3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00EFu, 0x0301u, 0x1E2Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F4u, 0x0300u, 0x1ED3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F4u, 0x0301u, 0x1ED1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F4u, 0x0303u, 0x1ED7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F4u, 0x0309u, 0x1ED5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F5u, 0x0301u, 0x1E4Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F5u, 0x0304u, 0x022Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F5u, 0x0308u, 0x1E4Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F6u, 0x0304u, 0x022Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00F8u, 0x0301u, 0x01FFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00FCu, 0x0300u, 0x01DCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00FCu, 0x0301u, 0x01D8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00FCu, 0x0304u, 0x01D6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x00FCu, 0x030Cu, 0x01DAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0102u, 0x0300u, 0x1EB0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0102u, 0x0301u, 0x1EAEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0102u, 0x0303u, 0x1EB4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0102u, 0x0309u, 0x1EB2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0103u, 0x0300u, 0x1EB1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0103u, 0x0301u, 0x1EAFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0103u, 0x0303u, 0x1EB5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0103u, 0x0309u, 0x1EB3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0112u, 0x0300u, 0x1E14u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0112u, 0x0301u, 0x1E16u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0113u, 0x0300u, 0x1E15u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0113u, 0x0301u, 0x1E17u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x014Cu, 0x0300u, 0x1E50u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x014Cu, 0x0301u, 0x1E52u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x014Du, 0x0300u, 0x1E51u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x014Du, 0x0301u, 0x1E53u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x015Au, 0x0307u, 0x1E64u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x015Bu, 0x0307u, 0x1E65u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0160u, 0x0307u, 0x1E66u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0161u, 0x0307u, 0x1E67u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0168u, 0x0301u, 0x1E78u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0169u, 0x0301u, 0x1E79u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x016Au, 0x0308u, 0x1E7Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x016Bu, 0x0308u, 0x1E7Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x017Fu, 0x0307u, 0x1E9Bu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A0u, 0x0300u, 0x1EDCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A0u, 0x0301u, 0x1EDAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A0u, 0x0303u, 0x1EE0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A0u, 0x0309u, 0x1EDEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A0u, 0x0323u, 0x1EE2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A1u, 0x0300u, 0x1EDDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A1u, 0x0301u, 0x1EDBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A1u, 0x0303u, 0x1EE1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A1u, 0x0309u, 0x1EDFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01A1u, 0x0323u, 0x1EE3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01AFu, 0x0300u, 0x1EEAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01AFu, 0x0301u, 0x1EE8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01AFu, 0x0303u, 0x1EEEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01AFu, 0x0309u, 0x1EECu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01AFu, 0x0323u, 0x1EF0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B0u, 0x0300u, 0x1EEBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B0u, 0x0301u, 0x1EE9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B0u, 0x0303u, 0x1EEFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B0u, 0x0309u, 0x1EEDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B0u, 0x0323u, 0x1EF1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01B7u, 0x030Cu, 0x01EEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01EAu, 0x0304u, 0x01ECu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x01EBu, 0x0304u, 0x01EDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0226u, 0x0304u, 0x01E0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0227u, 0x0304u, 0x01E1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0228u, 0x0306u, 0x1E1Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0229u, 0x0306u, 0x1E1Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x022Eu, 0x0304u, 0x0230u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x022Fu, 0x0304u, 0x0231u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0292u, 0x030Cu, 0x01EFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0308u, 0x0301u, 0x0000u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0300u, 0x1FBAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0301u, 0x0386u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0304u, 0x1FB9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0306u, 0x1FB8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0313u, 0x1F08u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0314u, 0x1F09u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0391u, 0x0345u, 0x1FBCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0395u, 0x0300u, 0x1FC8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0395u, 0x0301u, 0x0388u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0395u, 0x0313u, 0x1F18u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0395u, 0x0314u, 0x1F19u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0397u, 0x0300u, 0x1FCAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0397u, 0x0301u, 0x0389u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0397u, 0x0313u, 0x1F28u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0397u, 0x0314u, 0x1F29u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0397u, 0x0345u, 0x1FCCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0300u, 0x1FDAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0301u, 0x038Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0304u, 0x1FD9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0306u, 0x1FD8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0308u, 0x03AAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0313u, 0x1F38u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0399u, 0x0314u, 0x1F39u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x039Fu, 0x0300u, 0x1FF8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x039Fu, 0x0301u, 0x038Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x039Fu, 0x0313u, 0x1F48u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x039Fu, 0x0314u, 0x1F49u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A1u, 0x0314u, 0x1FECu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0300u, 0x1FEAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0301u, 0x038Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0304u, 0x1FE9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0306u, 0x1FE8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0308u, 0x03ABu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A5u, 0x0314u, 0x1F59u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A9u, 0x0300u, 0x1FFAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A9u, 0x0301u, 0x038Fu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A9u, 0x0313u, 0x1F68u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A9u, 0x0314u, 0x1F69u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03A9u, 0x0345u, 0x1FFCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03ACu, 0x0345u, 0x1FB4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03AEu, 0x0345u, 0x1FC4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0300u, 0x1F70u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0301u, 0x03ACu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0304u, 0x1FB1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0306u, 0x1FB0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0313u, 0x1F00u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0314u, 0x1F01u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0342u, 0x1FB6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B1u, 0x0345u, 0x1FB3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B5u, 0x0300u, 0x1F72u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B5u, 0x0301u, 0x03ADu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B5u, 0x0313u, 0x1F10u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B5u, 0x0314u, 0x1F11u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0300u, 0x1F74u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0301u, 0x03AEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0313u, 0x1F20u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0314u, 0x1F21u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0342u, 0x1FC6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B7u, 0x0345u, 0x1FC3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0300u, 0x1F76u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0301u, 0x03AFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0304u, 0x1FD1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0306u, 0x1FD0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0308u, 0x03CAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0313u, 0x1F30u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0314u, 0x1F31u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03B9u, 0x0342u, 0x1FD6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03BFu, 0x0300u, 0x1F78u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03BFu, 0x0301u, 0x03CCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03BFu, 0x0313u, 0x1F40u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03BFu, 0x0314u, 0x1F41u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C1u, 0x0313u, 0x1FE4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C1u, 0x0314u, 0x1FE5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0300u, 0x1F7Au),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0301u, 0x03CDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0304u, 0x1FE1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0306u, 0x1FE0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0308u, 0x03CBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0313u, 0x1F50u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0314u, 0x1F51u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C5u, 0x0342u, 0x1FE6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0300u, 0x1F7Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0301u, 0x03CEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0313u, 0x1F60u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0314u, 0x1F61u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0342u, 0x1FF6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03C9u, 0x0345u, 0x1FF3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CAu, 0x0300u, 0x1FD2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CAu, 0x0301u, 0x0390u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CAu, 0x0342u, 0x1FD7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CBu, 0x0300u, 0x1FE2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CBu, 0x0301u, 0x03B0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CBu, 0x0342u, 0x1FE7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03CEu, 0x0345u, 0x1FF4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03D2u, 0x0301u, 0x03D3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x03D2u, 0x0308u, 0x03D4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0406u, 0x0308u, 0x0407u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0410u, 0x0306u, 0x04D0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0410u, 0x0308u, 0x04D2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0413u, 0x0301u, 0x0403u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0415u, 0x0300u, 0x0400u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0415u, 0x0306u, 0x04D6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0415u, 0x0308u, 0x0401u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0416u, 0x0306u, 0x04C1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0416u, 0x0308u, 0x04DCu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0417u, 0x0308u, 0x04DEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0418u, 0x0300u, 0x040Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0418u, 0x0304u, 0x04E2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0418u, 0x0306u, 0x0419u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0418u, 0x0308u, 0x04E4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x041Au, 0x0301u, 0x040Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x041Eu, 0x0308u, 0x04E6u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0423u, 0x0304u, 0x04EEu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0423u, 0x0306u, 0x040Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0423u, 0x0308u, 0x04F0u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0423u, 0x030Bu, 0x04F2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0427u, 0x0308u, 0x04F4u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x042Bu, 0x0308u, 0x04F8u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x042Du, 0x0308u, 0x04ECu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0430u, 0x0306u, 0x04D1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0430u, 0x0308u, 0x04D3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0433u, 0x0301u, 0x0453u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0435u, 0x0300u, 0x0450u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0435u, 0x0306u, 0x04D7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0435u, 0x0308u, 0x0451u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0436u, 0x0306u, 0x04C2u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0436u, 0x0308u, 0x04DDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0437u, 0x0308u, 0x04DFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0438u, 0x0300u, 0x045Du),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0438u, 0x0304u, 0x04E3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0438u, 0x0306u, 0x0439u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0438u, 0x0308u, 0x04E5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x043Au, 0x0301u, 0x045Cu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x043Eu, 0x0308u, 0x04E7u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0443u, 0x0304u, 0x04EFu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0443u, 0x0306u, 0x045Eu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0443u, 0x0308u, 0x04F1u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0443u, 0x030Bu, 0x04F3u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0447u, 0x0308u, 0x04F5u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x044Bu, 0x0308u, 0x04F9u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x044Du, 0x0308u, 0x04EDu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0456u, 0x0308u, 0x0457u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0474u, 0x030Fu, 0x0476u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x0475u, 0x030Fu, 0x0477u),
HB_CODEPOINT_ENCODE3_11_7_14 (0x04D8u, 0x0308u, 0x04DAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x04D9u, 0x0308u, 0x04DBu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x04E8u, 0x0308u, 0x04EAu),
HB_CODEPOINT_ENCODE3_11_7_14 (0x04E9u, 0x0308u, 0x04EBu),
};
static const uint64_t
_hb_ucd_dm2_u64_map[387] =
{
HB_CODEPOINT_ENCODE3 (0x003Cu, 0x0338u, 0x226Eu), HB_CODEPOINT_ENCODE3 (0x003Du, 0x0338u, 0x2260u),
HB_CODEPOINT_ENCODE3 (0x003Eu, 0x0338u, 0x226Fu), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0300u, 0x00C0u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0301u, 0x00C1u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0302u, 0x00C2u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0303u, 0x00C3u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0304u, 0x0100u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0306u, 0x0102u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0307u, 0x0226u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0308u, 0x00C4u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0309u, 0x1EA2u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x030Au, 0x00C5u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x030Cu, 0x01CDu),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x030Fu, 0x0200u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0311u, 0x0202u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0323u, 0x1EA0u), HB_CODEPOINT_ENCODE3 (0x0041u, 0x0325u, 0x1E00u),
HB_CODEPOINT_ENCODE3 (0x0041u, 0x0328u, 0x0104u), HB_CODEPOINT_ENCODE3 (0x0042u, 0x0307u, 0x1E02u),
HB_CODEPOINT_ENCODE3 (0x0042u, 0x0323u, 0x1E04u), HB_CODEPOINT_ENCODE3 (0x0042u, 0x0331u, 0x1E06u),
HB_CODEPOINT_ENCODE3 (0x0043u, 0x0301u, 0x0106u), HB_CODEPOINT_ENCODE3 (0x0043u, 0x0302u, 0x0108u),
HB_CODEPOINT_ENCODE3 (0x0043u, 0x0307u, 0x010Au), HB_CODEPOINT_ENCODE3 (0x0043u, 0x030Cu, 0x010Cu),
HB_CODEPOINT_ENCODE3 (0x0043u, 0x0327u, 0x00C7u), HB_CODEPOINT_ENCODE3 (0x0044u, 0x0307u, 0x1E0Au),
HB_CODEPOINT_ENCODE3 (0x0044u, 0x030Cu, 0x010Eu), HB_CODEPOINT_ENCODE3 (0x0044u, 0x0323u, 0x1E0Cu),
HB_CODEPOINT_ENCODE3 (0x0044u, 0x0327u, 0x1E10u), HB_CODEPOINT_ENCODE3 (0x0044u, 0x032Du, 0x1E12u),
HB_CODEPOINT_ENCODE3 (0x0044u, 0x0331u, 0x1E0Eu), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0300u, 0x00C8u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0301u, 0x00C9u), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0302u, 0x00CAu),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0303u, 0x1EBCu), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0304u, 0x0112u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0306u, 0x0114u), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0307u, 0x0116u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0308u, 0x00CBu), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0309u, 0x1EBAu),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x030Cu, 0x011Au), HB_CODEPOINT_ENCODE3 (0x0045u, 0x030Fu, 0x0204u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0311u, 0x0206u), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0323u, 0x1EB8u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x0327u, 0x0228u), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0328u, 0x0118u),
HB_CODEPOINT_ENCODE3 (0x0045u, 0x032Du, 0x1E18u), HB_CODEPOINT_ENCODE3 (0x0045u, 0x0330u, 0x1E1Au),
HB_CODEPOINT_ENCODE3 (0x0046u, 0x0307u, 0x1E1Eu), HB_CODEPOINT_ENCODE3 (0x0047u, 0x0301u, 0x01F4u),
HB_CODEPOINT_ENCODE3 (0x0047u, 0x0302u, 0x011Cu), HB_CODEPOINT_ENCODE3 (0x0047u, 0x0304u, 0x1E20u),
HB_CODEPOINT_ENCODE3 (0x0047u, 0x0306u, 0x011Eu), HB_CODEPOINT_ENCODE3 (0x0047u, 0x0307u, 0x0120u),
HB_CODEPOINT_ENCODE3 (0x0047u, 0x030Cu, 0x01E6u), HB_CODEPOINT_ENCODE3 (0x0047u, 0x0327u, 0x0122u),
HB_CODEPOINT_ENCODE3 (0x0048u, 0x0302u, 0x0124u), HB_CODEPOINT_ENCODE3 (0x0048u, 0x0307u, 0x1E22u),
HB_CODEPOINT_ENCODE3 (0x0048u, 0x0308u, 0x1E26u), HB_CODEPOINT_ENCODE3 (0x0048u, 0x030Cu, 0x021Eu),
HB_CODEPOINT_ENCODE3 (0x0048u, 0x0323u, 0x1E24u), HB_CODEPOINT_ENCODE3 (0x0048u, 0x0327u, 0x1E28u),
HB_CODEPOINT_ENCODE3 (0x0048u, 0x032Eu, 0x1E2Au), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0300u, 0x00CCu),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0301u, 0x00CDu), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0302u, 0x00CEu),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0303u, 0x0128u), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0304u, 0x012Au),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0306u, 0x012Cu), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0307u, 0x0130u),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0308u, 0x00CFu), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0309u, 0x1EC8u),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x030Cu, 0x01CFu), HB_CODEPOINT_ENCODE3 (0x0049u, 0x030Fu, 0x0208u),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0311u, 0x020Au), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0323u, 0x1ECAu),
HB_CODEPOINT_ENCODE3 (0x0049u, 0x0328u, 0x012Eu), HB_CODEPOINT_ENCODE3 (0x0049u, 0x0330u, 0x1E2Cu),
HB_CODEPOINT_ENCODE3 (0x004Au, 0x0302u, 0x0134u), HB_CODEPOINT_ENCODE3 (0x004Bu, 0x0301u, 0x1E30u),
HB_CODEPOINT_ENCODE3 (0x004Bu, 0x030Cu, 0x01E8u), HB_CODEPOINT_ENCODE3 (0x004Bu, 0x0323u, 0x1E32u),
HB_CODEPOINT_ENCODE3 (0x004Bu, 0x0327u, 0x0136u), HB_CODEPOINT_ENCODE3 (0x004Bu, 0x0331u, 0x1E34u),
HB_CODEPOINT_ENCODE3 (0x004Cu, 0x0301u, 0x0139u), HB_CODEPOINT_ENCODE3 (0x004Cu, 0x030Cu, 0x013Du),
HB_CODEPOINT_ENCODE3 (0x004Cu, 0x0323u, 0x1E36u), HB_CODEPOINT_ENCODE3 (0x004Cu, 0x0327u, 0x013Bu),
HB_CODEPOINT_ENCODE3 (0x004Cu, 0x032Du, 0x1E3Cu), HB_CODEPOINT_ENCODE3 (0x004Cu, 0x0331u, 0x1E3Au),
HB_CODEPOINT_ENCODE3 (0x004Du, 0x0301u, 0x1E3Eu), HB_CODEPOINT_ENCODE3 (0x004Du, 0x0307u, 0x1E40u),
HB_CODEPOINT_ENCODE3 (0x004Du, 0x0323u, 0x1E42u), HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0300u, 0x01F8u),
HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0301u, 0x0143u), HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0303u, 0x00D1u),
HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0307u, 0x1E44u), HB_CODEPOINT_ENCODE3 (0x004Eu, 0x030Cu, 0x0147u),
HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0323u, 0x1E46u), HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0327u, 0x0145u),
HB_CODEPOINT_ENCODE3 (0x004Eu, 0x032Du, 0x1E4Au), HB_CODEPOINT_ENCODE3 (0x004Eu, 0x0331u, 0x1E48u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0300u, 0x00D2u), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0301u, 0x00D3u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0302u, 0x00D4u), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0303u, 0x00D5u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0304u, 0x014Cu), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0306u, 0x014Eu),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0307u, 0x022Eu), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0308u, 0x00D6u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0309u, 0x1ECEu), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x030Bu, 0x0150u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x030Cu, 0x01D1u), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x030Fu, 0x020Cu),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0311u, 0x020Eu), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x031Bu, 0x01A0u),
HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0323u, 0x1ECCu), HB_CODEPOINT_ENCODE3 (0x004Fu, 0x0328u, 0x01EAu),
HB_CODEPOINT_ENCODE3 (0x0050u, 0x0301u, 0x1E54u), HB_CODEPOINT_ENCODE3 (0x0050u, 0x0307u, 0x1E56u),
HB_CODEPOINT_ENCODE3 (0x0052u, 0x0301u, 0x0154u), HB_CODEPOINT_ENCODE3 (0x0052u, 0x0307u, 0x1E58u),
HB_CODEPOINT_ENCODE3 (0x0052u, 0x030Cu, 0x0158u), HB_CODEPOINT_ENCODE3 (0x0052u, 0x030Fu, 0x0210u),
HB_CODEPOINT_ENCODE3 (0x0052u, 0x0311u, 0x0212u), HB_CODEPOINT_ENCODE3 (0x0052u, 0x0323u, 0x1E5Au),
HB_CODEPOINT_ENCODE3 (0x0052u, 0x0327u, 0x0156u), HB_CODEPOINT_ENCODE3 (0x0052u, 0x0331u, 0x1E5Eu),
HB_CODEPOINT_ENCODE3 (0x0053u, 0x0301u, 0x015Au), HB_CODEPOINT_ENCODE3 (0x0053u, 0x0302u, 0x015Cu),
HB_CODEPOINT_ENCODE3 (0x0053u, 0x0307u, 0x1E60u), HB_CODEPOINT_ENCODE3 (0x0053u, 0x030Cu, 0x0160u),
HB_CODEPOINT_ENCODE3 (0x0053u, 0x0323u, 0x1E62u), HB_CODEPOINT_ENCODE3 (0x0053u, 0x0326u, 0x0218u),
HB_CODEPOINT_ENCODE3 (0x0053u, 0x0327u, 0x015Eu), HB_CODEPOINT_ENCODE3 (0x0054u, 0x0307u, 0x1E6Au),
HB_CODEPOINT_ENCODE3 (0x0054u, 0x030Cu, 0x0164u), HB_CODEPOINT_ENCODE3 (0x0054u, 0x0323u, 0x1E6Cu),
HB_CODEPOINT_ENCODE3 (0x0054u, 0x0326u, 0x021Au), HB_CODEPOINT_ENCODE3 (0x0054u, 0x0327u, 0x0162u),
HB_CODEPOINT_ENCODE3 (0x0054u, 0x032Du, 0x1E70u), HB_CODEPOINT_ENCODE3 (0x0054u, 0x0331u, 0x1E6Eu),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0300u, 0x00D9u), HB_CODEPOINT_ENCODE3 (0x0055u, 0x0301u, 0x00DAu),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0302u, 0x00DBu), HB_CODEPOINT_ENCODE3 (0x0055u, 0x0303u, 0x0168u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0304u, 0x016Au), HB_CODEPOINT_ENCODE3 (0x0055u, 0x0306u, 0x016Cu),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0308u, 0x00DCu), HB_CODEPOINT_ENCODE3 (0x0055u, 0x0309u, 0x1EE6u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x030Au, 0x016Eu), HB_CODEPOINT_ENCODE3 (0x0055u, 0x030Bu, 0x0170u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x030Cu, 0x01D3u), HB_CODEPOINT_ENCODE3 (0x0055u, 0x030Fu, 0x0214u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0311u, 0x0216u), HB_CODEPOINT_ENCODE3 (0x0055u, 0x031Bu, 0x01AFu),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0323u, 0x1EE4u), HB_CODEPOINT_ENCODE3 (0x0055u, 0x0324u, 0x1E72u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0328u, 0x0172u), HB_CODEPOINT_ENCODE3 (0x0055u, 0x032Du, 0x1E76u),
HB_CODEPOINT_ENCODE3 (0x0055u, 0x0330u, 0x1E74u), HB_CODEPOINT_ENCODE3 (0x0056u, 0x0303u, 0x1E7Cu),
HB_CODEPOINT_ENCODE3 (0x0056u, 0x0323u, 0x1E7Eu), HB_CODEPOINT_ENCODE3 (0x0057u, 0x0300u, 0x1E80u),
HB_CODEPOINT_ENCODE3 (0x0057u, 0x0301u, 0x1E82u), HB_CODEPOINT_ENCODE3 (0x0057u, 0x0302u, 0x0174u),
HB_CODEPOINT_ENCODE3 (0x0057u, 0x0307u, 0x1E86u), HB_CODEPOINT_ENCODE3 (0x0057u, 0x0308u, 0x1E84u),
HB_CODEPOINT_ENCODE3 (0x0057u, 0x0323u, 0x1E88u), HB_CODEPOINT_ENCODE3 (0x0058u, 0x0307u, 0x1E8Au),
HB_CODEPOINT_ENCODE3 (0x0058u, 0x0308u, 0x1E8Cu), HB_CODEPOINT_ENCODE3 (0x0059u, 0x0300u, 0x1EF2u),
HB_CODEPOINT_ENCODE3 (0x0059u, 0x0301u, 0x00DDu), HB_CODEPOINT_ENCODE3 (0x0059u, 0x0302u, 0x0176u),
HB_CODEPOINT_ENCODE3 (0x0059u, 0x0303u, 0x1EF8u), HB_CODEPOINT_ENCODE3 (0x0059u, 0x0304u, 0x0232u),
HB_CODEPOINT_ENCODE3 (0x0059u, 0x0307u, 0x1E8Eu), HB_CODEPOINT_ENCODE3 (0x0059u, 0x0308u, 0x0178u),
HB_CODEPOINT_ENCODE3 (0x0059u, 0x0309u, 0x1EF6u), HB_CODEPOINT_ENCODE3 (0x0059u, 0x0323u, 0x1EF4u),
HB_CODEPOINT_ENCODE3 (0x005Au, 0x0301u, 0x0179u), HB_CODEPOINT_ENCODE3 (0x005Au, 0x0302u, 0x1E90u),
HB_CODEPOINT_ENCODE3 (0x005Au, 0x0307u, 0x017Bu), HB_CODEPOINT_ENCODE3 (0x005Au, 0x030Cu, 0x017Du),
HB_CODEPOINT_ENCODE3 (0x005Au, 0x0323u, 0x1E92u), HB_CODEPOINT_ENCODE3 (0x005Au, 0x0331u, 0x1E94u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0300u, 0x00E0u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0301u, 0x00E1u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0302u, 0x00E2u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0303u, 0x00E3u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0304u, 0x0101u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0306u, 0x0103u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0307u, 0x0227u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0308u, 0x00E4u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0309u, 0x1EA3u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x030Au, 0x00E5u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x030Cu, 0x01CEu), HB_CODEPOINT_ENCODE3 (0x0061u, 0x030Fu, 0x0201u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0311u, 0x0203u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0323u, 0x1EA1u),
HB_CODEPOINT_ENCODE3 (0x0061u, 0x0325u, 0x1E01u), HB_CODEPOINT_ENCODE3 (0x0061u, 0x0328u, 0x0105u),
HB_CODEPOINT_ENCODE3 (0x0062u, 0x0307u, 0x1E03u), HB_CODEPOINT_ENCODE3 (0x0062u, 0x0323u, 0x1E05u),
HB_CODEPOINT_ENCODE3 (0x0062u, 0x0331u, 0x1E07u), HB_CODEPOINT_ENCODE3 (0x0063u, 0x0301u, 0x0107u),
HB_CODEPOINT_ENCODE3 (0x0063u, 0x0302u, 0x0109u), HB_CODEPOINT_ENCODE3 (0x0063u, 0x0307u, 0x010Bu),
HB_CODEPOINT_ENCODE3 (0x0063u, 0x030Cu, 0x010Du), HB_CODEPOINT_ENCODE3 (0x0063u, 0x0327u, 0x00E7u),
HB_CODEPOINT_ENCODE3 (0x0064u, 0x0307u, 0x1E0Bu), HB_CODEPOINT_ENCODE3 (0x0064u, 0x030Cu, 0x010Fu),
HB_CODEPOINT_ENCODE3 (0x0064u, 0x0323u, 0x1E0Du), HB_CODEPOINT_ENCODE3 (0x0064u, 0x0327u, 0x1E11u),
HB_CODEPOINT_ENCODE3 (0x0064u, 0x032Du, 0x1E13u), HB_CODEPOINT_ENCODE3 (0x0064u, 0x0331u, 0x1E0Fu),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0300u, 0x00E8u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0301u, 0x00E9u),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0302u, 0x00EAu), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0303u, 0x1EBDu),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0304u, 0x0113u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0306u, 0x0115u),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0307u, 0x0117u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0308u, 0x00EBu),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0309u, 0x1EBBu), HB_CODEPOINT_ENCODE3 (0x0065u, 0x030Cu, 0x011Bu),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x030Fu, 0x0205u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0311u, 0x0207u),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0323u, 0x1EB9u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x0327u, 0x0229u),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0328u, 0x0119u), HB_CODEPOINT_ENCODE3 (0x0065u, 0x032Du, 0x1E19u),
HB_CODEPOINT_ENCODE3 (0x0065u, 0x0330u, 0x1E1Bu), HB_CODEPOINT_ENCODE3 (0x0066u, 0x0307u, 0x1E1Fu),
HB_CODEPOINT_ENCODE3 (0x0067u, 0x0301u, 0x01F5u), HB_CODEPOINT_ENCODE3 (0x0067u, 0x0302u, 0x011Du),
HB_CODEPOINT_ENCODE3 (0x0067u, 0x0304u, 0x1E21u), HB_CODEPOINT_ENCODE3 (0x0067u, 0x0306u, 0x011Fu),
HB_CODEPOINT_ENCODE3 (0x0067u, 0x0307u, 0x0121u), HB_CODEPOINT_ENCODE3 (0x0067u, 0x030Cu, 0x01E7u),
HB_CODEPOINT_ENCODE3 (0x0067u, 0x0327u, 0x0123u), HB_CODEPOINT_ENCODE3 (0x0068u, 0x0302u, 0x0125u),
HB_CODEPOINT_ENCODE3 (0x0068u, 0x0307u, 0x1E23u), HB_CODEPOINT_ENCODE3 (0x0068u, 0x0308u, 0x1E27u),
HB_CODEPOINT_ENCODE3 (0x0068u, 0x030Cu, 0x021Fu), HB_CODEPOINT_ENCODE3 (0x0068u, 0x0323u, 0x1E25u),
HB_CODEPOINT_ENCODE3 (0x0068u, 0x0327u, 0x1E29u), HB_CODEPOINT_ENCODE3 (0x0068u, 0x032Eu, 0x1E2Bu),
HB_CODEPOINT_ENCODE3 (0x0068u, 0x0331u, 0x1E96u), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0300u, 0x00ECu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0301u, 0x00EDu), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0302u, 0x00EEu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0303u, 0x0129u), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0304u, 0x012Bu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0306u, 0x012Du), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0308u, 0x00EFu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0309u, 0x1EC9u), HB_CODEPOINT_ENCODE3 (0x0069u, 0x030Cu, 0x01D0u),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x030Fu, 0x0209u), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0311u, 0x020Bu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0323u, 0x1ECBu), HB_CODEPOINT_ENCODE3 (0x0069u, 0x0328u, 0x012Fu),
HB_CODEPOINT_ENCODE3 (0x0069u, 0x0330u, 0x1E2Du), HB_CODEPOINT_ENCODE3 (0x006Au, 0x0302u, 0x0135u),
HB_CODEPOINT_ENCODE3 (0x006Au, 0x030Cu, 0x01F0u), HB_CODEPOINT_ENCODE3 (0x006Bu, 0x0301u, 0x1E31u),
HB_CODEPOINT_ENCODE3 (0x006Bu, 0x030Cu, 0x01E9u), HB_CODEPOINT_ENCODE3 (0x006Bu, 0x0323u, 0x1E33u),
HB_CODEPOINT_ENCODE3 (0x006Bu, 0x0327u, 0x0137u), HB_CODEPOINT_ENCODE3 (0x006Bu, 0x0331u, 0x1E35u),
HB_CODEPOINT_ENCODE3 (0x006Cu, 0x0301u, 0x013Au), HB_CODEPOINT_ENCODE3 (0x006Cu, 0x030Cu, 0x013Eu),
HB_CODEPOINT_ENCODE3 (0x006Cu, 0x0323u, 0x1E37u), HB_CODEPOINT_ENCODE3 (0x006Cu, 0x0327u, 0x013Cu),
HB_CODEPOINT_ENCODE3 (0x006Cu, 0x032Du, 0x1E3Du), HB_CODEPOINT_ENCODE3 (0x006Cu, 0x0331u, 0x1E3Bu),
HB_CODEPOINT_ENCODE3 (0x006Du, 0x0301u, 0x1E3Fu), HB_CODEPOINT_ENCODE3 (0x006Du, 0x0307u, 0x1E41u),
HB_CODEPOINT_ENCODE3 (0x006Du, 0x0323u, 0x1E43u), HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0300u, 0x01F9u),
HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0301u, 0x0144u), HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0303u, 0x00F1u),
HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0307u, 0x1E45u), HB_CODEPOINT_ENCODE3 (0x006Eu, 0x030Cu, 0x0148u),
HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0323u, 0x1E47u), HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0327u, 0x0146u),
HB_CODEPOINT_ENCODE3 (0x006Eu, 0x032Du, 0x1E4Bu), HB_CODEPOINT_ENCODE3 (0x006Eu, 0x0331u, 0x1E49u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0300u, 0x00F2u), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0301u, 0x00F3u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0302u, 0x00F4u), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0303u, 0x00F5u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0304u, 0x014Du), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0306u, 0x014Fu),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0307u, 0x022Fu), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0308u, 0x00F6u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0309u, 0x1ECFu), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x030Bu, 0x0151u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x030Cu, 0x01D2u), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x030Fu, 0x020Du),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0311u, 0x020Fu), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x031Bu, 0x01A1u),
HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0323u, 0x1ECDu), HB_CODEPOINT_ENCODE3 (0x006Fu, 0x0328u, 0x01EBu),
HB_CODEPOINT_ENCODE3 (0x0070u, 0x0301u, 0x1E55u), HB_CODEPOINT_ENCODE3 (0x0070u, 0x0307u, 0x1E57u),
HB_CODEPOINT_ENCODE3 (0x0072u, 0x0301u, 0x0155u), HB_CODEPOINT_ENCODE3 (0x0072u, 0x0307u, 0x1E59u),
HB_CODEPOINT_ENCODE3 (0x0072u, 0x030Cu, 0x0159u), HB_CODEPOINT_ENCODE3 (0x0072u, 0x030Fu, 0x0211u),
HB_CODEPOINT_ENCODE3 (0x0072u, 0x0311u, 0x0213u), HB_CODEPOINT_ENCODE3 (0x0072u, 0x0323u, 0x1E5Bu),
HB_CODEPOINT_ENCODE3 (0x0072u, 0x0327u, 0x0157u), HB_CODEPOINT_ENCODE3 (0x0072u, 0x0331u, 0x1E5Fu),
HB_CODEPOINT_ENCODE3 (0x0073u, 0x0301u, 0x015Bu), HB_CODEPOINT_ENCODE3 (0x0073u, 0x0302u, 0x015Du),
HB_CODEPOINT_ENCODE3 (0x0073u, 0x0307u, 0x1E61u), HB_CODEPOINT_ENCODE3 (0x0073u, 0x030Cu, 0x0161u),
HB_CODEPOINT_ENCODE3 (0x0073u, 0x0323u, 0x1E63u), HB_CODEPOINT_ENCODE3 (0x0073u, 0x0326u, 0x0219u),
HB_CODEPOINT_ENCODE3 (0x0073u, 0x0327u, 0x015Fu), HB_CODEPOINT_ENCODE3 (0x0074u, 0x0307u, 0x1E6Bu),
HB_CODEPOINT_ENCODE3 (0x0074u, 0x0308u, 0x1E97u), HB_CODEPOINT_ENCODE3 (0x0074u, 0x030Cu, 0x0165u),
HB_CODEPOINT_ENCODE3 (0x0074u, 0x0323u, 0x1E6Du), HB_CODEPOINT_ENCODE3 (0x0074u, 0x0326u, 0x021Bu),
HB_CODEPOINT_ENCODE3 (0x0074u, 0x0327u, 0x0163u), HB_CODEPOINT_ENCODE3 (0x0074u, 0x032Du, 0x1E71u),
HB_CODEPOINT_ENCODE3 (0x0074u, 0x0331u, 0x1E6Fu), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0300u, 0x00F9u),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x0301u, 0x00FAu), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0302u, 0x00FBu),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x0303u, 0x0169u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0304u, 0x016Bu),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x0306u, 0x016Du), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0308u, 0x00FCu),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x0309u, 0x1EE7u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x030Au, 0x016Fu),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x030Bu, 0x0171u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x030Cu, 0x01D4u),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x030Fu, 0x0215u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0311u, 0x0217u),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x031Bu, 0x01B0u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0323u, 0x1EE5u),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x0324u, 0x1E73u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0328u, 0x0173u),
HB_CODEPOINT_ENCODE3 (0x0075u, 0x032Du, 0x1E77u), HB_CODEPOINT_ENCODE3 (0x0075u, 0x0330u, 0x1E75u),
HB_CODEPOINT_ENCODE3 (0x0076u, 0x0303u, 0x1E7Du), HB_CODEPOINT_ENCODE3 (0x0076u, 0x0323u, 0x1E7Fu),
HB_CODEPOINT_ENCODE3 (0x0077u, 0x0300u, 0x1E81u), HB_CODEPOINT_ENCODE3 (0x0077u, 0x0301u, 0x1E83u),
HB_CODEPOINT_ENCODE3 (0x0077u, 0x0302u, 0x0175u), HB_CODEPOINT_ENCODE3 (0x0077u, 0x0307u, 0x1E87u),
HB_CODEPOINT_ENCODE3 (0x0077u, 0x0308u, 0x1E85u), HB_CODEPOINT_ENCODE3 (0x0077u, 0x030Au, 0x1E98u),
HB_CODEPOINT_ENCODE3 (0x0077u, 0x0323u, 0x1E89u), HB_CODEPOINT_ENCODE3 (0x0078u, 0x0307u, 0x1E8Bu),
HB_CODEPOINT_ENCODE3 (0x0078u, 0x0308u, 0x1E8Du), HB_CODEPOINT_ENCODE3 (0x0079u, 0x0300u, 0x1EF3u),
HB_CODEPOINT_ENCODE3 (0x0079u, 0x0301u, 0x00FDu), HB_CODEPOINT_ENCODE3 (0x0079u, 0x0302u, 0x0177u),
HB_CODEPOINT_ENCODE3 (0x0079u, 0x0303u, 0x1EF9u), HB_CODEPOINT_ENCODE3 (0x0079u, 0x0304u, 0x0233u),
HB_CODEPOINT_ENCODE3 (0x0079u, 0x0307u, 0x1E8Fu), HB_CODEPOINT_ENCODE3 (0x0079u, 0x0308u, 0x00FFu),
HB_CODEPOINT_ENCODE3 (0x0079u, 0x0309u, 0x1EF7u), HB_CODEPOINT_ENCODE3 (0x0079u, 0x030Au, 0x1E99u),
HB_CODEPOINT_ENCODE3 (0x0079u, 0x0323u, 0x1EF5u), HB_CODEPOINT_ENCODE3 (0x007Au, 0x0301u, 0x017Au),
HB_CODEPOINT_ENCODE3 (0x007Au, 0x0302u, 0x1E91u), HB_CODEPOINT_ENCODE3 (0x007Au, 0x0307u, 0x017Cu),
HB_CODEPOINT_ENCODE3 (0x007Au, 0x030Cu, 0x017Eu), HB_CODEPOINT_ENCODE3 (0x007Au, 0x0323u, 0x1E93u),
HB_CODEPOINT_ENCODE3 (0x007Au, 0x0331u, 0x1E95u), HB_CODEPOINT_ENCODE3 (0x00A8u, 0x0300u, 0x1FEDu),
HB_CODEPOINT_ENCODE3 (0x00A8u, 0x0301u, 0x0385u), HB_CODEPOINT_ENCODE3 (0x00A8u, 0x0342u, 0x1FC1u),
HB_CODEPOINT_ENCODE3 (0x00C2u, 0x0300u, 0x1EA6u), HB_CODEPOINT_ENCODE3 (0x00C2u, 0x0301u, 0x1EA4u),
HB_CODEPOINT_ENCODE3 (0x00C2u, 0x0303u, 0x1EAAu), HB_CODEPOINT_ENCODE3 (0x00C2u, 0x0309u, 0x1EA8u),
HB_CODEPOINT_ENCODE3 (0x00C4u, 0x0304u, 0x01DEu), HB_CODEPOINT_ENCODE3 (0x00C5u, 0x0301u, 0x01FAu),
HB_CODEPOINT_ENCODE3 (0x00C6u, 0x0301u, 0x01FCu), HB_CODEPOINT_ENCODE3 (0x00C6u, 0x0304u, 0x01E2u),
HB_CODEPOINT_ENCODE3 (0x00C7u, 0x0301u, 0x1E08u), HB_CODEPOINT_ENCODE3 (0x00CAu, 0x0300u, 0x1EC0u),
HB_CODEPOINT_ENCODE3 (0x00CAu, 0x0301u, 0x1EBEu), HB_CODEPOINT_ENCODE3 (0x00CAu, 0x0303u, 0x1EC4u),
HB_CODEPOINT_ENCODE3 (0x00CAu, 0x0309u, 0x1EC2u), HB_CODEPOINT_ENCODE3 (0x00CFu, 0x0301u, 0x1E2Eu),
HB_CODEPOINT_ENCODE3 (0x00D4u, 0x0300u, 0x1ED2u), HB_CODEPOINT_ENCODE3 (0x00D4u, 0x0301u, 0x1ED0u),
HB_CODEPOINT_ENCODE3 (0x00D4u, 0x0303u, 0x1ED6u), HB_CODEPOINT_ENCODE3 (0x00D4u, 0x0309u, 0x1ED4u),
HB_CODEPOINT_ENCODE3 (0x00D5u, 0x0301u, 0x1E4Cu), HB_CODEPOINT_ENCODE3 (0x00D5u, 0x0304u, 0x022Cu),
HB_CODEPOINT_ENCODE3 (0x00D5u, 0x0308u, 0x1E4Eu), HB_CODEPOINT_ENCODE3 (0x00D6u, 0x0304u, 0x022Au),
HB_CODEPOINT_ENCODE3 (0x00D8u, 0x0301u, 0x01FEu), HB_CODEPOINT_ENCODE3 (0x00DCu, 0x0300u, 0x01DBu),
HB_CODEPOINT_ENCODE3 (0x00DCu, 0x0301u, 0x01D7u), HB_CODEPOINT_ENCODE3 (0x00DCu, 0x0304u, 0x01D5u),
HB_CODEPOINT_ENCODE3 (0x00DCu, 0x030Cu, 0x01D9u), HB_CODEPOINT_ENCODE3 (0x00E2u, 0x0300u, 0x1EA7u),
HB_CODEPOINT_ENCODE3 (0x00E2u, 0x0301u, 0x1EA5u), HB_CODEPOINT_ENCODE3 (0x00E2u, 0x0303u, 0x1EABu),
HB_CODEPOINT_ENCODE3 (0x00E2u, 0x0309u, 0x1EA9u), HB_CODEPOINT_ENCODE3 (0x00E4u, 0x0304u, 0x01DFu),
HB_CODEPOINT_ENCODE3 (0x00E5u, 0x0301u, 0x01FBu), HB_CODEPOINT_ENCODE3 (0x00E6u, 0x0301u, 0x01FDu),
HB_CODEPOINT_ENCODE3 (0x00E6u, 0x0304u, 0x01E3u), HB_CODEPOINT_ENCODE3 (0x00E7u, 0x0301u, 0x1E09u),
HB_CODEPOINT_ENCODE3 (0x00EAu, 0x0300u, 0x1EC1u), HB_CODEPOINT_ENCODE3 (0x00EAu, 0x0301u, 0x1EBFu),
HB_CODEPOINT_ENCODE3 (0x00EAu, 0x0303u, 0x1EC5u), HB_CODEPOINT_ENCODE3 (0x00EAu, 0x0309u, 0x1EC3u),
HB_CODEPOINT_ENCODE3 (0x00EFu, 0x0301u, 0x1E2Fu), HB_CODEPOINT_ENCODE3 (0x00F4u, 0x0300u, 0x1ED3u),
HB_CODEPOINT_ENCODE3 (0x00F4u, 0x0301u, 0x1ED1u), HB_CODEPOINT_ENCODE3 (0x00F4u, 0x0303u, 0x1ED7u),
HB_CODEPOINT_ENCODE3 (0x00F4u, 0x0309u, 0x1ED5u), HB_CODEPOINT_ENCODE3 (0x00F5u, 0x0301u, 0x1E4Du),
HB_CODEPOINT_ENCODE3 (0x00F5u, 0x0304u, 0x022Du), HB_CODEPOINT_ENCODE3 (0x00F5u, 0x0308u, 0x1E4Fu),
HB_CODEPOINT_ENCODE3 (0x00F6u, 0x0304u, 0x022Bu), HB_CODEPOINT_ENCODE3 (0x00F8u, 0x0301u, 0x01FFu),
HB_CODEPOINT_ENCODE3 (0x00FCu, 0x0300u, 0x01DCu), HB_CODEPOINT_ENCODE3 (0x00FCu, 0x0301u, 0x01D8u),
HB_CODEPOINT_ENCODE3 (0x00FCu, 0x0304u, 0x01D6u), HB_CODEPOINT_ENCODE3 (0x00FCu, 0x030Cu, 0x01DAu),
HB_CODEPOINT_ENCODE3 (0x0102u, 0x0300u, 0x1EB0u), HB_CODEPOINT_ENCODE3 (0x0102u, 0x0301u, 0x1EAEu),
HB_CODEPOINT_ENCODE3 (0x0102u, 0x0303u, 0x1EB4u), HB_CODEPOINT_ENCODE3 (0x0102u, 0x0309u, 0x1EB2u),
HB_CODEPOINT_ENCODE3 (0x0103u, 0x0300u, 0x1EB1u), HB_CODEPOINT_ENCODE3 (0x0103u, 0x0301u, 0x1EAFu),
HB_CODEPOINT_ENCODE3 (0x0103u, 0x0303u, 0x1EB5u), HB_CODEPOINT_ENCODE3 (0x0103u, 0x0309u, 0x1EB3u),
HB_CODEPOINT_ENCODE3 (0x0112u, 0x0300u, 0x1E14u), HB_CODEPOINT_ENCODE3 (0x0112u, 0x0301u, 0x1E16u),
HB_CODEPOINT_ENCODE3 (0x0113u, 0x0300u, 0x1E15u), HB_CODEPOINT_ENCODE3 (0x0113u, 0x0301u, 0x1E17u),
HB_CODEPOINT_ENCODE3 (0x014Cu, 0x0300u, 0x1E50u), HB_CODEPOINT_ENCODE3 (0x014Cu, 0x0301u, 0x1E52u),
HB_CODEPOINT_ENCODE3 (0x014Du, 0x0300u, 0x1E51u), HB_CODEPOINT_ENCODE3 (0x014Du, 0x0301u, 0x1E53u),
HB_CODEPOINT_ENCODE3 (0x015Au, 0x0307u, 0x1E64u), HB_CODEPOINT_ENCODE3 (0x015Bu, 0x0307u, 0x1E65u),
HB_CODEPOINT_ENCODE3 (0x0160u, 0x0307u, 0x1E66u), HB_CODEPOINT_ENCODE3 (0x0161u, 0x0307u, 0x1E67u),
HB_CODEPOINT_ENCODE3 (0x0168u, 0x0301u, 0x1E78u), HB_CODEPOINT_ENCODE3 (0x0169u, 0x0301u, 0x1E79u),
HB_CODEPOINT_ENCODE3 (0x016Au, 0x0308u, 0x1E7Au), HB_CODEPOINT_ENCODE3 (0x016Bu, 0x0308u, 0x1E7Bu),
HB_CODEPOINT_ENCODE3 (0x017Fu, 0x0307u, 0x1E9Bu), HB_CODEPOINT_ENCODE3 (0x01A0u, 0x0300u, 0x1EDCu),
HB_CODEPOINT_ENCODE3 (0x01A0u, 0x0301u, 0x1EDAu), HB_CODEPOINT_ENCODE3 (0x01A0u, 0x0303u, 0x1EE0u),
HB_CODEPOINT_ENCODE3 (0x01A0u, 0x0309u, 0x1EDEu), HB_CODEPOINT_ENCODE3 (0x01A0u, 0x0323u, 0x1EE2u),
HB_CODEPOINT_ENCODE3 (0x01A1u, 0x0300u, 0x1EDDu), HB_CODEPOINT_ENCODE3 (0x01A1u, 0x0301u, 0x1EDBu),
HB_CODEPOINT_ENCODE3 (0x01A1u, 0x0303u, 0x1EE1u), HB_CODEPOINT_ENCODE3 (0x01A1u, 0x0309u, 0x1EDFu),
HB_CODEPOINT_ENCODE3 (0x01A1u, 0x0323u, 0x1EE3u), HB_CODEPOINT_ENCODE3 (0x01AFu, 0x0300u, 0x1EEAu),
HB_CODEPOINT_ENCODE3 (0x01AFu, 0x0301u, 0x1EE8u), HB_CODEPOINT_ENCODE3 (0x01AFu, 0x0303u, 0x1EEEu),
HB_CODEPOINT_ENCODE3 (0x01AFu, 0x0309u, 0x1EECu), HB_CODEPOINT_ENCODE3 (0x01AFu, 0x0323u, 0x1EF0u),
HB_CODEPOINT_ENCODE3 (0x01B0u, 0x0300u, 0x1EEBu), HB_CODEPOINT_ENCODE3 (0x01B0u, 0x0301u, 0x1EE9u),
HB_CODEPOINT_ENCODE3 (0x01B0u, 0x0303u, 0x1EEFu), HB_CODEPOINT_ENCODE3 (0x01B0u, 0x0309u, 0x1EEDu),
HB_CODEPOINT_ENCODE3 (0x01B0u, 0x0323u, 0x1EF1u), HB_CODEPOINT_ENCODE3 (0x01B7u, 0x030Cu, 0x01EEu),
HB_CODEPOINT_ENCODE3 (0x01EAu, 0x0304u, 0x01ECu), HB_CODEPOINT_ENCODE3 (0x01EBu, 0x0304u, 0x01EDu),
HB_CODEPOINT_ENCODE3 (0x0226u, 0x0304u, 0x01E0u), HB_CODEPOINT_ENCODE3 (0x0227u, 0x0304u, 0x01E1u),
HB_CODEPOINT_ENCODE3 (0x0228u, 0x0306u, 0x1E1Cu), HB_CODEPOINT_ENCODE3 (0x0229u, 0x0306u, 0x1E1Du),
HB_CODEPOINT_ENCODE3 (0x022Eu, 0x0304u, 0x0230u), HB_CODEPOINT_ENCODE3 (0x022Fu, 0x0304u, 0x0231u),
HB_CODEPOINT_ENCODE3 (0x0292u, 0x030Cu, 0x01EFu), HB_CODEPOINT_ENCODE3 (0x0308u, 0x0301u, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x0391u, 0x0300u, 0x1FBAu), HB_CODEPOINT_ENCODE3 (0x0391u, 0x0301u, 0x0386u),
HB_CODEPOINT_ENCODE3 (0x0391u, 0x0304u, 0x1FB9u), HB_CODEPOINT_ENCODE3 (0x0391u, 0x0306u, 0x1FB8u),
HB_CODEPOINT_ENCODE3 (0x0391u, 0x0313u, 0x1F08u), HB_CODEPOINT_ENCODE3 (0x0391u, 0x0314u, 0x1F09u),
HB_CODEPOINT_ENCODE3 (0x0391u, 0x0345u, 0x1FBCu), HB_CODEPOINT_ENCODE3 (0x0395u, 0x0300u, 0x1FC8u),
HB_CODEPOINT_ENCODE3 (0x0395u, 0x0301u, 0x0388u), HB_CODEPOINT_ENCODE3 (0x0395u, 0x0313u, 0x1F18u),
HB_CODEPOINT_ENCODE3 (0x0395u, 0x0314u, 0x1F19u), HB_CODEPOINT_ENCODE3 (0x0397u, 0x0300u, 0x1FCAu),
HB_CODEPOINT_ENCODE3 (0x0397u, 0x0301u, 0x0389u), HB_CODEPOINT_ENCODE3 (0x0397u, 0x0313u, 0x1F28u),
HB_CODEPOINT_ENCODE3 (0x0397u, 0x0314u, 0x1F29u), HB_CODEPOINT_ENCODE3 (0x0397u, 0x0345u, 0x1FCCu),
HB_CODEPOINT_ENCODE3 (0x0399u, 0x0300u, 0x1FDAu), HB_CODEPOINT_ENCODE3 (0x0399u, 0x0301u, 0x038Au),
HB_CODEPOINT_ENCODE3 (0x0399u, 0x0304u, 0x1FD9u), HB_CODEPOINT_ENCODE3 (0x0399u, 0x0306u, 0x1FD8u),
HB_CODEPOINT_ENCODE3 (0x0399u, 0x0308u, 0x03AAu), HB_CODEPOINT_ENCODE3 (0x0399u, 0x0313u, 0x1F38u),
HB_CODEPOINT_ENCODE3 (0x0399u, 0x0314u, 0x1F39u), HB_CODEPOINT_ENCODE3 (0x039Fu, 0x0300u, 0x1FF8u),
HB_CODEPOINT_ENCODE3 (0x039Fu, 0x0301u, 0x038Cu), HB_CODEPOINT_ENCODE3 (0x039Fu, 0x0313u, 0x1F48u),
HB_CODEPOINT_ENCODE3 (0x039Fu, 0x0314u, 0x1F49u), HB_CODEPOINT_ENCODE3 (0x03A1u, 0x0314u, 0x1FECu),
HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0300u, 0x1FEAu), HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0301u, 0x038Eu),
HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0304u, 0x1FE9u), HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0306u, 0x1FE8u),
HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0308u, 0x03ABu), HB_CODEPOINT_ENCODE3 (0x03A5u, 0x0314u, 0x1F59u),
HB_CODEPOINT_ENCODE3 (0x03A9u, 0x0300u, 0x1FFAu), HB_CODEPOINT_ENCODE3 (0x03A9u, 0x0301u, 0x038Fu),
HB_CODEPOINT_ENCODE3 (0x03A9u, 0x0313u, 0x1F68u), HB_CODEPOINT_ENCODE3 (0x03A9u, 0x0314u, 0x1F69u),
HB_CODEPOINT_ENCODE3 (0x03A9u, 0x0345u, 0x1FFCu), HB_CODEPOINT_ENCODE3 (0x03ACu, 0x0345u, 0x1FB4u),
HB_CODEPOINT_ENCODE3 (0x03AEu, 0x0345u, 0x1FC4u), HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0300u, 0x1F70u),
HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0301u, 0x03ACu), HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0304u, 0x1FB1u),
HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0306u, 0x1FB0u), HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0313u, 0x1F00u),
HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0314u, 0x1F01u), HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0342u, 0x1FB6u),
HB_CODEPOINT_ENCODE3 (0x03B1u, 0x0345u, 0x1FB3u), HB_CODEPOINT_ENCODE3 (0x03B5u, 0x0300u, 0x1F72u),
HB_CODEPOINT_ENCODE3 (0x03B5u, 0x0301u, 0x03ADu), HB_CODEPOINT_ENCODE3 (0x03B5u, 0x0313u, 0x1F10u),
HB_CODEPOINT_ENCODE3 (0x03B5u, 0x0314u, 0x1F11u), HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0300u, 0x1F74u),
HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0301u, 0x03AEu), HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0313u, 0x1F20u),
HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0314u, 0x1F21u), HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0342u, 0x1FC6u),
HB_CODEPOINT_ENCODE3 (0x03B7u, 0x0345u, 0x1FC3u), HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0300u, 0x1F76u),
HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0301u, 0x03AFu), HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0304u, 0x1FD1u),
HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0306u, 0x1FD0u), HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0308u, 0x03CAu),
HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0313u, 0x1F30u), HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0314u, 0x1F31u),
HB_CODEPOINT_ENCODE3 (0x03B9u, 0x0342u, 0x1FD6u), HB_CODEPOINT_ENCODE3 (0x03BFu, 0x0300u, 0x1F78u),
HB_CODEPOINT_ENCODE3 (0x03BFu, 0x0301u, 0x03CCu), HB_CODEPOINT_ENCODE3 (0x03BFu, 0x0313u, 0x1F40u),
HB_CODEPOINT_ENCODE3 (0x03BFu, 0x0314u, 0x1F41u), HB_CODEPOINT_ENCODE3 (0x03C1u, 0x0313u, 0x1FE4u),
HB_CODEPOINT_ENCODE3 (0x03C1u, 0x0314u, 0x1FE5u), HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0300u, 0x1F7Au),
HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0301u, 0x03CDu), HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0304u, 0x1FE1u),
HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0306u, 0x1FE0u), HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0308u, 0x03CBu),
HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0313u, 0x1F50u), HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0314u, 0x1F51u),
HB_CODEPOINT_ENCODE3 (0x03C5u, 0x0342u, 0x1FE6u), HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0300u, 0x1F7Cu),
HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0301u, 0x03CEu), HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0313u, 0x1F60u),
HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0314u, 0x1F61u), HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0342u, 0x1FF6u),
HB_CODEPOINT_ENCODE3 (0x03C9u, 0x0345u, 0x1FF3u), HB_CODEPOINT_ENCODE3 (0x03CAu, 0x0300u, 0x1FD2u),
HB_CODEPOINT_ENCODE3 (0x03CAu, 0x0301u, 0x0390u), HB_CODEPOINT_ENCODE3 (0x03CAu, 0x0342u, 0x1FD7u),
HB_CODEPOINT_ENCODE3 (0x03CBu, 0x0300u, 0x1FE2u), HB_CODEPOINT_ENCODE3 (0x03CBu, 0x0301u, 0x03B0u),
HB_CODEPOINT_ENCODE3 (0x03CBu, 0x0342u, 0x1FE7u), HB_CODEPOINT_ENCODE3 (0x03CEu, 0x0345u, 0x1FF4u),
HB_CODEPOINT_ENCODE3 (0x03D2u, 0x0301u, 0x03D3u), HB_CODEPOINT_ENCODE3 (0x03D2u, 0x0308u, 0x03D4u),
HB_CODEPOINT_ENCODE3 (0x0406u, 0x0308u, 0x0407u), HB_CODEPOINT_ENCODE3 (0x0410u, 0x0306u, 0x04D0u),
HB_CODEPOINT_ENCODE3 (0x0410u, 0x0308u, 0x04D2u), HB_CODEPOINT_ENCODE3 (0x0413u, 0x0301u, 0x0403u),
HB_CODEPOINT_ENCODE3 (0x0415u, 0x0300u, 0x0400u), HB_CODEPOINT_ENCODE3 (0x0415u, 0x0306u, 0x04D6u),
HB_CODEPOINT_ENCODE3 (0x0415u, 0x0308u, 0x0401u), HB_CODEPOINT_ENCODE3 (0x0416u, 0x0306u, 0x04C1u),
HB_CODEPOINT_ENCODE3 (0x0416u, 0x0308u, 0x04DCu), HB_CODEPOINT_ENCODE3 (0x0417u, 0x0308u, 0x04DEu),
HB_CODEPOINT_ENCODE3 (0x0418u, 0x0300u, 0x040Du), HB_CODEPOINT_ENCODE3 (0x0418u, 0x0304u, 0x04E2u),
HB_CODEPOINT_ENCODE3 (0x0418u, 0x0306u, 0x0419u), HB_CODEPOINT_ENCODE3 (0x0418u, 0x0308u, 0x04E4u),
HB_CODEPOINT_ENCODE3 (0x041Au, 0x0301u, 0x040Cu), HB_CODEPOINT_ENCODE3 (0x041Eu, 0x0308u, 0x04E6u),
HB_CODEPOINT_ENCODE3 (0x0423u, 0x0304u, 0x04EEu), HB_CODEPOINT_ENCODE3 (0x0423u, 0x0306u, 0x040Eu),
HB_CODEPOINT_ENCODE3 (0x0423u, 0x0308u, 0x04F0u), HB_CODEPOINT_ENCODE3 (0x0423u, 0x030Bu, 0x04F2u),
HB_CODEPOINT_ENCODE3 (0x0427u, 0x0308u, 0x04F4u), HB_CODEPOINT_ENCODE3 (0x042Bu, 0x0308u, 0x04F8u),
HB_CODEPOINT_ENCODE3 (0x042Du, 0x0308u, 0x04ECu), HB_CODEPOINT_ENCODE3 (0x0430u, 0x0306u, 0x04D1u),
HB_CODEPOINT_ENCODE3 (0x0430u, 0x0308u, 0x04D3u), HB_CODEPOINT_ENCODE3 (0x0433u, 0x0301u, 0x0453u),
HB_CODEPOINT_ENCODE3 (0x0435u, 0x0300u, 0x0450u), HB_CODEPOINT_ENCODE3 (0x0435u, 0x0306u, 0x04D7u),
HB_CODEPOINT_ENCODE3 (0x0435u, 0x0308u, 0x0451u), HB_CODEPOINT_ENCODE3 (0x0436u, 0x0306u, 0x04C2u),
HB_CODEPOINT_ENCODE3 (0x0436u, 0x0308u, 0x04DDu), HB_CODEPOINT_ENCODE3 (0x0437u, 0x0308u, 0x04DFu),
HB_CODEPOINT_ENCODE3 (0x0438u, 0x0300u, 0x045Du), HB_CODEPOINT_ENCODE3 (0x0438u, 0x0304u, 0x04E3u),
HB_CODEPOINT_ENCODE3 (0x0438u, 0x0306u, 0x0439u), HB_CODEPOINT_ENCODE3 (0x0438u, 0x0308u, 0x04E5u),
HB_CODEPOINT_ENCODE3 (0x043Au, 0x0301u, 0x045Cu), HB_CODEPOINT_ENCODE3 (0x043Eu, 0x0308u, 0x04E7u),
HB_CODEPOINT_ENCODE3 (0x0443u, 0x0304u, 0x04EFu), HB_CODEPOINT_ENCODE3 (0x0443u, 0x0306u, 0x045Eu),
HB_CODEPOINT_ENCODE3 (0x0443u, 0x0308u, 0x04F1u), HB_CODEPOINT_ENCODE3 (0x0443u, 0x030Bu, 0x04F3u),
HB_CODEPOINT_ENCODE3 (0x0447u, 0x0308u, 0x04F5u), HB_CODEPOINT_ENCODE3 (0x044Bu, 0x0308u, 0x04F9u),
HB_CODEPOINT_ENCODE3 (0x044Du, 0x0308u, 0x04EDu), HB_CODEPOINT_ENCODE3 (0x0456u, 0x0308u, 0x0457u),
HB_CODEPOINT_ENCODE3 (0x0474u, 0x030Fu, 0x0476u), HB_CODEPOINT_ENCODE3 (0x0475u, 0x030Fu, 0x0477u),
HB_CODEPOINT_ENCODE3 (0x04D8u, 0x0308u, 0x04DAu), HB_CODEPOINT_ENCODE3 (0x04D9u, 0x0308u, 0x04DBu),
HB_CODEPOINT_ENCODE3 (0x04E8u, 0x0308u, 0x04EAu), HB_CODEPOINT_ENCODE3 (0x04E9u, 0x0308u, 0x04EBu),
HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B7u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B8u, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05BCu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D1u, 0x05BCu, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x05D1u, 0x05BFu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D2u, 0x05BCu, 0x0000u),

View File

@ -114,6 +114,14 @@ _cmp_pair (const void *_key, const void *_item)
return a < b ? -1 : a > b ? +1 : 0;
}
static int
_cmp_pair_11_7_14 (const void *_key, const void *_item)
{
uint32_t& a = * (uint32_t*) _key;
uint32_t b = (* (uint32_t*) _item) & HB_CODEPOINT_ENCODE3_11_7_14(0x1FFFFFu, 0x1FFFFFu, 0);
return a < b ? -1 : a > b ? +1 : 0;
}
static hb_bool_t
hb_ucd_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED,
@ -122,16 +130,30 @@ hb_ucd_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED,
{
if (_hb_ucd_compose_hangul (a, b, ab)) return true;
uint64_t k = HB_CODEPOINT_ENCODE3 (a, b, 0);
uint64_t *v = (uint64_t*) hb_bsearch (&k, _hb_ucd_dm2_map,
ARRAY_LENGTH (_hb_ucd_dm2_map),
sizeof (*_hb_ucd_dm2_map),
_cmp_pair);
if (likely (!v)) return false;
hb_codepoint_t u = 0;
if ((a & 0xFFFFF800u) == 0x0000u && (b & 0xFFFFFF80) == 0x0300u)
{
uint32_t k = HB_CODEPOINT_ENCODE3_11_7_14 (a, b, 0);
uint32_t *v = (uint32_t*) hb_bsearch (&k, _hb_ucd_dm2_u32_map,
ARRAY_LENGTH (_hb_ucd_dm2_u32_map),
sizeof (*_hb_ucd_dm2_u32_map),
_cmp_pair_11_7_14);
if (likely (!v)) return false;
u = HB_CODEPOINT_DECODE3_11_7_14_3 (*v);
}
else
{
uint64_t k = HB_CODEPOINT_ENCODE3 (a, b, 0);
uint64_t *v = (uint64_t*) hb_bsearch (&k, _hb_ucd_dm2_u64_map,
ARRAY_LENGTH (_hb_ucd_dm2_u64_map),
sizeof (*_hb_ucd_dm2_u64_map),
_cmp_pair);
if (likely (!v)) return false;
u = HB_CODEPOINT_DECODE3_3 (*v);
}
hb_codepoint_t u = HB_CODEPOINT_DECODE3_3 (*v);
if (unlikely (!u)) return false;
*ab = u;
return true;
}
@ -162,7 +184,16 @@ hb_ucd_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED,
}
i -= ARRAY_LENGTH (_hb_ucd_dm1_p0_map) + ARRAY_LENGTH (_hb_ucd_dm1_p2_map);
uint64_t v = _hb_ucd_dm2_map[i];
if (i < ARRAY_LENGTH (_hb_ucd_dm2_u32_map))
{
uint32_t v = _hb_ucd_dm2_u32_map[i];
*a = HB_CODEPOINT_DECODE3_11_7_14_1 (v);
*b = HB_CODEPOINT_DECODE3_11_7_14_2 (v);
return true;
}
i -= ARRAY_LENGTH (_hb_ucd_dm2_u32_map);
uint64_t v = _hb_ucd_dm2_u64_map[i];
*a = HB_CODEPOINT_DECODE3_1 (v);
*b = HB_CODEPOINT_DECODE3_2 (v);
return true;