summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-06-27 18:48:11 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-06-27 18:48:11 +0200
commitf8d48a62bd62df77685bd8581c1b8311ae26525f (patch)
tree56d8e9d605c1877d2f1c14b878c962d29d52cc9f
parent5c9b859165af46407543b25589ce8852ee079620 (diff)
downloadcontext-f8d48a62bd62df77685bd8581c1b8311ae26525f.tar.gz
2017-06-27 18:10:00
-rw-r--r--doc/context/documents/general/qrcs/setup-cs.pdfbin845008 -> 845006 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-de.pdfbin842918 -> 842914 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-en.pdfbin847755 -> 847753 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-fr.pdfbin841453 -> 841447 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-it.pdfbin843061 -> 843062 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-nl.pdfbin840025 -> 840036 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-ro.pdfbin840109 -> 840110 bytes
-rw-r--r--scripts/context/lua/mtx-unicode.lua6
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkiv/char-cjk.lua33
-rw-r--r--tex/context/base/mkiv/char-def.lua7952
-rw-r--r--tex/context/base/mkiv/char-ini.lua27
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-ctx.lua20
-rw-r--r--tex/context/base/mkiv/font-ext.lua163
-rw-r--r--tex/context/base/mkiv/font-nod.lua2
-rw-r--r--tex/context/base/mkiv/font-otd.lua45
-rw-r--r--tex/context/base/mkiv/font-otj.lua155
-rw-r--r--tex/context/base/mkiv/font-ots.lua45
-rw-r--r--tex/context/base/mkiv/font-ott.lua531
-rw-r--r--tex/context/base/mkiv/font-pre.mkiv43
-rw-r--r--tex/context/base/mkiv/font-sol.lua3
-rw-r--r--tex/context/base/mkiv/font-tra.mkiv5
-rw-r--r--tex/context/base/mkiv/lang-wrd.lua64
-rw-r--r--tex/context/base/mkiv/math-tag.lua3
-rw-r--r--tex/context/base/mkiv/node-ltp.lua23
-rw-r--r--tex/context/base/mkiv/node-scn.lua7
-rw-r--r--tex/context/base/mkiv/node-syn.lua5
-rw-r--r--tex/context/base/mkiv/scrn-wid.mkvi10
-rw-r--r--tex/context/base/mkiv/sort-lan.lua4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25726 -> 25711 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin424956 -> 425160 bytes
-rw-r--r--tex/context/base/mkiv/task-ini.lua5
-rw-r--r--tex/context/base/mkiv/trac-vis.lua4
-rw-r--r--tex/context/base/mkiv/typo-cap.lua6
-rw-r--r--tex/context/base/mkiv/typo-krn.lua17
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin847755 -> 847753 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60775 -> 60775 bytes
-rw-r--r--tex/context/modules/common/s-abr-01.tex5
-rw-r--r--tex/context/modules/mkiv/s-fnt-20.mkiv1
-rw-r--r--tex/generic/context/luatex/luatex-basics-nod.lua19
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua198
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
index d77253717..26bd709f0 100644
--- a/doc/context/documents/general/qrcs/setup-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf
index 36a082b75..1586651ba 100644
--- a/doc/context/documents/general/qrcs/setup-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf
index 7cb008805..0a55fc4cc 100644
--- a/doc/context/documents/general/qrcs/setup-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf
index 1e58cabed..f50507514 100644
--- a/doc/context/documents/general/qrcs/setup-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf
index 67318989e..0672bd1d9 100644
--- a/doc/context/documents/general/qrcs/setup-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf
index b129e2102..553886cf7 100644
--- a/doc/context/documents/general/qrcs/setup-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf
index a7e7373b4..d35228bf9 100644
--- a/doc/context/documents/general/qrcs/setup-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-ro.pdf
Binary files differ
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
index cbf98e2ef..f895df337 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 3b7a6a9b7..2a8de95c2 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
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
index 7cb008805..0a55fc4cc 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 9b2c03c97..ec3987b83 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
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