diff options
44 files changed, 8825 insertions, 584 deletions
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex d77253717..26bd709f0 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 36a082b75..1586651ba 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex 7cb008805..0a55fc4cc 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex 1e58cabed..f50507514 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 67318989e..0672bd1d9 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex b129e2102..553886cf7 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex a7e7373b4..d35228bf9 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf diff --git a/scripts/context/lua/mtx-unicode.lua b/scripts/context/lua/mtx-unicode.lua index 557e70b79..7d59bd1ca 100644 --- a/scripts/context/lua/mtx-unicode.lua +++ b/scripts/context/lua/mtx-unicode.lua @@ -85,6 +85,12 @@ local skipped = { for i=0x0FE00,0x0FE0F do skipped[i] = true end -- variant selector for i=0xE0100,0xE01EF do skipped[i] = true end -- variant selector extension +-- This can be done: +-- +-- for i=0x1B170,0x1B2FF do skipped[i] = true end -- nushu +-- +-- but then also adapt char-cjk.lua bottom part! + function scripts.unicode.update() local unicodedata = texttables.unicodedata local bidimirroring = texttables.bidimirroring diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 5b47731d3..90be64d47 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.06.21 23:03} +\newcontextversion{2017.06.27 18:05} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index a09531282..8b6845f1a 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2017.06.21 23:03} +\edef\contextversion{2017.06.27 18:05} %D For those who want to use this: diff --git a/tex/context/base/mkiv/char-cjk.lua b/tex/context/base/mkiv/char-cjk.lua index 3db90386e..ac41fa882 100644 --- a/tex/context/base/mkiv/char-cjk.lua +++ b/tex/context/base/mkiv/char-cjk.lua @@ -1282,11 +1282,40 @@ local cjk_ideograph_extension_b_range = { extender = cjk_ideograph_extension_b_extender, } +-- Nushu (when we skip them in mtx-unicode) + +-- local nushu_metatable = { +-- __index = { +-- category = "lo", +-- cjkwd = "w", +-- description = "<NUSHU CHARACTER>", +-- direction = "l", +-- linebreak = "id", +-- } +-- } +-- +-- local nushu_extender = function(k) +-- local t = { +-- -- shcode = shcode, +-- unicodeslot = k, +-- variants = variants[k], +-- description = formatters["NUSHU CHARACTER-%05X"](k) +-- } +-- setmetatable(t,nushu_metatable) +-- return t +-- end +-- +-- local nushu_range = { +-- name = "nushu character", +-- first = 0x1B170, +-- last = 0x1B2FF, +-- extender = nushu_extender, +-- } + -- Ranges insert(ranges, hangul_syllable_range) insert(ranges, cjk_ideograph_range) insert(ranges, cjk_ideograph_extension_a_range) insert(ranges, cjk_ideograph_extension_b_range) - --- Japanese +------(ranges, nushu_range) diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua index 023515a8d..13fe01320 100644 --- a/tex/context/base/mkiv/char-def.lua +++ b/tex/context/base/mkiv/char-def.lua @@ -20000,6 +20000,94 @@ characters.data={ linebreak="al", unicodeslot=0x85E, }, + [0x860]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM NGA", + direction="al", + linebreak="al", + unicodeslot=0x860, + }, + [0x861]={ + arabic="u", + category="lo", + description="SYRIAC LETTER MALAYALAM JA", + direction="al", + linebreak="al", + unicodeslot=0x861, + }, + [0x862]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM NYA", + direction="al", + linebreak="al", + unicodeslot=0x862, + }, + [0x863]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM TTA", + direction="al", + linebreak="al", + unicodeslot=0x863, + }, + [0x864]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM NNA", + direction="al", + linebreak="al", + unicodeslot=0x864, + }, + [0x865]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM NNNA", + direction="al", + linebreak="al", + unicodeslot=0x865, + }, + [0x866]={ + arabic="u", + category="lo", + description="SYRIAC LETTER MALAYALAM BHA", + direction="al", + linebreak="al", + unicodeslot=0x866, + }, + [0x867]={ + arabic="r", + category="lo", + description="SYRIAC LETTER MALAYALAM RA", + direction="al", + linebreak="al", + unicodeslot=0x867, + }, + [0x868]={ + arabic="d", + category="lo", + description="SYRIAC LETTER MALAYALAM LLA", + direction="al", + linebreak="al", + unicodeslot=0x868, + }, + [0x869]={ + arabic="r", + category="lo", + description="SYRIAC LETTER MALAYALAM LLLA", + direction="al", + linebreak="al", + unicodeslot=0x869, + }, + [0x86A]={ + arabic="r", + category="lo", + description="SYRIAC LETTER MALAYALAM SSA", + direction="al", + linebreak="al", + unicodeslot=0x86A, + }, [0x8A0]={ arabic="d", category="lo", @@ -22356,6 +22444,20 @@ characters.data={ linebreak="pr", unicodeslot=0x9FB, }, + [0x9FC]={ + category="lo", + description="BENGALI LETTER VEDIC ANUSVARA", + direction="l", + linebreak="al", + unicodeslot=0x9FC, + }, + [0x9FD]={ + category="po", + description="BENGALI ABBREVIATION SIGN", + direction="l", + linebreak="al", + unicodeslot=0x9FD, + }, [0xA01]={ category="mn", description="GURMUKHI SIGN ADAK BINDI", @@ -23665,6 +23767,48 @@ characters.data={ linebreak="al", unicodeslot=0xAF9, }, + [0xAFA]={ + category="mn", + description="GUJARATI SIGN SUKUN", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFA, + }, + [0xAFB]={ + category="mn", + description="GUJARATI SIGN SHADDA", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFB, + }, + [0xAFC]={ + category="mn", + description="GUJARATI SIGN MADDAH", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFC, + }, + [0xAFD]={ + category="mn", + description="GUJARATI SIGN THREE-DOT NUKTA ABOVE", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFD, + }, + [0xAFE]={ + category="mn", + description="GUJARATI SIGN CIRCLE NUKTA ABOVE", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFE, + }, + [0xAFF]={ + category="mn", + description="GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE", + direction="nsm", + linebreak="cm", + unicodeslot=0xAFF, + }, [0xB01]={ category="mn", description="ORIYA SIGN CANDRABINDU", @@ -26120,6 +26264,13 @@ characters.data={ linebreak="al", unicodeslot=0xCF2, }, + [0xD00]={ + category="mn", + description="MALAYALAM SIGN COMBINING ANUSVARA ABOVE", + direction="nsm", + linebreak="cm", + unicodeslot=0xD00, + }, [0xD01]={ category="mn", description="MALAYALAM SIGN CANDRABINDU", @@ -26505,6 +26656,22 @@ characters.data={ linebreak="al", unicodeslot=0xD3A, }, + [0xD3B]={ + category="mn", + combining=0x9, + description="MALAYALAM SIGN VERTICAL BAR VIRAMA", + direction="nsm", + linebreak="cm", + unicodeslot=0xD3B, + }, + [0xD3C]={ + category="mn", + combining=0x9, + description="MALAYALAM SIGN CIRCULAR VIRAMA", + direction="nsm", + linebreak="cm", + unicodeslot=0xD3C, + }, [0xD3D]={ category="lo", description="MALAYALAM SIGN AVAGRAHA", @@ -51598,6 +51765,13 @@ characters.data={ linebreak="al", unicodeslot=0x1CF6, }, + [0x1CF7]={ + category="mc", + description="VEDIC SIGN ATIKRAMA", + direction="l", + linebreak="cm", + unicodeslot=0x1CF7, + }, [0x1CF8]={ category="mn", combining=0xE6, @@ -53527,6 +53701,38 @@ characters.data={ linebreak="cm", unicodeslot=0x1DF5, }, + [0x1DF6]={ + category="mn", + combining=0xE8, + description="COMBINING KAVYKA ABOVE RIGHT", + direction="nsm", + linebreak="cm", + unicodeslot=0x1DF6, + }, + [0x1DF7]={ + category="mn", + combining=0xE4, + description="COMBINING KAVYKA ABOVE LEFT", + direction="nsm", + linebreak="cm", + unicodeslot=0x1DF7, + }, + [0x1DF8]={ + category="mn", + combining=0xE4, + description="COMBINING DOT ABOVE LEFT", + direction="nsm", + linebreak="cm", + unicodeslot=0x1DF8, + }, + [0x1DF9]={ + category="mn", + combining=0xDC, + description="COMBINING WIDE INVERTED BRIDGE BELOW", + direction="nsm", + linebreak="cm", + unicodeslot=0x1DF9, + }, [0x1DFB]={ category="mn", combining=0xE6, @@ -60623,6 +60829,13 @@ characters.data={ synonyms={ "georgian currency" }, unicodeslot=0x20BE, }, + [0x20BF]={ + category="sc", + description="BITCOIN SIGN", + direction="et", + linebreak="pr", + unicodeslot=0x20BF, + }, [0x20D0]={ category="mn", combining=0xE6, @@ -68296,6 +68509,13 @@ characters.data={ linebreak="al", unicodeslot=0x23FE, }, + [0x23FF]={ + category="so", + description="OBSERVER EYE SYMBOL", + direction="on", + linebreak="al", + unicodeslot=0x23FF, + }, [0x2400]={ category="so", description="SYMBOL FOR NULL", @@ -83659,6 +83879,13 @@ characters.data={ linebreak="al", unicodeslot=0x2BD1, }, + [0x2BD2]={ + category="so", + description="GROUP MARK", + direction="on", + linebreak="al", + unicodeslot=0x2BD2, + }, [0x2BEC]={ category="so", description="LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS", @@ -87705,6 +87932,41 @@ characters.data={ linebreak="ba", unicodeslot=0x2E44, }, + [0x2E45]={ + category="po", + description="INVERTED LOW KAVYKA", + direction="on", + linebreak="ba", + unicodeslot=0x2E45, + }, + [0x2E46]={ + category="po", + description="INVERTED LOW KAVYKA WITH KAVYKA ABOVE", + direction="on", + linebreak="ba", + unicodeslot=0x2E46, + }, + [0x2E47]={ + category="po", + description="LOW KAVYKA", + direction="on", + linebreak="ba", + unicodeslot=0x2E47, + }, + [0x2E48]={ + category="po", + description="LOW KAVYKA WITH DOT", + direction="on", + linebreak="ba", + unicodeslot=0x2E48, + }, + [0x2E49]={ + category="po", + description="DOUBLE STACKED COMMA", + direction="on", + linebreak="ba", + unicodeslot=0x2E49, + }, [0x2E80]={ category="so", cjkwd="w", @@ -93905,6 +94167,14 @@ characters.data={ linebreak="id", unicodeslot=0x312D, }, + [0x312E]={ + category="lo", + cjkwd="w", + description="BOPOMOFO LETTER O WITH DOT ABOVE", + direction="l", + linebreak="id", + unicodeslot=0x312E, + }, [0x3131]={ adobename="kiyeokkorean", category="lo", @@ -140676,6 +140946,27 @@ characters.data={ linebreak="al", unicodeslot=0x10323, }, + [0x1032D]={ + category="lo", + description="OLD ITALIC LETTER YE", + direction="l", + linebreak="al", + unicodeslot=0x1032D, + }, + [0x1032E]={ + category="lo", + description="OLD ITALIC LETTER NORTHERN TSE", + direction="l", + linebreak="al", + unicodeslot=0x1032E, + }, + [0x1032F]={ + category="lo", + description="OLD ITALIC LETTER SOUTHERN TSE", + direction="l", + linebreak="al", + unicodeslot=0x1032F, + }, [0x10330]={ category="lo", description="GOTHIC LETTER AHSA", @@ -161728,6 +162019,1073 @@ characters.data={ linebreak="al", unicodeslot=0x118FF, }, + [0x11A00]={ + category="lo", + description="ZANABAZAR SQUARE LETTER A", + direction="l", + linebreak="al", + unicodeslot=0x11A00, + }, + [0x11A01]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN I", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A01, + }, + [0x11A02]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN UE", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A02, + }, + [0x11A03]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN U", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A03, + }, + [0x11A04]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN E", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A04, + }, + [0x11A05]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN OE", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A05, + }, + [0x11A06]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN O", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A06, + }, + [0x11A07]={ + category="mc", + description="ZANABAZAR SQUARE VOWEL SIGN AI", + direction="l", + linebreak="cm", + unicodeslot=0x11A07, + }, + [0x11A08]={ + category="mc", + description="ZANABAZAR SQUARE VOWEL SIGN AU", + direction="l", + linebreak="cm", + unicodeslot=0x11A08, + }, + [0x11A09]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL SIGN REVERSED I", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A09, + }, + [0x11A0A]={ + category="mn", + description="ZANABAZAR SQUARE VOWEL LENGTH MARK", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A0A, + }, + [0x11A0B]={ + category="lo", + description="ZANABAZAR SQUARE LETTER KA", + direction="l", + linebreak="al", + unicodeslot=0x11A0B, + }, + [0x11A0C]={ + category="lo", + description="ZANABAZAR SQUARE LETTER KHA", + direction="l", + linebreak="al", + unicodeslot=0x11A0C, + }, + [0x11A0D]={ + category="lo", + description="ZANABAZAR SQUARE LETTER GA", + direction="l", + linebreak="al", + unicodeslot=0x11A0D, + }, + [0x11A0E]={ + category="lo", + description="ZANABAZAR SQUARE LETTER GHA", + direction="l", + linebreak="al", + unicodeslot=0x11A0E, + }, + [0x11A0F]={ + category="lo", + description="ZANABAZAR SQUARE LETTER NGA", + direction="l", + linebreak="al", + unicodeslot=0x11A0F, + }, + [0x11A10]={ + category="lo", + description="ZANABAZAR SQUARE LETTER CA", + direction="l", + linebreak="al", + unicodeslot=0x11A10, + }, + [0x11A11]={ + category="lo", + description="ZANABAZAR SQUARE LETTER CHA", + direction="l", + linebreak="al", + unicodeslot=0x11A11, + }, + [0x11A12]={ + category="lo", + description="ZANABAZAR SQUARE LETTER JA", + direction="l", + linebreak="al", + unicodeslot=0x11A12, + }, + [0x11A13]={ + category="lo", + description="ZANABAZAR SQUARE LETTER NYA", + direction="l", + linebreak="al", + unicodeslot=0x11A13, + }, + [0x11A14]={ + category="lo", + description="ZANABAZAR SQUARE LETTER TTA", + direction="l", + linebreak="al", + unicodeslot=0x11A14, + }, + [0x11A15]={ + category="lo", + description="ZANABAZAR SQUARE LETTER TTHA", + direction="l", + linebreak="al", + unicodeslot=0x11A15, + }, + [0x11A16]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DDA", + direction="l", + linebreak="al", + unicodeslot=0x11A16, + }, + [0x11A17]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DDHA", + direction="l", + linebreak="al", + unicodeslot=0x11A17, + }, + [0x11A18]={ + category="lo", + description="ZANABAZAR SQUARE LETTER NNA", + direction="l", + linebreak="al", + unicodeslot=0x11A18, + }, + [0x11A19]={ + category="lo", + description="ZANABAZAR SQUARE LETTER TA", + direction="l", + linebreak="al", + unicodeslot=0x11A19, + }, + [0x11A1A]={ + category="lo", + description="ZANABAZAR SQUARE LETTER THA", + direction="l", + linebreak="al", + unicodeslot=0x11A1A, + }, + [0x11A1B]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DA", + direction="l", + linebreak="al", + unicodeslot=0x11A1B, + }, + [0x11A1C]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DHA", + direction="l", + linebreak="al", + unicodeslot=0x11A1C, + }, + [0x11A1D]={ + category="lo", + description="ZANABAZAR SQUARE LETTER NA", + direction="l", + linebreak="al", + unicodeslot=0x11A1D, + }, + [0x11A1E]={ + category="lo", + description="ZANABAZAR SQUARE LETTER PA", + direction="l", + linebreak="al", + unicodeslot=0x11A1E, + }, + [0x11A1F]={ + category="lo", + description="ZANABAZAR SQUARE LETTER PHA", + direction="l", + linebreak="al", + unicodeslot=0x11A1F, + }, + [0x11A20]={ + category="lo", + description="ZANABAZAR SQUARE LETTER BA", + direction="l", + linebreak="al", + unicodeslot=0x11A20, + }, + [0x11A21]={ + category="lo", + description="ZANABAZAR SQUARE LETTER BHA", + direction="l", + linebreak="al", + unicodeslot=0x11A21, + }, + [0x11A22]={ + category="lo", + description="ZANABAZAR SQUARE LETTER MA", + direction="l", + linebreak="al", + unicodeslot=0x11A22, + }, + [0x11A23]={ + category="lo", + description="ZANABAZAR SQUARE LETTER TSA", + direction="l", + linebreak="al", + unicodeslot=0x11A23, + }, + [0x11A24]={ + category="lo", + description="ZANABAZAR SQUARE LETTER TSHA", + direction="l", + linebreak="al", + unicodeslot=0x11A24, + }, + [0x11A25]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DZA", + direction="l", + linebreak="al", + unicodeslot=0x11A25, + }, + [0x11A26]={ + category="lo", + description="ZANABAZAR SQUARE LETTER DZHA", + direction="l", + linebreak="al", + unicodeslot=0x11A26, + }, + [0x11A27]={ + category="lo", + description="ZANABAZAR SQUARE LETTER ZHA", + direction="l", + linebreak="al", + unicodeslot=0x11A27, + }, + [0x11A28]={ + category="lo", + description="ZANABAZAR SQUARE LETTER ZA", + direction="l", + linebreak="al", + unicodeslot=0x11A28, + }, + [0x11A29]={ + category="lo", + description="ZANABAZAR SQUARE LETTER -A", + direction="l", + linebreak="al", + unicodeslot=0x11A29, + }, + [0x11A2A]={ + category="lo", + description="ZANABAZAR SQUARE LETTER YA", + direction="l", + linebreak="al", + unicodeslot=0x11A2A, + }, + [0x11A2B]={ + category="lo", + description="ZANABAZAR SQUARE LETTER RA", + direction="l", + linebreak="al", + unicodeslot=0x11A2B, + }, + [0x11A2C]={ + category="lo", + description="ZANABAZAR SQUARE LETTER LA", + direction="l", + linebreak="al", + unicodeslot=0x11A2C, + }, + [0x11A2D]={ + category="lo", + description="ZANABAZAR SQUARE LETTER VA", + direction="l", + linebreak="al", + unicodeslot=0x11A2D, + }, + [0x11A2E]={ + category="lo", + description="ZANABAZAR SQUARE LETTER SHA", + direction="l", + linebreak="al", + unicodeslot=0x11A2E, + }, + [0x11A2F]={ + category="lo", + description="ZANABAZAR SQUARE LETTER SSA", + direction="l", + linebreak="al", + unicodeslot=0x11A2F, + }, + [0x11A30]={ + category="lo", + description="ZANABAZAR SQUARE LETTER SA", + direction="l", + linebreak="al", + unicodeslot=0x11A30, + }, + [0x11A31]={ + category="lo", + description="ZANABAZAR SQUARE LETTER HA", + direction="l", + linebreak="al", + unicodeslot=0x11A31, + }, + [0x11A32]={ + category="lo", + description="ZANABAZAR SQUARE LETTER KSSA", + direction="l", + linebreak="al", + unicodeslot=0x11A32, + }, + [0x11A33]={ + category="mn", + description="ZANABAZAR SQUARE FINAL CONSONANT MARK", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A33, + }, + [0x11A34]={ + category="mn", + combining=0x9, + description="ZANABAZAR SQUARE SIGN VIRAMA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A34, + }, + [0x11A35]={ + category="mn", + description="ZANABAZAR SQUARE SIGN CANDRABINDU", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A35, + }, + [0x11A36]={ + category="mn", + description="ZANABAZAR SQUARE SIGN CANDRABINDU WITH ORNAMENT", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A36, + }, + [0x11A37]={ + category="mn", + description="ZANABAZAR SQUARE SIGN CANDRA WITH ORNAMENT", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A37, + }, + [0x11A38]={ + category="mn", + description="ZANABAZAR SQUARE SIGN ANUSVARA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A38, + }, + [0x11A39]={ + category="mc", + description="ZANABAZAR SQUARE SIGN VISARGA", + direction="l", + linebreak="cm", + unicodeslot=0x11A39, + }, + [0x11A3A]={ + category="lo", + description="ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA", + direction="l", + linebreak="al", + unicodeslot=0x11A3A, + }, + [0x11A3B]={ + category="mn", + description="ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A3B, + }, + [0x11A3C]={ + category="mn", + description="ZANABAZAR SQUARE CLUSTER-FINAL LETTER RA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A3C, + }, + [0x11A3D]={ + category="mn", + description="ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A3D, + }, + [0x11A3E]={ + category="mn", + description="ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A3E, + }, + [0x11A3F]={ + category="po", + description="ZANABAZAR SQUARE INITIAL HEAD MARK", + direction="l", + linebreak="bb", + unicodeslot=0x11A3F, + }, + [0x11A40]={ + category="po", + description="ZANABAZAR SQUARE CLOSING HEAD MARK", + direction="l", + linebreak="al", + unicodeslot=0x11A40, + }, + [0x11A41]={ + category="po", + description="ZANABAZAR SQUARE MARK TSHEG", + direction="l", + linebreak="ba", + unicodeslot=0x11A41, + }, + [0x11A42]={ + category="po", + description="ZANABAZAR SQUARE MARK SHAD", + direction="l", + linebreak="ba", + unicodeslot=0x11A42, + }, + [0x11A43]={ + category="po", + description="ZANABAZAR SQUARE MARK DOUBLE SHAD", + direction="l", + linebreak="ba", + unicodeslot=0x11A43, + }, + [0x11A44]={ + category="po", + description="ZANABAZAR SQUARE MARK LONG TSHEG", + direction="l", + linebreak="ba", + unicodeslot=0x11A44, + }, + [0x11A45]={ + category="po", + description="ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK", + direction="l", + linebreak="bb", + unicodeslot=0x11A45, + }, + [0x11A46]={ + category="po", + description="ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK", + direction="l", + linebreak="al", + unicodeslot=0x11A46, + }, + [0x11A47]={ + category="mn", + combining=0x9, + description="ZANABAZAR SQUARE SUBJOINER", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A47, + }, + [0x11A50]={ + category="lo", + description="SOYOMBO LETTER A", + direction="l", + linebreak="al", + unicodeslot=0x11A50, + }, + [0x11A51]={ + category="mn", + description="SOYOMBO VOWEL SIGN I", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A51, + }, + [0x11A52]={ + category="mn", + description="SOYOMBO VOWEL SIGN UE", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A52, + }, + [0x11A53]={ + category="mn", + description="SOYOMBO VOWEL SIGN U", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A53, + }, + [0x11A54]={ + category="mn", + description="SOYOMBO VOWEL SIGN E", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A54, + }, + [0x11A55]={ + category="mn", + description="SOYOMBO VOWEL SIGN O", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A55, + }, + [0x11A56]={ + category="mn", + description="SOYOMBO VOWEL SIGN OE", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A56, + }, + [0x11A57]={ + category="mc", + description="SOYOMBO VOWEL SIGN AI", + direction="l", + linebreak="cm", + unicodeslot=0x11A57, + }, + [0x11A58]={ + category="mc", + description="SOYOMBO VOWEL SIGN AU", + direction="l", + linebreak="cm", + unicodeslot=0x11A58, + }, + [0x11A59]={ + category="mn", + description="SOYOMBO VOWEL SIGN VOCALIC R", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A59, + }, + [0x11A5A]={ + category="mn", + description="SOYOMBO VOWEL SIGN VOCALIC L", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A5A, + }, + [0x11A5B]={ + category="mn", + description="SOYOMBO VOWEL LENGTH MARK", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A5B, + }, + [0x11A5C]={ + category="lo", + description="SOYOMBO LETTER KA", + direction="l", + linebreak="al", + unicodeslot=0x11A5C, + }, + [0x11A5D]={ + category="lo", + description="SOYOMBO LETTER KHA", + direction="l", + linebreak="al", + unicodeslot=0x11A5D, + }, + [0x11A5E]={ + category="lo", + description="SOYOMBO LETTER GA", + direction="l", + linebreak="al", + unicodeslot=0x11A5E, + }, + [0x11A5F]={ + category="lo", + description="SOYOMBO LETTER GHA", + direction="l", + linebreak="al", + unicodeslot=0x11A5F, + }, + [0x11A60]={ + category="lo", + description="SOYOMBO LETTER NGA", + direction="l", + linebreak="al", + unicodeslot=0x11A60, + }, + [0x11A61]={ + category="lo", + description="SOYOMBO LETTER CA", + direction="l", + linebreak="al", + unicodeslot=0x11A61, + }, + [0x11A62]={ + category="lo", + description="SOYOMBO LETTER CHA", + direction="l", + linebreak="al", + unicodeslot=0x11A62, + }, + [0x11A63]={ + category="lo", + description="SOYOMBO LETTER JA", + direction="l", + linebreak="al", + unicodeslot=0x11A63, + }, + [0x11A64]={ + category="lo", + description="SOYOMBO LETTER JHA", + direction="l", + linebreak="al", + unicodeslot=0x11A64, + }, + [0x11A65]={ + category="lo", + description="SOYOMBO LETTER NYA", + direction="l", + linebreak="al", + unicodeslot=0x11A65, + }, + [0x11A66]={ + category="lo", + description="SOYOMBO LETTER TTA", + direction="l", + linebreak="al", + unicodeslot=0x11A66, + }, + [0x11A67]={ + category="lo", + description="SOYOMBO LETTER TTHA", + direction="l", + linebreak="al", + unicodeslot=0x11A67, + }, + [0x11A68]={ + category="lo", + description="SOYOMBO LETTER DDA", + direction="l", + linebreak="al", + unicodeslot=0x11A68, + }, + [0x11A69]={ + category="lo", + description="SOYOMBO LETTER DDHA", + direction="l", + linebreak="al", + unicodeslot=0x11A69, + }, + [0x11A6A]={ + category="lo", + description="SOYOMBO LETTER NNA", + direction="l", + linebreak="al", + unicodeslot=0x11A6A, + }, + [0x11A6B]={ + category="lo", + description="SOYOMBO LETTER TA", + direction="l", + linebreak="al", + unicodeslot=0x11A6B, + }, + [0x11A6C]={ + category="lo", + description="SOYOMBO LETTER THA", + direction="l", + linebreak="al", + unicodeslot=0x11A6C, + }, + [0x11A6D]={ + category="lo", + description="SOYOMBO LETTER DA", + direction="l", + linebreak="al", + unicodeslot=0x11A6D, + }, + [0x11A6E]={ + category="lo", + description="SOYOMBO LETTER DHA", + direction="l", + linebreak="al", + unicodeslot=0x11A6E, + }, + [0x11A6F]={ + category="lo", + description="SOYOMBO LETTER NA", + direction="l", + linebreak="al", + unicodeslot=0x11A6F, + }, + [0x11A70]={ + category="lo", + description="SOYOMBO LETTER PA", + direction="l", + linebreak="al", + unicodeslot=0x11A70, + }, + [0x11A71]={ + category="lo", + description="SOYOMBO LETTER PHA", + direction="l", + linebreak="al", + unicodeslot=0x11A71, + }, + [0x11A72]={ + category="lo", + description="SOYOMBO LETTER BA", + direction="l", + linebreak="al", + unicodeslot=0x11A72, + }, + [0x11A73]={ + category="lo", + description="SOYOMBO LETTER BHA", + direction="l", + linebreak="al", + unicodeslot=0x11A73, + }, + [0x11A74]={ + category="lo", + description="SOYOMBO LETTER MA", + direction="l", + linebreak="al", + unicodeslot=0x11A74, + }, + [0x11A75]={ + category="lo", + description="SOYOMBO LETTER TSA", + direction="l", + linebreak="al", + unicodeslot=0x11A75, + }, + [0x11A76]={ + category="lo", + description="SOYOMBO LETTER TSHA", + direction="l", + linebreak="al", + unicodeslot=0x11A76, + }, + [0x11A77]={ + category="lo", + description="SOYOMBO LETTER DZA", + direction="l", + linebreak="al", + unicodeslot=0x11A77, + }, + [0x11A78]={ + category="lo", + description="SOYOMBO LETTER ZHA", + direction="l", + linebreak="al", + unicodeslot=0x11A78, + }, + [0x11A79]={ + category="lo", + description="SOYOMBO LETTER ZA", + direction="l", + linebreak="al", + unicodeslot=0x11A79, + }, + [0x11A7A]={ + category="lo", + description="SOYOMBO LETTER -A", + direction="l", + linebreak="al", + unicodeslot=0x11A7A, + }, + [0x11A7B]={ + category="lo", + description="SOYOMBO LETTER YA", + direction="l", + linebreak="al", + unicodeslot=0x11A7B, + }, + [0x11A7C]={ + category="lo", + description="SOYOMBO LETTER RA", + direction="l", + linebreak="al", + unicodeslot=0x11A7C, + }, + [0x11A7D]={ + category="lo", + description="SOYOMBO LETTER LA", + direction="l", + linebreak="al", + unicodeslot=0x11A7D, + }, + [0x11A7E]={ + category="lo", + description="SOYOMBO LETTER VA", + direction="l", + linebreak="al", + unicodeslot=0x11A7E, + }, + [0x11A7F]={ + category="lo", + description="SOYOMBO LETTER SHA", + direction="l", + linebreak="al", + unicodeslot=0x11A7F, + }, + [0x11A80]={ + category="lo", + description="SOYOMBO LETTER SSA", + direction="l", + linebreak="al", + unicodeslot=0x11A80, + }, + [0x11A81]={ + category="lo", + description="SOYOMBO LETTER SA", + direction="l", + linebreak="al", + unicodeslot=0x11A81, + }, + [0x11A82]={ + category="lo", + description="SOYOMBO LETTER HA", + direction="l", + linebreak="al", + unicodeslot=0x11A82, + }, + [0x11A83]={ + category="lo", + description="SOYOMBO LETTER KSSA", + direction="l", + linebreak="al", + unicodeslot=0x11A83, + }, + [0x11A86]={ + category="lo", + description="SOYOMBO CLUSTER-INITIAL LETTER RA", + direction="l", + linebreak="al", + unicodeslot=0x11A86, + }, + [0x11A87]={ + category="lo", + description="SOYOMBO CLUSTER-INITIAL LETTER LA", + direction="l", + linebreak="al", + unicodeslot=0x11A87, + }, + [0x11A88]={ + category="lo", + description="SOYOMBO CLUSTER-INITIAL LETTER SHA", + direction="l", + linebreak="al", + unicodeslot=0x11A88, + }, + [0x11A89]={ + category="lo", + description="SOYOMBO CLUSTER-INITIAL LETTER SA", + direction="l", + linebreak="al", + unicodeslot=0x11A89, + }, + [0x11A8A]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN G", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8A, + }, + [0x11A8B]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN K", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8B, + }, + [0x11A8C]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN NG", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8C, + }, + [0x11A8D]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN D", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8D, + }, + [0x11A8E]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN N", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8E, + }, + [0x11A8F]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN B", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A8F, + }, + [0x11A90]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN M", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A90, + }, + [0x11A91]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN R", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A91, + }, + [0x11A92]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN L", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A92, + }, + [0x11A93]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN SH", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A93, + }, + [0x11A94]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN S", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A94, + }, + [0x11A95]={ + category="mn", + description="SOYOMBO FINAL CONSONANT SIGN -A", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A95, + }, + [0x11A96]={ + category="mn", + description="SOYOMBO SIGN ANUSVARA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A96, + }, + [0x11A97]={ + category="mc", + description="SOYOMBO SIGN VISARGA", + direction="l", + linebreak="cm", + unicodeslot=0x11A97, + }, + [0x11A98]={ + category="mn", + description="SOYOMBO GEMINATION MARK", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A98, + }, + [0x11A99]={ + category="mn", + combining=0x9, + description="SOYOMBO SUBJOINER", + direction="nsm", + linebreak="cm", + unicodeslot=0x11A99, + }, + [0x11A9A]={ + category="po", + description="SOYOMBO MARK TSHEG", + direction="l", + linebreak="ba", + unicodeslot=0x11A9A, + }, + [0x11A9B]={ + category="po", + description="SOYOMBO MARK SHAD", + direction="l", + linebreak="ba", + unicodeslot=0x11A9B, + }, + [0x11A9C]={ + category="po", + description="SOYOMBO MARK DOUBLE SHAD", + direction="l", + linebreak="ba", + unicodeslot=0x11A9C, + }, + [0x11A9E]={ + category="po", + description="SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME", + direction="l", + linebreak="bb", + unicodeslot=0x11A9E, + }, + [0x11A9F]={ + category="po", + description="SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME", + direction="l", + linebreak="bb", + unicodeslot=0x11A9F, + }, + [0x11AA0]={ + category="po", + description="SOYOMBO HEAD MARK WITH MOON AND SUN", + direction="l", + linebreak="bb", + unicodeslot=0x11AA0, + }, + [0x11AA1]={ + category="po", + description="SOYOMBO TERMINAL MARK-1", + direction="l", + linebreak="ba", + unicodeslot=0x11AA1, + }, + [0x11AA2]={ + category="po", + description="SOYOMBO TERMINAL MARK-2", + direction="l", + linebreak="ba", + unicodeslot=0x11AA2, + }, [0x11AC0]={ category="lo", description="PAU CIN HAU LETTER PA", @@ -163283,6 +164641,534 @@ characters.data={ linebreak="cm", unicodeslot=0x11CB6, }, + [0x11D00]={ + category="lo", + description="MASARAM GONDI LETTER A", + direction="l", + linebreak="al", + unicodeslot=0x11D00, + }, + [0x11D01]={ + category="lo", + description="MASARAM GONDI LETTER AA", + direction="l", + linebreak="al", + unicodeslot=0x11D01, + }, + [0x11D02]={ + category="lo", + description="MASARAM GONDI LETTER I", + direction="l", + linebreak="al", + unicodeslot=0x11D02, + }, + [0x11D03]={ + category="lo", + description="MASARAM GONDI LETTER II", + direction="l", + linebreak="al", + unicodeslot=0x11D03, + }, + [0x11D04]={ + category="lo", + description="MASARAM GONDI LETTER U", + direction="l", + linebreak="al", + unicodeslot=0x11D04, + }, + [0x11D05]={ + category="lo", + description="MASARAM GONDI LETTER UU", + direction="l", + linebreak="al", + unicodeslot=0x11D05, + }, + [0x11D06]={ + category="lo", + description="MASARAM GONDI LETTER E", + direction="l", + linebreak="al", + unicodeslot=0x11D06, + }, + [0x11D08]={ + category="lo", + description="MASARAM GONDI LETTER AI", + direction="l", + linebreak="al", + unicodeslot=0x11D08, + }, + [0x11D09]={ + category="lo", + description="MASARAM GONDI LETTER O", + direction="l", + linebreak="al", + unicodeslot=0x11D09, + }, + [0x11D0B]={ + category="lo", + description="MASARAM GONDI LETTER AU", + direction="l", + linebreak="al", + unicodeslot=0x11D0B, + }, + [0x11D0C]={ + category="lo", + description="MASARAM GONDI LETTER KA", + direction="l", + linebreak="al", + unicodeslot=0x11D0C, + }, + [0x11D0D]={ + category="lo", + description="MASARAM GONDI LETTER KHA", + direction="l", + linebreak="al", + unicodeslot=0x11D0D, + }, + [0x11D0E]={ + category="lo", + description="MASARAM GONDI LETTER GA", + direction="l", + linebreak="al", + unicodeslot=0x11D0E, + }, + [0x11D0F]={ + category="lo", + description="MASARAM GONDI LETTER GHA", + direction="l", + linebreak="al", + unicodeslot=0x11D0F, + }, + [0x11D10]={ + category="lo", + description="MASARAM GONDI LETTER NGA", + direction="l", + linebreak="al", + unicodeslot=0x11D10, + }, + [0x11D11]={ + category="lo", + description="MASARAM GONDI LETTER CA", + direction="l", + linebreak="al", + unicodeslot=0x11D11, + }, + [0x11D12]={ + category="lo", + description="MASARAM GONDI LETTER CHA", + direction="l", + linebreak="al", + unicodeslot=0x11D12, + }, + [0x11D13]={ + category="lo", + description="MASARAM GONDI LETTER JA", + direction="l", + linebreak="al", + unicodeslot=0x11D13, + }, + [0x11D14]={ + category="lo", + description="MASARAM GONDI LETTER JHA", + direction="l", + linebreak="al", + unicodeslot=0x11D14, + }, + [0x11D15]={ + category="lo", + description="MASARAM GONDI LETTER NYA", + direction="l", + linebreak="al", + unicodeslot=0x11D15, + }, + [0x11D16]={ + category="lo", + description="MASARAM GONDI LETTER TTA", + direction="l", + linebreak="al", + unicodeslot=0x11D16, + }, + [0x11D17]={ + category="lo", + description="MASARAM GONDI LETTER TTHA", + direction="l", + linebreak="al", + unicodeslot=0x11D17, + }, + [0x11D18]={ + category="lo", + description="MASARAM GONDI LETTER DDA", + direction="l", + linebreak="al", + unicodeslot=0x11D18, + }, + [0x11D19]={ + category="lo", + description="MASARAM GONDI LETTER DDHA", + direction="l", + linebreak="al", + unicodeslot=0x11D19, + }, + [0x11D1A]={ + category="lo", + description="MASARAM GONDI LETTER NNA", + direction="l", + linebreak="al", + unicodeslot=0x11D1A, + }, + [0x11D1B]={ + category="lo", + description="MASARAM GONDI LETTER TA", + direction="l", + linebreak="al", + unicodeslot=0x11D1B, + }, + [0x11D1C]={ + category="lo", + description="MASARAM GONDI LETTER THA", + direction="l", + linebreak="al", + unicodeslot=0x11D1C, + }, + [0x11D1D]={ + category="lo", + description="MASARAM GONDI LETTER DA", + direction="l", + linebreak="al", + unicodeslot=0x11D1D, + }, + [0x11D1E]={ + category="lo", + description="MASARAM GONDI LETTER DHA", + direction="l", + linebreak="al", + unicodeslot=0x11D1E, + }, + [0x11D1F]={ + category="lo", + description="MASARAM GONDI LETTER NA", + direction="l", + linebreak="al", + unicodeslot=0x11D1F, + }, + [0x11D20]={ + category="lo", + description="MASARAM GONDI LETTER PA", + direction="l", + linebreak="al", + unicodeslot=0x11D20, + }, + [0x11D21]={ + category="lo", + description="MASARAM GONDI LETTER PHA", + direction="l", + linebreak="al", + unicodeslot=0x11D21, + }, + [0x11D22]={ + category="lo", + description="MASARAM GONDI LETTER BA", + direction="l", + linebreak="al", + unicodeslot=0x11D22, + }, + [0x11D23]={ + category="lo", + description="MASARAM GONDI LETTER BHA", + direction="l", + linebreak="al", + unicodeslot=0x11D23, + }, + [0x11D24]={ + category="lo", + description="MASARAM GONDI LETTER MA", + direction="l", + linebreak="al", + unicodeslot=0x11D24, + }, + [0x11D25]={ + category="lo", + description="MASARAM GONDI LETTER YA", + direction="l", + linebreak="al", + unicodeslot=0x11D25, + }, + [0x11D26]={ + category="lo", + description="MASARAM GONDI LETTER RA", + direction="l", + linebreak="al", + unicodeslot=0x11D26, + }, + [0x11D27]={ + category="lo", + description="MASARAM GONDI LETTER LA", + direction="l", + linebreak="al", + unicodeslot=0x11D27, + }, + [0x11D28]={ + category="lo", + description="MASARAM GONDI LETTER VA", + direction="l", + linebreak="al", + unicodeslot=0x11D28, + }, + [0x11D29]={ + category="lo", + description="MASARAM GONDI LETTER SHA", + direction="l", + linebreak="al", + unicodeslot=0x11D29, + }, + [0x11D2A]={ + category="lo", + description="MASARAM GONDI LETTER SSA", + direction="l", + linebreak="al", + unicodeslot=0x11D2A, + }, + [0x11D2B]={ + category="lo", + description="MASARAM GONDI LETTER SA", + direction="l", + linebreak="al", + unicodeslot=0x11D2B, + }, + [0x11D2C]={ + category="lo", + description="MASARAM GONDI LETTER HA", + direction="l", + linebreak="al", + unicodeslot=0x11D2C, + }, + [0x11D2D]={ + category="lo", + description="MASARAM GONDI LETTER LLA", + direction="l", + linebreak="al", + unicodeslot=0x11D2D, + }, + [0x11D2E]={ + category="lo", + description="MASARAM GONDI LETTER KSSA", + direction="l", + linebreak="al", + unicodeslot=0x11D2E, + }, + [0x11D2F]={ + category="lo", + description="MASARAM GONDI LETTER JNYA", + direction="l", + linebreak="al", + unicodeslot=0x11D2F, + }, + [0x11D30]={ + category="lo", + description="MASARAM GONDI LETTER TRA", + direction="l", + linebreak="al", + unicodeslot=0x11D30, + }, + [0x11D31]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN AA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D31, + }, + [0x11D32]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN I", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D32, + }, + [0x11D33]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN II", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D33, + }, + [0x11D34]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN U", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D34, + }, + [0x11D35]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN UU", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D35, + }, + [0x11D36]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN VOCALIC R", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D36, + }, + [0x11D3A]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN E", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D3A, + }, + [0x11D3C]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN AI", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D3C, + }, + [0x11D3D]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN O", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D3D, + }, + [0x11D3F]={ + category="mn", + description="MASARAM GONDI VOWEL SIGN AU", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D3F, + }, + [0x11D40]={ + category="mn", + description="MASARAM GONDI SIGN ANUSVARA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D40, + }, + [0x11D41]={ + category="mn", + description="MASARAM GONDI SIGN VISARGA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D41, + }, + [0x11D42]={ + category="mn", + combining=0x7, + description="MASARAM GONDI SIGN NUKTA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D42, + }, + [0x11D43]={ + category="mn", + description="MASARAM GONDI SIGN CANDRA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D43, + }, + [0x11D44]={ + category="mn", + combining=0x9, + description="MASARAM GONDI SIGN HALANTA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D44, + }, + [0x11D45]={ + category="mn", + combining=0x9, + description="MASARAM GONDI VIRAMA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D45, + }, + [0x11D46]={ + category="lo", + description="MASARAM GONDI REPHA", + direction="l", + linebreak="al", + unicodeslot=0x11D46, + }, + [0x11D47]={ + category="mn", + description="MASARAM GONDI RA-KARA", + direction="nsm", + linebreak="cm", + unicodeslot=0x11D47, + }, + [0x11D50]={ + category="nd", + description="MASARAM GONDI DIGIT ZERO", + direction="l", + linebreak="nu", + unicodeslot=0x11D50, + }, + [0x11D51]={ + category="nd", + description="MASARAM GONDI DIGIT ONE", + direction="l", + linebreak="nu", + unicodeslot=0x11D51, + }, + [0x11D52]={ + category="nd", + description="MASARAM GONDI DIGIT TWO", + direction="l", + linebreak="nu", + unicodeslot=0x11D52, + }, + [0x11D53]={ + category="nd", + description="MASARAM GONDI DIGIT THREE", + direction="l", + linebreak="nu", + unicodeslot=0x11D53, + }, + [0x11D54]={ + category="nd", + description="MASARAM GONDI DIGIT FOUR", + direction="l", + linebreak="nu", + unicodeslot=0x11D54, + }, + [0x11D55]={ + category="nd", + description="MASARAM GONDI DIGIT FIVE", + direction="l", + linebreak="nu", + unicodeslot=0x11D55, + }, + [0x11D56]={ + category="nd", + description="MASARAM GONDI DIGIT SIX", + direction="l", + linebreak="nu", + unicodeslot=0x11D56, + }, + [0x11D57]={ + category="nd", + description="MASARAM GONDI DIGIT SEVEN", + direction="l", + linebreak="nu", + unicodeslot=0x11D57, + }, + [0x11D58]={ + category="nd", + description="MASARAM GONDI DIGIT EIGHT", + direction="l", + linebreak="nu", + unicodeslot=0x11D58, + }, + [0x11D59]={ + category="nd", + description="MASARAM GONDI DIGIT NINE", + direction="l", + linebreak="nu", + unicodeslot=0x11D59, + }, [0x12000]={ category="lo", description="CUNEIFORM SIGN A", @@ -189877,6 +191763,14 @@ characters.data={ linebreak="ns", unicodeslot=0x16FE0, }, + [0x16FE1]={ + category="lm", + cjkwd="w", + description="NUSHU ITERATION MARK", + direction="l", + linebreak="ns", + unicodeslot=0x16FE1, + }, [0x18800]={ category="lo", cjkwd="w", @@ -195933,6 +197827,5454 @@ characters.data={ linebreak="id", unicodeslot=0x1B001, }, + [0x1B002]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER A-1", + direction="l", + linebreak="id", + unicodeslot=0x1B002, + }, + [0x1B003]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER A-2", + direction="l", + linebreak="id", + unicodeslot=0x1B003, + }, + [0x1B004]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER A-3", + direction="l", + linebreak="id", + unicodeslot=0x1B004, + }, + [0x1B005]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER A-WO", + direction="l", + linebreak="id", + unicodeslot=0x1B005, + }, + [0x1B006]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER I-1", + direction="l", + linebreak="id", + unicodeslot=0x1B006, + }, + [0x1B007]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER I-2", + direction="l", + linebreak="id", + unicodeslot=0x1B007, + }, + [0x1B008]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER I-3", + direction="l", + linebreak="id", + unicodeslot=0x1B008, + }, + [0x1B009]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER I-4", + direction="l", + linebreak="id", + unicodeslot=0x1B009, + }, + [0x1B00A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER U-1", + direction="l", + linebreak="id", + unicodeslot=0x1B00A, + }, + [0x1B00B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER U-2", + direction="l", + linebreak="id", + unicodeslot=0x1B00B, + }, + [0x1B00C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER U-3", + direction="l", + linebreak="id", + unicodeslot=0x1B00C, + }, + [0x1B00D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER U-4", + direction="l", + linebreak="id", + unicodeslot=0x1B00D, + }, + [0x1B00E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER U-5", + direction="l", + linebreak="id", + unicodeslot=0x1B00E, + }, + [0x1B00F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER E-2", + direction="l", + linebreak="id", + unicodeslot=0x1B00F, + }, + [0x1B010]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER E-3", + direction="l", + linebreak="id", + unicodeslot=0x1B010, + }, + [0x1B011]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER E-4", + direction="l", + linebreak="id", + unicodeslot=0x1B011, + }, + [0x1B012]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER E-5", + direction="l", + linebreak="id", + unicodeslot=0x1B012, + }, + [0x1B013]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER E-6", + direction="l", + linebreak="id", + unicodeslot=0x1B013, + }, + [0x1B014]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER O-1", + direction="l", + linebreak="id", + unicodeslot=0x1B014, + }, + [0x1B015]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER O-2", + direction="l", + linebreak="id", + unicodeslot=0x1B015, + }, + [0x1B016]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER O-3", + direction="l", + linebreak="id", + unicodeslot=0x1B016, + }, + [0x1B017]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B017, + }, + [0x1B018]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B018, + }, + [0x1B019]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B019, + }, + [0x1B01A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B01A, + }, + [0x1B01B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B01B, + }, + [0x1B01C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-6", + direction="l", + linebreak="id", + unicodeslot=0x1B01C, + }, + [0x1B01D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-7", + direction="l", + linebreak="id", + unicodeslot=0x1B01D, + }, + [0x1B01E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-8", + direction="l", + linebreak="id", + unicodeslot=0x1B01E, + }, + [0x1B01F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-9", + direction="l", + linebreak="id", + unicodeslot=0x1B01F, + }, + [0x1B020]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-10", + direction="l", + linebreak="id", + unicodeslot=0x1B020, + }, + [0x1B021]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-11", + direction="l", + linebreak="id", + unicodeslot=0x1B021, + }, + [0x1B022]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KA-KE", + direction="l", + linebreak="id", + unicodeslot=0x1B022, + }, + [0x1B023]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B023, + }, + [0x1B024]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B024, + }, + [0x1B025]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B025, + }, + [0x1B026]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B026, + }, + [0x1B027]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B027, + }, + [0x1B028]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B028, + }, + [0x1B029]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B029, + }, + [0x1B02A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KI-8", + direction="l", + linebreak="id", + unicodeslot=0x1B02A, + }, + [0x1B02B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B02B, + }, + [0x1B02C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B02C, + }, + [0x1B02D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B02D, + }, + [0x1B02E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B02E, + }, + [0x1B02F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-5", + direction="l", + linebreak="id", + unicodeslot=0x1B02F, + }, + [0x1B030]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-6", + direction="l", + linebreak="id", + unicodeslot=0x1B030, + }, + [0x1B031]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KU-7", + direction="l", + linebreak="id", + unicodeslot=0x1B031, + }, + [0x1B032]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B032, + }, + [0x1B033]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B033, + }, + [0x1B034]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B034, + }, + [0x1B035]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B035, + }, + [0x1B036]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-5", + direction="l", + linebreak="id", + unicodeslot=0x1B036, + }, + [0x1B037]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KE-6", + direction="l", + linebreak="id", + unicodeslot=0x1B037, + }, + [0x1B038]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B038, + }, + [0x1B039]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B039, + }, + [0x1B03A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B03A, + }, + [0x1B03B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER KO-KI", + direction="l", + linebreak="id", + unicodeslot=0x1B03B, + }, + [0x1B03C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B03C, + }, + [0x1B03D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B03D, + }, + [0x1B03E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B03E, + }, + [0x1B03F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B03F, + }, + [0x1B040]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B040, + }, + [0x1B041]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-6", + direction="l", + linebreak="id", + unicodeslot=0x1B041, + }, + [0x1B042]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-7", + direction="l", + linebreak="id", + unicodeslot=0x1B042, + }, + [0x1B043]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SA-8", + direction="l", + linebreak="id", + unicodeslot=0x1B043, + }, + [0x1B044]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B044, + }, + [0x1B045]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B045, + }, + [0x1B046]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B046, + }, + [0x1B047]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B047, + }, + [0x1B048]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B048, + }, + [0x1B049]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B049, + }, + [0x1B04A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B04A, + }, + [0x1B04B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B04B, + }, + [0x1B04C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B04C, + }, + [0x1B04D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B04D, + }, + [0x1B04E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-5", + direction="l", + linebreak="id", + unicodeslot=0x1B04E, + }, + [0x1B04F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-6", + direction="l", + linebreak="id", + unicodeslot=0x1B04F, + }, + [0x1B050]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-7", + direction="l", + linebreak="id", + unicodeslot=0x1B050, + }, + [0x1B051]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SU-8", + direction="l", + linebreak="id", + unicodeslot=0x1B051, + }, + [0x1B052]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B052, + }, + [0x1B053]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B053, + }, + [0x1B054]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B054, + }, + [0x1B055]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B055, + }, + [0x1B056]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SE-5", + direction="l", + linebreak="id", + unicodeslot=0x1B056, + }, + [0x1B057]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B057, + }, + [0x1B058]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B058, + }, + [0x1B059]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B059, + }, + [0x1B05A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B05A, + }, + [0x1B05B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B05B, + }, + [0x1B05C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B05C, + }, + [0x1B05D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER SO-7", + direction="l", + linebreak="id", + unicodeslot=0x1B05D, + }, + [0x1B05E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B05E, + }, + [0x1B05F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B05F, + }, + [0x1B060]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B060, + }, + [0x1B061]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B061, + }, + [0x1B062]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B062, + }, + [0x1B063]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B063, + }, + [0x1B064]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B064, + }, + [0x1B065]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B065, + }, + [0x1B066]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B066, + }, + [0x1B067]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B067, + }, + [0x1B068]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B068, + }, + [0x1B069]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B069, + }, + [0x1B06A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B06A, + }, + [0x1B06B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B06B, + }, + [0x1B06C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B06C, + }, + [0x1B06D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TU-TO", + direction="l", + linebreak="id", + unicodeslot=0x1B06D, + }, + [0x1B06E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B06E, + }, + [0x1B06F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B06F, + }, + [0x1B070]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B070, + }, + [0x1B071]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B071, + }, + [0x1B072]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-5", + direction="l", + linebreak="id", + unicodeslot=0x1B072, + }, + [0x1B073]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-6", + direction="l", + linebreak="id", + unicodeslot=0x1B073, + }, + [0x1B074]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-7", + direction="l", + linebreak="id", + unicodeslot=0x1B074, + }, + [0x1B075]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-8", + direction="l", + linebreak="id", + unicodeslot=0x1B075, + }, + [0x1B076]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TE-9", + direction="l", + linebreak="id", + unicodeslot=0x1B076, + }, + [0x1B077]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B077, + }, + [0x1B078]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B078, + }, + [0x1B079]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B079, + }, + [0x1B07A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B07A, + }, + [0x1B07B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B07B, + }, + [0x1B07C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B07C, + }, + [0x1B07D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER TO-RA", + direction="l", + linebreak="id", + unicodeslot=0x1B07D, + }, + [0x1B07E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B07E, + }, + [0x1B07F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B07F, + }, + [0x1B080]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B080, + }, + [0x1B081]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B081, + }, + [0x1B082]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B082, + }, + [0x1B083]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-6", + direction="l", + linebreak="id", + unicodeslot=0x1B083, + }, + [0x1B084]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-7", + direction="l", + linebreak="id", + unicodeslot=0x1B084, + }, + [0x1B085]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-8", + direction="l", + linebreak="id", + unicodeslot=0x1B085, + }, + [0x1B086]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NA-9", + direction="l", + linebreak="id", + unicodeslot=0x1B086, + }, + [0x1B087]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B087, + }, + [0x1B088]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B088, + }, + [0x1B089]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B089, + }, + [0x1B08A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B08A, + }, + [0x1B08B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B08B, + }, + [0x1B08C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B08C, + }, + [0x1B08D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B08D, + }, + [0x1B08E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NI-TE", + direction="l", + linebreak="id", + unicodeslot=0x1B08E, + }, + [0x1B08F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B08F, + }, + [0x1B090]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B090, + }, + [0x1B091]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B091, + }, + [0x1B092]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B092, + }, + [0x1B093]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B093, + }, + [0x1B094]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B094, + }, + [0x1B095]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B095, + }, + [0x1B096]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-5", + direction="l", + linebreak="id", + unicodeslot=0x1B096, + }, + [0x1B097]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-6", + direction="l", + linebreak="id", + unicodeslot=0x1B097, + }, + [0x1B098]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NE-KO", + direction="l", + linebreak="id", + unicodeslot=0x1B098, + }, + [0x1B099]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B099, + }, + [0x1B09A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B09A, + }, + [0x1B09B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B09B, + }, + [0x1B09C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B09C, + }, + [0x1B09D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER NO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B09D, + }, + [0x1B09E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B09E, + }, + [0x1B09F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B09F, + }, + [0x1B0A0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0A0, + }, + [0x1B0A1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0A1, + }, + [0x1B0A2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0A2, + }, + [0x1B0A3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0A3, + }, + [0x1B0A4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0A4, + }, + [0x1B0A5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-8", + direction="l", + linebreak="id", + unicodeslot=0x1B0A5, + }, + [0x1B0A6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-9", + direction="l", + linebreak="id", + unicodeslot=0x1B0A6, + }, + [0x1B0A7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-10", + direction="l", + linebreak="id", + unicodeslot=0x1B0A7, + }, + [0x1B0A8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HA-11", + direction="l", + linebreak="id", + unicodeslot=0x1B0A8, + }, + [0x1B0A9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0A9, + }, + [0x1B0AA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0AA, + }, + [0x1B0AB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0AB, + }, + [0x1B0AC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0AC, + }, + [0x1B0AD]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0AD, + }, + [0x1B0AE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0AE, + }, + [0x1B0AF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0AF, + }, + [0x1B0B0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0B0, + }, + [0x1B0B1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0B1, + }, + [0x1B0B2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0B2, + }, + [0x1B0B3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0B3, + }, + [0x1B0B4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0B4, + }, + [0x1B0B5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0B5, + }, + [0x1B0B6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0B6, + }, + [0x1B0B7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0B7, + }, + [0x1B0B8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0B8, + }, + [0x1B0B9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HE-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0B9, + }, + [0x1B0BA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0BA, + }, + [0x1B0BB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0BB, + }, + [0x1B0BC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0BC, + }, + [0x1B0BD]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0BD, + }, + [0x1B0BE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0BE, + }, + [0x1B0BF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0BF, + }, + [0x1B0C0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0C0, + }, + [0x1B0C1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER HO-8", + direction="l", + linebreak="id", + unicodeslot=0x1B0C1, + }, + [0x1B0C2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0C2, + }, + [0x1B0C3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0C3, + }, + [0x1B0C4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0C4, + }, + [0x1B0C5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0C5, + }, + [0x1B0C6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0C6, + }, + [0x1B0C7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0C7, + }, + [0x1B0C8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MA-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0C8, + }, + [0x1B0C9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0C9, + }, + [0x1B0CA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0CA, + }, + [0x1B0CB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0CB, + }, + [0x1B0CC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0CC, + }, + [0x1B0CD]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0CD, + }, + [0x1B0CE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0CE, + }, + [0x1B0CF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0CF, + }, + [0x1B0D0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0D0, + }, + [0x1B0D1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0D1, + }, + [0x1B0D2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0D2, + }, + [0x1B0D3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0D3, + }, + [0x1B0D4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER ME-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0D4, + }, + [0x1B0D5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER ME-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0D5, + }, + [0x1B0D6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER ME-MA", + direction="l", + linebreak="id", + unicodeslot=0x1B0D6, + }, + [0x1B0D7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0D7, + }, + [0x1B0D8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0D8, + }, + [0x1B0D9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0D9, + }, + [0x1B0DA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0DA, + }, + [0x1B0DB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0DB, + }, + [0x1B0DC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER MO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0DC, + }, + [0x1B0DD]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0DD, + }, + [0x1B0DE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0DE, + }, + [0x1B0DF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0DF, + }, + [0x1B0E0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0E0, + }, + [0x1B0E1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0E1, + }, + [0x1B0E2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YA-YO", + direction="l", + linebreak="id", + unicodeslot=0x1B0E2, + }, + [0x1B0E3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0E3, + }, + [0x1B0E4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0E4, + }, + [0x1B0E5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0E5, + }, + [0x1B0E6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0E6, + }, + [0x1B0E7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0E7, + }, + [0x1B0E8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0E8, + }, + [0x1B0E9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0E9, + }, + [0x1B0EA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0EA, + }, + [0x1B0EB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0EB, + }, + [0x1B0EC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER YO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0EC, + }, + [0x1B0ED]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0ED, + }, + [0x1B0EE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0EE, + }, + [0x1B0EF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0EF, + }, + [0x1B0F0]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0F0, + }, + [0x1B0F1]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0F1, + }, + [0x1B0F2]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0F2, + }, + [0x1B0F3]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0F3, + }, + [0x1B0F4]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0F4, + }, + [0x1B0F5]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0F5, + }, + [0x1B0F6]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0F6, + }, + [0x1B0F7]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RI-7", + direction="l", + linebreak="id", + unicodeslot=0x1B0F7, + }, + [0x1B0F8]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0F8, + }, + [0x1B0F9]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0F9, + }, + [0x1B0FA]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-3", + direction="l", + linebreak="id", + unicodeslot=0x1B0FA, + }, + [0x1B0FB]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-4", + direction="l", + linebreak="id", + unicodeslot=0x1B0FB, + }, + [0x1B0FC]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-5", + direction="l", + linebreak="id", + unicodeslot=0x1B0FC, + }, + [0x1B0FD]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RU-6", + direction="l", + linebreak="id", + unicodeslot=0x1B0FD, + }, + [0x1B0FE]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B0FE, + }, + [0x1B0FF]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B0FF, + }, + [0x1B100]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B100, + }, + [0x1B101]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B101, + }, + [0x1B102]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B102, + }, + [0x1B103]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B103, + }, + [0x1B104]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B104, + }, + [0x1B105]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B105, + }, + [0x1B106]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B106, + }, + [0x1B107]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER RO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B107, + }, + [0x1B108]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WA-1", + direction="l", + linebreak="id", + unicodeslot=0x1B108, + }, + [0x1B109]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WA-2", + direction="l", + linebreak="id", + unicodeslot=0x1B109, + }, + [0x1B10A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WA-3", + direction="l", + linebreak="id", + unicodeslot=0x1B10A, + }, + [0x1B10B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WA-4", + direction="l", + linebreak="id", + unicodeslot=0x1B10B, + }, + [0x1B10C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WA-5", + direction="l", + linebreak="id", + unicodeslot=0x1B10C, + }, + [0x1B10D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WI-1", + direction="l", + linebreak="id", + unicodeslot=0x1B10D, + }, + [0x1B10E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WI-2", + direction="l", + linebreak="id", + unicodeslot=0x1B10E, + }, + [0x1B10F]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WI-3", + direction="l", + linebreak="id", + unicodeslot=0x1B10F, + }, + [0x1B110]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WI-4", + direction="l", + linebreak="id", + unicodeslot=0x1B110, + }, + [0x1B111]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WI-5", + direction="l", + linebreak="id", + unicodeslot=0x1B111, + }, + [0x1B112]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WE-1", + direction="l", + linebreak="id", + unicodeslot=0x1B112, + }, + [0x1B113]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WE-2", + direction="l", + linebreak="id", + unicodeslot=0x1B113, + }, + [0x1B114]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WE-3", + direction="l", + linebreak="id", + unicodeslot=0x1B114, + }, + [0x1B115]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WE-4", + direction="l", + linebreak="id", + unicodeslot=0x1B115, + }, + [0x1B116]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B116, + }, + [0x1B117]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B117, + }, + [0x1B118]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-3", + direction="l", + linebreak="id", + unicodeslot=0x1B118, + }, + [0x1B119]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-4", + direction="l", + linebreak="id", + unicodeslot=0x1B119, + }, + [0x1B11A]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-5", + direction="l", + linebreak="id", + unicodeslot=0x1B11A, + }, + [0x1B11B]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-6", + direction="l", + linebreak="id", + unicodeslot=0x1B11B, + }, + [0x1B11C]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER WO-7", + direction="l", + linebreak="id", + unicodeslot=0x1B11C, + }, + [0x1B11D]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER N-MU-MO-1", + direction="l", + linebreak="id", + unicodeslot=0x1B11D, + }, + [0x1B11E]={ + category="lo", + cjkwd="w", + description="HENTAIGANA LETTER N-MU-MO-2", + direction="l", + linebreak="id", + unicodeslot=0x1B11E, + }, + [0x1B170]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B170", + direction="l", + linebreak="id", + unicodeslot=0x1B170, + }, + [0x1B171]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B171", + direction="l", + linebreak="id", + unicodeslot=0x1B171, + }, + [0x1B172]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B172", + direction="l", + linebreak="id", + unicodeslot=0x1B172, + }, + [0x1B173]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B173", + direction="l", + linebreak="id", + unicodeslot=0x1B173, + }, + [0x1B174]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B174", + direction="l", + linebreak="id", + unicodeslot=0x1B174, + }, + [0x1B175]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B175", + direction="l", + linebreak="id", + unicodeslot=0x1B175, + }, + [0x1B176]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B176", + direction="l", + linebreak="id", + unicodeslot=0x1B176, + }, + [0x1B177]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B177", + direction="l", + linebreak="id", + unicodeslot=0x1B177, + }, + [0x1B178]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B178", + direction="l", + linebreak="id", + unicodeslot=0x1B178, + }, + [0x1B179]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B179", + direction="l", + linebreak="id", + unicodeslot=0x1B179, + }, + [0x1B17A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17A", + direction="l", + linebreak="id", + unicodeslot=0x1B17A, + }, + [0x1B17B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17B", + direction="l", + linebreak="id", + unicodeslot=0x1B17B, + }, + [0x1B17C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17C", + direction="l", + linebreak="id", + unicodeslot=0x1B17C, + }, + [0x1B17D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17D", + direction="l", + linebreak="id", + unicodeslot=0x1B17D, + }, + [0x1B17E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17E", + direction="l", + linebreak="id", + unicodeslot=0x1B17E, + }, + [0x1B17F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B17F", + direction="l", + linebreak="id", + unicodeslot=0x1B17F, + }, + [0x1B180]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B180", + direction="l", + linebreak="id", + unicodeslot=0x1B180, + }, + [0x1B181]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B181", + direction="l", + linebreak="id", + unicodeslot=0x1B181, + }, + [0x1B182]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B182", + direction="l", + linebreak="id", + unicodeslot=0x1B182, + }, + [0x1B183]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B183", + direction="l", + linebreak="id", + unicodeslot=0x1B183, + }, + [0x1B184]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B184", + direction="l", + linebreak="id", + unicodeslot=0x1B184, + }, + [0x1B185]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B185", + direction="l", + linebreak="id", + unicodeslot=0x1B185, + }, + [0x1B186]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B186", + direction="l", + linebreak="id", + unicodeslot=0x1B186, + }, + [0x1B187]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B187", + direction="l", + linebreak="id", + unicodeslot=0x1B187, + }, + [0x1B188]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B188", + direction="l", + linebreak="id", + unicodeslot=0x1B188, + }, + [0x1B189]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B189", + direction="l", + linebreak="id", + unicodeslot=0x1B189, + }, + [0x1B18A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18A", + direction="l", + linebreak="id", + unicodeslot=0x1B18A, + }, + [0x1B18B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18B", + direction="l", + linebreak="id", + unicodeslot=0x1B18B, + }, + [0x1B18C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18C", + direction="l", + linebreak="id", + unicodeslot=0x1B18C, + }, + [0x1B18D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18D", + direction="l", + linebreak="id", + unicodeslot=0x1B18D, + }, + [0x1B18E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18E", + direction="l", + linebreak="id", + unicodeslot=0x1B18E, + }, + [0x1B18F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B18F", + direction="l", + linebreak="id", + unicodeslot=0x1B18F, + }, + [0x1B190]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B190", + direction="l", + linebreak="id", + unicodeslot=0x1B190, + }, + [0x1B191]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B191", + direction="l", + linebreak="id", + unicodeslot=0x1B191, + }, + [0x1B192]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B192", + direction="l", + linebreak="id", + unicodeslot=0x1B192, + }, + [0x1B193]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B193", + direction="l", + linebreak="id", + unicodeslot=0x1B193, + }, + [0x1B194]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B194", + direction="l", + linebreak="id", + unicodeslot=0x1B194, + }, + [0x1B195]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B195", + direction="l", + linebreak="id", + unicodeslot=0x1B195, + }, + [0x1B196]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B196", + direction="l", + linebreak="id", + unicodeslot=0x1B196, + }, + [0x1B197]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B197", + direction="l", + linebreak="id", + unicodeslot=0x1B197, + }, + [0x1B198]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B198", + direction="l", + linebreak="id", + unicodeslot=0x1B198, + }, + [0x1B199]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B199", + direction="l", + linebreak="id", + unicodeslot=0x1B199, + }, + [0x1B19A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19A", + direction="l", + linebreak="id", + unicodeslot=0x1B19A, + }, + [0x1B19B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19B", + direction="l", + linebreak="id", + unicodeslot=0x1B19B, + }, + [0x1B19C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19C", + direction="l", + linebreak="id", + unicodeslot=0x1B19C, + }, + [0x1B19D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19D", + direction="l", + linebreak="id", + unicodeslot=0x1B19D, + }, + [0x1B19E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19E", + direction="l", + linebreak="id", + unicodeslot=0x1B19E, + }, + [0x1B19F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B19F", + direction="l", + linebreak="id", + unicodeslot=0x1B19F, + }, + [0x1B1A0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A0", + direction="l", + linebreak="id", + unicodeslot=0x1B1A0, + }, + [0x1B1A1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A1", + direction="l", + linebreak="id", + unicodeslot=0x1B1A1, + }, + [0x1B1A2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A2", + direction="l", + linebreak="id", + unicodeslot=0x1B1A2, + }, + [0x1B1A3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A3", + direction="l", + linebreak="id", + unicodeslot=0x1B1A3, + }, + [0x1B1A4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A4", + direction="l", + linebreak="id", + unicodeslot=0x1B1A4, + }, + [0x1B1A5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A5", + direction="l", + linebreak="id", + unicodeslot=0x1B1A5, + }, + [0x1B1A6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A6", + direction="l", + linebreak="id", + unicodeslot=0x1B1A6, + }, + [0x1B1A7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A7", + direction="l", + linebreak="id", + unicodeslot=0x1B1A7, + }, + [0x1B1A8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A8", + direction="l", + linebreak="id", + unicodeslot=0x1B1A8, + }, + [0x1B1A9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1A9", + direction="l", + linebreak="id", + unicodeslot=0x1B1A9, + }, + [0x1B1AA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AA", + direction="l", + linebreak="id", + unicodeslot=0x1B1AA, + }, + [0x1B1AB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AB", + direction="l", + linebreak="id", + unicodeslot=0x1B1AB, + }, + [0x1B1AC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AC", + direction="l", + linebreak="id", + unicodeslot=0x1B1AC, + }, + [0x1B1AD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AD", + direction="l", + linebreak="id", + unicodeslot=0x1B1AD, + }, + [0x1B1AE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AE", + direction="l", + linebreak="id", + unicodeslot=0x1B1AE, + }, + [0x1B1AF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1AF", + direction="l", + linebreak="id", + unicodeslot=0x1B1AF, + }, + [0x1B1B0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B0", + direction="l", + linebreak="id", + unicodeslot=0x1B1B0, + }, + [0x1B1B1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B1", + direction="l", + linebreak="id", + unicodeslot=0x1B1B1, + }, + [0x1B1B2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B2", + direction="l", + linebreak="id", + unicodeslot=0x1B1B2, + }, + [0x1B1B3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B3", + direction="l", + linebreak="id", + unicodeslot=0x1B1B3, + }, + [0x1B1B4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B4", + direction="l", + linebreak="id", + unicodeslot=0x1B1B4, + }, + [0x1B1B5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B5", + direction="l", + linebreak="id", + unicodeslot=0x1B1B5, + }, + [0x1B1B6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B6", + direction="l", + linebreak="id", + unicodeslot=0x1B1B6, + }, + [0x1B1B7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B7", + direction="l", + linebreak="id", + unicodeslot=0x1B1B7, + }, + [0x1B1B8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B8", + direction="l", + linebreak="id", + unicodeslot=0x1B1B8, + }, + [0x1B1B9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1B9", + direction="l", + linebreak="id", + unicodeslot=0x1B1B9, + }, + [0x1B1BA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BA", + direction="l", + linebreak="id", + unicodeslot=0x1B1BA, + }, + [0x1B1BB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BB", + direction="l", + linebreak="id", + unicodeslot=0x1B1BB, + }, + [0x1B1BC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BC", + direction="l", + linebreak="id", + unicodeslot=0x1B1BC, + }, + [0x1B1BD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BD", + direction="l", + linebreak="id", + unicodeslot=0x1B1BD, + }, + [0x1B1BE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BE", + direction="l", + linebreak="id", + unicodeslot=0x1B1BE, + }, + [0x1B1BF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1BF", + direction="l", + linebreak="id", + unicodeslot=0x1B1BF, + }, + [0x1B1C0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C0", + direction="l", + linebreak="id", + unicodeslot=0x1B1C0, + }, + [0x1B1C1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C1", + direction="l", + linebreak="id", + unicodeslot=0x1B1C1, + }, + [0x1B1C2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C2", + direction="l", + linebreak="id", + unicodeslot=0x1B1C2, + }, + [0x1B1C3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C3", + direction="l", + linebreak="id", + unicodeslot=0x1B1C3, + }, + [0x1B1C4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C4", + direction="l", + linebreak="id", + unicodeslot=0x1B1C4, + }, + [0x1B1C5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C5", + direction="l", + linebreak="id", + unicodeslot=0x1B1C5, + }, + [0x1B1C6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C6", + direction="l", + linebreak="id", + unicodeslot=0x1B1C6, + }, + [0x1B1C7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C7", + direction="l", + linebreak="id", + unicodeslot=0x1B1C7, + }, + [0x1B1C8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C8", + direction="l", + linebreak="id", + unicodeslot=0x1B1C8, + }, + [0x1B1C9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1C9", + direction="l", + linebreak="id", + unicodeslot=0x1B1C9, + }, + [0x1B1CA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CA", + direction="l", + linebreak="id", + unicodeslot=0x1B1CA, + }, + [0x1B1CB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CB", + direction="l", + linebreak="id", + unicodeslot=0x1B1CB, + }, + [0x1B1CC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CC", + direction="l", + linebreak="id", + unicodeslot=0x1B1CC, + }, + [0x1B1CD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CD", + direction="l", + linebreak="id", + unicodeslot=0x1B1CD, + }, + [0x1B1CE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CE", + direction="l", + linebreak="id", + unicodeslot=0x1B1CE, + }, + [0x1B1CF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1CF", + direction="l", + linebreak="id", + unicodeslot=0x1B1CF, + }, + [0x1B1D0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D0", + direction="l", + linebreak="id", + unicodeslot=0x1B1D0, + }, + [0x1B1D1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D1", + direction="l", + linebreak="id", + unicodeslot=0x1B1D1, + }, + [0x1B1D2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D2", + direction="l", + linebreak="id", + unicodeslot=0x1B1D2, + }, + [0x1B1D3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D3", + direction="l", + linebreak="id", + unicodeslot=0x1B1D3, + }, + [0x1B1D4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D4", + direction="l", + linebreak="id", + unicodeslot=0x1B1D4, + }, + [0x1B1D5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D5", + direction="l", + linebreak="id", + unicodeslot=0x1B1D5, + }, + [0x1B1D6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D6", + direction="l", + linebreak="id", + unicodeslot=0x1B1D6, + }, + [0x1B1D7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D7", + direction="l", + linebreak="id", + unicodeslot=0x1B1D7, + }, + [0x1B1D8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D8", + direction="l", + linebreak="id", + unicodeslot=0x1B1D8, + }, + [0x1B1D9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1D9", + direction="l", + linebreak="id", + unicodeslot=0x1B1D9, + }, + [0x1B1DA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DA", + direction="l", + linebreak="id", + unicodeslot=0x1B1DA, + }, + [0x1B1DB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DB", + direction="l", + linebreak="id", + unicodeslot=0x1B1DB, + }, + [0x1B1DC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DC", + direction="l", + linebreak="id", + unicodeslot=0x1B1DC, + }, + [0x1B1DD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DD", + direction="l", + linebreak="id", + unicodeslot=0x1B1DD, + }, + [0x1B1DE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DE", + direction="l", + linebreak="id", + unicodeslot=0x1B1DE, + }, + [0x1B1DF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1DF", + direction="l", + linebreak="id", + unicodeslot=0x1B1DF, + }, + [0x1B1E0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E0", + direction="l", + linebreak="id", + unicodeslot=0x1B1E0, + }, + [0x1B1E1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E1", + direction="l", + linebreak="id", + unicodeslot=0x1B1E1, + }, + [0x1B1E2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E2", + direction="l", + linebreak="id", + unicodeslot=0x1B1E2, + }, + [0x1B1E3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E3", + direction="l", + linebreak="id", + unicodeslot=0x1B1E3, + }, + [0x1B1E4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E4", + direction="l", + linebreak="id", + unicodeslot=0x1B1E4, + }, + [0x1B1E5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E5", + direction="l", + linebreak="id", + unicodeslot=0x1B1E5, + }, + [0x1B1E6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E6", + direction="l", + linebreak="id", + unicodeslot=0x1B1E6, + }, + [0x1B1E7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E7", + direction="l", + linebreak="id", + unicodeslot=0x1B1E7, + }, + [0x1B1E8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E8", + direction="l", + linebreak="id", + unicodeslot=0x1B1E8, + }, + [0x1B1E9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1E9", + direction="l", + linebreak="id", + unicodeslot=0x1B1E9, + }, + [0x1B1EA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1EA", + direction="l", + linebreak="id", + unicodeslot=0x1B1EA, + }, + [0x1B1EB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1EB", + direction="l", + linebreak="id", + unicodeslot=0x1B1EB, + }, + [0x1B1EC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1EC", + direction="l", + linebreak="id", + unicodeslot=0x1B1EC, + }, + [0x1B1ED]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1ED", + direction="l", + linebreak="id", + unicodeslot=0x1B1ED, + }, + [0x1B1EE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1EE", + direction="l", + linebreak="id", + unicodeslot=0x1B1EE, + }, + [0x1B1EF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1EF", + direction="l", + linebreak="id", + unicodeslot=0x1B1EF, + }, + [0x1B1F0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F0", + direction="l", + linebreak="id", + unicodeslot=0x1B1F0, + }, + [0x1B1F1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F1", + direction="l", + linebreak="id", + unicodeslot=0x1B1F1, + }, + [0x1B1F2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F2", + direction="l", + linebreak="id", + unicodeslot=0x1B1F2, + }, + [0x1B1F3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F3", + direction="l", + linebreak="id", + unicodeslot=0x1B1F3, + }, + [0x1B1F4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F4", + direction="l", + linebreak="id", + unicodeslot=0x1B1F4, + }, + [0x1B1F5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F5", + direction="l", + linebreak="id", + unicodeslot=0x1B1F5, + }, + [0x1B1F6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F6", + direction="l", + linebreak="id", + unicodeslot=0x1B1F6, + }, + [0x1B1F7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F7", + direction="l", + linebreak="id", + unicodeslot=0x1B1F7, + }, + [0x1B1F8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F8", + direction="l", + linebreak="id", + unicodeslot=0x1B1F8, + }, + [0x1B1F9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1F9", + direction="l", + linebreak="id", + unicodeslot=0x1B1F9, + }, + [0x1B1FA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FA", + direction="l", + linebreak="id", + unicodeslot=0x1B1FA, + }, + [0x1B1FB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FB", + direction="l", + linebreak="id", + unicodeslot=0x1B1FB, + }, + [0x1B1FC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FC", + direction="l", + linebreak="id", + unicodeslot=0x1B1FC, + }, + [0x1B1FD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FD", + direction="l", + linebreak="id", + unicodeslot=0x1B1FD, + }, + [0x1B1FE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FE", + direction="l", + linebreak="id", + unicodeslot=0x1B1FE, + }, + [0x1B1FF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B1FF", + direction="l", + linebreak="id", + unicodeslot=0x1B1FF, + }, + [0x1B200]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B200", + direction="l", + linebreak="id", + unicodeslot=0x1B200, + }, + [0x1B201]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B201", + direction="l", + linebreak="id", + unicodeslot=0x1B201, + }, + [0x1B202]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B202", + direction="l", + linebreak="id", + unicodeslot=0x1B202, + }, + [0x1B203]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B203", + direction="l", + linebreak="id", + unicodeslot=0x1B203, + }, + [0x1B204]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B204", + direction="l", + linebreak="id", + unicodeslot=0x1B204, + }, + [0x1B205]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B205", + direction="l", + linebreak="id", + unicodeslot=0x1B205, + }, + [0x1B206]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B206", + direction="l", + linebreak="id", + unicodeslot=0x1B206, + }, + [0x1B207]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B207", + direction="l", + linebreak="id", + unicodeslot=0x1B207, + }, + [0x1B208]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B208", + direction="l", + linebreak="id", + unicodeslot=0x1B208, + }, + [0x1B209]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B209", + direction="l", + linebreak="id", + unicodeslot=0x1B209, + }, + [0x1B20A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20A", + direction="l", + linebreak="id", + unicodeslot=0x1B20A, + }, + [0x1B20B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20B", + direction="l", + linebreak="id", + unicodeslot=0x1B20B, + }, + [0x1B20C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20C", + direction="l", + linebreak="id", + unicodeslot=0x1B20C, + }, + [0x1B20D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20D", + direction="l", + linebreak="id", + unicodeslot=0x1B20D, + }, + [0x1B20E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20E", + direction="l", + linebreak="id", + unicodeslot=0x1B20E, + }, + [0x1B20F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B20F", + direction="l", + linebreak="id", + unicodeslot=0x1B20F, + }, + [0x1B210]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B210", + direction="l", + linebreak="id", + unicodeslot=0x1B210, + }, + [0x1B211]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B211", + direction="l", + linebreak="id", + unicodeslot=0x1B211, + }, + [0x1B212]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B212", + direction="l", + linebreak="id", + unicodeslot=0x1B212, + }, + [0x1B213]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B213", + direction="l", + linebreak="id", + unicodeslot=0x1B213, + }, + [0x1B214]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B214", + direction="l", + linebreak="id", + unicodeslot=0x1B214, + }, + [0x1B215]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B215", + direction="l", + linebreak="id", + unicodeslot=0x1B215, + }, + [0x1B216]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B216", + direction="l", + linebreak="id", + unicodeslot=0x1B216, + }, + [0x1B217]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B217", + direction="l", + linebreak="id", + unicodeslot=0x1B217, + }, + [0x1B218]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B218", + direction="l", + linebreak="id", + unicodeslot=0x1B218, + }, + [0x1B219]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B219", + direction="l", + linebreak="id", + unicodeslot=0x1B219, + }, + [0x1B21A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21A", + direction="l", + linebreak="id", + unicodeslot=0x1B21A, + }, + [0x1B21B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21B", + direction="l", + linebreak="id", + unicodeslot=0x1B21B, + }, + [0x1B21C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21C", + direction="l", + linebreak="id", + unicodeslot=0x1B21C, + }, + [0x1B21D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21D", + direction="l", + linebreak="id", + unicodeslot=0x1B21D, + }, + [0x1B21E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21E", + direction="l", + linebreak="id", + unicodeslot=0x1B21E, + }, + [0x1B21F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B21F", + direction="l", + linebreak="id", + unicodeslot=0x1B21F, + }, + [0x1B220]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B220", + direction="l", + linebreak="id", + unicodeslot=0x1B220, + }, + [0x1B221]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B221", + direction="l", + linebreak="id", + unicodeslot=0x1B221, + }, + [0x1B222]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B222", + direction="l", + linebreak="id", + unicodeslot=0x1B222, + }, + [0x1B223]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B223", + direction="l", + linebreak="id", + unicodeslot=0x1B223, + }, + [0x1B224]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B224", + direction="l", + linebreak="id", + unicodeslot=0x1B224, + }, + [0x1B225]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B225", + direction="l", + linebreak="id", + unicodeslot=0x1B225, + }, + [0x1B226]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B226", + direction="l", + linebreak="id", + unicodeslot=0x1B226, + }, + [0x1B227]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B227", + direction="l", + linebreak="id", + unicodeslot=0x1B227, + }, + [0x1B228]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B228", + direction="l", + linebreak="id", + unicodeslot=0x1B228, + }, + [0x1B229]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B229", + direction="l", + linebreak="id", + unicodeslot=0x1B229, + }, + [0x1B22A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22A", + direction="l", + linebreak="id", + unicodeslot=0x1B22A, + }, + [0x1B22B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22B", + direction="l", + linebreak="id", + unicodeslot=0x1B22B, + }, + [0x1B22C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22C", + direction="l", + linebreak="id", + unicodeslot=0x1B22C, + }, + [0x1B22D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22D", + direction="l", + linebreak="id", + unicodeslot=0x1B22D, + }, + [0x1B22E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22E", + direction="l", + linebreak="id", + unicodeslot=0x1B22E, + }, + [0x1B22F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B22F", + direction="l", + linebreak="id", + unicodeslot=0x1B22F, + }, + [0x1B230]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B230", + direction="l", + linebreak="id", + unicodeslot=0x1B230, + }, + [0x1B231]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B231", + direction="l", + linebreak="id", + unicodeslot=0x1B231, + }, + [0x1B232]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B232", + direction="l", + linebreak="id", + unicodeslot=0x1B232, + }, + [0x1B233]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B233", + direction="l", + linebreak="id", + unicodeslot=0x1B233, + }, + [0x1B234]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B234", + direction="l", + linebreak="id", + unicodeslot=0x1B234, + }, + [0x1B235]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B235", + direction="l", + linebreak="id", + unicodeslot=0x1B235, + }, + [0x1B236]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B236", + direction="l", + linebreak="id", + unicodeslot=0x1B236, + }, + [0x1B237]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B237", + direction="l", + linebreak="id", + unicodeslot=0x1B237, + }, + [0x1B238]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B238", + direction="l", + linebreak="id", + unicodeslot=0x1B238, + }, + [0x1B239]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B239", + direction="l", + linebreak="id", + unicodeslot=0x1B239, + }, + [0x1B23A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23A", + direction="l", + linebreak="id", + unicodeslot=0x1B23A, + }, + [0x1B23B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23B", + direction="l", + linebreak="id", + unicodeslot=0x1B23B, + }, + [0x1B23C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23C", + direction="l", + linebreak="id", + unicodeslot=0x1B23C, + }, + [0x1B23D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23D", + direction="l", + linebreak="id", + unicodeslot=0x1B23D, + }, + [0x1B23E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23E", + direction="l", + linebreak="id", + unicodeslot=0x1B23E, + }, + [0x1B23F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B23F", + direction="l", + linebreak="id", + unicodeslot=0x1B23F, + }, + [0x1B240]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B240", + direction="l", + linebreak="id", + unicodeslot=0x1B240, + }, + [0x1B241]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B241", + direction="l", + linebreak="id", + unicodeslot=0x1B241, + }, + [0x1B242]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B242", + direction="l", + linebreak="id", + unicodeslot=0x1B242, + }, + [0x1B243]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B243", + direction="l", + linebreak="id", + unicodeslot=0x1B243, + }, + [0x1B244]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B244", + direction="l", + linebreak="id", + unicodeslot=0x1B244, + }, + [0x1B245]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B245", + direction="l", + linebreak="id", + unicodeslot=0x1B245, + }, + [0x1B246]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B246", + direction="l", + linebreak="id", + unicodeslot=0x1B246, + }, + [0x1B247]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B247", + direction="l", + linebreak="id", + unicodeslot=0x1B247, + }, + [0x1B248]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B248", + direction="l", + linebreak="id", + unicodeslot=0x1B248, + }, + [0x1B249]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B249", + direction="l", + linebreak="id", + unicodeslot=0x1B249, + }, + [0x1B24A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24A", + direction="l", + linebreak="id", + unicodeslot=0x1B24A, + }, + [0x1B24B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24B", + direction="l", + linebreak="id", + unicodeslot=0x1B24B, + }, + [0x1B24C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24C", + direction="l", + linebreak="id", + unicodeslot=0x1B24C, + }, + [0x1B24D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24D", + direction="l", + linebreak="id", + unicodeslot=0x1B24D, + }, + [0x1B24E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24E", + direction="l", + linebreak="id", + unicodeslot=0x1B24E, + }, + [0x1B24F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B24F", + direction="l", + linebreak="id", + unicodeslot=0x1B24F, + }, + [0x1B250]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B250", + direction="l", + linebreak="id", + unicodeslot=0x1B250, + }, + [0x1B251]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B251", + direction="l", + linebreak="id", + unicodeslot=0x1B251, + }, + [0x1B252]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B252", + direction="l", + linebreak="id", + unicodeslot=0x1B252, + }, + [0x1B253]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B253", + direction="l", + linebreak="id", + unicodeslot=0x1B253, + }, + [0x1B254]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B254", + direction="l", + linebreak="id", + unicodeslot=0x1B254, + }, + [0x1B255]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B255", + direction="l", + linebreak="id", + unicodeslot=0x1B255, + }, + [0x1B256]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B256", + direction="l", + linebreak="id", + unicodeslot=0x1B256, + }, + [0x1B257]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B257", + direction="l", + linebreak="id", + unicodeslot=0x1B257, + }, + [0x1B258]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B258", + direction="l", + linebreak="id", + unicodeslot=0x1B258, + }, + [0x1B259]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B259", + direction="l", + linebreak="id", + unicodeslot=0x1B259, + }, + [0x1B25A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25A", + direction="l", + linebreak="id", + unicodeslot=0x1B25A, + }, + [0x1B25B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25B", + direction="l", + linebreak="id", + unicodeslot=0x1B25B, + }, + [0x1B25C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25C", + direction="l", + linebreak="id", + unicodeslot=0x1B25C, + }, + [0x1B25D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25D", + direction="l", + linebreak="id", + unicodeslot=0x1B25D, + }, + [0x1B25E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25E", + direction="l", + linebreak="id", + unicodeslot=0x1B25E, + }, + [0x1B25F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B25F", + direction="l", + linebreak="id", + unicodeslot=0x1B25F, + }, + [0x1B260]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B260", + direction="l", + linebreak="id", + unicodeslot=0x1B260, + }, + [0x1B261]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B261", + direction="l", + linebreak="id", + unicodeslot=0x1B261, + }, + [0x1B262]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B262", + direction="l", + linebreak="id", + unicodeslot=0x1B262, + }, + [0x1B263]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B263", + direction="l", + linebreak="id", + unicodeslot=0x1B263, + }, + [0x1B264]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B264", + direction="l", + linebreak="id", + unicodeslot=0x1B264, + }, + [0x1B265]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B265", + direction="l", + linebreak="id", + unicodeslot=0x1B265, + }, + [0x1B266]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B266", + direction="l", + linebreak="id", + unicodeslot=0x1B266, + }, + [0x1B267]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B267", + direction="l", + linebreak="id", + unicodeslot=0x1B267, + }, + [0x1B268]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B268", + direction="l", + linebreak="id", + unicodeslot=0x1B268, + }, + [0x1B269]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B269", + direction="l", + linebreak="id", + unicodeslot=0x1B269, + }, + [0x1B26A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26A", + direction="l", + linebreak="id", + unicodeslot=0x1B26A, + }, + [0x1B26B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26B", + direction="l", + linebreak="id", + unicodeslot=0x1B26B, + }, + [0x1B26C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26C", + direction="l", + linebreak="id", + unicodeslot=0x1B26C, + }, + [0x1B26D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26D", + direction="l", + linebreak="id", + unicodeslot=0x1B26D, + }, + [0x1B26E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26E", + direction="l", + linebreak="id", + unicodeslot=0x1B26E, + }, + [0x1B26F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B26F", + direction="l", + linebreak="id", + unicodeslot=0x1B26F, + }, + [0x1B270]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B270", + direction="l", + linebreak="id", + unicodeslot=0x1B270, + }, + [0x1B271]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B271", + direction="l", + linebreak="id", + unicodeslot=0x1B271, + }, + [0x1B272]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B272", + direction="l", + linebreak="id", + unicodeslot=0x1B272, + }, + [0x1B273]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B273", + direction="l", + linebreak="id", + unicodeslot=0x1B273, + }, + [0x1B274]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B274", + direction="l", + linebreak="id", + unicodeslot=0x1B274, + }, + [0x1B275]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B275", + direction="l", + linebreak="id", + unicodeslot=0x1B275, + }, + [0x1B276]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B276", + direction="l", + linebreak="id", + unicodeslot=0x1B276, + }, + [0x1B277]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B277", + direction="l", + linebreak="id", + unicodeslot=0x1B277, + }, + [0x1B278]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B278", + direction="l", + linebreak="id", + unicodeslot=0x1B278, + }, + [0x1B279]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B279", + direction="l", + linebreak="id", + unicodeslot=0x1B279, + }, + [0x1B27A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27A", + direction="l", + linebreak="id", + unicodeslot=0x1B27A, + }, + [0x1B27B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27B", + direction="l", + linebreak="id", + unicodeslot=0x1B27B, + }, + [0x1B27C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27C", + direction="l", + linebreak="id", + unicodeslot=0x1B27C, + }, + [0x1B27D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27D", + direction="l", + linebreak="id", + unicodeslot=0x1B27D, + }, + [0x1B27E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27E", + direction="l", + linebreak="id", + unicodeslot=0x1B27E, + }, + [0x1B27F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B27F", + direction="l", + linebreak="id", + unicodeslot=0x1B27F, + }, + [0x1B280]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B280", + direction="l", + linebreak="id", + unicodeslot=0x1B280, + }, + [0x1B281]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B281", + direction="l", + linebreak="id", + unicodeslot=0x1B281, + }, + [0x1B282]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B282", + direction="l", + linebreak="id", + unicodeslot=0x1B282, + }, + [0x1B283]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B283", + direction="l", + linebreak="id", + unicodeslot=0x1B283, + }, + [0x1B284]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B284", + direction="l", + linebreak="id", + unicodeslot=0x1B284, + }, + [0x1B285]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B285", + direction="l", + linebreak="id", + unicodeslot=0x1B285, + }, + [0x1B286]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B286", + direction="l", + linebreak="id", + unicodeslot=0x1B286, + }, + [0x1B287]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B287", + direction="l", + linebreak="id", + unicodeslot=0x1B287, + }, + [0x1B288]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B288", + direction="l", + linebreak="id", + unicodeslot=0x1B288, + }, + [0x1B289]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B289", + direction="l", + linebreak="id", + unicodeslot=0x1B289, + }, + [0x1B28A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28A", + direction="l", + linebreak="id", + unicodeslot=0x1B28A, + }, + [0x1B28B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28B", + direction="l", + linebreak="id", + unicodeslot=0x1B28B, + }, + [0x1B28C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28C", + direction="l", + linebreak="id", + unicodeslot=0x1B28C, + }, + [0x1B28D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28D", + direction="l", + linebreak="id", + unicodeslot=0x1B28D, + }, + [0x1B28E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28E", + direction="l", + linebreak="id", + unicodeslot=0x1B28E, + }, + [0x1B28F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B28F", + direction="l", + linebreak="id", + unicodeslot=0x1B28F, + }, + [0x1B290]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B290", + direction="l", + linebreak="id", + unicodeslot=0x1B290, + }, + [0x1B291]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B291", + direction="l", + linebreak="id", + unicodeslot=0x1B291, + }, + [0x1B292]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B292", + direction="l", + linebreak="id", + unicodeslot=0x1B292, + }, + [0x1B293]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B293", + direction="l", + linebreak="id", + unicodeslot=0x1B293, + }, + [0x1B294]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B294", + direction="l", + linebreak="id", + unicodeslot=0x1B294, + }, + [0x1B295]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B295", + direction="l", + linebreak="id", + unicodeslot=0x1B295, + }, + [0x1B296]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B296", + direction="l", + linebreak="id", + unicodeslot=0x1B296, + }, + [0x1B297]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B297", + direction="l", + linebreak="id", + unicodeslot=0x1B297, + }, + [0x1B298]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B298", + direction="l", + linebreak="id", + unicodeslot=0x1B298, + }, + [0x1B299]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B299", + direction="l", + linebreak="id", + unicodeslot=0x1B299, + }, + [0x1B29A]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29A", + direction="l", + linebreak="id", + unicodeslot=0x1B29A, + }, + [0x1B29B]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29B", + direction="l", + linebreak="id", + unicodeslot=0x1B29B, + }, + [0x1B29C]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29C", + direction="l", + linebreak="id", + unicodeslot=0x1B29C, + }, + [0x1B29D]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29D", + direction="l", + linebreak="id", + unicodeslot=0x1B29D, + }, + [0x1B29E]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29E", + direction="l", + linebreak="id", + unicodeslot=0x1B29E, + }, + [0x1B29F]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B29F", + direction="l", + linebreak="id", + unicodeslot=0x1B29F, + }, + [0x1B2A0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A0", + direction="l", + linebreak="id", + unicodeslot=0x1B2A0, + }, + [0x1B2A1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A1", + direction="l", + linebreak="id", + unicodeslot=0x1B2A1, + }, + [0x1B2A2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A2", + direction="l", + linebreak="id", + unicodeslot=0x1B2A2, + }, + [0x1B2A3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A3", + direction="l", + linebreak="id", + unicodeslot=0x1B2A3, + }, + [0x1B2A4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A4", + direction="l", + linebreak="id", + unicodeslot=0x1B2A4, + }, + [0x1B2A5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A5", + direction="l", + linebreak="id", + unicodeslot=0x1B2A5, + }, + [0x1B2A6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A6", + direction="l", + linebreak="id", + unicodeslot=0x1B2A6, + }, + [0x1B2A7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A7", + direction="l", + linebreak="id", + unicodeslot=0x1B2A7, + }, + [0x1B2A8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A8", + direction="l", + linebreak="id", + unicodeslot=0x1B2A8, + }, + [0x1B2A9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2A9", + direction="l", + linebreak="id", + unicodeslot=0x1B2A9, + }, + [0x1B2AA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AA", + direction="l", + linebreak="id", + unicodeslot=0x1B2AA, + }, + [0x1B2AB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AB", + direction="l", + linebreak="id", + unicodeslot=0x1B2AB, + }, + [0x1B2AC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AC", + direction="l", + linebreak="id", + unicodeslot=0x1B2AC, + }, + [0x1B2AD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AD", + direction="l", + linebreak="id", + unicodeslot=0x1B2AD, + }, + [0x1B2AE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AE", + direction="l", + linebreak="id", + unicodeslot=0x1B2AE, + }, + [0x1B2AF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2AF", + direction="l", + linebreak="id", + unicodeslot=0x1B2AF, + }, + [0x1B2B0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B0", + direction="l", + linebreak="id", + unicodeslot=0x1B2B0, + }, + [0x1B2B1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B1", + direction="l", + linebreak="id", + unicodeslot=0x1B2B1, + }, + [0x1B2B2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B2", + direction="l", + linebreak="id", + unicodeslot=0x1B2B2, + }, + [0x1B2B3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B3", + direction="l", + linebreak="id", + unicodeslot=0x1B2B3, + }, + [0x1B2B4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B4", + direction="l", + linebreak="id", + unicodeslot=0x1B2B4, + }, + [0x1B2B5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B5", + direction="l", + linebreak="id", + unicodeslot=0x1B2B5, + }, + [0x1B2B6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B6", + direction="l", + linebreak="id", + unicodeslot=0x1B2B6, + }, + [0x1B2B7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B7", + direction="l", + linebreak="id", + unicodeslot=0x1B2B7, + }, + [0x1B2B8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B8", + direction="l", + linebreak="id", + unicodeslot=0x1B2B8, + }, + [0x1B2B9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2B9", + direction="l", + linebreak="id", + unicodeslot=0x1B2B9, + }, + [0x1B2BA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BA", + direction="l", + linebreak="id", + unicodeslot=0x1B2BA, + }, + [0x1B2BB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BB", + direction="l", + linebreak="id", + unicodeslot=0x1B2BB, + }, + [0x1B2BC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BC", + direction="l", + linebreak="id", + unicodeslot=0x1B2BC, + }, + [0x1B2BD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BD", + direction="l", + linebreak="id", + unicodeslot=0x1B2BD, + }, + [0x1B2BE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BE", + direction="l", + linebreak="id", + unicodeslot=0x1B2BE, + }, + [0x1B2BF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2BF", + direction="l", + linebreak="id", + unicodeslot=0x1B2BF, + }, + [0x1B2C0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C0", + direction="l", + linebreak="id", + unicodeslot=0x1B2C0, + }, + [0x1B2C1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C1", + direction="l", + linebreak="id", + unicodeslot=0x1B2C1, + }, + [0x1B2C2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C2", + direction="l", + linebreak="id", + unicodeslot=0x1B2C2, + }, + [0x1B2C3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C3", + direction="l", + linebreak="id", + unicodeslot=0x1B2C3, + }, + [0x1B2C4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C4", + direction="l", + linebreak="id", + unicodeslot=0x1B2C4, + }, + [0x1B2C5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C5", + direction="l", + linebreak="id", + unicodeslot=0x1B2C5, + }, + [0x1B2C6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C6", + direction="l", + linebreak="id", + unicodeslot=0x1B2C6, + }, + [0x1B2C7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C7", + direction="l", + linebreak="id", + unicodeslot=0x1B2C7, + }, + [0x1B2C8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C8", + direction="l", + linebreak="id", + unicodeslot=0x1B2C8, + }, + [0x1B2C9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2C9", + direction="l", + linebreak="id", + unicodeslot=0x1B2C9, + }, + [0x1B2CA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CA", + direction="l", + linebreak="id", + unicodeslot=0x1B2CA, + }, + [0x1B2CB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CB", + direction="l", + linebreak="id", + unicodeslot=0x1B2CB, + }, + [0x1B2CC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CC", + direction="l", + linebreak="id", + unicodeslot=0x1B2CC, + }, + [0x1B2CD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CD", + direction="l", + linebreak="id", + unicodeslot=0x1B2CD, + }, + [0x1B2CE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CE", + direction="l", + linebreak="id", + unicodeslot=0x1B2CE, + }, + [0x1B2CF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2CF", + direction="l", + linebreak="id", + unicodeslot=0x1B2CF, + }, + [0x1B2D0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D0", + direction="l", + linebreak="id", + unicodeslot=0x1B2D0, + }, + [0x1B2D1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D1", + direction="l", + linebreak="id", + unicodeslot=0x1B2D1, + }, + [0x1B2D2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D2", + direction="l", + linebreak="id", + unicodeslot=0x1B2D2, + }, + [0x1B2D3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D3", + direction="l", + linebreak="id", + unicodeslot=0x1B2D3, + }, + [0x1B2D4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D4", + direction="l", + linebreak="id", + unicodeslot=0x1B2D4, + }, + [0x1B2D5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D5", + direction="l", + linebreak="id", + unicodeslot=0x1B2D5, + }, + [0x1B2D6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D6", + direction="l", + linebreak="id", + unicodeslot=0x1B2D6, + }, + [0x1B2D7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D7", + direction="l", + linebreak="id", + unicodeslot=0x1B2D7, + }, + [0x1B2D8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D8", + direction="l", + linebreak="id", + unicodeslot=0x1B2D8, + }, + [0x1B2D9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2D9", + direction="l", + linebreak="id", + unicodeslot=0x1B2D9, + }, + [0x1B2DA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DA", + direction="l", + linebreak="id", + unicodeslot=0x1B2DA, + }, + [0x1B2DB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DB", + direction="l", + linebreak="id", + unicodeslot=0x1B2DB, + }, + [0x1B2DC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DC", + direction="l", + linebreak="id", + unicodeslot=0x1B2DC, + }, + [0x1B2DD]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DD", + direction="l", + linebreak="id", + unicodeslot=0x1B2DD, + }, + [0x1B2DE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DE", + direction="l", + linebreak="id", + unicodeslot=0x1B2DE, + }, + [0x1B2DF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2DF", + direction="l", + linebreak="id", + unicodeslot=0x1B2DF, + }, + [0x1B2E0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E0", + direction="l", + linebreak="id", + unicodeslot=0x1B2E0, + }, + [0x1B2E1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E1", + direction="l", + linebreak="id", + unicodeslot=0x1B2E1, + }, + [0x1B2E2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E2", + direction="l", + linebreak="id", + unicodeslot=0x1B2E2, + }, + [0x1B2E3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E3", + direction="l", + linebreak="id", + unicodeslot=0x1B2E3, + }, + [0x1B2E4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E4", + direction="l", + linebreak="id", + unicodeslot=0x1B2E4, + }, + [0x1B2E5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E5", + direction="l", + linebreak="id", + unicodeslot=0x1B2E5, + }, + [0x1B2E6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E6", + direction="l", + linebreak="id", + unicodeslot=0x1B2E6, + }, + [0x1B2E7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E7", + direction="l", + linebreak="id", + unicodeslot=0x1B2E7, + }, + [0x1B2E8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E8", + direction="l", + linebreak="id", + unicodeslot=0x1B2E8, + }, + [0x1B2E9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2E9", + direction="l", + linebreak="id", + unicodeslot=0x1B2E9, + }, + [0x1B2EA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2EA", + direction="l", + linebreak="id", + unicodeslot=0x1B2EA, + }, + [0x1B2EB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2EB", + direction="l", + linebreak="id", + unicodeslot=0x1B2EB, + }, + [0x1B2EC]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2EC", + direction="l", + linebreak="id", + unicodeslot=0x1B2EC, + }, + [0x1B2ED]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2ED", + direction="l", + linebreak="id", + unicodeslot=0x1B2ED, + }, + [0x1B2EE]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2EE", + direction="l", + linebreak="id", + unicodeslot=0x1B2EE, + }, + [0x1B2EF]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2EF", + direction="l", + linebreak="id", + unicodeslot=0x1B2EF, + }, + [0x1B2F0]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F0", + direction="l", + linebreak="id", + unicodeslot=0x1B2F0, + }, + [0x1B2F1]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F1", + direction="l", + linebreak="id", + unicodeslot=0x1B2F1, + }, + [0x1B2F2]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F2", + direction="l", + linebreak="id", + unicodeslot=0x1B2F2, + }, + [0x1B2F3]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F3", + direction="l", + linebreak="id", + unicodeslot=0x1B2F3, + }, + [0x1B2F4]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F4", + direction="l", + linebreak="id", + unicodeslot=0x1B2F4, + }, + [0x1B2F5]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F5", + direction="l", + linebreak="id", + unicodeslot=0x1B2F5, + }, + [0x1B2F6]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F6", + direction="l", + linebreak="id", + unicodeslot=0x1B2F6, + }, + [0x1B2F7]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F7", + direction="l", + linebreak="id", + unicodeslot=0x1B2F7, + }, + [0x1B2F8]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F8", + direction="l", + linebreak="id", + unicodeslot=0x1B2F8, + }, + [0x1B2F9]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2F9", + direction="l", + linebreak="id", + unicodeslot=0x1B2F9, + }, + [0x1B2FA]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2FA", + direction="l", + linebreak="id", + unicodeslot=0x1B2FA, + }, + [0x1B2FB]={ + category="lo", + cjkwd="w", + description="NUSHU CHARACTER-1B2FB", + direction="l", + linebreak="id", + unicodeslot=0x1B2FB, + }, [0x1BC00]={ category="lo", description="DUPLOYAN LETTER H", @@ -222452,6 +229794,54 @@ characters.data={ specials={ "circle", 0x53EF }, unicodeslot=0x1F251, }, + [0x1F260]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR FU", + direction="on", + linebreak="id", + unicodeslot=0x1F260, + }, + [0x1F261]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR LU", + direction="on", + linebreak="id", + unicodeslot=0x1F261, + }, + [0x1F262]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR SHOU", + direction="on", + linebreak="id", + unicodeslot=0x1F262, + }, + [0x1F263]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR XI", + direction="on", + linebreak="id", + unicodeslot=0x1F263, + }, + [0x1F264]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR SHUANGXI", + direction="on", + linebreak="id", + unicodeslot=0x1F264, + }, + [0x1F265]={ + category="so", + cjkwd="w", + description="ROUNDED SYMBOL FOR CAI", + direction="on", + linebreak="id", + unicodeslot=0x1F265, + }, [0x1F300]={ category="so", cjkwd="w", @@ -224008,7 +231398,7 @@ characters.data={ cjkwd="w", description="SNOWBOARDER", direction="on", - linebreak="id", + linebreak="eb", unicodeslot=0x1F3C2, }, [0x1F3C3]={ @@ -224048,7 +231438,7 @@ characters.data={ cjkwd="w", description="HORSE RACING", direction="on", - linebreak="id", + linebreak="eb", unicodeslot=0x1F3C7, }, [0x1F3C8]={ @@ -224087,7 +231477,7 @@ characters.data={ category="so", description="GOLFER", direction="on", - linebreak="id", + linebreak="eb", unicodeslot=0x1F3CC, variants=variants_emoji, }, @@ -227468,7 +234858,7 @@ characters.data={ category="so", description="MAN IN BUSINESS SUIT LEVITATING", direction="on", - linebreak="id", + linebreak="eb", unicodeslot=0x1F574, variants=variants_emoji, }, @@ -230074,7 +237464,7 @@ characters.data={ cjkwd="w", description="SLEEPING ACCOMMODATION", direction="on", - linebreak="id", + linebreak="eb", unicodeslot=0x1F6CC, }, [0x1F6CD]={ @@ -230127,6 +237517,20 @@ characters.data={ synonyms={ "shopping cart" }, unicodeslot=0x1F6D2, }, + [0x1F6D3]={ + category="so", + description="STUPA", + direction="on", + linebreak="id", + unicodeslot=0x1F6D3, + }, + [0x1F6D4]={ + category="so", + description="PAGODA", + direction="on", + linebreak="id", + unicodeslot=0x1F6D4, + }, [0x1F6E0]={ category="so", description="HAMMER AND WRENCH", @@ -230281,6 +237685,22 @@ characters.data={ linebreak="id", unicodeslot=0x1F6F6, }, + [0x1F6F7]={ + category="so", + cjkwd="w", + description="SLED", + direction="on", + linebreak="id", + unicodeslot=0x1F6F7, + }, + [0x1F6F8]={ + category="so", + cjkwd="w", + description="FLYING SAUCER", + direction="on", + linebreak="id", + unicodeslot=0x1F6F8, + }, [0x1F700]={ category="so", description="ALCHEMICAL SYMBOL FOR QUINTESSENCE", @@ -232725,6 +240145,90 @@ characters.data={ linebreak="al", unicodeslot=0x1F8AD, }, + [0x1F900]={ + category="so", + description="CIRCLED CROSS FORMEE WITH FOUR DOTS", + direction="on", + linebreak="al", + unicodeslot=0x1F900, + }, + [0x1F901]={ + category="so", + description="CIRCLED CROSS FORMEE WITH TWO DOTS", + direction="on", + linebreak="al", + unicodeslot=0x1F901, + }, + [0x1F902]={ + category="so", + description="CIRCLED CROSS FORMEE", + direction="on", + linebreak="al", + unicodeslot=0x1F902, + }, + [0x1F903]={ + category="so", + description="LEFT HALF CIRCLE WITH FOUR DOTS", + direction="on", + linebreak="al", + unicodeslot=0x1F903, + }, + [0x1F904]={ + category="so", + description="LEFT HALF CIRCLE WITH THREE DOTS", + direction="on", + linebreak="al", + unicodeslot=0x1F904, + }, + [0x1F905]={ + category="so", + description="LEFT HALF CIRCLE WITH TWO DOTS", + direction="on", + linebreak="al", + unicodeslot=0x1F905, + }, + [0x1F906]={ + category="so", + description="LEFT HALF CIRCLE WITH DOT", + direction="on", + linebreak="al", + unicodeslot=0x1F906, + }, + [0x1F907]={ + category="so", + description="LEFT HALF CIRCLE", + direction="on", + linebreak="al", + unicodeslot=0x1F907, + }, + [0x1F908]={ + category="so", + description="DOWNWARD FACING HOOK", + direction="on", + linebreak="al", + unicodeslot=0x1F908, + }, + [0x1F909]={ + category="so", + description="DOWNWARD FACING NOTCHED HOOK", + direction="on", + linebreak="al", + unicodeslot=0x1F909, + }, + [0x1F90A]={ + category="so", + description="DOWNWARD FACING HOOK WITH DOT", + direction="on", + linebreak="al", + unicodeslot=0x1F90A, + }, + [0x1F90B]={ + category="so", + description="DOWNWARD FACING NOTCHED HOOK WITH DOT", + direction="on", + linebreak="al", + unicodeslot=0x1F90B, + }, [0x1F910]={ category="so", cjkwd="w", @@ -232834,7 +240338,7 @@ characters.data={ cjkwd="w", description="HANDSHAKE", direction="on", - linebreak="eb", + linebreak="id", unicodeslot=0x1F91D, }, [0x1F91E]={ @@ -232846,6 +240350,15 @@ characters.data={ synonyms={ "crossed fingers", "fingers crossed" }, unicodeslot=0x1F91E, }, + [0x1F91F]={ + category="so", + cjkwd="w", + description="I LOVE YOU HAND SIGN", + direction="on", + linebreak="eb", + synonyms={ "hand sign love" }, + unicodeslot=0x1F91F, + }, [0x1F920]={ category="so", cjkwd="w", @@ -232911,6 +240424,70 @@ characters.data={ linebreak="id", unicodeslot=0x1F927, }, + [0x1F928]={ + category="so", + cjkwd="w", + description="FACE WITH ONE EYEBROW RAISED", + direction="on", + linebreak="id", + unicodeslot=0x1F928, + }, + [0x1F929]={ + category="so", + cjkwd="w", + description="GRINNING FACE WITH STAR EYES", + direction="on", + linebreak="id", + unicodeslot=0x1F929, + }, + [0x1F92A]={ + category="so", + cjkwd="w", + description="GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE", + direction="on", + linebreak="id", + unicodeslot=0x1F92A, + }, + [0x1F92B]={ + category="so", + cjkwd="w", + description="FACE WITH FINGER COVERING CLOSED LIPS", + direction="on", + linebreak="id", + unicodeslot=0x1F92B, + }, + [0x1F92C]={ + category="so", + cjkwd="w", + description="SERIOUS FACE WITH SYMBOLS COVERING MOUTH", + direction="on", + linebreak="id", + unicodeslot=0x1F92C, + }, + [0x1F92D]={ + category="so", + cjkwd="w", + description="SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH", + direction="on", + linebreak="id", + unicodeslot=0x1F92D, + }, + [0x1F92E]={ + category="so", + cjkwd="w", + description="FACE WITH OPEN MOUTH VOMITING", + direction="on", + linebreak="id", + unicodeslot=0x1F92E, + }, + [0x1F92F]={ + category="so", + cjkwd="w", + description="SHOCKED FACE WITH EXPLODING HEAD", + direction="on", + linebreak="id", + unicodeslot=0x1F92F, + }, [0x1F930]={ category="so", cjkwd="w", @@ -232919,6 +240496,22 @@ characters.data={ linebreak="eb", unicodeslot=0x1F930, }, + [0x1F931]={ + category="so", + cjkwd="w", + description="BREAST-FEEDING", + direction="on", + linebreak="eb", + unicodeslot=0x1F931, + }, + [0x1F932]={ + category="so", + cjkwd="w", + description="PALMS UP TOGETHER", + direction="on", + linebreak="eb", + unicodeslot=0x1F932, + }, [0x1F933]={ category="so", cjkwd="w", @@ -232996,7 +240589,7 @@ characters.data={ cjkwd="w", description="WRESTLERS", direction="on", - linebreak="eb", + linebreak="id", unicodeslot=0x1F93C, }, [0x1F93D]={ @@ -233114,6 +240707,14 @@ characters.data={ linebreak="id", unicodeslot=0x1F94B, }, + [0x1F94C]={ + category="so", + cjkwd="w", + description="CURLING STONE", + direction="on", + linebreak="id", + unicodeslot=0x1F94C, + }, [0x1F950]={ category="so", cjkwd="w", @@ -233235,6 +240836,110 @@ characters.data={ linebreak="id", unicodeslot=0x1F95E, }, + [0x1F95F]={ + category="so", + cjkwd="w", + description="DUMPLING", + direction="on", + linebreak="id", + unicodeslot=0x1F95F, + }, + [0x1F960]={ + category="so", + cjkwd="w", + description="FORTUNE COOKIE", + direction="on", + linebreak="id", + unicodeslot=0x1F960, + }, + [0x1F961]={ + category="so", + cjkwd="w", + description="TAKEOUT BOX", + direction="on", + linebreak="id", + unicodeslot=0x1F961, + }, + [0x1F962]={ + category="so", + cjkwd="w", + description="CHOPSTICKS", + direction="on", + linebreak="id", + unicodeslot=0x1F962, + }, + [0x1F963]={ + category="so", + cjkwd="w", + description="BOWL WITH SPOON", + direction="on", + linebreak="id", + unicodeslot=0x1F963, + }, + [0x1F964]={ + category="so", + cjkwd="w", + description="CUP WITH STRAW", + direction="on", + linebreak="id", + unicodeslot=0x1F964, + }, + [0x1F965]={ + category="so", + cjkwd="w", + description="COCONUT", + direction="on", + linebreak="id", + unicodeslot=0x1F965, + }, + [0x1F966]={ + category="so", + cjkwd="w", + description="BROCCOLI", + direction="on", + linebreak="id", + unicodeslot=0x1F966, + }, + [0x1F967]={ + category="so", + cjkwd="w", + description="PIE", + direction="on", + linebreak="id", + unicodeslot=0x1F967, + }, + [0x1F968]={ + category="so", + cjkwd="w", + description="PRETZEL", + direction="on", + linebreak="id", + unicodeslot=0x1F968, + }, + [0x1F969]={ + category="so", + cjkwd="w", + description="CUT OF MEAT", + direction="on", + linebreak="id", + unicodeslot=0x1F969, + }, + [0x1F96A]={ + category="so", + cjkwd="w", + description="SANDWICH", + direction="on", + linebreak="id", + unicodeslot=0x1F96A, + }, + [0x1F96B]={ + category="so", + cjkwd="w", + description="CANNED FOOD", + direction="on", + linebreak="id", + unicodeslot=0x1F96B, + }, [0x1F980]={ category="so", cjkwd="w", @@ -233379,6 +241084,55 @@ characters.data={ linebreak="id", unicodeslot=0x1F991, }, + [0x1F992]={ + category="so", + cjkwd="w", + description="GIRAFFE FACE", + direction="on", + linebreak="id", + unicodeslot=0x1F992, + }, + [0x1F993]={ + category="so", + cjkwd="w", + description="ZEBRA FACE", + direction="on", + linebreak="id", + unicodeslot=0x1F993, + }, + [0x1F994]={ + category="so", + cjkwd="w", + description="HEDGEHOG", + direction="on", + linebreak="id", + unicodeslot=0x1F994, + }, + [0x1F995]={ + category="so", + cjkwd="w", + description="SAUROPOD", + direction="on", + linebreak="id", + unicodeslot=0x1F995, + }, + [0x1F996]={ + category="so", + cjkwd="w", + description="T-REX", + direction="on", + linebreak="id", + synonyms={ "tyrannosaurus rex" }, + unicodeslot=0x1F996, + }, + [0x1F997]={ + category="so", + cjkwd="w", + description="CRICKET", + direction="on", + linebreak="id", + unicodeslot=0x1F997, + }, [0x1F9C0]={ category="so", cjkwd="w", @@ -233387,6 +241141,190 @@ characters.data={ linebreak="id", unicodeslot=0x1F9C0, }, + [0x1F9D0]={ + category="so", + cjkwd="w", + description="FACE WITH MONOCLE", + direction="on", + linebreak="id", + unicodeslot=0x1F9D0, + }, + [0x1F9D1]={ + category="so", + cjkwd="w", + description="ADULT", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D1, + }, + [0x1F9D2]={ + category="so", + cjkwd="w", + description="CHILD", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D2, + }, + [0x1F9D3]={ + category="so", + cjkwd="w", + description="OLDER ADULT", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D3, + }, + [0x1F9D4]={ + category="so", + cjkwd="w", + description="BEARDED PERSON", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D4, + }, + [0x1F9D5]={ + category="so", + cjkwd="w", + description="PERSON WITH HEADSCARF", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D5, + }, + [0x1F9D6]={ + category="so", + cjkwd="w", + description="PERSON IN STEAMY ROOM", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D6, + }, + [0x1F9D7]={ + category="so", + cjkwd="w", + description="PERSON CLIMBING", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D7, + }, + [0x1F9D8]={ + category="so", + cjkwd="w", + description="PERSON IN LOTUS POSITION", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D8, + }, + [0x1F9D9]={ + category="so", + cjkwd="w", + description="MAGE", + direction="on", + linebreak="eb", + unicodeslot=0x1F9D9, + }, + [0x1F9DA]={ + category="so", + cjkwd="w", + description="FAIRY", + direction="on", + linebreak="eb", + unicodeslot=0x1F9DA, + }, + [0x1F9DB]={ + category="so", + cjkwd="w", + description="VAMPIRE", + direction="on", + linebreak="eb", + unicodeslot=0x1F9DB, + }, + [0x1F9DC]={ + category="so", + cjkwd="w", + description="MERPERSON", + direction="on", + linebreak="eb", + unicodeslot=0x1F9DC, + }, + [0x1F9DD]={ + category="so", + cjkwd="w", + description="ELF", + direction="on", + linebreak="eb", + unicodeslot=0x1F9DD, + }, + [0x1F9DE]={ + category="so", + cjkwd="w", + description="GENIE", + direction="on", + linebreak="id", + unicodeslot=0x1F9DE, + }, + [0x1F9DF]={ + category="so", + cjkwd="w", + description="ZOMBIE", + direction="on", + linebreak="id", + unicodeslot=0x1F9DF, + }, + [0x1F9E0]={ + category="so", + cjkwd="w", + description="BRAIN", + direction="on", + linebreak="id", + unicodeslot=0x1F9E0, + }, + [0x1F9E1]={ + category="so", + cjkwd="w", + description="ORANGE HEART", + direction="on", + linebreak="id", + unicodeslot=0x1F9E1, + }, + [0x1F9E2]={ + category="so", + cjkwd="w", + description="BILLED CAP", + direction="on", + linebreak="id", + unicodeslot=0x1F9E2, + }, + [0x1F9E3]={ + category="so", + cjkwd="w", + description="SCARF", + direction="on", + linebreak="id", + unicodeslot=0x1F9E3, + }, + [0x1F9E4]={ + category="so", + cjkwd="w", + description="GLOVES", + direction="on", + linebreak="id", + unicodeslot=0x1F9E4, + }, + [0x1F9E5]={ + category="so", + cjkwd="w", + description="COAT", + direction="on", + linebreak="id", + unicodeslot=0x1F9E5, + }, + [0x1F9E6]={ + category="so", + cjkwd="w", + description="SOCKS", + direction="on", + linebreak="id", + unicodeslot=0x1F9E6, + }, [0x2F800]={ category="lo", cjkwd="w", diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua index 8fe852b58..07fb604c1 100644 --- a/tex/context/base/mkiv/char-ini.lua +++ b/tex/context/base/mkiv/char-ini.lua @@ -233,6 +233,7 @@ local blocks = allocate { ["cjkunifiedideographsextensionc"] = { first = 0x2A700, last = 0x2B73F, description = "CJK Unified Ideographs Extension C" }, ["cjkunifiedideographsextensiond"] = { first = 0x2B740, last = 0x2B81F, description = "CJK Unified Ideographs Extension D" }, ["cjkunifiedideographsextensione"] = { first = 0x2B820, last = 0x2CEAF, description = "CJK Unified Ideographs Extension E" }, + ["cjkunifiedideographsextensionf"] = { first = 0x2CEB0, last = 0x2EBEF, description = "CJK Unified Ideographs Extension F" }, ["combiningdiacriticalmarks"] = { first = 0x00300, last = 0x0036F, description = "Combining Diacritical Marks" }, ["combiningdiacriticalmarksextended"] = { first = 0x01AB0, last = 0x01AFF, description = "Combining Diacritical Marks Extended" }, ["combiningdiacriticalmarksforsymbols"] = { first = 0x020D0, last = 0x020FF, description = "Combining Diacritical Marks for Symbols" }, @@ -328,6 +329,7 @@ local blocks = allocate { ["ipaextensions"] = { first = 0x00250, last = 0x002AF, description = "IPA Extensions" }, ["javanese"] = { first = 0x0A980, last = 0x0A9DF, description = "Javanese" }, ["kaithi"] = { first = 0x11080, last = 0x110CF, description = "Kaithi" }, + ["kanaextendeda"] = { first = 0x1B100, last = 0x1B12F, description = "Kana Extended-A" }, ["kanasupplement"] = { first = 0x1B000, last = 0x1B0FF, description = "Kana Supplement" }, ["kanbun"] = { first = 0x03190, last = 0x0319F, description = "Kanbun" }, ["kangxiradicals"] = { first = 0x02F00, last = 0x02FDF, description = "Kangxi Radicals" }, @@ -384,6 +386,7 @@ local blocks = allocate { ["mandaic"] = { first = 0x00840, last = 0x0085F, otf="mand", description = "Mandaic" }, ["manichaean"] = { first = 0x10AC0, last = 0x10AFF, description = "Manichaean" }, ["marchen"] = { first = 0x11C70, last = 0x11CBF, description = "Marchen" }, + ["masaramgondi"] = { first = 0x11D00, last = 0x11D5F, description = "Masaram Gondi" }, ["mathematicalalphanumericsymbols"] = { first = 0x1D400, last = 0x1D7FF, math = true, description = "Mathematical Alphanumeric Symbols" }, ["mathematicaloperators"] = { first = 0x02200, last = 0x022FF, math = true, description = "Mathematical Operators" }, ["meeteimayek"] = { first = 0x0ABC0, last = 0x0ABFF, description = "Meetei Mayek" }, @@ -413,6 +416,7 @@ local blocks = allocate { ["newtailue"] = { first = 0x01980, last = 0x019DF, description = "New Tai Lue" }, ["nko"] = { first = 0x007C0, last = 0x007FF, otf="nko", description = "NKo" }, ["numberforms"] = { first = 0x02150, last = 0x0218F, description = "Number Forms" }, + ["nushu"] = { first = 0x1B170, last = 0x1B2FF, description = "Nushu" }, ["ogham"] = { first = 0x01680, last = 0x0169F, otf="ogam", description = "Ogham" }, ["olchiki"] = { first = 0x01C50, last = 0x01C7F, description = "Ol Chiki" }, ["oldhungarian"] = { first = 0x10C80, last = 0x10CFF, description = "Old Hungarian" }, @@ -451,6 +455,7 @@ local blocks = allocate { ["sinhalaarchaicnumbers"] = { first = 0x111E0, last = 0x111FF, description = "Sinhala Archaic Numbers" }, ["smallformvariants"] = { first = 0x0FE50, last = 0x0FE6F, description = "Small Form Variants" }, ["sorasompeng"] = { first = 0x110D0, last = 0x110FF, description = "Sora Sompeng" }, + ["soyombo"] = { first = 0x11A50, last = 0x11AAF, description = "Soyombo" }, ["spacingmodifierletters"] = { first = 0x002B0, last = 0x002FF, description = "Spacing Modifier Letters" }, ["specials"] = { first = 0x0FFF0, last = 0x0FFFF, description = "Specials" }, ["sundanese"] = { first = 0x01B80, last = 0x01BBF, description = "Sundanese" }, @@ -467,6 +472,7 @@ local blocks = allocate { ["suttonsignwriting"] = { first = 0x1D800, last = 0x1DAAF, description = "Sutton SignWriting" }, ["sylotinagri"] = { first = 0x0A800, last = 0x0A82F, otf="sylo", description = "Syloti Nagri" }, ["syriac"] = { first = 0x00700, last = 0x0074F, otf="syrc", description = "Syriac" }, + ["syriacsupplement"] = { first = 0x00860, last = 0x0086F, description = "Syriac Supplement" }, ["tagalog"] = { first = 0x01700, last = 0x0171F, otf="tglg", description = "Tagalog" }, ["tagbanwa"] = { first = 0x01760, last = 0x0177F, otf="tagb", description = "Tagbanwa" }, ["tags"] = { first = 0xE0000, last = 0xE007F, description = "Tags" }, @@ -517,6 +523,7 @@ local blocks = allocate { ["yijinghexagramsymbols"] = { first = 0x04DC0, last = 0x04DFF, otf="yi", description = "Yijing Hexagram Symbols" }, ["yiradicals"] = { first = 0x0A490, last = 0x0A4CF, otf="yi", description = "Yi Radicals" }, ["yisyllables"] = { first = 0x0A000, last = 0x0A48F, otf="yi", description = "Yi Syllables" }, + ["zanabazarsquare"] = { first = 0x11A00, last = 0x11A4F, description = "Zanabazar Square" }, } characters.blocks = blocks @@ -1544,35 +1551,35 @@ local cache = setmetatable({ }, { __mode = "k" } ) if h then return h end -local h = cache[name] -if h then - return h -elseif h == false then - return -end + local h = cache[name] + if h then + return h + elseif h == false then + return + end -- expand shortcuts local name = lpegmatch(pattern_0,name) or name -- expand some 25K variants local h = lpegmatch(p_special,name) if h then -cache[name] = h + cache[name] = h return h end -- simplify local s = lpegmatch(pattern_1,name) local h = hash[s] if h then -cache[name] = h + cache[name] = h return h end -- simplify local s = lpegmatch(pattern_2,name) local h = hash[s] if h then -cache[name] = h + cache[name] = h return h end -cache[name] = false + cache[name] = false end function emoji.known() diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index bb8da4b5d..03e69e0a5 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.06.21 23:03} +\newcontextversion{2017.06.27 18:05} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 9c7b16b7d..e7ad05eb5 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -41,7 +41,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2017.06.21 23:03} +\edef\contextversion{2017.06.27 18:05} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/font-ctx.lua b/tex/context/base/mkiv/font-ctx.lua index f2b3b001c..8f7eed4b9 100644 --- a/tex/context/base/mkiv/font-ctx.lua +++ b/tex/context/base/mkiv/font-ctx.lua @@ -2543,25 +2543,7 @@ end -- a fontkern plug: -do - - local kerncodes = nodes.kerncodes - local copy_node = nuts.copy - local kern = nuts.pool.register(nuts.pool.kern()) - - setattr(kern,attributes.private('fontkern'),1) -- no gain in setprop as it's shared - - nodes.injections.installnewkern(function(k) - local c = copy_node(kern) - setfield(c,"kern",k) - return c - end) - - directives.register("fonts.injections.fontkern", function(v) - setsubtype(kern,v and kerncodes.fontkern or kerncodes.userkern) - end) - -end +nodes.injections.installnewkern(nuts.pool.fontkern) do diff --git a/tex/context/base/mkiv/font-ext.lua b/tex/context/base/mkiv/font-ext.lua index da629c045..85e39e877 100644 --- a/tex/context/base/mkiv/font-ext.lua +++ b/tex/context/base/mkiv/font-ext.lua @@ -7,9 +7,9 @@ if not modules then modules = { } end modules ['font-ext'] = { } local next, type, tonumber = next, type, tonumber -local formatters = string.formatters -local byte = string.byte +local byte, find, formatters = string.byte, string.find, string.formatters local utfchar = utf.char +local sortedhash, sortedkeys, sort = table.sortedhash, table.sortedkeys, table.sort local context = context local fonts = fonts @@ -1350,3 +1350,162 @@ do } end + +do + + -- This is a rather special test-only feature that I added for the sake of testing + -- Idris's husayni. We wanted to know if uniscribe obeys the order of lookups in a + -- font, in spite of what the description of handling arabic suggests. And indeed, + -- mixed-in lookups of other features (like all these ss* in husayni) are handled + -- the same in context as in uniscribe. If one sets reorderlookups=arab then we sort + -- according to the "assumed" order so e.g. the ss* move to after the standard + -- features. The observed difference in rendering is an indication that uniscribe is + -- quite faithful to the font (while e.g. tests with the hb plugin demonstrate some + -- interference, apart from some hard coded init etc expectations). Anyway, it means + -- that we're okay with the (generic) node processor. A pitfall is that in context + -- we can actually control more, so we can trigger an analyze pass with e.g. + -- dflt/dflt while the libraries depend on the script settings for that. Uniscribe + -- probably also parses the string and when seeing arabic will follow a different + -- code path, although it seems to treat all features equal. + + local trace_reorder = trackers.register("fonts.reorderlookups",function(v) trace_reorder = v end) + local report_reorder = logs.reporter("fonts","reorder") + + local vectors = { } + + vectors.arab = { + gsub = { + ccmp = 1, + init = 2, + medi = 3, + fina = 4, + isol = 5, + rlig = 6, + rclt = 7, + calt = 8, + liga = 9, + dlig = 10, + cswh = 11, + mset = 12, + }, + gpos = { + curs = 1, + kern = 2, + mark = 3, + mkmk = 4, + }, + } + + function otf.reorderlookups(tfmdata,vector) + local order = vectors[vector] + if not order then + return + end + local oldsequences = tfmdata.resources.sequences + if oldsequences then + local sequences = { } + for i=1,#oldsequences do + sequences[i] = oldsequences[i] + end + for i=1,#sequences do + local s = sequences[i] + local features = s.features + local kind = s.type + local index = s.index + if features then + local when + local what + for feature in sortedhash(features) do + if not what then + what = find(kind,"^gsub") and "gsub" or "gpos" + end + local newwhen = order[what][feature] + if not newwhen then + -- skip + elseif not when then + when = newwhen + elseif newwhen < when then + when = newwhen + end + end + s.ondex = s.index + s.index = i + s.what = what == "gsub" and 1 or 2 + s.when = when or 99 + else + s.ondex = s.index + s.index = i + s.what = 1 + s.when = 99 + end + end + sort(sequences,function(a,b) + local what_a = a.what + local what_b = b.what + if what_a ~= what_b then + return a.index < b.index + end + local when_a = a.when + local when_b = b.when + if when_a == when_b then + return a.index < b.index + else + return when_a < when_b + end + end) + local swapped = 0 + for i=1,#sequences do + local sequence = sequences[i] + local features = sequence.features + if features then + local index = sequence.index + if index ~= i then + swapped = swapped + 1 + end + if trace_reorder then + if swapped == 1 then + report_reorder() + report_reorder("start swapping lookups in font %!font:name!",tfmdata) + report_reorder() + report_reorder("gsub order: % t",table.swapped(order.gsub)) + report_reorder("gpos order: % t",table.swapped(order.gpos)) + report_reorder() + end + report_reorder("%03i : lookup %03i, type %s, sorted %2i, moved %s, % t", + i,index,sequence.what == 1 and "gsub" or "gpos",sequence.when or 99, + (index > i and "-") or (index < i and "+") or "=",sortedkeys(features)) + end + end + sequence.what = nil + sequence.when = nil + sequence.index = sequence.ondex + end + if swapped > 0 then + if trace_reorder then + report_reorder() + report_reorder("stop swapping lookups, %i lookups swapped",swapped) + report_reorder() + end + tfmdata.resources.sequences = sequences + end + end + end + + -- maybe delay till ra is filled + + local function reorderlookups(tfmdata,key,value) + if value then + otf.reorderlookups(tfmdata,value) + end + end + + registerotffeature { + name = "reorderlookups", + description = "reorder lookups", + manipulators = { + base = reorderlookups, + node = reorderlookups, + } + } + +end diff --git a/tex/context/base/mkiv/font-nod.lua b/tex/context/base/mkiv/font-nod.lua index 9166970b8..b629a51d1 100644 --- a/tex/context/base/mkiv/font-nod.lua +++ b/tex/context/base/mkiv/font-nod.lua @@ -366,7 +366,7 @@ function step_tracers.codes(i,command,space) local d = d and d[c] context[command](f,c,d and d.class or "") else - context("[%s:U+%05X]",f,c) + context("[%s:U+%X]",f,c) end end diff --git a/tex/context/base/mkiv/font-otd.lua b/tex/context/base/mkiv/font-otd.lua index 64cb1bcb4..412aad528 100644 --- a/tex/context/base/mkiv/font-otd.lua +++ b/tex/context/base/mkiv/font-otd.lua @@ -142,6 +142,7 @@ local function initialize(sequence,script,language,s_enabled,a_enabled,font,attr local order = sequence.order if order then local featuretype = featuretypes[sequence.type or "unknown"] + local lookupdone = false for i=1,#order do -- local kind = order[i] -- local e_e @@ -152,16 +153,14 @@ local function initialize(sequence,script,language,s_enabled,a_enabled,font,attr e_e = s_enabled and s_enabled[kind] -- the value (font) end if e_e then + local usedattribute, usedscript, usedlanguage, usedlookup local valid = type(e_e) == "string" and lpegmatch(pattern,e_e) if valid then -- we have hit always - local attribute = autofeatures[kind] or false - if trace_applied then - report_process( - "font %s, dynamic %a (%a), feature %a, script %a, language %a, lookup %a, value %a", - font,attr or 0,dynamic,kind,"*","*",sequence.name,valid) - end - ra[#ra+1] = { valid, attribute, sequence, kind } + usedattribute = autofeatures[kind] or false + usedlanguage = "*" + usedscript = "*" + usedlookup = { valid, usedattribute, sequence, kind } else -- we already checked for e_e local scripts = features[kind] -- @@ -170,7 +169,7 @@ local function initialize(sequence,script,language,s_enabled,a_enabled,font,attr langages = defaultscript(featuretype,autoscript,scripts) end if languages then - -- we need detailed control over default becase we want to trace + -- we need detailed control over default because we want to trace -- only first attribute match check, so we assume simple fina's -- local valid = false if languages[language] then @@ -182,14 +181,30 @@ local function initialize(sequence,script,language,s_enabled,a_enabled,font,attr end end if valid then - local attribute = autofeatures[kind] or false - if trace_applied then - report_process( - "font %s, dynamic %a (%a), feature %a, script %a, language %a, lookup %a, value %a", - font,attr or 0,dynamic,kind,script,language,sequence.name,valid) - end - ra[#ra+1] = { valid, attribute, sequence, kind } + usedattribute = autofeatures[kind] or false + usedlanguage = script + usedscript = language + usedlookup = { valid, usedattribute, sequence, kind } + end + end + if not usedlookup then + -- go on + elseif lookupdone then + if trace_applied then + report_process( + "font %s, dynamic %a (%a), feature %a, script %a, language %a, lookup %a, value %a, lookup already set by %a", + font,attr or 0,dynamic,kind,usedscript,usedlanguage,sequence.name,valid,ra[#ra][4]) + end + else + ra[#ra+1] = usedlookup + if trace_applied then + report_process( + "font %s, dynamic %a (%a), feature %a, script %a, language %a, lookup %a, value %a", + font,attr or 0,dynamic,kind,usedscript,usedlanguage,sequence.name,valid) + else + return -- no need to look further end + lookupdone = true end end end diff --git a/tex/context/base/mkiv/font-otj.lua b/tex/context/base/mkiv/font-otj.lua index 458e307ec..6275f81b8 100644 --- a/tex/context/base/mkiv/font-otj.lua +++ b/tex/context/base/mkiv/font-otj.lua @@ -21,11 +21,11 @@ if not modules then modules = { } end modules ['font-otj'] = { -- The use_advance code was just a test and is meant for testing and manuals. There is no -- performance (or whatever) gain and using kerns is somewhat cleaner (at least for now). --- Maybe: subtype fontkern when pure kerns. - -- An alternative is to have a list per base of all marks and then do a run over the node -- list that resolves the accumulated l/r/x/y and then do an inject pass. +-- if needed we can flag a kern node as immutable + if not nodes.properties then return end local next, rawget, tonumber = next, rawget, tonumber @@ -65,8 +65,6 @@ local glue_code = nodecodes.glue local nuts = nodes.nuts local nodepool = nuts.pool -local newkern = nodepool.kern - local tonode = nuts.tonode local tonut = nuts.tonut @@ -96,9 +94,23 @@ local insert_node_after = nuts.insert_after local properties = nodes.properties.data -function injections.installnewkern(nk) - newkern = nk or newkern -end +local fontkern = nuts.pool and nuts.pool.fontkern -- context + +do if not fontkern then -- generic + + local thekern = nuts.new("kern",0) -- fontkern + local setkern = nuts.setkern + local copy_node = nuts.copy_node + + fontkern = function(k) + local n = copy_node(thekern) + setkern(n,k) + return n + end + +end end + +function injections.installnewkern() end -- obsolete local nofregisteredkerns = 0 local nofregisteredpairs = 0 @@ -279,7 +291,7 @@ function injections.setcursive(start,nxt,factor,rlmode,exit,entry,tfmstart,tfmne return dx, dy, nofregisteredcursives end -function injections.setpair(current,factor,rlmode,r2lflag,spec,injection) -- r2lflag & tfmchr not used +function injections.setpair(current,factor,rlmode,r2lflag,spec,injection) -- r2lflag not used local x = factor*spec[1] local y = factor*spec[2] local w = factor*spec[3] @@ -354,22 +366,43 @@ function injections.setkern(current,factor,rlmode,x,injection) if not injection then injection = "injections" end - if p then - -- local i = rawget(p,injection) - local i = rawget(p,injection) - if i then - i.leftkern = dx + (i.leftkern or 0) + if rlmode and rlmode < 0 then + -- for kai to check: this branch is new + if p then + -- local i = rawget(p,injection) + local i = rawget(p,injection) + if i then + i.rightkern = dx + (i.rightkern or 0) + else + p[injection] = { + rightkern = dx, + } + end else - p[injection] = { - leftkern = dx, + properties[current] = { + [injection] = { + rightkern = dx, + }, } end else - properties[current] = { - [injection] = { - leftkern = dx, - }, - } + if p then + -- local i = rawget(p,injection) + local i = rawget(p,injection) + if i then + i.leftkern = dx + (i.leftkern or 0) + else + p[injection] = { + leftkern = dx, + } + end + else + properties[current] = { + [injection] = { + leftkern = dx, + }, + } + end end return dx, nofregisteredkerns else @@ -579,7 +612,7 @@ local function inject_kerns_only(head,where) -- left|glyph|right local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - head = insert_node_before(head,current,newkern(leftkern)) + head = insert_node_before(head,current,fontkern(leftkern)) end end if prevdisc then @@ -590,7 +623,7 @@ local function inject_kerns_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done = true end end @@ -601,7 +634,7 @@ local function inject_kerns_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done = true end end @@ -612,7 +645,7 @@ local function inject_kerns_only(head,where) -- glyph|disc|glyph (special case) local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setfield(prev,"replace",newkern(leftkern)) -- maybe also leftkern + setfield(prev,"replace",fontkern(leftkern)) -- maybe also leftkern end end end @@ -640,7 +673,7 @@ local function inject_kerns_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - pre = insert_node_before(pre,n,newkern(leftkern)) + pre = insert_node_before(pre,n,fontkern(leftkern)) done = true end end @@ -657,7 +690,7 @@ local function inject_kerns_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - post = insert_node_before(post,n,newkern(leftkern)) + post = insert_node_before(post,n,fontkern(leftkern)) done = true end end @@ -674,7 +707,7 @@ local function inject_kerns_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - replace = insert_node_before(replace,n,newkern(leftkern)) + replace = insert_node_before(replace,n,fontkern(leftkern)) done = true end end @@ -737,11 +770,11 @@ local function inject_pairs_only(head,where) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - head = insert_node_before(head,current,newkern(leftkern)) + head = insert_node_before(head,current,fontkern(leftkern)) end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(head,current,newkern(rightkern)) + insert_node_after(head,current,fontkern(rightkern)) end else -- local i = rawget(p,"emptyinjections") @@ -755,7 +788,7 @@ local function inject_pairs_only(head,where) if replace then -- error, we expect an empty one else - setfield(next,"replace",newkern(rightkern)) -- maybe also leftkern + setfield(next,"replace",fontkern(rightkern)) -- maybe also leftkern end end end @@ -769,7 +802,7 @@ local function inject_pairs_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done = true end end @@ -780,7 +813,7 @@ local function inject_pairs_only(head,where) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done = true end end @@ -790,7 +823,7 @@ local function inject_pairs_only(head,where) -- new .. okay? local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setfield(prev,"replace",newkern(leftkern)) -- maybe also leftkern + setfield(prev,"replace",fontkern(leftkern)) -- maybe also leftkern end end end @@ -821,12 +854,12 @@ local function inject_pairs_only(head,where) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - pre = insert_node_before(pre,n,newkern(leftkern)) + pre = insert_node_before(pre,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(pre,n,newkern(rightkern)) + insert_node_after(pre,n,fontkern(rightkern)) done = true end end @@ -847,12 +880,12 @@ local function inject_pairs_only(head,where) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - post = insert_node_before(post,n,newkern(leftkern)) + post = insert_node_before(post,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(post,n,newkern(rightkern)) + insert_node_after(post,n,fontkern(rightkern)) done = true end end @@ -873,12 +906,12 @@ local function inject_pairs_only(head,where) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - replace = insert_node_before(replace,n,newkern(leftkern)) + replace = insert_node_before(replace,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(replace,n,newkern(rightkern)) + insert_node_after(replace,n,fontkern(rightkern)) done = true end end @@ -895,7 +928,7 @@ local function inject_pairs_only(head,where) -- glyph|pre glyphs local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - pre = insert_node_before(pre,pre,newkern(rightkern)) + pre = insert_node_before(pre,pre,fontkern(rightkern)) done = true end end @@ -910,7 +943,7 @@ local function inject_pairs_only(head,where) -- glyph|replace glyphs local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - replace = insert_node_before(replace,replace,newkern(rightkern)) + replace = insert_node_before(replace,replace,fontkern(rightkern)) done = true end end @@ -1031,7 +1064,9 @@ local function inject_everything(head,where) if pn.markdir < 0 then ox = px - pn.markx -- pair stuff: husayni needs it -+ (pn.leftkern or 0) +if not pn.markmark then -- check or not (no longer needed) + ox = ox + (pn.leftkern or 0) +end -- -- report_injections("r2l case 3: %p",ox) else @@ -1053,14 +1088,16 @@ local function inject_everything(head,where) -- -- we do it the ugly way (no checking if the previous is -- -- already a kern) .. maybe we should fix the font instead -- hm, no head ? - insert_node_before(n,n,newkern(-wn)) - insert_node_after(n,n,newkern(-wn)) + insert_node_before(n,n,fontkern(-wn)) + insert_node_after(n,n,fontkern(-wn)) end end end local oy = ny + py + pn.marky -- pair stuff: husayni needs it -oy = oy + (pn.yoffset or 0) +if not pn.markmark then + oy = oy + (pn.yoffset or 0) +end -- setoffsets(n,ox,oy) if trace_marks then @@ -1139,11 +1176,11 @@ oy = oy + (pn.yoffset or 0) -- left|glyph|right local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - head = insert_node_before(head,current,newkern(leftkern)) + head = insert_node_before(head,current,fontkern(leftkern)) end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(head,current,newkern(rightkern)) + insert_node_after(head,current,fontkern(rightkern)) end end else @@ -1158,7 +1195,7 @@ oy = oy + (pn.yoffset or 0) if replace then -- error, we expect an empty one else - setfield(next,"replace",newkern(rightkern)) -- maybe also leftkern + setfield(next,"replace",fontkern(rightkern)) -- maybe also leftkern end end end @@ -1173,7 +1210,7 @@ oy = oy + (pn.yoffset or 0) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done = true end end @@ -1184,7 +1221,7 @@ oy = oy + (pn.yoffset or 0) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done = true end end @@ -1194,7 +1231,7 @@ oy = oy + (pn.yoffset or 0) if i then local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - setfield(prev,"replace",newkern(leftkern)) -- maybe also leftkern + setfield(prev,"replace",fontkern(leftkern)) -- maybe also leftkern end end end @@ -1239,12 +1276,12 @@ oy = oy + (pn.yoffset or 0) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - pre = insert_node_before(pre,n,newkern(leftkern)) + pre = insert_node_before(pre,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(pre,n,newkern(rightkern)) + insert_node_after(pre,n,fontkern(rightkern)) done = true end if hasmarks then @@ -1271,12 +1308,12 @@ oy = oy + (pn.yoffset or 0) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - post = insert_node_before(post,n,newkern(leftkern)) + post = insert_node_before(post,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(post,n,newkern(rightkern)) + insert_node_after(post,n,fontkern(rightkern)) done = true end if hasmarks then @@ -1303,12 +1340,12 @@ oy = oy + (pn.yoffset or 0) end local leftkern = i.leftkern if leftkern and leftkern ~= 0 then - replace = insert_node_before(replace,n,newkern(leftkern)) + replace = insert_node_before(replace,n,fontkern(leftkern)) done = true end local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - insert_node_after(replace,n,newkern(rightkern)) + insert_node_after(replace,n,fontkern(rightkern)) done = true end if hasmarks then @@ -1331,7 +1368,7 @@ oy = oy + (pn.yoffset or 0) -- glyph|pre glyphs local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - pre = insert_node_before(pre,pre,newkern(rightkern)) + pre = insert_node_before(pre,pre,fontkern(rightkern)) done = true end end @@ -1346,7 +1383,7 @@ oy = oy + (pn.yoffset or 0) -- glyph|replace glyphs local rightkern = i.rightkern if rightkern and rightkern ~= 0 then - replace = insert_node_before(replace,replace,newkern(rightkern)) + replace = insert_node_before(replace,replace,fontkern(rightkern)) done = true end end diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua index 99c98e175..de296e408 100644 --- a/tex/context/base/mkiv/font-ots.lua +++ b/tex/context/base/mkiv/font-ots.lua @@ -302,8 +302,8 @@ local function logwarning(...) report_direct(...) end -local f_unicode = formatters["%U"] -local f_uniname = formatters["%U (%s)"] +local f_unicode = formatters["U+%X"] -- was ["%U"] +local f_uniname = formatters["U+%X (%s)"] -- was ["%U (%s)"] local f_unilist = formatters["% t (% t)"] local function gref(n) -- currently the same as in font-otb @@ -932,8 +932,8 @@ function handlers.gpos_mark2base(head,start,dataset,sequence,markanchors,rlmode) local ma = markanchors[2] local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basechar %s => (%p,%p)", - pref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basechar %s => (%p,%p)", + pref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head, start, true elseif trace_bugs then @@ -991,8 +991,8 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm if ba then local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, index %s, bound %s: anchoring mark %s to baselig %s at index %s => (%p,%p)", - pref(dataset,sequence),anchor,index,bound,gref(markchar),gref(basechar),index,dx,dy) + logprocess("%s, index %s, bound %s, anchoring mark %s to baselig %s at index %s => (%p,%p)", + pref(dataset,sequence),index,bound,gref(markchar),gref(basechar),index,dx,dy) end return head, start, true else @@ -1040,8 +1040,8 @@ function handlers.gpos_mark2mark(head,start,dataset,sequence,markanchors,rlmode) local ma = markanchors[2] local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],true,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basemark %s => (%p,%p)", - pref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basemark %s => (%p,%p)", + pref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head, start, true end @@ -1539,8 +1539,8 @@ function chainprocs.gpos_mark2base(head,start,stop,dataset,sequence,currentlooku if ma then local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basechar %s => (%p,%p)", - cref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basechar %s => (%p,%p)", + cref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head, start, true end @@ -1610,8 +1610,8 @@ function chainprocs.gpos_mark2ligature(head,start,stop,dataset,sequence,currentl if ba then local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to baselig %s at index %s => (%p,%p)", - cref(dataset,sequence),anchor,a or bound,gref(markchar),gref(basechar),index,dx,dy) + logprocess("%s, bound %s, anchoring mark %s to baselig %s at index %s => (%p,%p)", + cref(dataset,sequence),a or bound,gref(markchar),gref(basechar),index,dx,dy) end return head, start, true end @@ -1667,8 +1667,8 @@ function chainprocs.gpos_mark2mark(head,start,stop,dataset,sequence,currentlooku if ma then local dx, dy, bound = setmark(start,base,factor,rlmode,ba,ma,characters[basechar],true,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basemark %s => (%p,%p)", - cref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basemark %s => (%p,%p)", + cref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head, start, true end @@ -1776,13 +1776,26 @@ end -- order to handle that we need more complex code which also slows down even more. The main -- loop variant could deal with that: test, collapse, backtrack. -local new_kern = nuts.pool.kern +local userkern = nuts.pool and nuts.pool.newkern -- context + +do if not userkern then -- generic + + local thekern = nuts.new("kern",1) -- userkern + local setkern = nuts.setkern -- not injections.setkern + + userkern = function(k) + local n = copy_node(thekern) + setkern(n,k) + return n + end + +end end local function checked(head) local current = head while current do if getid(current) == glue_code then - local kern = new_kern(getwidth(current)) + local kern = userkern(getwidth(current)) if head == current then local next = getnext(current) if next then diff --git a/tex/context/base/mkiv/font-ott.lua b/tex/context/base/mkiv/font-ott.lua index 9f9900dc2..59d92f40d 100644 --- a/tex/context/base/mkiv/font-ott.lua +++ b/tex/context/base/mkiv/font-ott.lua @@ -1,4 +1,4 @@ -if not modules then modules = { } end modules ['font-ott'] = { +if not modules then modules = { } end modules ["font-ott"] = { version = 1.001, comment = "companion to font-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", @@ -26,118 +26,118 @@ local statistics = otf.statistics or { } otf.statistics = statistics local scripts = allocate { - ['arab'] = 'arabic', - ['armi'] = 'imperial aramaic', - ['armn'] = 'armenian', - ['avst'] = 'avestan', - ['bali'] = 'balinese', - ['bamu'] = 'bamum', - ['batk'] = 'batak', - ['beng'] = 'bengali', - ['bng2'] = 'bengali variant 2', - ['bopo'] = 'bopomofo', - ['brah'] = 'brahmi', - ['brai'] = 'braille', - ['bugi'] = 'buginese', - ['buhd'] = 'buhid', - ['byzm'] = 'byzantine music', - ['cakm'] = 'chakma', - ['cans'] = 'canadian syllabics', - ['cari'] = 'carian', - ['cham'] = 'cham', - ['cher'] = 'cherokee', - ['copt'] = 'coptic', - ['cprt'] = 'cypriot syllabary', - ['cyrl'] = 'cyrillic', - ['deva'] = 'devanagari', - ['dev2'] = 'devanagari variant 2', - ['dsrt'] = 'deseret', - ['egyp'] = 'egyptian heiroglyphs', - ['ethi'] = 'ethiopic', - ['geor'] = 'georgian', - ['glag'] = 'glagolitic', - ['goth'] = 'gothic', - ['grek'] = 'greek', - ['gujr'] = 'gujarati', - ['gjr2'] = 'gujarati variant 2', - ['guru'] = 'gurmukhi', - ['gur2'] = 'gurmukhi variant 2', - ['hang'] = 'hangul', - ['hani'] = 'cjk ideographic', - ['hano'] = 'hanunoo', - ['hebr'] = 'hebrew', - ['ital'] = 'old italic', - ['jamo'] = 'hangul jamo', - ['java'] = 'javanese', - ['kali'] = 'kayah li', - ['kana'] = 'hiragana and katakana', - ['khar'] = 'kharosthi', - ['khmr'] = 'khmer', - ['knda'] = 'kannada', - ['knd2'] = 'kannada variant 2', - ['kthi'] = 'kaithi', - ['lana'] = 'tai tham', - ['lao' ] = 'lao', - ['latn'] = 'latin', - ['lepc'] = 'lepcha', - ['limb'] = 'limbu', - ['linb'] = 'linear b', - ['lisu'] = 'lisu', - ['lyci'] = 'lycian', - ['lydi'] = 'lydian', - ['mand'] = 'mandaic and mandaean', - ['math'] = 'mathematical alphanumeric symbols', - ['merc'] = 'meroitic cursive', - ['mero'] = 'meroitic hieroglyphs', - ['mlym'] = 'malayalam', - ['mlm2'] = 'malayalam variant 2', - ['mong'] = 'mongolian', - ['mtei'] = 'meitei Mayek', - ['musc'] = 'musical symbols', - ['mym2'] = 'myanmar variant 2', - ['mymr'] = 'myanmar', - ['nko' ] = "n'ko", - ['ogam'] = 'ogham', - ['olck'] = 'ol chiki', - ['orkh'] = 'old turkic and orkhon runic', - ['orya'] = 'oriya', - ['ory2'] = 'odia variant 2', - ['osma'] = 'osmanya', - ['phag'] = 'phags-pa', - ['phli'] = 'inscriptional pahlavi', - ['phnx'] = 'phoenician', - ['prti'] = 'inscriptional parthian', - ['rjng'] = 'rejang', - ['runr'] = 'runic', - ['samr'] = 'samaritan', - ['sarb'] = 'old south arabian', - ['saur'] = 'saurashtra', - ['shaw'] = 'shavian', - ['shrd'] = 'sharada', - ['sinh'] = 'sinhala', - ['sora'] = 'sora sompeng', - ['sund'] = 'sundanese', - ['sylo'] = 'syloti nagri', - ['syrc'] = 'syriac', - ['tagb'] = 'tagbanwa', - ['takr'] = 'takri', - ['tale'] = 'tai le', - ['talu'] = 'tai lu', - ['taml'] = 'tamil', - ['tavt'] = 'tai viet', - ['telu'] = 'telugu', - ['tel2'] = 'telugu variant 2', - ['tfng'] = 'tifinagh', - ['tglg'] = 'tagalog', - ['thaa'] = 'thaana', - ['thai'] = 'thai', - ['tibt'] = 'tibetan', - ['tml2'] = 'tamil variant 2', - ['ugar'] = 'ugaritic cuneiform', - ['vai' ] = 'vai', - ['xpeo'] = 'old persian cuneiform', - ['xsux'] = 'sumero-akkadian cuneiform', - ['yi' ] = 'yi', + ["arab"] = "arabic", + ["armi"] = "imperial aramaic", + ["armn"] = "armenian", + ["avst"] = "avestan", + ["bali"] = "balinese", + ["bamu"] = "bamum", + ["batk"] = "batak", + ["beng"] = "bengali", + ["bng2"] = "bengali variant 2", + ["bopo"] = "bopomofo", + ["brah"] = "brahmi", + ["brai"] = "braille", + ["bugi"] = "buginese", + ["buhd"] = "buhid", + ["byzm"] = "byzantine music", + ["cakm"] = "chakma", + ["cans"] = "canadian syllabics", + ["cari"] = "carian", + ["cham"] = "cham", + ["cher"] = "cherokee", + ["copt"] = "coptic", + ["cprt"] = "cypriot syllabary", + ["cyrl"] = "cyrillic", + ["deva"] = "devanagari", + ["dev2"] = "devanagari variant 2", + ["dsrt"] = "deseret", + ["egyp"] = "egyptian heiroglyphs", + ["ethi"] = "ethiopic", + ["geor"] = "georgian", + ["glag"] = "glagolitic", + ["goth"] = "gothic", + ["grek"] = "greek", + ["gujr"] = "gujarati", + ["gjr2"] = "gujarati variant 2", + ["guru"] = "gurmukhi", + ["gur2"] = "gurmukhi variant 2", + ["hang"] = "hangul", + ["hani"] = "cjk ideographic", + ["hano"] = "hanunoo", + ["hebr"] = "hebrew", + ["ital"] = "old italic", + ["jamo"] = "hangul jamo", + ["java"] = "javanese", + ["kali"] = "kayah li", + ["kana"] = "hiragana and katakana", + ["khar"] = "kharosthi", + ["khmr"] = "khmer", + ["knda"] = "kannada", + ["knd2"] = "kannada variant 2", + ["kthi"] = "kaithi", + ["lana"] = "tai tham", + ["lao" ] = "lao", + ["latn"] = "latin", + ["lepc"] = "lepcha", + ["limb"] = "limbu", + ["linb"] = "linear b", + ["lisu"] = "lisu", + ["lyci"] = "lycian", + ["lydi"] = "lydian", + ["mand"] = "mandaic and mandaean", + ["math"] = "mathematical alphanumeric symbols", + ["merc"] = "meroitic cursive", + ["mero"] = "meroitic hieroglyphs", + ["mlym"] = "malayalam", + ["mlm2"] = "malayalam variant 2", + ["mong"] = "mongolian", + ["mtei"] = "meitei Mayek", + ["musc"] = "musical symbols", + ["mym2"] = "myanmar variant 2", + ["mymr"] = "myanmar", + ["nko" ] = 'n"ko', + ["ogam"] = "ogham", + ["olck"] = "ol chiki", + ["orkh"] = "old turkic and orkhon runic", + ["orya"] = "oriya", + ["ory2"] = "odia variant 2", + ["osma"] = "osmanya", + ["phag"] = "phags-pa", + ["phli"] = "inscriptional pahlavi", + ["phnx"] = "phoenician", + ["prti"] = "inscriptional parthian", + ["rjng"] = "rejang", + ["runr"] = "runic", + ["samr"] = "samaritan", + ["sarb"] = "old south arabian", + ["saur"] = "saurashtra", + ["shaw"] = "shavian", + ["shrd"] = "sharada", + ["sinh"] = "sinhala", + ["sora"] = "sora sompeng", + ["sund"] = "sundanese", + ["sylo"] = "syloti nagri", + ["syrc"] = "syriac", + ["tagb"] = "tagbanwa", + ["takr"] = "takri", + ["tale"] = "tai le", + ["talu"] = "tai lu", + ["taml"] = "tamil", + ["tavt"] = "tai viet", + ["telu"] = "telugu", + ["tel2"] = "telugu variant 2", + ["tfng"] = "tifinagh", + ["tglg"] = "tagalog", + ["thaa"] = "thaana", + ["thai"] = "thai", + ["tibt"] = "tibetan", + ["tml2"] = "tamil variant 2", + ["ugar"] = "ugaritic cuneiform", + ["vai" ] = "vai", + ["xpeo"] = "old persian cuneiform", + ["xsux"] = "sumero-akkadian cuneiform", + ["yi" ] = "yi", } local languages = allocate { @@ -302,7 +302,7 @@ local languages = allocate { ["gez" ] = "ge'ez", ["gih" ] = "githabul", ["gil" ] = "gilyak", - ["gil0"] = " kiribati (gilbertese)", + ["gil0"] = "kiribati (gilbertese)", ["gkp" ] = "kpelle (guinea)", ["glk" ] = "gilaki", ["gmz" ] = "gumuz", @@ -726,165 +726,166 @@ local languages = allocate { } local features = allocate { - ['aalt'] = 'access all alternates', - ['abvf'] = 'above-base forms', - ['abvm'] = 'above-base mark positioning', - ['abvs'] = 'above-base substitutions', - ['afrc'] = 'alternative fractions', - ['akhn'] = 'akhands', - ['blwf'] = 'below-base forms', - ['blwm'] = 'below-base mark positioning', - ['blws'] = 'below-base substitutions', - ['c2pc'] = 'petite capitals from capitals', - ['c2sc'] = 'small capitals from capitals', - ['calt'] = 'contextual alternates', - ['case'] = 'case-sensitive forms', - ['ccmp'] = 'glyph composition/decomposition', - ['cfar'] = 'conjunct form after ro', - ['cjct'] = 'conjunct forms', - ['clig'] = 'contextual ligatures', - ['cpct'] = 'centered cjk punctuation', - ['cpsp'] = 'capital spacing', - ['cswh'] = 'contextual swash', - ['curs'] = 'cursive positioning', - ['dflt'] = 'default processing', - ['dist'] = 'distances', - ['dlig'] = 'discretionary ligatures', - ['dnom'] = 'denominators', - ['dtls'] = 'dotless forms', -- math - ['expt'] = 'expert forms', - ['falt'] = 'final glyph alternates', - ['fin2'] = 'terminal forms #2', - ['fin3'] = 'terminal forms #3', - ['fina'] = 'terminal forms', - ['flac'] = 'flattened accents over capitals', -- math - ['frac'] = 'fractions', - ['fwid'] = 'full width', - ['half'] = 'half forms', - ['haln'] = 'halant forms', - ['halt'] = 'alternate half width', - ['hist'] = 'historical forms', - ['hkna'] = 'horizontal kana alternates', - ['hlig'] = 'historical ligatures', - ['hngl'] = 'hangul', - ['hojo'] = 'hojo kanji forms', - ['hwid'] = 'half width', - ['init'] = 'initial forms', - ['isol'] = 'isolated forms', - ['ital'] = 'italics', - ['jalt'] = 'justification alternatives', - ['jp04'] = 'jis2004 forms', - ['jp78'] = 'jis78 forms', - ['jp83'] = 'jis83 forms', - ['jp90'] = 'jis90 forms', - ['kern'] = 'kerning', - ['lfbd'] = 'left bounds', - ['liga'] = 'standard ligatures', - ['ljmo'] = 'leading jamo forms', - ['lnum'] = 'lining figures', - ['locl'] = 'localized forms', - ['ltra'] = 'left-to-right alternates', - ['ltrm'] = 'left-to-right mirrored forms', - ['mark'] = 'mark positioning', - ['med2'] = 'medial forms #2', - ['medi'] = 'medial forms', - ['mgrk'] = 'mathematical greek', - ['mkmk'] = 'mark to mark positioning', - ['mset'] = 'mark positioning via substitution', - ['nalt'] = 'alternate annotation forms', - ['nlck'] = 'nlc kanji forms', - ['nukt'] = 'nukta forms', - ['numr'] = 'numerators', - ['onum'] = 'old style figures', - ['opbd'] = 'optical bounds', - ['ordn'] = 'ordinals', - ['ornm'] = 'ornaments', - ['palt'] = 'proportional alternate width', - ['pcap'] = 'petite capitals', - ['pkna'] = 'proportional kana', - ['pnum'] = 'proportional figures', - ['pref'] = 'pre-base forms', - ['pres'] = 'pre-base substitutions', - ['pstf'] = 'post-base forms', - ['psts'] = 'post-base substitutions', - ['pwid'] = 'proportional widths', - ['qwid'] = 'quarter widths', - ['rand'] = 'randomize', - ['rclt'] = 'required contextual alternates', - ['rkrf'] = 'rakar forms', - ['rlig'] = 'required ligatures', - ['rphf'] = 'reph form', - ['rtbd'] = 'right bounds', - ['rtla'] = 'right-to-left alternates', - ['rtlm'] = 'right to left math', -- math - ['ruby'] = 'ruby notation forms', - ['salt'] = 'stylistic alternates', - ['sinf'] = 'scientific inferiors', - ['size'] = 'optical size', - ['smcp'] = 'small capitals', - ['smpl'] = 'simplified forms', - -- ['ss01'] = 'stylistic set 1', - -- ['ss02'] = 'stylistic set 2', - -- ['ss03'] = 'stylistic set 3', - -- ['ss04'] = 'stylistic set 4', - -- ['ss05'] = 'stylistic set 5', - -- ['ss06'] = 'stylistic set 6', - -- ['ss07'] = 'stylistic set 7', - -- ['ss08'] = 'stylistic set 8', - -- ['ss09'] = 'stylistic set 9', - -- ['ss10'] = 'stylistic set 10', - -- ['ss11'] = 'stylistic set 11', - -- ['ss12'] = 'stylistic set 12', - -- ['ss13'] = 'stylistic set 13', - -- ['ss14'] = 'stylistic set 14', - -- ['ss15'] = 'stylistic set 15', - -- ['ss16'] = 'stylistic set 16', - -- ['ss17'] = 'stylistic set 17', - -- ['ss18'] = 'stylistic set 18', - -- ['ss19'] = 'stylistic set 19', - -- ['ss20'] = 'stylistic set 20', - ['ssty'] = 'script style', -- math - ['stch'] = 'stretching glyph decomposition', - ['subs'] = 'subscript', - ['sups'] = 'superscript', - ['swsh'] = 'swash', - ['titl'] = 'titling', - ['tjmo'] = 'trailing jamo forms', - ['tnam'] = 'traditional name forms', - ['tnum'] = 'tabular figures', - ['trad'] = 'traditional forms', - ['twid'] = 'third widths', - ['unic'] = 'unicase', - ['valt'] = 'alternate vertical metrics', - ['vatu'] = 'vattu variants', - ['vert'] = 'vertical writing', - ['vhal'] = 'alternate vertical half metrics', - ['vjmo'] = 'vowel jamo forms', - ['vkna'] = 'vertical kana alternates', - ['vkrn'] = 'vertical kerning', - ['vpal'] = 'proportional alternate vertical metrics', - ['vrt2'] = 'vertical rotation', - ['zero'] = 'slashed zero', + ["aalt"] = "access all alternates", + ["abvf"] = "above-base forms", + ["abvm"] = "above-base mark positioning", + ["abvs"] = "above-base substitutions", + ["afrc"] = "alternative fractions", + ["akhn"] = "akhands", + ["blwf"] = "below-base forms", + ["blwm"] = "below-base mark positioning", + ["blws"] = "below-base substitutions", + ["c2pc"] = "petite capitals from capitals", + ["c2sc"] = "small capitals from capitals", + ["calt"] = "contextual alternates", + ["case"] = "case-sensitive forms", + ["ccmp"] = "glyph composition/decomposition", + ["cfar"] = "conjunct form after ro", + ["cjct"] = "conjunct forms", + ["clig"] = "contextual ligatures", + ["cpct"] = "centered cjk punctuation", + ["cpsp"] = "capital spacing", + ["cswh"] = "contextual swash", + ["curs"] = "cursive positioning", + ["dflt"] = "default processing", + ["dist"] = "distances", + ["dlig"] = "discretionary ligatures", + ["dnom"] = "denominators", + ["dtls"] = "dotless forms", -- math + ["expt"] = "expert forms", + ["falt"] = "final glyph alternates", + ["fin2"] = "terminal forms #2", + ["fin3"] = "terminal forms #3", + ["fina"] = "terminal forms", + ["flac"] = "flattened accents over capitals", -- math + ["frac"] = "fractions", + ["fwid"] = "full width", + ["half"] = "half forms", + ["haln"] = "halant forms", + ["halt"] = "alternate half width", + ["hist"] = "historical forms", + ["hkna"] = "horizontal kana alternates", + ["hlig"] = "historical ligatures", + ["hngl"] = "hangul", + ["hojo"] = "hojo kanji forms", + ["hwid"] = "half width", + ["init"] = "initial forms", + ["isol"] = "isolated forms", + ["ital"] = "italics", + ["jalt"] = "justification alternatives", + ["jp04"] = "jis2004 forms", + ["jp78"] = "jis78 forms", + ["jp83"] = "jis83 forms", + ["jp90"] = "jis90 forms", + ["kern"] = "kerning", + ["lfbd"] = "left bounds", + ["liga"] = "standard ligatures", + ["ljmo"] = "leading jamo forms", + ["lnum"] = "lining figures", + ["locl"] = "localized forms", + ["ltra"] = "left-to-right alternates", + ["ltrm"] = "left-to-right mirrored forms", + ["mark"] = "mark positioning", + ["med2"] = "medial forms #2", + ["medi"] = "medial forms", + ["mgrk"] = "mathematical greek", + ["mkmk"] = "mark to mark positioning", + ["mset"] = "mark positioning via substitution", + ["nalt"] = "alternate annotation forms", + ["nlck"] = "nlc kanji forms", + ["nukt"] = "nukta forms", + ["numr"] = "numerators", + ["onum"] = "old style figures", + ["opbd"] = "optical bounds", + ["ordn"] = "ordinals", + ["ornm"] = "ornaments", + ["palt"] = "proportional alternate width", + ["pcap"] = "petite capitals", + ["pkna"] = "proportional kana", + ["pnum"] = "proportional figures", + ["pref"] = "pre-base forms", + ["pres"] = "pre-base substitutions", + ["pstf"] = "post-base forms", + ["psts"] = "post-base substitutions", + ["pwid"] = "proportional widths", + ["qwid"] = "quarter widths", + ["rand"] = "randomize", + ["rclt"] = "required contextual alternates", + ["rkrf"] = "rakar forms", + ["rlig"] = "required ligatures", + ["rphf"] = "reph form", + ["rtbd"] = "right bounds", + ["rtla"] = "right-to-left alternates", + ["rtlm"] = "right to left mirrored forms", + ["rvrn"] = "required variation alternates", + ["ruby"] = "ruby notation forms", + ["salt"] = "stylistic alternates", + ["sinf"] = "scientific inferiors", + ["size"] = "optical size", -- now stat table + ["smcp"] = "small capitals", + ["smpl"] = "simplified forms", + -- ["ss01"] = "stylistic set 1", + -- ["ss02"] = "stylistic set 2", + -- ["ss03"] = "stylistic set 3", + -- ["ss04"] = "stylistic set 4", + -- ["ss05"] = "stylistic set 5", + -- ["ss06"] = "stylistic set 6", + -- ["ss07"] = "stylistic set 7", + -- ["ss08"] = "stylistic set 8", + -- ["ss09"] = "stylistic set 9", + -- ["ss10"] = "stylistic set 10", + -- ["ss11"] = "stylistic set 11", + -- ["ss12"] = "stylistic set 12", + -- ["ss13"] = "stylistic set 13", + -- ["ss14"] = "stylistic set 14", + -- ["ss15"] = "stylistic set 15", + -- ["ss16"] = "stylistic set 16", + -- ["ss17"] = "stylistic set 17", + -- ["ss18"] = "stylistic set 18", + -- ["ss19"] = "stylistic set 19", + -- ["ss20"] = "stylistic set 20", + ["ssty"] = "script style", -- math + ["stch"] = "stretching glyph decomposition", + ["subs"] = "subscript", + ["sups"] = "superscript", + ["swsh"] = "swash", + ["titl"] = "titling", + ["tjmo"] = "trailing jamo forms", + ["tnam"] = "traditional name forms", + ["tnum"] = "tabular figures", + ["trad"] = "traditional forms", + ["twid"] = "third widths", + ["unic"] = "unicase", + ["valt"] = "alternate vertical metrics", + ["vatu"] = "vattu variants", + ["vert"] = "vertical writing", + ["vhal"] = "alternate vertical half metrics", + ["vjmo"] = "vowel jamo forms", + ["vkna"] = "vertical kana alternates", + ["vkrn"] = "vertical kerning", + ["vpal"] = "proportional alternate vertical metrics", + ["vrt2"] = "vertical rotation", + ["zero"] = "slashed zero", - ['trep'] = 'traditional tex replacements', - ['tlig'] = 'traditional tex ligatures', + ["trep"] = "traditional tex replacements", + ["tlig"] = "traditional tex ligatures", - ['ss..'] = 'stylistic set ..', - ['cv..'] = 'character variant ..', - ['js..'] = 'justification ..', + ["ss.."] = "stylistic set ..", + ["cv.."] = "character variant ..", + ["js.."] = "justification ..", ["dv.."] = "devanagari ..", ["ml.."] = "malayalam ..", } local baselines = allocate { - ['hang'] = 'hanging baseline', - ['icfb'] = 'ideographic character face bottom edge baseline', - ['icft'] = 'ideographic character face tope edige baseline', - ['ideo'] = 'ideographic em-box bottom edge baseline', - ['idtp'] = 'ideographic em-box top edge baseline', - ['math'] = 'mathematical centered baseline', - ['romn'] = 'roman baseline' + ["hang"] = "hanging baseline", + ["icfb"] = "ideographic character face bottom edge baseline", + ["icft"] = "ideographic character face tope edige baseline", + ["ideo"] = "ideographic em-box bottom edge baseline", + ["idtp"] = "ideographic em-box top edge baseline", + ["math"] = "mathematical centered baseline", + ["romn"] = "roman baseline" } tables.scripts = scripts diff --git a/tex/context/base/mkiv/font-pre.mkiv b/tex/context/base/mkiv/font-pre.mkiv index 45f933dd5..ead98e391 100644 --- a/tex/context/base/mkiv/font-pre.mkiv +++ b/tex/context/base/mkiv/font-pre.mkiv @@ -19,7 +19,33 @@ % beware, base mode + dynamics can give weird effects -% rlig ccmp +% frac : with numr dnom +% +% vkrn valt vert vrt2 vpal : when vertical +% +% rtlm rtla : in r2l runs +% ltrm ltra : in l2r runs +% +% rvrn : variable fonts +% +% rtbd lfbd : opbd +% +% rkrf rphf vatu vjmo tjmo rclt psts pstf ljmo haln +% pres pref nukt +% abvs abvm blwm blws cjct blwf akhn (indic) +% half +% abvf cfar (khmer) +% +% ccmp locl calt clig liga rlig +% +% mkmk mark kern (palt pwid) curs (by choice but some fonts need it) +% +% init medi isol fina (unicode) +% fin3 fin2 med2 : syriac +% +% cpsp : percentage spacing (todo) +% +% dtls flac :math \definefontfeature [always] @@ -27,7 +53,10 @@ script=auto, % on speed; 'base' just doesn't play well with dynamics; some day we can even autoscript=position, autolanguage=position, +% ccmp=yes, kern=yes, % consider skipping the base passes when no base mode is used +% palt=yes, +% pwid=yes, mark=yes, mkmk=yes, curs=yes] @@ -36,6 +65,11 @@ [default] [always] [liga=yes, +% ccmp=yes, % maybe too +% locl=yes, % maybe too +% calt=yes, % maybe too +% clig=yes, % maybe too +% rlig=yes, % maybe too tlig=yes, trep=yes] % texligatures=yes,texquotes=yes @@ -101,6 +135,11 @@ [always] [compose=yes, liga=yes, +% ccmp=yes, +% locl=yes, +% calt=yes, +% clig=yes, +% rlig=yes, tlig=yes, trep=yes] @@ -114,6 +153,7 @@ [mode=node,analyze=yes,language=dflt,ccmp=yes, autoscript=position,autolanguage=position, init=yes,medi=yes,fina=yes,isol=yes, +% fin2=yes,fin3=yes,med2=yes, mark=yes,mkmk=yes,kern=yes,curs=yes, liga=yes,dlig=yes,rlig=yes,clig=yes,calt=yes] @@ -122,6 +162,7 @@ [mode=node,analyze=yes,language=dflt,ccmp=yes, autoscript=position,autolanguage=position, init=yes,medi=yes,fina=yes,isol=yes, +% fin2=yes,fin3=yes,med2=yes, mark=yes,mkmk=yes,kern=yes,curs=yes, rlig=yes,calt=yes] diff --git a/tex/context/base/mkiv/font-sol.lua b/tex/context/base/mkiv/font-sol.lua index d89f41441..4e6604e12 100644 --- a/tex/context/base/mkiv/font-sol.lua +++ b/tex/context/base/mkiv/font-sol.lua @@ -336,7 +336,6 @@ local splitter_one = usernodeids["splitters.one"] local splitter_two = usernodeids["splitters.two"] local a_word = attributes.private('word') -local a_fontkern = attributes.private('fontkern') local encapsulate = false @@ -500,7 +499,7 @@ local function collect_words(list) -- can be made faster for attributes report_splitters("skipped: %C",current.char) end end - elseif id == kern_code and (getsubtype(current) == fontkern_code or getattr(current,a_fontkern)) then + elseif id == kern_code and getsubtype(current) == fontkern_code then if first then last = current else diff --git a/tex/context/base/mkiv/font-tra.mkiv b/tex/context/base/mkiv/font-tra.mkiv index a03d30799..8ca4bf3e4 100644 --- a/tex/context/base/mkiv/font-tra.mkiv +++ b/tex/context/base/mkiv/font-tra.mkiv @@ -286,6 +286,9 @@ \letvalue{\??otfcompositiondir +1}\lefttoright \letvalue{\??otfcompositiondir 1}\lefttoright +\unexpanded\def\setotfcompositiondirection#1% + {\getvalue{\??otfcompositiondir#1}} + \unexpanded\def\showotfcomposition#1#2#3% {font*features at size}, rl=-1, text {\begingroup \forgetparindent @@ -294,7 +297,7 @@ \setupalign[\v!verytolerant,\v!flushleft]% \startotfsample \nohyphens - \global\setbox\otfcompositionbox\hbox{\definedfont[#1]\relax\getvalue{\??otfcompositiondir#2}\relax#3}% + \global\setbox\otfcompositionbox\hbox{\definedfont[#1]\relax\setotfcompositiondirection{#2}\relax#3}% \stopotfsample \endgroup} diff --git a/tex/context/base/mkiv/lang-wrd.lua b/tex/context/base/mkiv/lang-wrd.lua index 666f39338..2ec5d68eb 100644 --- a/tex/context/base/mkiv/lang-wrd.lua +++ b/tex/context/base/mkiv/lang-wrd.lua @@ -32,17 +32,18 @@ local registered = languages.registered local nuts = nodes.nuts local tonut = nuts.tonut -local getfield = nuts.getfield +----- getfield = nuts.getfield local getnext = nuts.getnext local getid = nuts.getid -local getsubtype = nuts.getsubtype +----- getsubtype = nuts.getsubtype local getchar = nuts.getchar local setattr = nuts.setattr +----- getattr = nuts.getattr local getlang = nuts.getlang -local isglyph = nuts.isglyph +local ischar = nuts.ischar local traverse_nodes = nuts.traverse -local traverse_ids = nuts.traverse_id +----- traverse_ids = nuts.traverse_id local wordsdata = words.data local chardata = characters.data @@ -51,13 +52,14 @@ local enableaction = nodes.tasks.enableaction local unsetvalue = attributes.unsetvalue local nodecodes = nodes.nodecodes -local kerncodes = nodes.kerncodes +----- kerncodes = nodes.kerncodes local glyph_code = nodecodes.glyph -local disc_code = nodecodes.disc -local kern_code = nodecodes.kern +----- disc_code = nodecodes.disc +----- kern_code = nodecodes.kern + +----- fontkern_code = kerncodes.fontkern -local kerning_code = kerncodes.kerning local lowerchar = characters.lower local a_color = attributes.private('color') @@ -160,8 +162,8 @@ local function mark_words(head,whenfound) -- can be optimized and shared -- we haven't done the fonts yet so we have characters (otherwise -- we'd have to use the tounicodes) while current do - local code, id = isglyph(current) - if code then + local code, id = ischar(current) -- not isglyph because otherwise we can run into + if code then -- processed streams (\about[foo] does that) local a = getlang(current) if a then if a ~= language then @@ -183,25 +185,29 @@ local function mark_words(head,whenfound) -- can be optimized and shared elseif s > 0 then action() end - elseif id == disc_code then -- take the replace - if n > 0 then - local r = getfield(current,"replace") - if r then - -- also disc itself - n = n + 1 - nds[n] = current - -- - for current in traverse_ids(glyph_code,r) do - local code = getchar(current) - n = n + 1 - nds[n] = current - s = s + 1 - str[s] = utfchar(code) - end - end - end - elseif id == kern_code and getsubtype(current) == kerning_code and s > 0 then - -- ok + -- elseif id == disc_code then + -- -- take the replace .. we kick in before we hyphenate so we're + -- -- not yet seeing many discs and we only handle explicit ones + -- -- in fact we could as well decide to ignore words with a disc + -- -- because we then have a compound word + -- if n > 0 then + -- local r = getfield(current,"replace") + -- if r then + -- -- also disc itself + -- n = n + 1 + -- nds[n] = current + -- -- + -- for current in traverse_ids(glyph_code,r) do + -- local code = getchar(current) + -- n = n + 1 + -- nds[n] = current + -- s = s + 1 + -- str[s] = utfchar(code) + -- end + -- end + -- end + -- elseif id == kern_code and getsubtype(current) == fontkern_code and s > 0 then + -- -- ok elseif s > 0 then action() end diff --git a/tex/context/base/mkiv/math-tag.lua b/tex/context/base/mkiv/math-tag.lua index 13c8fffc7..9bb1f1428 100644 --- a/tex/context/base/mkiv/math-tag.lua +++ b/tex/context/base/mkiv/math-tag.lua @@ -74,7 +74,6 @@ local processnoads = noads.process local a_tagged = attributes.private('tagged') local a_mathcategory = attributes.private('mathcategory') local a_mathmode = attributes.private('mathmode') -local a_fontkern = attributes.private('fontkern') local tags = structures.tags @@ -190,7 +189,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer mtexttag = start_tagged("mtext") end setattr(start,a_tagged,mtexttag) - elseif mtexttag and id == kern_code and (getsubtype(start) == fontkern_code or getattr(start,a_fontkern)) then + elseif mtexttag and id == kern_code and getsubtype(start) == fontkern_code then setattr(start,a_tagged,mtexttag) else if mtexttag then diff --git a/tex/context/base/mkiv/node-ltp.lua b/tex/context/base/mkiv/node-ltp.lua index 22a4799ad..560e72878 100644 --- a/tex/context/base/mkiv/node-ltp.lua +++ b/tex/context/base/mkiv/node-ltp.lua @@ -232,8 +232,8 @@ local setkern = nuts.setkern local setdir = nuts.setdir local setshift = nuts.setshift local setwidth = nuts.setwidth ------ getheight = nuts.getheight ------ getdepth = nuts.getdepth +----- setheight = nuts.setheight +----- setdepth = nuts.setdepth local slide_node_list = nuts.slide -- get rid of this, probably ok > 78.2 local find_tail = nuts.tail @@ -282,9 +282,10 @@ local leaders_code = gluecodes.leaders local localpar_code = nodecodes.localpar -local kerning_code = kerncodes.kerning -- font kern local userkern_code = kerncodes.userkern local italickern_code = kerncodes.italiccorrection +local fontkern_code = kerncodes.fontkern +local accentkern_code = kerncodes.accentkern local ligature_code = glyphcodes.ligature @@ -344,8 +345,6 @@ local dir_pops = nodes.dir_is_pop local dir_negations = nodes.dir_negation local is_skipable = nuts.protrusion_skippable -local a_fontkern = attributes.private('fontkern') - -- helpers -- -- It makes more sense to move the somewhat messy dir state tracking @@ -774,7 +773,7 @@ local function add_to_width(line_break_dir,checked_expansion,s) -- split into tw elseif id == kern_code then local kern = getkern(s) if kern ~= 0 then - if checked_expansion and expand_kerns and (getsubtype(s) == kerning_code or getattr(a_fontkern)) then + if checked_expansion and expand_kerns and getsubtype(s) == fontkern_code then local stretch, shrink = kern_stretch_shrink(s,kern) if expand_kerns == "stretch" then adjust_stretch = adjust_stretch + stretch @@ -1491,7 +1490,7 @@ local function post_line_break(par) break elseif id == kern_code then local subtype = getsubtype(next) - if subtype ~= userkern_code and subtype ~= italickern_code and not getattr(next,a_fontkern) then + if subtype == fontkern_code or subtype == accentkern_code then -- fontkerns and accent kerns as well as otf injections break end @@ -2394,7 +2393,7 @@ function constructors.methods.basic(head,d) local kern = getkern(current) if kern ~= 0 then active_width.size = active_width.size + kern - if checked_expansion and expand_kerns and (getsubtype(current) == kerning_code or getattr(current,a_fontkern)) then + if checked_expansion and expand_kerns and getsubtype(current) == fontkern_code then local stretch, shrink = kern_stretch_shrink(current,kern) if expand_kerns == "stretch" then active_width.adjust_stretch = active_width.adjust_stretch + stretch @@ -2555,7 +2554,7 @@ do write(target," ") elseif id == kern_code then local s = getsubtype(a) - if s == userkern_code or s == italickern_code or getattr(a,a_fontkern) then + if s == fontkern_code or s == accentkern_code then if verbose then write(target,"[|]") -- else @@ -2850,7 +2849,7 @@ do -- end -- elseif id == kern_code then -- local kern = getkern(current) - -- if kern ~= 0 and getsubtype(current) == kerning_code then + -- if kern ~= 0 and getsubtype(current) == fontkern_code then -- setkern(current,font_expand_ratio * kern) -- end -- end @@ -2873,7 +2872,7 @@ do -- end -- elseif id == kern_code then -- local kern = getkern(current) - -- if kern ~= 0 and getsubtype(current) == kerning_code then + -- if kern ~= 0 and getsubtype(current) == fontkern_code then -- setkern(current,font_expand_ratio * kern) -- end -- end @@ -2971,7 +2970,7 @@ do local kern = getkern(current) if kern == 0 then -- no kern - elseif getsubtype(current) == kerning_code then -- check getkern(p) + elseif getsubtype(current) == fontkern_code then -- check getkern(p) if cal_expand_ratio then local stretch, shrink = kern_stretch_shrink(current,kern) font_stretch = font_stretch + stretch diff --git a/tex/context/base/mkiv/node-scn.lua b/tex/context/base/mkiv/node-scn.lua index 67a0badec..b294b3013 100644 --- a/tex/context/base/mkiv/node-scn.lua +++ b/tex/context/base/mkiv/node-scn.lua @@ -48,14 +48,13 @@ local spaceskip_code = gluecodes.spaceskip local xspaceskip_code = gluecodes.xspaceskip local leader_code = gluecodes.leaders -local kerning_code = kerncodes.kern +local fontkern_code = kerncodes.fontkern local variables = interfaces.variables local privateattributes = attributes.private local a_runningtext = privateattributes('runningtext') -local a_fontkern = privateattributes('fontkern') local v_yes = variables.yes local v_all = variables.all @@ -173,7 +172,7 @@ local function processwords(attribute,data,flush,head,parent,skip) -- we have hl if f then l = n end - elseif id == kern_code and (getsubtype(n) == kerning_code or getattr(n,a_fontkern)) then + elseif id == kern_code and getsubtype(n) == fontkern_code then if f then l = n end @@ -276,7 +275,7 @@ local function processranges(attribute,flush,head,parent,depth,skip) else -- weird end - elseif id == kern_code and (getsubtype(n) == kerning_code or getattr(n,a_fontkern)) then + elseif id == kern_code and getsubtype(n) == fontkern_code then if f then l = n end diff --git a/tex/context/base/mkiv/node-syn.lua b/tex/context/base/mkiv/node-syn.lua index 401cd4349..2fdea49c1 100644 --- a/tex/context/base/mkiv/node-syn.lua +++ b/tex/context/base/mkiv/node-syn.lua @@ -44,7 +44,6 @@ local getnext = nuts.getnext local getwhd = nuts.getwhd local getwidth = nuts.getwidth local getsubtype = nuts.getsubtype -local getattr = nuts.getattr local nodecodes = nodes.nodecodes local kerncodes = nodes.kerncodes @@ -70,8 +69,6 @@ local new_hlist = nodepool.hlist local getdimensions = nuts.dimensions local getrangedimensions = nuts.rangedimensions -local a_fontkern = attributes.private("fontkern") - local get_synctex_fields = nuts.get_synctex_fields local set_synctex_fields = nuts.set_synctex_fields local set_synctex_line = tex.set_synctex_line @@ -348,7 +345,7 @@ local function collect(head,t,l,dp,ht) t, l = tc, lc end last = current - elseif id == kern_code and (getsubtype(current) == fontkern_code or getattr(current,a_fontkern)) then + elseif id == kern_code and getsubtype(current) == fontkern_code then local tc, lc = get_synctex_fields(current) if tc and tc > 0 then t, l = tc, lc diff --git a/tex/context/base/mkiv/scrn-wid.mkvi b/tex/context/base/mkiv/scrn-wid.mkvi index fc0f9fd3e..d7351eb09 100644 --- a/tex/context/base/mkiv/scrn-wid.mkvi +++ b/tex/context/base/mkiv/scrn-wid.mkvi @@ -86,7 +86,7 @@ %\c!method=, % \v!hidden = not in menu %\c!buffer= \c!symbol=, - \c!distance=1em, + \c!distance=\emwidth, \c!width=\v!fit, \c!height=\v!fit, \c!depth=\v!fit, @@ -249,7 +249,7 @@ {\global\setbox\b_scrn_attachment_collect\hbox\bgroup \ifvoid\b_scrn_attachment_collect\else \box\b_scrn_attachment_collect - \hskip\attachmentparameter\c!distance + \hskip\attachmentparameter\c!distance\relax \fi #content% \egroup} @@ -372,7 +372,7 @@ \setupcomment [\c!state=\v!start, - \c!distance=1em, + \c!distance=\emwidth, \c!color=\interactionparameter\c!color, \c!space=\v!no, \c!symbol=, @@ -505,7 +505,7 @@ {\global\setbox\b_scrn_comment_collect\hbox\bgroup \ifvoid\b_scrn_comment_collect\else \box\b_scrn_comment_collect - \hskip\commentparameter\c!distance + \hskip\commentparameter\c!distance\relax \fi \box\b_scrn_comment_link \egroup} @@ -702,7 +702,7 @@ % \iflocation % \edef\currentlinkedlist{#1}% % \ifcsname\??lk\currentlinkedlist\s!parent\endcsname -% \hskip\linkedlistparameter\c!distance +% \hskip\linkedlistparameter\c!distance\relax % \clf_addlinklistelement{\currentlinkedlist}% % \expanded{\ctxlatecommand{enhancelinkedlist("\currentlinkedlist",\currentlink)}}% can also be done at the lua end % \dogotosomepage {\??lk\currentlinkedlist}\gotobegincharacter \firstlink diff --git a/tex/context/base/mkiv/sort-lan.lua b/tex/context/base/mkiv/sort-lan.lua index 21aabf3eb..1aa173d1b 100644 --- a/tex/context/base/mkiv/sort-lan.lua +++ b/tex/context/base/mkiv/sort-lan.lua @@ -710,11 +710,11 @@ definitions["it"] = { entries = { ["a"] = "a", ["á"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d", ["e"] = "e", ["é"] = "e", ["è"] = "e", ["f"] = "f", ["g"] = "g", - ["h"] = "h", ["i"] = "i", ["í"] = "i", ["ì"] = "i", ["j"] = "i", + ["h"] = "h", ["i"] = "i", ["í"] = "i", ["ì"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o", ["ó"] = "o", ["ò"] = "o", ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t", ["u"] = "u", ["ú"] = "u", ["ù"] = "u", - ["v"] = "u", ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z", + ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z", }, orders = { "a", "á", "b", "c", "d", "e", "é", "è", "f", "g", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex cbf98e2ef..f895df337 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 3b7a6a9b7..2a8de95c2 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/task-ini.lua b/tex/context/base/mkiv/task-ini.lua index 1d17148c3..321528033 100644 --- a/tex/context/base/mkiv/task-ini.lua +++ b/tex/context/base/mkiv/task-ini.lua @@ -39,11 +39,8 @@ appendaction("processors", "characters", "typesetters.breakpoints.handler") appendaction("processors", "characters", "scripts.injectors.handler") -- disabled appendaction("processors", "words", "languages.replacements.handler") -- disabled - -appendaction("processors", "words", "languages.hyphenators.handler") -- always on - appendaction("processors", "words", "languages.words.check") -- disabled -- might move up, no disc check needed then - +appendaction("processors", "words", "languages.hyphenators.handler") -- always on appendaction("processors", "words", "typesetters.initials.handler") -- disabled -- might move up appendaction("processors", "words", "typesetters.firstlines.handler") -- disabled -- might move down diff --git a/tex/context/base/mkiv/trac-vis.lua b/tex/context/base/mkiv/trac-vis.lua index 5d98bc24f..d58114d71 100644 --- a/tex/context/base/mkiv/trac-vis.lua +++ b/tex/context/base/mkiv/trac-vis.lua @@ -144,7 +144,6 @@ local starttiming = statistics.starttiming local stoptiming = statistics.stoptiming local a_visual = attributes.private("visual") -local a_fontkern = attributes.private("fontkern") local a_layer = attributes.private("viewerlayer") local hasbit = number.hasbit @@ -1015,8 +1014,7 @@ local function visualize(head,vertical,forced,parent) setdisc(current,pre,post,replace) elseif id == kern_code then local subtype = getsubtype(current) - -- tricky ... we don't copy the trace attribute in node-inj (yet) - if subtype == font_kern_code or getattr(current,a_fontkern) then + if subtype == font_kern_code then if trace_fontkern or prev_trace_fontkern then head, current = fontkern(head,current) end diff --git a/tex/context/base/mkiv/typo-cap.lua b/tex/context/base/mkiv/typo-cap.lua index 6bf4669df..e10b9df9c 100644 --- a/tex/context/base/mkiv/typo-cap.lua +++ b/tex/context/base/mkiv/typo-cap.lua @@ -52,7 +52,7 @@ local kern_code = nodecodes.kern local disc_code = nodecodes.disc local math_code = nodecodes.math -local kerning_code = kerncodes.kerning +local fontkern_code = kerncodes.fontkern local enableaction = nodes.tasks.enableaction @@ -427,7 +427,7 @@ function cases.handler(head) -- not real fast but also not used on much data elseif id == math_code then start = end_of_math(start) count = 0 - elseif prev_id == kern_code and getsubtype(prev) == kerning_code then + elseif prev_id == kern_code and getsubtype(prev) == fontkern_code then -- still inside a word ...normally kerns are added later else count = 0 @@ -535,7 +535,7 @@ end -- elseif id == math_code then -- start = end_of_math(start) -- count = 0 --- elseif prev_id == kern_code and getsubtype(prev) == kerning_code then +-- elseif prev_id == kern_code and getsubtype(prev) == fontkern_code then -- -- still inside a word ...normally kerns are added later -- else -- count = 0 diff --git a/tex/context/base/mkiv/typo-krn.lua b/tex/context/base/mkiv/typo-krn.lua index 24a91d6b6..8806a99b5 100644 --- a/tex/context/base/mkiv/typo-krn.lua +++ b/tex/context/base/mkiv/typo-krn.lua @@ -8,6 +8,8 @@ if not modules then modules = { } end modules ['typo-krn'] = { -- glue is still somewhat suboptimal -- components: better split on tounicode +-- +-- maybe ignore when properties[n].injections.cursivex (or mark) local next, type, tonumber = next, type, tonumber @@ -79,7 +81,7 @@ local user_list_code = listcodes.unknown local discretionary_code = disccodes.discretionary local automatic_code = disccodes.automatic -local kerning_code = kerncodes.kerning +local fontkern_code = kerncodes.fontkern local userkern_code = kerncodes.userkern local userskip_code = skipcodes.userskip local spaceskip_code = skipcodes.spaceskip @@ -113,7 +115,6 @@ local trace_ligatures_d = false trackers.register("typesetters.kerns.ligatures kerns.mapping = kerns.mapping or { } kerns.factors = kerns.factors or { } local a_kerns = attributes.private("kern") -local a_fontkern = attributes.private('fontkern') local contextsetups = fonts.specifiers.contextsetups @@ -223,7 +224,7 @@ end local function inject_begin(boundary,prev,keeptogether,krn,ok) -- prev is a glyph local char, id = isglyph(boundary) if id == kern_code then - if getsubtype(boundary) == kerning_code or getattr(boundary,a_fontkern) then + if getsubtype(boundary) == fontkern_code then local inject = true if keeptogether then local next = getnext(boundary) @@ -259,7 +260,7 @@ local function inject_end(boundary,next,keeptogether,krn,ok) local tail = find_node_tail(boundary) local char, id = getid(tail) if id == kern_code then - if getsubtype(tail) == kerning_code or getattr(tail,a_fontkern) then + if getsubtype(tail) == fontkern_code then local inject = true if keeptogether then local prev = getprev(tail) @@ -309,7 +310,7 @@ local function process_list(head,keeptogether,krn,font,okay) if mark[char] then -- skip elseif pid == kern_code then - if getsubtype(prev) == kerning_code or getattr(prev,a_fontkern) then + if getsubtype(prev) == fontkern_code then local inject = true if keeptogether then local prevprev = getprev(prev) @@ -408,7 +409,7 @@ function kerns.handler(head) elseif mark[char] then -- skip elseif previd == kern_code then - if getsubtype(prev) == kerning_code or getattr(prev,a_fontkern) then + if getsubtype(prev) == fontkern_code then local inject = true if keeptogether then if previd == glyph_code and keeptogether(prev,start) then @@ -518,7 +519,7 @@ function kerns.handler(head) end bound = false elseif id == kern_code then - bound = getsubtype(start) == kerning_code or getattr(start,a_fontkern) + bound = getsubtype(start) == fontkern_code prev = start previd = id elseif id == glue_code then @@ -564,7 +565,7 @@ function kerns.handler(head) start = getnext(start) end elseif id == kern_code then - bound = getsubtype(start) == kerning_code or getattr(start,a_fontkern) + bound = getsubtype(start) == fontkern_code prev = start previd = id start = getnext(start) diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex 7cb008805..0a55fc4cc 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex 9b2c03c97..ec3987b83 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/context/modules/common/s-abr-01.tex b/tex/context/modules/common/s-abr-01.tex index d71df6c0a..9a6679066 100644 --- a/tex/context/modules/common/s-abr-01.tex +++ b/tex/context/modules/common/s-abr-01.tex @@ -33,6 +33,7 @@ %logo [FGA] {fga} %logo [FGBBS] {fgbbs} +\logo [AI] {ai} \logo [ACROBAT] {Acro\-bat} \logo [APA] {apa} \logo [AFM] {afm} @@ -75,6 +76,8 @@ \logo [CWEB] {cweb} \logo [CSTUG] {cstug} \logo [DANTE] {Dante} +\logo [DECTEN] {dec-10} +\logo [DNA] {dna} \logo [DISTILLER] {distiller} \logo [DRATEX] {Dra\TeXsuffix} \logo [DSC] {dsc} @@ -229,6 +232,7 @@ \logo [PSTOPDF] {pstopdf} \logo [PSTRICKS] {pstricks} \logo [RAM] {ram} +\logo [RCA] {RCA} \logo [READER] {Acro\-bat Reader} \logo [RELAXNG] {Relax\kern.125emNG} \logo [RGB] {rgb} @@ -321,6 +325,7 @@ \logo [XSLT] {xslt} \logo [XSLTPROC] {xsltproc} \logo [XYPIC] {XYPIC} % wrong logo +\logo [VAX] {vax} \logo [VMWARE] {VMWare} \logo [YandY] {y\&y} \logo [ZIP] {zip} diff --git a/tex/context/modules/mkiv/s-fnt-20.mkiv b/tex/context/modules/mkiv/s-fnt-20.mkiv index 584043099..5d6ac75ef 100644 --- a/tex/context/modules/mkiv/s-fnt-20.mkiv +++ b/tex/context/modules/mkiv/s-fnt-20.mkiv @@ -136,6 +136,7 @@ {\getvariable{otftracker}{font}*\getvariable{otftracker}{features} at \getvariable{otftracker}{size}} {\getvariable{otftracker}{direction}} {\getvariable{otftracker}{sample}} + \directsetup{otftracker-extra} \stopchapter \stoptext \stopsetups diff --git a/tex/generic/context/luatex/luatex-basics-nod.lua b/tex/generic/context/luatex/luatex-basics-nod.lua index 35fc96b48..e2d91af41 100644 --- a/tex/generic/context/luatex/luatex-basics-nod.lua +++ b/tex/generic/context/luatex/luatex-basics-nod.lua @@ -48,7 +48,6 @@ end -- Nodes (a subset of context so that we don't get too much unused code): nodes = { } -nodes.pool = { } nodes.handlers = { } local nodecodes = { } @@ -73,7 +72,6 @@ nodes.disccodes = disccodes local flush_node = node.flush_node local remove_node = node.remove -local new_node = node.new local traverse_id = node.traverse_id nodes.handlers.protectglyphs = node.protect_glyphs @@ -108,12 +106,6 @@ function nodes.delete(head,current) return nodes.remove(head,current,true) end -function nodes.pool.kern(k) - local n = new_node("kern",1) - n.kern = k - return n -end - local getfield = node.getfield local setfield = node.setfield @@ -294,20 +286,11 @@ nuts.traverse_id = direct.traverse_id nuts.traverse_char = direct.traverse_char nuts.ligaturing = direct.ligaturing nuts.kerning = direct.kerning +nuts.new = direct.new nuts.getprop = nuts.getattr nuts.setprop = nuts.setattr -local new_nut = direct.new -nuts.new = new_nut -nuts.pool = { } - -function nuts.pool.kern(k) - local n = new_nut("kern",1) - setfield(n,"kern",k) - return n -end - -- properties as used in the (new) injector: local propertydata = direct.get_properties_table() diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 43577b42c..5d67d8059 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 06/21/17 23:03:59 +-- merge date : 06/27/17 18:05:12 do -- begin closure to overcome local limits and interference @@ -4966,7 +4966,6 @@ attributes.private=attributes.private or function(name) return number end nodes={} -nodes.pool={} nodes.handlers={} local nodecodes={} local glyphcodes=node.subtypes("glyph") @@ -4987,7 +4986,6 @@ nodes.glyphcodes=glyphcodes nodes.disccodes=disccodes local flush_node=node.flush_node local remove_node=node.remove -local new_node=node.new local traverse_id=node.traverse_id nodes.handlers.protectglyphs=node.protect_glyphs nodes.handlers.unprotectglyphs=node.unprotect_glyphs @@ -5016,11 +5014,6 @@ end function nodes.delete(head,current) return nodes.remove(head,current,true) end -function nodes.pool.kern(k) - local n=new_node("kern",1) - n.kern=k - return n -end local getfield=node.getfield local setfield=node.setfield nodes.getfield=getfield @@ -5172,16 +5165,9 @@ nuts.traverse_id=direct.traverse_id nuts.traverse_char=direct.traverse_char nuts.ligaturing=direct.ligaturing nuts.kerning=direct.kerning +nuts.new=direct.new nuts.getprop=nuts.getattr nuts.setprop=nuts.setattr -local new_nut=direct.new -nuts.new=new_nut -nuts.pool={} -function nuts.pool.kern(k) - local n=new_nut("kern",1) - setfield(n,"kern",k) - return n -end local propertydata=direct.get_properties_table() nodes.properties={ data=propertydata } direct.set_properties_mode(true,true) @@ -20547,7 +20533,6 @@ local kern_code=nodecodes.kern local glue_code=nodecodes.glue local nuts=nodes.nuts local nodepool=nuts.pool -local newkern=nodepool.kern local tonode=nuts.tonode local tonut=nuts.tonut local getfield=nuts.getfield @@ -20573,9 +20558,18 @@ local traverse_char=nuts.traverse_char local insert_node_before=nuts.insert_before local insert_node_after=nuts.insert_after local properties=nodes.properties.data -function injections.installnewkern(nk) - newkern=nk or newkern -end +local fontkern=nuts.pool and nuts.pool.fontkern +do if not fontkern then + local thekern=nuts.new("kern",0) + local setkern=nuts.setkern + local copy_node=nuts.copy_node + fontkern=function(k) + local n=copy_node(thekern) + setkern(n,k) + return n + end +end end +function injections.installnewkern() end local nofregisteredkerns=0 local nofregisteredpairs=0 local nofregisteredmarks=0 @@ -20778,21 +20772,40 @@ function injections.setkern(current,factor,rlmode,x,injection) if not injection then injection="injections" end - if p then - local i=rawget(p,injection) - if i then - i.leftkern=dx+(i.leftkern or 0) + if rlmode and rlmode<0 then + if p then + local i=rawget(p,injection) + if i then + i.rightkern=dx+(i.rightkern or 0) + else + p[injection]={ + rightkern=dx, + } + end else - p[injection]={ - leftkern=dx, + properties[current]={ + [injection]={ + rightkern=dx, + }, } end else - properties[current]={ - [injection]={ - leftkern=dx, - }, - } + if p then + local i=rawget(p,injection) + if i then + i.leftkern=dx+(i.leftkern or 0) + else + p[injection]={ + leftkern=dx, + } + end + else + properties[current]={ + [injection]={ + leftkern=dx, + }, + } + end end return dx,nofregisteredkerns else @@ -20980,7 +20993,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - head=insert_node_before(head,current,newkern(leftkern)) + head=insert_node_before(head,current,fontkern(leftkern)) end end if prevdisc then @@ -20990,7 +21003,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done=true end end @@ -21000,7 +21013,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done=true end end @@ -21009,7 +21022,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setfield(prev,"replace",newkern(leftkern)) + setfield(prev,"replace",fontkern(leftkern)) end end end @@ -21034,7 +21047,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - pre=insert_node_before(pre,n,newkern(leftkern)) + pre=insert_node_before(pre,n,fontkern(leftkern)) done=true end end @@ -21049,7 +21062,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - post=insert_node_before(post,n,newkern(leftkern)) + post=insert_node_before(post,n,fontkern(leftkern)) done=true end end @@ -21064,7 +21077,7 @@ local function inject_kerns_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - replace=insert_node_before(replace,n,newkern(leftkern)) + replace=insert_node_before(replace,n,fontkern(leftkern)) done=true end end @@ -21123,11 +21136,11 @@ local function inject_pairs_only(head,where) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - head=insert_node_before(head,current,newkern(leftkern)) + head=insert_node_before(head,current,fontkern(leftkern)) end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(head,current,newkern(rightkern)) + insert_node_after(head,current,fontkern(rightkern)) end else local i=p.emptyinjections @@ -21137,7 +21150,7 @@ local function inject_pairs_only(head,where) if next and getid(next)==disc_code then if replace then else - setfield(next,"replace",newkern(rightkern)) + setfield(next,"replace",fontkern(rightkern)) end end end @@ -21150,7 +21163,7 @@ local function inject_pairs_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done=true end end @@ -21160,7 +21173,7 @@ local function inject_pairs_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done=true end end @@ -21169,7 +21182,7 @@ local function inject_pairs_only(head,where) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setfield(prev,"replace",newkern(leftkern)) + setfield(prev,"replace",fontkern(leftkern)) end end end @@ -21198,12 +21211,12 @@ local function inject_pairs_only(head,where) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - pre=insert_node_before(pre,n,newkern(leftkern)) + pre=insert_node_before(pre,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(pre,n,newkern(rightkern)) + insert_node_after(pre,n,fontkern(rightkern)) done=true end end @@ -21222,12 +21235,12 @@ local function inject_pairs_only(head,where) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - post=insert_node_before(post,n,newkern(leftkern)) + post=insert_node_before(post,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(post,n,newkern(rightkern)) + insert_node_after(post,n,fontkern(rightkern)) done=true end end @@ -21246,12 +21259,12 @@ local function inject_pairs_only(head,where) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - replace=insert_node_before(replace,n,newkern(leftkern)) + replace=insert_node_before(replace,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(replace,n,newkern(rightkern)) + insert_node_after(replace,n,fontkern(rightkern)) done=true end end @@ -21266,7 +21279,7 @@ local function inject_pairs_only(head,where) if i then local rightkern=i.rightkern if rightkern and rightkern~=0 then - pre=insert_node_before(pre,pre,newkern(rightkern)) + pre=insert_node_before(pre,pre,fontkern(rightkern)) done=true end end @@ -21279,7 +21292,7 @@ local function inject_pairs_only(head,where) if i then local rightkern=i.rightkern if rightkern and rightkern~=0 then - replace=insert_node_before(replace,replace,newkern(rightkern)) + replace=insert_node_before(replace,replace,fontkern(rightkern)) done=true end end @@ -21371,7 +21384,9 @@ local function inject_everything(head,where) else if pn.markdir<0 then ox=px-pn.markx -+(pn.leftkern or 0) +if not pn.markmark then + ox=ox+(pn.leftkern or 0) +end else ox=px-pn.markx end @@ -21382,13 +21397,15 @@ local function inject_everything(head,where) if trace_injections then report_injections("correcting non zero width mark %C",getchar(n)) end - insert_node_before(n,n,newkern(-wn)) - insert_node_after(n,n,newkern(-wn)) + insert_node_before(n,n,fontkern(-wn)) + insert_node_after(n,n,fontkern(-wn)) end end end local oy=ny+py+pn.marky -oy=oy+(pn.yoffset or 0) +if not pn.markmark then + oy=oy+(pn.yoffset or 0) +end setoffsets(n,ox,oy) if trace_marks then showoffset(n,true) @@ -21464,11 +21481,11 @@ oy=oy+(pn.yoffset or 0) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - head=insert_node_before(head,current,newkern(leftkern)) + head=insert_node_before(head,current,fontkern(leftkern)) end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(head,current,newkern(rightkern)) + insert_node_after(head,current,fontkern(rightkern)) end end else @@ -21479,7 +21496,7 @@ oy=oy+(pn.yoffset or 0) if next and getid(next)==disc_code then if replace then else - setfield(next,"replace",newkern(rightkern)) + setfield(next,"replace",fontkern(rightkern)) end end end @@ -21493,7 +21510,7 @@ oy=oy+(pn.yoffset or 0) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(posttail,newkern(leftkern)) + setlink(posttail,fontkern(leftkern)) done=true end end @@ -21503,7 +21520,7 @@ oy=oy+(pn.yoffset or 0) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setlink(replacetail,newkern(leftkern)) + setlink(replacetail,fontkern(leftkern)) done=true end end @@ -21512,7 +21529,7 @@ oy=oy+(pn.yoffset or 0) if i then local leftkern=i.leftkern if leftkern and leftkern~=0 then - setfield(prev,"replace",newkern(leftkern)) + setfield(prev,"replace",fontkern(leftkern)) end end end @@ -21554,12 +21571,12 @@ oy=oy+(pn.yoffset or 0) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - pre=insert_node_before(pre,n,newkern(leftkern)) + pre=insert_node_before(pre,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(pre,n,newkern(rightkern)) + insert_node_after(pre,n,fontkern(rightkern)) done=true end if hasmarks then @@ -21584,12 +21601,12 @@ oy=oy+(pn.yoffset or 0) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - post=insert_node_before(post,n,newkern(leftkern)) + post=insert_node_before(post,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(post,n,newkern(rightkern)) + insert_node_after(post,n,fontkern(rightkern)) done=true end if hasmarks then @@ -21614,12 +21631,12 @@ oy=oy+(pn.yoffset or 0) end local leftkern=i.leftkern if leftkern and leftkern~=0 then - replace=insert_node_before(replace,n,newkern(leftkern)) + replace=insert_node_before(replace,n,fontkern(leftkern)) done=true end local rightkern=i.rightkern if rightkern and rightkern~=0 then - insert_node_after(replace,n,newkern(rightkern)) + insert_node_after(replace,n,fontkern(rightkern)) done=true end if hasmarks then @@ -21640,7 +21657,7 @@ oy=oy+(pn.yoffset or 0) if i then local rightkern=i.rightkern if rightkern and rightkern~=0 then - pre=insert_node_before(pre,pre,newkern(rightkern)) + pre=insert_node_before(pre,pre,fontkern(rightkern)) done=true end end @@ -21653,7 +21670,7 @@ oy=oy+(pn.yoffset or 0) if i then local rightkern=i.rightkern if rightkern and rightkern~=0 then - replace=insert_node_before(replace,replace,newkern(rightkern)) + replace=insert_node_before(replace,replace,fontkern(rightkern)) done=true end end @@ -22393,8 +22410,8 @@ end local function logwarning(...) report_direct(...) end -local f_unicode=formatters["%U"] -local f_uniname=formatters["%U (%s)"] +local f_unicode=formatters["U+%X"] +local f_uniname=formatters["U+%X (%s)"] local f_unilist=formatters["% t (% t)"] local function gref(n) if type(n)=="number" then @@ -22944,8 +22961,8 @@ function handlers.gpos_mark2base(head,start,dataset,sequence,markanchors,rlmode) local ma=markanchors[2] local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basechar %s => (%p,%p)", - pref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basechar %s => (%p,%p)", + pref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head,start,true elseif trace_bugs then @@ -23001,8 +23018,8 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm if ba then local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, index %s, bound %s: anchoring mark %s to baselig %s at index %s => (%p,%p)", - pref(dataset,sequence),anchor,index,bound,gref(markchar),gref(basechar),index,dx,dy) + logprocess("%s, index %s, bound %s, anchoring mark %s to baselig %s at index %s => (%p,%p)", + pref(dataset,sequence),index,bound,gref(markchar),gref(basechar),index,dx,dy) end return head,start,true else @@ -23048,8 +23065,8 @@ function handlers.gpos_mark2mark(head,start,dataset,sequence,markanchors,rlmode) local ma=markanchors[2] local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],true,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basemark %s => (%p,%p)", - pref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basemark %s => (%p,%p)", + pref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head,start,true end @@ -23456,8 +23473,8 @@ function chainprocs.gpos_mark2base(head,start,stop,dataset,sequence,currentlooku if ma then local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basechar %s => (%p,%p)", - cref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basechar %s => (%p,%p)", + cref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head,start,true end @@ -23526,8 +23543,8 @@ function chainprocs.gpos_mark2ligature(head,start,stop,dataset,sequence,currentl if ba then local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],false,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to baselig %s at index %s => (%p,%p)", - cref(dataset,sequence),anchor,a or bound,gref(markchar),gref(basechar),index,dx,dy) + logprocess("%s, bound %s, anchoring mark %s to baselig %s at index %s => (%p,%p)", + cref(dataset,sequence),a or bound,gref(markchar),gref(basechar),index,dx,dy) end return head,start,true end @@ -23582,8 +23599,8 @@ function chainprocs.gpos_mark2mark(head,start,stop,dataset,sequence,currentlooku if ma then local dx,dy,bound=setmark(start,base,factor,rlmode,ba,ma,characters[basechar],true,checkmarks) if trace_marks then - logprocess("%s, anchor %s, bound %s: anchoring mark %s to basemark %s => (%p,%p)", - cref(dataset,sequence),anchor,bound,gref(markchar),gref(basechar),dx,dy) + logprocess("%s, bound %s, anchoring mark %s to basemark %s => (%p,%p)", + cref(dataset,sequence),bound,gref(markchar),gref(basechar),dx,dy) end return head,start,true end @@ -23657,12 +23674,21 @@ end local function show_skip(dataset,sequence,char,ck,class) logwarning("%s: skipping char %s, class %a, rule %a, lookuptype %a",cref(dataset,sequence),gref(char),class,ck[1],ck[8] or ck[2]) end -local new_kern=nuts.pool.kern +local userkern=nuts.pool and nuts.pool.newkern +do if not userkern then + local thekern=nuts.new("kern",1) + local setkern=nuts.setkern + userkern=function(k) + local n=copy_node(thekern) + setkern(n,k) + return n + end +end end local function checked(head) local current=head while current do if getid(current)==glue_code then - local kern=new_kern(getwidth(current)) + local kern=userkern(getwidth(current)) if head==current then local next=getnext(current) if next then |