summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv')
-rw-r--r--tex/context/base/mkiv/char-def.lua2301
-rw-r--r--tex/context/base/mkiv/char-ini.lua24
-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-cff.lua23
-rw-r--r--tex/context/base/mkiv/font-dsp.lua20
-rw-r--r--tex/context/base/mkiv/font-imp-italics.lua8
-rw-r--r--tex/context/base/mkiv/font-mis.lua2
-rw-r--r--tex/context/base/mkiv/font-osd.lua103
-rw-r--r--tex/context/base/mkiv/font-otc.lua6
-rw-r--r--tex/context/base/mkiv/font-otl.lua2
-rw-r--r--tex/context/base/mkiv/font-ots.lua423
-rw-r--r--tex/context/base/mkiv/font-shp.lua2
-rw-r--r--tex/context/base/mkiv/math-dir.lua1
-rw-r--r--tex/context/base/mkiv/mult-low.lua10
-rw-r--r--tex/context/base/mkiv/mult-prm.lua6
-rw-r--r--tex/context/base/mkiv/pack-cut.mkiv8
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24641 -> 24594 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin260468 -> 261499 bytes
-rw-r--r--tex/context/base/mkiv/strc-doc.lua6
-rw-r--r--tex/context/base/mkiv/strc-lst.lua9
-rw-r--r--tex/context/base/mkiv/type-set.mkiv1
22 files changed, 2683 insertions, 276 deletions
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index 57061735b..a5a21687b 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -45,6 +45,43 @@ local variants_dotted={
[0xFE00]="dotted form",
}
+local variants_90={
+ [0xFE00]="rotated 90 degrees",
+}
+
+local variants_180={
+ [0xFE01]="rotated 180 degrees",
+}
+
+local variants_270={
+ [0xFE02]="rotated 270 degrees",
+}
+
+local variants_expanded={
+ [0xFE00]="expanded",
+}
+
+local variants_90_180={
+ [0xFE00]="rotated 90 degrees",
+ [0xFE01]="rotated 180 degrees",
+}
+
+local variants_90_180_270={
+ [0xFE00]="rotated 90 degrees",
+ [0xFE01]="rotated 180 degrees",
+ [0xFE02]="rotated 270 degrees",
+}
+
+local variants_180_270={
+ [0xFE01]="rotated 180 degrees",
+ [0xFE02]="rotated 270 degrees",
+}
+
+local variants_90_270={
+ [0xFE00]="rotated 90 degrees",
+ [0xFE02]="rotated 270 degrees",
+}
+
characters = characters or { }
characters.data={
@@ -480,9 +517,9 @@ characters.data={
direction="es",
linebreak="hy",
mathclass="ordinary",
- mathgroup="binary arithmetic",
mathextensible="h",
mathfiller="relfill",
+ mathgroup="binary arithmetic",
mathname="mathhyphen",
mathsymbol=0x2212,
synonyms={ "hyphen or minus sign", "hyphus" },
@@ -701,8 +738,8 @@ characters.data={
},
{
class="relation",
- name="Relbar",
comment="useless",
+ name="Relbar",
},
},
unicodeslot=0x3D,
@@ -1048,8 +1085,8 @@ characters.data={
{
adobename="asciicircum",
category="sk",
- comment="the Hat looks rediculous in most fonts",
cjkwd="na",
+ comment="the Hat looks rediculous in most fonts",
contextname="textasciicircum",
description="CIRCUMFLEX ACCENT",
direction="on",
@@ -23219,6 +23256,7 @@ characters.data={
direction="l",
indic="c",
linebreak="al",
+ synonyms={ "bangla khanda ta" },
unicodeslot=0x9CE,
},
[0x9D7]={
@@ -28096,6 +28134,13 @@ characters.data={
linebreak="al",
unicodeslot=0xCF2,
},
+ [0xCF3]={
+ category="mc",
+ description="KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0xCF3,
+ },
[0xD00]={
category="mn",
description="MALAYALAM SIGN COMBINING ANUSVARA ABOVE",
@@ -30909,6 +30954,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xECD,
},
+ [0xECE]={
+ category="mn",
+ description="LAO YAMAKKAN",
+ direction="nsm",
+ linebreak="sa",
+ unicodeslot=0xECE,
+ },
[0xED0]={
category="nd",
description="LAO DIGIT ZERO",
@@ -56408,7 +56460,7 @@ characters.data={
combining=0xEA,
description="COMBINING DOUBLE CIRCUMFLEX ABOVE",
direction="nsm",
- linebreak="cm",
+ linebreak="gl",
unicodeslot=0x1DCD,
},
[0x1DCE]={
@@ -56784,7 +56836,7 @@ characters.data={
combining=0xE9,
description="COMBINING DOUBLE INVERTED BREVE BELOW",
direction="nsm",
- linebreak="cm",
+ linebreak="gl",
unicodeslot=0x1DFC,
},
[0x1DFD]={
@@ -63092,7 +63144,7 @@ characters.data={
category="po",
description="QUADRUPLE PRIME",
direction="on",
- linebreak="al",
+ linebreak="po",
mathclass="prime",
mathname="quadrupleprime",
specials={ "compat", 0x2032, 0x2032, 0x2032, 0x2032 },
@@ -63195,6 +63247,7 @@ characters.data={
linebreak="al",
mathclass="ghost",
mathname="invisiblecomma",
+ synonyms={ "invisible comma" },
unicodeslot=0x2063,
},
[0x2064]={
@@ -66926,8 +66979,8 @@ characters.data={
description="EMPTY SET",
direction="on",
linebreak="al",
- mathgroup="constant set",
mathclass="ordinary",
+ mathgroup="constant set",
mathname="emptyset",
synonyms={ "null set" },
unicodeslot=0x2205,
@@ -67102,8 +67155,8 @@ characters.data={
},
{
class="relation",
- name="relbar",
comment="useless",
+ name="relbar",
},
},
unicodeslot=0x2212,
@@ -159588,6 +159641,30 @@ characters.data={
linebreak="al",
unicodeslot=0x10EB1,
},
+ [0x10EFD]={
+ category="mn",
+ combining=0xDC,
+ description="ARABIC SMALL LOW WORD SAKTA",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x10EFD,
+ },
+ [0x10EFE]={
+ category="mn",
+ combining=0xDC,
+ description="ARABIC SMALL LOW WORD QASR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x10EFE,
+ },
+ [0x10EFF]={
+ category="mn",
+ combining=0xDC,
+ description="ARABIC SMALL LOW WORD MADDA",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x10EFF,
+ },
[0x10F00]={
category="lo",
description="OLD SOGDIAN LETTER ALEPH",
@@ -164352,6 +164429,27 @@ characters.data={
linebreak="cm",
unicodeslot=0x1123E,
},
+ [0x1123F]={
+ category="lo",
+ description="KHOJKI LETTER QA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1123F,
+ },
+ [0x11240]={
+ category="lo",
+ description="KHOJKI LETTER SHORT I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11240,
+ },
+ [0x11241]={
+ category="mn",
+ description="KHOJKI VOWEL SIGN VOCALIC R",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11241,
+ },
[0x11280]={
category="lo",
description="MULTANI LETTER A",
@@ -172828,6 +172926,76 @@ characters.data={
linebreak="al",
unicodeslot=0x11AF8,
},
+ [0x11B00]={
+ category="po",
+ description="DEVANAGARI HEAD MARK",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B00,
+ },
+ [0x11B01]={
+ category="po",
+ description="DEVANAGARI HEAD MARK WITH HEADSTROKE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B01,
+ },
+ [0x11B02]={
+ category="po",
+ description="DEVANAGARI SIGN BHALE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B02,
+ },
+ [0x11B03]={
+ category="po",
+ description="DEVANAGARI SIGN BHALE WITH HOOK",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B03,
+ },
+ [0x11B04]={
+ category="po",
+ description="DEVANAGARI SIGN EXTENDED BHALE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B04,
+ },
+ [0x11B05]={
+ category="po",
+ description="DEVANAGARI SIGN EXTENDED BHALE WITH HOOK",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B05,
+ },
+ [0x11B06]={
+ category="po",
+ description="DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B06,
+ },
+ [0x11B07]={
+ category="po",
+ description="DEVANAGARI SIGN WESTERN NINE-LIKE BHALE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B07,
+ },
+ [0x11B08]={
+ category="po",
+ description="DEVANAGARI SIGN REVERSED NINE-LIKE BHALE",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B08,
+ },
+ [0x11B09]={
+ category="po",
+ description="DEVANAGARI SIGN MINDU",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x11B09,
+ },
[0x11C00]={
category="lo",
description="BHAIKSUKI LETTER A",
@@ -175129,6 +175297,610 @@ characters.data={
linebreak="al",
unicodeslot=0x11EF8,
},
+ [0x11F00]={
+ category="mn",
+ description="KAWI SIGN CANDRABINDU",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F00,
+ },
+ [0x11F01]={
+ category="mn",
+ description="KAWI SIGN ANUSVARA",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F01,
+ },
+ [0x11F02]={
+ category="lo",
+ description="KAWI SIGN REPHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F02,
+ },
+ [0x11F03]={
+ category="mc",
+ description="KAWI SIGN VISARGA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F03,
+ },
+ [0x11F04]={
+ category="lo",
+ description="KAWI LETTER A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F04,
+ },
+ [0x11F05]={
+ category="lo",
+ description="KAWI LETTER AA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F05,
+ },
+ [0x11F06]={
+ category="lo",
+ description="KAWI LETTER I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F06,
+ },
+ [0x11F07]={
+ category="lo",
+ description="KAWI LETTER II",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F07,
+ },
+ [0x11F08]={
+ category="lo",
+ description="KAWI LETTER U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F08,
+ },
+ [0x11F09]={
+ category="lo",
+ description="KAWI LETTER UU",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F09,
+ },
+ [0x11F0A]={
+ category="lo",
+ description="KAWI LETTER VOCALIC R",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0A,
+ },
+ [0x11F0B]={
+ category="lo",
+ description="KAWI LETTER VOCALIC RR",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0B,
+ },
+ [0x11F0C]={
+ category="lo",
+ description="KAWI LETTER VOCALIC L",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0C,
+ },
+ [0x11F0D]={
+ category="lo",
+ description="KAWI LETTER VOCALIC LL",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0D,
+ },
+ [0x11F0E]={
+ category="lo",
+ description="KAWI LETTER E",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0E,
+ },
+ [0x11F0F]={
+ category="lo",
+ description="KAWI LETTER AI",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F0F,
+ },
+ [0x11F10]={
+ category="lo",
+ description="KAWI LETTER O",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F10,
+ },
+ [0x11F12]={
+ category="lo",
+ description="KAWI LETTER KA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F12,
+ },
+ [0x11F13]={
+ category="lo",
+ description="KAWI LETTER KHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F13,
+ },
+ [0x11F14]={
+ category="lo",
+ description="KAWI LETTER GA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F14,
+ },
+ [0x11F15]={
+ category="lo",
+ description="KAWI LETTER GHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F15,
+ },
+ [0x11F16]={
+ category="lo",
+ description="KAWI LETTER NGA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F16,
+ },
+ [0x11F17]={
+ category="lo",
+ description="KAWI LETTER CA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F17,
+ },
+ [0x11F18]={
+ category="lo",
+ description="KAWI LETTER CHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F18,
+ },
+ [0x11F19]={
+ category="lo",
+ description="KAWI LETTER JA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F19,
+ },
+ [0x11F1A]={
+ category="lo",
+ description="KAWI LETTER JHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1A,
+ },
+ [0x11F1B]={
+ category="lo",
+ description="KAWI LETTER NYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1B,
+ },
+ [0x11F1C]={
+ category="lo",
+ description="KAWI LETTER TTA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1C,
+ },
+ [0x11F1D]={
+ category="lo",
+ description="KAWI LETTER TTHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1D,
+ },
+ [0x11F1E]={
+ category="lo",
+ description="KAWI LETTER DDA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1E,
+ },
+ [0x11F1F]={
+ category="lo",
+ description="KAWI LETTER DDHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F1F,
+ },
+ [0x11F20]={
+ category="lo",
+ description="KAWI LETTER NNA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F20,
+ },
+ [0x11F21]={
+ category="lo",
+ description="KAWI LETTER TA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F21,
+ },
+ [0x11F22]={
+ category="lo",
+ description="KAWI LETTER THA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F22,
+ },
+ [0x11F23]={
+ category="lo",
+ description="KAWI LETTER DA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F23,
+ },
+ [0x11F24]={
+ category="lo",
+ description="KAWI LETTER DHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F24,
+ },
+ [0x11F25]={
+ category="lo",
+ description="KAWI LETTER NA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F25,
+ },
+ [0x11F26]={
+ category="lo",
+ description="KAWI LETTER PA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F26,
+ },
+ [0x11F27]={
+ category="lo",
+ description="KAWI LETTER PHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F27,
+ },
+ [0x11F28]={
+ category="lo",
+ description="KAWI LETTER BA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F28,
+ },
+ [0x11F29]={
+ category="lo",
+ description="KAWI LETTER BHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F29,
+ },
+ [0x11F2A]={
+ category="lo",
+ description="KAWI LETTER MA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2A,
+ },
+ [0x11F2B]={
+ category="lo",
+ description="KAWI LETTER YA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2B,
+ },
+ [0x11F2C]={
+ category="lo",
+ description="KAWI LETTER RA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2C,
+ },
+ [0x11F2D]={
+ category="lo",
+ description="KAWI LETTER LA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2D,
+ },
+ [0x11F2E]={
+ category="lo",
+ description="KAWI LETTER WA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2E,
+ },
+ [0x11F2F]={
+ category="lo",
+ description="KAWI LETTER SHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F2F,
+ },
+ [0x11F30]={
+ category="lo",
+ description="KAWI LETTER SSA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F30,
+ },
+ [0x11F31]={
+ category="lo",
+ description="KAWI LETTER SA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F31,
+ },
+ [0x11F32]={
+ category="lo",
+ description="KAWI LETTER HA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F32,
+ },
+ [0x11F33]={
+ category="lo",
+ description="KAWI LETTER JNYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11F33,
+ },
+ [0x11F34]={
+ category="mc",
+ description="KAWI VOWEL SIGN AA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F34,
+ },
+ [0x11F35]={
+ category="mc",
+ description="KAWI VOWEL SIGN ALTERNATE AA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F35,
+ },
+ [0x11F36]={
+ category="mn",
+ description="KAWI VOWEL SIGN I",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F36,
+ },
+ [0x11F37]={
+ category="mn",
+ description="KAWI VOWEL SIGN II",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F37,
+ },
+ [0x11F38]={
+ category="mn",
+ description="KAWI VOWEL SIGN U",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F38,
+ },
+ [0x11F39]={
+ category="mn",
+ description="KAWI VOWEL SIGN UU",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F39,
+ },
+ [0x11F3A]={
+ category="mn",
+ description="KAWI VOWEL SIGN VOCALIC R",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F3A,
+ },
+ [0x11F3E]={
+ category="mc",
+ description="KAWI VOWEL SIGN E",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F3E,
+ },
+ [0x11F3F]={
+ category="mc",
+ description="KAWI VOWEL SIGN AI",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F3F,
+ },
+ [0x11F40]={
+ category="mn",
+ description="KAWI VOWEL SIGN EU",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F40,
+ },
+ [0x11F41]={
+ category="mc",
+ combining=0x9,
+ description="KAWI SIGN KILLER",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x11F41,
+ },
+ [0x11F42]={
+ category="mn",
+ combining=0x9,
+ description="KAWI CONJOINER",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x11F42,
+ },
+ [0x11F43]={
+ category="po",
+ description="KAWI DANDA",
+ direction="l",
+ linebreak="ba",
+ unicodeslot=0x11F43,
+ },
+ [0x11F44]={
+ category="po",
+ description="KAWI DOUBLE DANDA",
+ direction="l",
+ linebreak="ba",
+ unicodeslot=0x11F44,
+ },
+ [0x11F45]={
+ category="po",
+ description="KAWI PUNCTUATION SECTION MARKER",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F45,
+ },
+ [0x11F46]={
+ category="po",
+ description="KAWI PUNCTUATION ALTERNATE SECTION MARKER",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F46,
+ },
+ [0x11F47]={
+ category="po",
+ description="KAWI PUNCTUATION FLOWER",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F47,
+ },
+ [0x11F48]={
+ category="po",
+ description="KAWI PUNCTUATION SPACE FILLER",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F48,
+ },
+ [0x11F49]={
+ category="po",
+ description="KAWI PUNCTUATION DOT",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F49,
+ },
+ [0x11F4A]={
+ category="po",
+ description="KAWI PUNCTUATION DOUBLE DOT",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4A,
+ },
+ [0x11F4B]={
+ category="po",
+ description="KAWI PUNCTUATION TRIPLE DOT",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4B,
+ },
+ [0x11F4C]={
+ category="po",
+ description="KAWI PUNCTUATION CIRCLE",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4C,
+ },
+ [0x11F4D]={
+ category="po",
+ description="KAWI PUNCTUATION FILLED CIRCLE",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4D,
+ },
+ [0x11F4E]={
+ category="po",
+ description="KAWI PUNCTUATION SPIRAL",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4E,
+ },
+ [0x11F4F]={
+ category="po",
+ description="KAWI PUNCTUATION CLOSING SPIRAL",
+ direction="l",
+ linebreak="id",
+ unicodeslot=0x11F4F,
+ },
+ [0x11F50]={
+ category="nd",
+ description="KAWI DIGIT ZERO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F50,
+ },
+ [0x11F51]={
+ category="nd",
+ description="KAWI DIGIT ONE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F51,
+ },
+ [0x11F52]={
+ category="nd",
+ description="KAWI DIGIT TWO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F52,
+ },
+ [0x11F53]={
+ category="nd",
+ description="KAWI DIGIT THREE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F53,
+ },
+ [0x11F54]={
+ category="nd",
+ description="KAWI DIGIT FOUR",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F54,
+ },
+ [0x11F55]={
+ category="nd",
+ description="KAWI DIGIT FIVE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F55,
+ },
+ [0x11F56]={
+ category="nd",
+ description="KAWI DIGIT SIX",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F56,
+ },
+ [0x11F57]={
+ category="nd",
+ description="KAWI DIGIT SEVEN",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F57,
+ },
+ [0x11F58]={
+ category="nd",
+ description="KAWI DIGIT EIGHT",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F58,
+ },
+ [0x11F59]={
+ category="nd",
+ description="KAWI DIGIT NINE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x11F59,
+ },
[0x11FB0]={
category="lo",
description="LISU LETTER YHA",
@@ -185847,6 +186619,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13091,
+ variants=variants_90,
},
[0x13092]={
category="lo",
@@ -185854,6 +186627,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13092,
+ variants=variants_90,
},
[0x13093]={
category="lo",
@@ -185861,6 +186635,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13093,
+ variants=variants_180,
},
[0x13094]={
category="lo",
@@ -186015,6 +186790,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x130A9,
+ variants=variants_180,
},
[0x130AA]={
category="lo",
@@ -186729,6 +187505,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1310F,
+ variants=variants_90,
},
[0x13110]={
category="lo",
@@ -186785,6 +187562,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13117,
+ variants=variants_270,
},
[0x13118]={
category="lo",
@@ -186820,6 +187598,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1311C,
+ variants=variants_90,
},
[0x1311D]={
category="lo",
@@ -186855,6 +187634,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13121,
+ variants=variants_90,
},
[0x13122]={
category="lo",
@@ -186897,6 +187677,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13127,
+ variants=variants_90,
},
[0x13128]={
category="lo",
@@ -187023,6 +187804,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13139,
+ variants=variants_90_270,
},
[0x1313A]={
category="lo",
@@ -187541,6 +188323,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13183,
+ variants=variants_270,
},
[0x13184]={
category="lo",
@@ -187569,6 +188352,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13187,
+ variants=variants_180,
},
[0x13188]={
category="lo",
@@ -187744,6 +188528,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131A0,
+ variants=variants_90_270,
},
[0x131A1]={
category="lo",
@@ -187863,6 +188648,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131B1,
+ variants=variants_90_180,
},
[0x131B2]={
category="lo",
@@ -187912,6 +188698,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131B8,
+ variants=variants_90,
},
[0x131B9]={
category="lo",
@@ -187919,6 +188706,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131B9,
+ variants=variants_90,
},
[0x131BA]={
category="lo",
@@ -187926,6 +188714,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131BA,
+ variants=variants_270,
},
[0x131BB]={
category="lo",
@@ -188045,6 +188834,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131CB,
+ variants=variants_90,
},
[0x131CC]={
category="lo",
@@ -188290,6 +189080,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131EE,
+ variants=variants_180_270,
},
[0x131EF]={
category="lo",
@@ -188360,6 +189151,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131F8,
+ variants=variants_180,
},
[0x131F9]={
category="lo",
@@ -188367,6 +189159,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131F9,
+ variants=variants_90_180,
},
[0x131FA]={
category="lo",
@@ -188374,6 +189167,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x131FA,
+ variants=variants_90_180,
},
[0x131FB]={
category="lo",
@@ -188570,6 +189364,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13216,
+ variants=variants_270,
},
[0x13217]={
category="lo",
@@ -189025,6 +189820,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13257,
+ variants=variants_180,
},
[0x13258]={
category="lo",
@@ -189277,6 +190073,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1327B,
+ variants=variants_270,
},
[0x1327C]={
category="lo",
@@ -189305,6 +190102,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1327F,
+ variants=variants_90_180,
},
[0x13280]={
category="lo",
@@ -189347,6 +190145,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13285,
+ variants=variants_90,
},
[0x13286]={
category="lo",
@@ -189396,6 +190195,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1328C,
+ variants=variants_90,
},
[0x1328D]={
category="lo",
@@ -189564,6 +190364,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132A4,
+ variants=variants_180_270,
},
[0x132A5]={
category="lo",
@@ -189606,6 +190407,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132AA,
+ variants=variants_90,
},
[0x132AB]={
category="lo",
@@ -189837,6 +190639,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132CB,
+ variants=variants_90,
},
[0x132CC]={
category="lo",
@@ -189956,6 +190759,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132DC,
+ variants=variants_90,
},
[0x132DD]={
category="lo",
@@ -190033,6 +190837,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132E7,
+ variants=variants_90_270,
},
[0x132E8]={
category="lo",
@@ -190047,6 +190852,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132E9,
+ variants=variants_270,
},
[0x132EA]={
category="lo",
@@ -190152,6 +190958,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132F8,
+ variants=variants_270,
},
[0x132F9]={
category="lo",
@@ -190187,6 +190994,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x132FD,
+ variants=variants_270,
},
[0x132FE]={
category="lo",
@@ -190222,6 +191030,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13302,
+ variants=variants_270,
},
[0x13303]={
category="lo",
@@ -190229,6 +191038,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13303,
+ variants=variants_270,
},
[0x13304]={
category="lo",
@@ -190257,6 +191067,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13307,
+ variants=variants_90,
},
[0x13308]={
category="lo",
@@ -190264,6 +191075,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13308,
+ variants=variants_180,
},
[0x13309]={
category="lo",
@@ -190320,6 +191132,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13310,
+ variants=variants_270,
},
[0x13311]={
category="lo",
@@ -190327,6 +191140,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13311,
+ variants=variants_270,
},
[0x13312]={
category="lo",
@@ -190334,6 +191148,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13312,
+ variants=variants_180_270,
},
[0x13313]={
category="lo",
@@ -190341,6 +191156,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13313,
+ variants=variants_180_270,
},
[0x13314]={
category="lo",
@@ -190348,6 +191164,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13314,
+ variants=variants_180_270,
},
[0x13315]={
category="lo",
@@ -190397,6 +191214,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1331B,
+ variants=variants_90_180,
},
[0x1331C]={
category="lo",
@@ -190404,6 +191222,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1331C,
+ variants=variants_270,
},
[0x1331D]={
category="lo",
@@ -190439,6 +191258,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13321,
+ variants=variants_180_270,
},
[0x13322]={
category="lo",
@@ -190446,6 +191266,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13322,
+ variants=variants_90_180,
},
[0x13323]={
category="lo",
@@ -190551,6 +191372,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13331,
+ variants=variants_180_270,
},
[0x13332]={
category="lo",
@@ -190621,6 +191443,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1333B,
+ variants=variants_90,
},
[0x1333C]={
category="lo",
@@ -190628,6 +191451,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1333C,
+ variants=variants_90,
},
[0x1333D]={
category="lo",
@@ -190726,6 +191550,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1334A,
+ variants=variants_270,
},
[0x1334B]={
category="lo",
@@ -190887,6 +191712,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13361,
+ variants=variants_270,
},
[0x13362]={
category="lo",
@@ -191013,6 +191839,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13373,
+ variants=variants_270,
},
[0x13374]={
category="lo",
@@ -191041,6 +191868,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13377,
+ variants=variants_90,
},
[0x13378]={
category="lo",
@@ -191048,6 +191876,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13378,
+ variants=variants_90,
},
[0x13379]={
category="lo",
@@ -191083,6 +191912,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1337D,
+ variants=variants_270,
},
[0x1337E]={
category="lo",
@@ -191139,6 +191969,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13385,
+ variants=variants_270,
},
[0x13386]={
category="lo",
@@ -191279,6 +192110,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13399,
+ variants=variants_90,
},
[0x1339A]={
category="lo",
@@ -191286,6 +192118,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1339A,
+ variants=variants_90,
},
[0x1339B]={
category="lo",
@@ -191433,6 +192266,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133AF,
+ variants=variants_270,
},
[0x133B0]={
category="lo",
@@ -191440,6 +192274,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133B0,
+ variants=variants_270,
},
[0x133B1]={
category="lo",
@@ -191545,6 +192380,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133BF,
+ variants=variants_270,
},
[0x133C0]={
category="lo",
@@ -191685,6 +192521,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133D3,
+ variants=variants_90,
},
[0x133D4]={
category="lo",
@@ -191755,6 +192592,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133DD,
+ variants=variants_270,
},
[0x133DE]={
category="lo",
@@ -191902,6 +192740,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133F2,
+ variants=variants_90,
},
[0x133F3]={
category="lo",
@@ -191923,6 +192762,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133F5,
+ variants=variants_90,
},
[0x133F6]={
category="lo",
@@ -191930,6 +192770,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x133F6,
+ variants=variants_90,
},
[0x133F7]={
category="lo",
@@ -192021,6 +192862,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13403,
+ variants=variants_90,
},
[0x13404]={
category="lo",
@@ -192154,6 +192996,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13416,
+ variants=variants_90,
},
[0x13417]={
category="lo",
@@ -192175,6 +193018,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13419,
+ variants=variants_90_180_270,
},
[0x1341A]={
category="lo",
@@ -192182,6 +193026,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1341A,
+ variants=variants_90,
},
[0x1341B]={
category="lo",
@@ -192245,6 +193090,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x13423,
+ variants=variants_90,
},
[0x13424]={
category="lo",
@@ -192308,6 +193154,7 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1342C,
+ variants=variants_270,
},
[0x1342D]={
category="lo",
@@ -192322,6 +193169,14 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1342E,
+ variants=variants_270,
+ },
+ [0x1342F]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH V011D",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1342F,
},
[0x13430]={
category="cf",
@@ -192386,6 +193241,213 @@ characters.data={
linebreak="cl",
unicodeslot=0x13438,
},
+ [0x13439]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT MIDDLE",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13439,
+ },
+ [0x1343A]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT TOP",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x1343A,
+ },
+ [0x1343B]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT BOTTOM",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x1343B,
+ },
+ [0x1343C]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE",
+ direction="l",
+ linebreak="op",
+ unicodeslot=0x1343C,
+ },
+ [0x1343D]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH END ENCLOSURE",
+ direction="l",
+ linebreak="cl",
+ unicodeslot=0x1343D,
+ },
+ [0x1343E]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE",
+ direction="l",
+ linebreak="op",
+ unicodeslot=0x1343E,
+ },
+ [0x1343F]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE",
+ direction="l",
+ linebreak="cl",
+ unicodeslot=0x1343F,
+ },
+ [0x13440]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13440,
+ },
+ [0x13441]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH FULL BLANK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13441,
+ },
+ [0x13442]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH HALF BLANK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13442,
+ },
+ [0x13443]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH LOST SIGN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13443,
+ variants=variants_expanded,
+ },
+ [0x13444]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH HALF LOST SIGN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13444,
+ variants=variants_expanded,
+ },
+ [0x13445]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH TALL LOST SIGN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13445,
+ variants=variants_expanded,
+ },
+ [0x13446]={
+ category="lo",
+ description="EGYPTIAN HIEROGLYPH WIDE LOST SIGN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x13446,
+ variants=variants_expanded,
+ },
+ [0x13447]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13447,
+ },
+ [0x13448]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13448,
+ },
+ [0x13449]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13449,
+ },
+ [0x1344A]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344A,
+ },
+ [0x1344B]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344B,
+ },
+ [0x1344C]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344C,
+ },
+ [0x1344D]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344D,
+ },
+ [0x1344E]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344E,
+ },
+ [0x1344F]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1344F,
+ },
+ [0x13450]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13450,
+ },
+ [0x13451]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13451,
+ },
+ [0x13452]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13452,
+ },
+ [0x13453]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13453,
+ },
+ [0x13454]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13454,
+ },
+ [0x13455]={
+ category="mn",
+ description="EGYPTIAN HIEROGLYPH MODIFIER DAMAGED",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x13455,
+ },
[0x14400]={
category="lo",
description="ANATOLIAN HIEROGLYPH A001",
@@ -216633,6 +217695,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1B122,
},
+ [0x1B132]={
+ category="lo",
+ cjkwd="w",
+ description="HIRAGANA LETTER SMALL KO",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B132,
+ },
[0x1B150]={
category="lo",
cjkwd="w",
@@ -216657,6 +217727,14 @@ characters.data={
linebreak="cj",
unicodeslot=0x1B152,
},
+ [0x1B155]={
+ category="lo",
+ cjkwd="w",
+ description="KATAKANA LETTER SMALL KO",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B155,
+ },
[0x1B164]={
category="lo",
cjkwd="w",
@@ -226073,6 +227151,146 @@ characters.data={
linebreak="al",
unicodeslot=0x1D245,
},
+ [0x1D2C0]={
+ category="no",
+ description="KAKTOVIK NUMERAL ZERO",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C0,
+ },
+ [0x1D2C1]={
+ category="no",
+ description="KAKTOVIK NUMERAL ONE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C1,
+ },
+ [0x1D2C2]={
+ category="no",
+ description="KAKTOVIK NUMERAL TWO",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C2,
+ },
+ [0x1D2C3]={
+ category="no",
+ description="KAKTOVIK NUMERAL THREE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C3,
+ },
+ [0x1D2C4]={
+ category="no",
+ description="KAKTOVIK NUMERAL FOUR",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C4,
+ },
+ [0x1D2C5]={
+ category="no",
+ description="KAKTOVIK NUMERAL FIVE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C5,
+ },
+ [0x1D2C6]={
+ category="no",
+ description="KAKTOVIK NUMERAL SIX",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C6,
+ },
+ [0x1D2C7]={
+ category="no",
+ description="KAKTOVIK NUMERAL SEVEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C7,
+ },
+ [0x1D2C8]={
+ category="no",
+ description="KAKTOVIK NUMERAL EIGHT",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C8,
+ },
+ [0x1D2C9]={
+ category="no",
+ description="KAKTOVIK NUMERAL NINE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2C9,
+ },
+ [0x1D2CA]={
+ category="no",
+ description="KAKTOVIK NUMERAL TEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CA,
+ },
+ [0x1D2CB]={
+ category="no",
+ description="KAKTOVIK NUMERAL ELEVEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CB,
+ },
+ [0x1D2CC]={
+ category="no",
+ description="KAKTOVIK NUMERAL TWELVE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CC,
+ },
+ [0x1D2CD]={
+ category="no",
+ description="KAKTOVIK NUMERAL THIRTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CD,
+ },
+ [0x1D2CE]={
+ category="no",
+ description="KAKTOVIK NUMERAL FOURTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CE,
+ },
+ [0x1D2CF]={
+ category="no",
+ description="KAKTOVIK NUMERAL FIFTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2CF,
+ },
+ [0x1D2D0]={
+ category="no",
+ description="KAKTOVIK NUMERAL SIXTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2D0,
+ },
+ [0x1D2D1]={
+ category="no",
+ description="KAKTOVIK NUMERAL SEVENTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2D1,
+ },
+ [0x1D2D2]={
+ category="no",
+ description="KAKTOVIK NUMERAL EIGHTEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2D2,
+ },
+ [0x1D2D3]={
+ category="no",
+ description="KAKTOVIK NUMERAL NINETEEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1D2D3,
+ },
[0x1D2E0]={
category="no",
description="MAYAN NUMERAL ZERO",
@@ -240727,6 +241945,48 @@ characters.data={
linebreak="al",
unicodeslot=0x1DF1E,
},
+ [0x1DF25]={
+ category="ll",
+ description="LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF25,
+ },
+ [0x1DF26]={
+ category="ll",
+ description="LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF26,
+ },
+ [0x1DF27]={
+ category="ll",
+ description="LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF27,
+ },
+ [0x1DF28]={
+ category="ll",
+ description="LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF28,
+ },
+ [0x1DF29]={
+ category="ll",
+ description="LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF29,
+ },
+ [0x1DF2A]={
+ category="ll",
+ description="LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1DF2A,
+ },
[0x1E000]={
category="mn",
combining=0xE6,
@@ -241031,6 +242291,510 @@ characters.data={
linebreak="cm",
unicodeslot=0x1E02A,
},
+ [0x1E030]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL A",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x430 },
+ unicodeslot=0x1E030,
+ },
+ [0x1E031]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL BE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x431 },
+ unicodeslot=0x1E031,
+ },
+ [0x1E032]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL VE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x432 },
+ unicodeslot=0x1E032,
+ },
+ [0x1E033]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL GHE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x433 },
+ unicodeslot=0x1E033,
+ },
+ [0x1E034]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL DE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x434 },
+ unicodeslot=0x1E034,
+ },
+ [0x1E035]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL IE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x435 },
+ unicodeslot=0x1E035,
+ },
+ [0x1E036]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL ZHE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x436 },
+ unicodeslot=0x1E036,
+ },
+ [0x1E037]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL ZE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x437 },
+ unicodeslot=0x1E037,
+ },
+ [0x1E038]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL I",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x438 },
+ unicodeslot=0x1E038,
+ },
+ [0x1E039]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL KA",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x43A },
+ unicodeslot=0x1E039,
+ },
+ [0x1E03A]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL EL",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x43B },
+ unicodeslot=0x1E03A,
+ },
+ [0x1E03B]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL EM",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x43C },
+ unicodeslot=0x1E03B,
+ },
+ [0x1E03C]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL O",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x43E },
+ unicodeslot=0x1E03C,
+ },
+ [0x1E03D]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL PE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x43F },
+ unicodeslot=0x1E03D,
+ },
+ [0x1E03E]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL ER",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x440 },
+ unicodeslot=0x1E03E,
+ },
+ [0x1E03F]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL ES",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x441 },
+ unicodeslot=0x1E03F,
+ },
+ [0x1E040]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL TE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x442 },
+ unicodeslot=0x1E040,
+ },
+ [0x1E041]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL U",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x443 },
+ unicodeslot=0x1E041,
+ },
+ [0x1E042]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL EF",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x444 },
+ unicodeslot=0x1E042,
+ },
+ [0x1E043]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL HA",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x445 },
+ unicodeslot=0x1E043,
+ },
+ [0x1E044]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL TSE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x446 },
+ unicodeslot=0x1E044,
+ },
+ [0x1E045]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL CHE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x447 },
+ unicodeslot=0x1E045,
+ },
+ [0x1E046]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL SHA",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x448 },
+ unicodeslot=0x1E046,
+ },
+ [0x1E047]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL YERU",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x44B },
+ unicodeslot=0x1E047,
+ },
+ [0x1E048]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL E",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x44D },
+ unicodeslot=0x1E048,
+ },
+ [0x1E049]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL YU",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x44E },
+ unicodeslot=0x1E049,
+ },
+ [0x1E04A]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL DZZE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0xA689 },
+ unicodeslot=0x1E04A,
+ },
+ [0x1E04B]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL SCHWA",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4D9 },
+ unicodeslot=0x1E04B,
+ },
+ [0x1E04C]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x456 },
+ unicodeslot=0x1E04C,
+ },
+ [0x1E04D]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL JE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x458 },
+ unicodeslot=0x1E04D,
+ },
+ [0x1E04E]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL BARRED O",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4E9 },
+ unicodeslot=0x1E04E,
+ },
+ [0x1E04F]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL STRAIGHT U",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4AF },
+ unicodeslot=0x1E04F,
+ },
+ [0x1E050]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL PALOCHKA",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4CF },
+ unicodeslot=0x1E050,
+ },
+ [0x1E051]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER A",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x430 },
+ unicodeslot=0x1E051,
+ },
+ [0x1E052]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER BE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x431 },
+ unicodeslot=0x1E052,
+ },
+ [0x1E053]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER VE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x432 },
+ unicodeslot=0x1E053,
+ },
+ [0x1E054]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER GHE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x433 },
+ unicodeslot=0x1E054,
+ },
+ [0x1E055]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER DE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x434 },
+ unicodeslot=0x1E055,
+ },
+ [0x1E056]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER IE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x435 },
+ unicodeslot=0x1E056,
+ },
+ [0x1E057]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER ZHE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x436 },
+ unicodeslot=0x1E057,
+ },
+ [0x1E058]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER ZE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x437 },
+ unicodeslot=0x1E058,
+ },
+ [0x1E059]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER I",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x438 },
+ unicodeslot=0x1E059,
+ },
+ [0x1E05A]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER KA",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x43A },
+ unicodeslot=0x1E05A,
+ },
+ [0x1E05B]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER EL",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x43B },
+ unicodeslot=0x1E05B,
+ },
+ [0x1E05C]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER O",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x43E },
+ unicodeslot=0x1E05C,
+ },
+ [0x1E05D]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER PE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x43F },
+ unicodeslot=0x1E05D,
+ },
+ [0x1E05E]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER ES",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x441 },
+ unicodeslot=0x1E05E,
+ },
+ [0x1E05F]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER U",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x443 },
+ unicodeslot=0x1E05F,
+ },
+ [0x1E060]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER EF",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x444 },
+ unicodeslot=0x1E060,
+ },
+ [0x1E061]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER HA",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x445 },
+ unicodeslot=0x1E061,
+ },
+ [0x1E062]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER TSE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x446 },
+ unicodeslot=0x1E062,
+ },
+ [0x1E063]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER CHE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x447 },
+ unicodeslot=0x1E063,
+ },
+ [0x1E064]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER SHA",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x448 },
+ unicodeslot=0x1E064,
+ },
+ [0x1E065]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x44A },
+ unicodeslot=0x1E065,
+ },
+ [0x1E066]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER YERU",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x44B },
+ unicodeslot=0x1E066,
+ },
+ [0x1E067]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x491 },
+ unicodeslot=0x1E067,
+ },
+ [0x1E068]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x456 },
+ unicodeslot=0x1E068,
+ },
+ [0x1E069]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER DZE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x455 },
+ unicodeslot=0x1E069,
+ },
+ [0x1E06A]={
+ category="lm",
+ description="CYRILLIC SUBSCRIPT SMALL LETTER DZHE",
+ direction="l",
+ linebreak="al",
+ specials={ "sub", 0x45F },
+ unicodeslot=0x1E06A,
+ },
+ [0x1E06B]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4AB },
+ unicodeslot=0x1E06B,
+ },
+ [0x1E06C]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0xA651 },
+ unicodeslot=0x1E06C,
+ },
+ [0x1E06D]={
+ category="lm",
+ description="MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE",
+ direction="l",
+ linebreak="al",
+ specials={ "super", 0x4B1 },
+ unicodeslot=0x1E06D,
+ },
+ [0x1E08F]={
+ category="mn",
+ combining=0xE6,
+ description="COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E08F,
+ },
[0x1E100]={
category="lo",
description="NYIAKENG PUACHUE HMONG LETTER MA",
@@ -242170,6 +243934,304 @@ characters.data={
linebreak="pr",
unicodeslot=0x1E2FF,
},
+ [0x1E4D0]={
+ category="lo",
+ description="NAG MUNDARI LETTER O",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D0,
+ },
+ [0x1E4D1]={
+ category="lo",
+ description="NAG MUNDARI LETTER OP",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D1,
+ },
+ [0x1E4D2]={
+ category="lo",
+ description="NAG MUNDARI LETTER OL",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D2,
+ },
+ [0x1E4D3]={
+ category="lo",
+ description="NAG MUNDARI LETTER OY",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D3,
+ },
+ [0x1E4D4]={
+ category="lo",
+ description="NAG MUNDARI LETTER ONG",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D4,
+ },
+ [0x1E4D5]={
+ category="lo",
+ description="NAG MUNDARI LETTER A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D5,
+ },
+ [0x1E4D6]={
+ category="lo",
+ description="NAG MUNDARI LETTER AJ",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D6,
+ },
+ [0x1E4D7]={
+ category="lo",
+ description="NAG MUNDARI LETTER AB",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D7,
+ },
+ [0x1E4D8]={
+ category="lo",
+ description="NAG MUNDARI LETTER ANY",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D8,
+ },
+ [0x1E4D9]={
+ category="lo",
+ description="NAG MUNDARI LETTER AH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4D9,
+ },
+ [0x1E4DA]={
+ category="lo",
+ description="NAG MUNDARI LETTER I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DA,
+ },
+ [0x1E4DB]={
+ category="lo",
+ description="NAG MUNDARI LETTER IS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DB,
+ },
+ [0x1E4DC]={
+ category="lo",
+ description="NAG MUNDARI LETTER IDD",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DC,
+ },
+ [0x1E4DD]={
+ category="lo",
+ description="NAG MUNDARI LETTER IT",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DD,
+ },
+ [0x1E4DE]={
+ category="lo",
+ description="NAG MUNDARI LETTER IH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DE,
+ },
+ [0x1E4DF]={
+ category="lo",
+ description="NAG MUNDARI LETTER U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4DF,
+ },
+ [0x1E4E0]={
+ category="lo",
+ description="NAG MUNDARI LETTER UC",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E0,
+ },
+ [0x1E4E1]={
+ category="lo",
+ description="NAG MUNDARI LETTER UD",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E1,
+ },
+ [0x1E4E2]={
+ category="lo",
+ description="NAG MUNDARI LETTER UK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E2,
+ },
+ [0x1E4E3]={
+ category="lo",
+ description="NAG MUNDARI LETTER UR",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E3,
+ },
+ [0x1E4E4]={
+ category="lo",
+ description="NAG MUNDARI LETTER E",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E4,
+ },
+ [0x1E4E5]={
+ category="lo",
+ description="NAG MUNDARI LETTER ENN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E5,
+ },
+ [0x1E4E6]={
+ category="lo",
+ description="NAG MUNDARI LETTER EG",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E6,
+ },
+ [0x1E4E7]={
+ category="lo",
+ description="NAG MUNDARI LETTER EM",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E7,
+ },
+ [0x1E4E8]={
+ category="lo",
+ description="NAG MUNDARI LETTER EN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E8,
+ },
+ [0x1E4E9]={
+ category="lo",
+ description="NAG MUNDARI LETTER ETT",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4E9,
+ },
+ [0x1E4EA]={
+ category="lo",
+ description="NAG MUNDARI LETTER ELL",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4EA,
+ },
+ [0x1E4EB]={
+ category="lm",
+ description="NAG MUNDARI SIGN OJOD",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E4EB,
+ },
+ [0x1E4EC]={
+ category="mn",
+ combining=0xE8,
+ description="NAG MUNDARI SIGN MUHOR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E4EC,
+ },
+ [0x1E4ED]={
+ category="mn",
+ combining=0xE8,
+ description="NAG MUNDARI SIGN TOYOR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E4ED,
+ },
+ [0x1E4EE]={
+ category="mn",
+ combining=0xDC,
+ description="NAG MUNDARI SIGN IKIR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E4EE,
+ },
+ [0x1E4EF]={
+ category="mn",
+ combining=0xE6,
+ description="NAG MUNDARI SIGN SUTUH",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E4EF,
+ },
+ [0x1E4F0]={
+ category="nd",
+ description="NAG MUNDARI DIGIT ZERO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F0,
+ },
+ [0x1E4F1]={
+ category="nd",
+ description="NAG MUNDARI DIGIT ONE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F1,
+ },
+ [0x1E4F2]={
+ category="nd",
+ description="NAG MUNDARI DIGIT TWO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F2,
+ },
+ [0x1E4F3]={
+ category="nd",
+ description="NAG MUNDARI DIGIT THREE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F3,
+ },
+ [0x1E4F4]={
+ category="nd",
+ description="NAG MUNDARI DIGIT FOUR",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F4,
+ },
+ [0x1E4F5]={
+ category="nd",
+ description="NAG MUNDARI DIGIT FIVE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F5,
+ },
+ [0x1E4F6]={
+ category="nd",
+ description="NAG MUNDARI DIGIT SIX",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F6,
+ },
+ [0x1E4F7]={
+ category="nd",
+ description="NAG MUNDARI DIGIT SEVEN",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F7,
+ },
+ [0x1E4F8]={
+ category="nd",
+ description="NAG MUNDARI DIGIT EIGHT",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F8,
+ },
+ [0x1E4F9]={
+ category="nd",
+ description="NAG MUNDARI DIGIT NINE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E4F9,
+ },
[0x1E7E0]={
category="lo",
description="ETHIOPIC SYLLABLE HHYA",
@@ -258294,6 +260356,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1F6D7,
},
+ [0x1F6DC]={
+ category="so",
+ cjkwd="w",
+ description="WIRELESS",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F6DC,
+ },
[0x1F6DD]={
category="so",
cjkwd="w",
@@ -259332,6 +261402,62 @@ characters.data={
linebreak="al",
unicodeslot=0x1F773,
},
+ [0x1F774]={
+ category="so",
+ description="LOT OF FORTUNE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F774,
+ },
+ [0x1F775]={
+ category="so",
+ description="OCCULTATION",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F775,
+ },
+ [0x1F776]={
+ category="so",
+ description="LUNAR ECLIPSE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F776,
+ },
+ [0x1F77B]={
+ category="so",
+ description="HAUMEA",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F77B,
+ },
+ [0x1F77C]={
+ category="so",
+ description="MAKEMAKE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F77C,
+ },
+ [0x1F77D]={
+ category="so",
+ description="GONGGONG",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F77D,
+ },
+ [0x1F77E]={
+ category="so",
+ description="QUAOAR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F77E,
+ },
+ [0x1F77F]={
+ category="so",
+ description="ORCUS",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F77F,
+ },
[0x1F780]={
category="so",
description="BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE",
@@ -259956,6 +262082,13 @@ characters.data={
linebreak="id",
unicodeslot=0x1F7D8,
},
+ [0x1F7D9]={
+ category="so",
+ description="NINE POINTED WHITE STAR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7D9,
+ },
[0x1F7E0]={
category="so",
cjkwd="w",
@@ -263879,6 +266012,30 @@ characters.data={
linebreak="id",
unicodeslot=0x1FA74,
},
+ [0x1FA75]={
+ category="so",
+ cjkwd="w",
+ description="LIGHT BLUE HEART",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA75,
+ },
+ [0x1FA76]={
+ category="so",
+ cjkwd="w",
+ description="GREY HEART",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA76,
+ },
+ [0x1FA77]={
+ category="so",
+ cjkwd="w",
+ description="PINK HEART",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA77,
+ },
[0x1FA78]={
category="so",
cjkwd="w",
@@ -263975,6 +266132,22 @@ characters.data={
linebreak="id",
unicodeslot=0x1FA86,
},
+ [0x1FA87]={
+ category="so",
+ cjkwd="w",
+ description="MARACAS",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA87,
+ },
+ [0x1FA88]={
+ category="so",
+ cjkwd="w",
+ description="FLUTE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA88,
+ },
[0x1FA90]={
category="so",
cjkwd="w",
@@ -264207,6 +266380,30 @@ characters.data={
linebreak="id",
unicodeslot=0x1FAAC,
},
+ [0x1FAAD]={
+ category="so",
+ cjkwd="w",
+ description="FOLDING HAND FAN",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FAAD,
+ },
+ [0x1FAAE]={
+ category="so",
+ cjkwd="w",
+ description="HAIR PICK",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FAAE,
+ },
+ [0x1FAAF]={
+ category="so",
+ cjkwd="w",
+ description="KHANDA",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FAAF,
+ },
[0x1FAB0]={
category="so",
cjkwd="w",
@@ -264295,6 +266492,38 @@ characters.data={
linebreak="id",
unicodeslot=0x1FABA,
},
+ [0x1FABB]={
+ category="so",
+ cjkwd="w",
+ description="HYACINTH",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FABB,
+ },
+ [0x1FABC]={
+ category="so",
+ cjkwd="w",
+ description="JELLYFISH",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FABC,
+ },
+ [0x1FABD]={
+ category="so",
+ cjkwd="w",
+ description="WING",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FABD,
+ },
+ [0x1FABF]={
+ category="so",
+ cjkwd="w",
+ description="GOOSE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FABF,
+ },
[0x1FAC0]={
category="so",
cjkwd="w",
@@ -264343,6 +266572,22 @@ characters.data={
linebreak="eb",
unicodeslot=0x1FAC5,
},
+ [0x1FACE]={
+ category="so",
+ cjkwd="w",
+ description="MOOSE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FACE,
+ },
+ [0x1FACF]={
+ category="so",
+ cjkwd="w",
+ description="DONKEY",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FACF,
+ },
[0x1FAD0]={
category="so",
cjkwd="w",
@@ -264423,6 +266668,22 @@ characters.data={
linebreak="id",
unicodeslot=0x1FAD9,
},
+ [0x1FADA]={
+ category="so",
+ cjkwd="w",
+ description="GINGER ROOT",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FADA,
+ },
+ [0x1FADB]={
+ category="so",
+ cjkwd="w",
+ description="PEA POD",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FADB,
+ },
[0x1FAE0]={
category="so",
cjkwd="w",
@@ -264487,6 +266748,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1FAE7,
},
+ [0x1FAE8]={
+ category="so",
+ cjkwd="w",
+ description="SHAKING FACE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FAE8,
+ },
[0x1FAF0]={
category="so",
cjkwd="w",
@@ -264543,6 +266812,22 @@ characters.data={
linebreak="eb",
unicodeslot=0x1FAF6,
},
+ [0x1FAF7]={
+ category="so",
+ cjkwd="w",
+ description="LEFTWARDS PUSHING HAND",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1FAF7,
+ },
+ [0x1FAF8]={
+ category="so",
+ cjkwd="w",
+ description="RIGHTWARDS PUSHING HAND",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1FAF8,
+ },
[0x1FB00]={
category="so",
description="BLOCK SEXTANT-1",
diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua
index 9dcac8033..4deb21401 100644
--- a/tex/context/base/mkiv/char-ini.lua
+++ b/tex/context/base/mkiv/char-ini.lua
@@ -213,6 +213,7 @@ local blocks = allocate {
["arabic"] = { first = 0x00600, last = 0x006FF, otf="arab", description = "Arabic" },
["arabicextendeda"] = { first = 0x008A0, last = 0x008FF, description = "Arabic Extended-A" },
["arabicextendedb"] = { first = 0x00870, last = 0x0089F, description = "Arabic Extended-B" },
+ ["arabicextendedc"] = { first = 0x10EC0, last = 0x10EFF, description = "Arabic Extended-C" },
["arabicmathematicalalphabeticsymbols"] = { first = 0x1EE00, last = 0x1EEFF, description = "Arabic Mathematical Alphabetic Symbols" },
["arabicpresentationformsa"] = { first = 0x0FB50, last = 0x0FDFF, otf="arab", description = "Arabic Presentation Forms-A" },
["arabicpresentationformsb"] = { first = 0x0FE70, last = 0x0FEFF, otf="arab", description = "Arabic Presentation Forms-B" },
@@ -260,6 +261,7 @@ local blocks = allocate {
["cjkunifiedideographsextensione"] = { first = 0x2B820, last = 0x2CEAF, description = "CJK Unified Ideographs Extension E" },
["cjkunifiedideographsextensionf"] = { first = 0x2CEB0, last = 0x2EBEF, description = "CJK Unified Ideographs Extension F" },
["cjkunifiedideographsextensiong"] = { first = 0x30000, last = 0x3134F, description = "CJK Unified Ideographs Extension G" },
+ ["cjkunifiedideographsextensionh"] = { first = 0x31350, last = 0x323AF, description = "CJK Unified Ideographs Extension H" },
["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" },
@@ -279,10 +281,12 @@ local blocks = allocate {
["cyrillicextendeda"] = { first = 0x02DE0, last = 0x02DFF, otf="cyrl", description = "Cyrillic Extended-A" },
["cyrillicextendedb"] = { first = 0x0A640, last = 0x0A69F, otf="cyrl", description = "Cyrillic Extended-B" },
["cyrillicextendedc"] = { first = 0x01C80, last = 0x01C8F, description = "Cyrillic Extended-C" },
+ ["cyrillicextendedd"] = { first = 0x1E030, last = 0x1E08F, description = "Cyrillic Extended-D" },
["cyrillicsupplement"] = { first = 0x00500, last = 0x0052F, otf="cyrl", description = "Cyrillic Supplement" },
["deseret"] = { first = 0x10400, last = 0x1044F, otf="dsrt", description = "Deseret" },
["devanagari"] = { first = 0x00900, last = 0x0097F, otf="deva", description = "Devanagari" },
["devanagariextended"] = { first = 0x0A8E0, last = 0x0A8FF, description = "Devanagari Extended" },
+ ["devanagariextendeda"] = { first = 0x11B00, last = 0x11B5F, description = "Devanagari Extended-A" },
["digitsarabicindic"] = { first = 0x00660, last = 0x00669, math = true },
-- ["digitsbengali"] = { first = 0x009E6, last = 0x009EF, math = true },
["digitsbold"] = { first = 0x1D7CE, last = 0x1D7D7, math = true },
@@ -314,7 +318,7 @@ local blocks = allocate {
["dominotiles"] = { first = 0x1F030, last = 0x1F09F, description = "Domino Tiles" },
["duployan"] = { first = 0x1BC00, last = 0x1BC9F, description = "Duployan" },
["earlydynasticcuneiform"] = { first = 0x12480, last = 0x1254F, description = "Early Dynastic Cuneiform" },
- ["egyptianhieroglyphformatcontrols"] = { first = 0x13430, last = 0x1343F, description = "Egyptian Hieroglyph Format Controls" },
+ ["egyptianhieroglyphformatcontrols"] = { first = 0x13430, last = 0x1345F, description = "Egyptian Hieroglyph Format Controls" },
["egyptianhieroglyphs"] = { first = 0x13000, last = 0x1342F, description = "Egyptian Hieroglyphs" },
["elbasan"] = { first = 0x10500, last = 0x1052F, description = "Elbasan" },
["elymaic"] = { first = 0x10FE0, last = 0x10FFF, description = "Elymaic" },
@@ -365,6 +369,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" },
+ ["kaktoviknumerals"] = { first = 0x1D2C0, last = 0x1D2DF, description = "Kaktovik Numerals" },
["kanaextendeda"] = { first = 0x1B100, last = 0x1B12F, description = "Kana Extended-A" },
["kanaextendedb"] = { first = 0x1AFF0, last = 0x1AFFF, description = "Kana Extended-B" },
["kanasupplement"] = { first = 0x1B000, last = 0x1B0FF, description = "Kana Supplement" },
@@ -374,6 +379,7 @@ local blocks = allocate {
["katakana"] = { first = 0x030A0, last = 0x030FF, otf="kana", description = "Katakana" },
["katakanaphoneticextensions"] = { first = 0x031F0, last = 0x031FF, otf="kana", description = "Katakana Phonetic Extensions" },
["kayahli"] = { first = 0x0A900, last = 0x0A92F, description = "Kayah Li" },
+ ["kawi"] = { first = 0x11F00, last = 0x11F5F, description = "Kawi" },
["kharoshthi"] = { first = 0x10A00, last = 0x10A5F, otf="khar", description = "Kharoshthi" },
["khitansmallscript"] = { first = 0x18B00, last = 0x18CFF, description = "Khitan Small Script" },
["khmer"] = { first = 0x01780, last = 0x017FF, otf="khmr", description = "Khmer" },
@@ -456,6 +462,7 @@ local blocks = allocate {
["myanmarextendeda"] = { first = 0x0AA60, last = 0x0AA7F, description = "Myanmar Extended-A" },
["myanmarextendedb"] = { first = 0x0A9E0, last = 0x0A9FF, description = "Myanmar Extended-B" },
["nabataean"] = { first = 0x10880, last = 0x108AF, description = "Nabataean" },
+ ["nagmundari"] = { first = 0x1E4D0, last = 0x1E4FF, description = "Nag Mundari" },
["nandinagari"] = { first = 0x119A0, last = 0x119FF, description = "Nandinagari" },
["newa"] = { first = 0x11400, last = 0x1147F, description = "Newa" },
["newtailue"] = { first = 0x01980, last = 0x019DF, description = "New Tai Lue" },
@@ -585,7 +592,20 @@ local blocks = allocate {
["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" },
- ["znamennymusicalnotation"] = { first = 0x1CF00, last = 0x1CFCF, description = "Znamenny Musical Notation" }
+ ["znamennymusicalnotation"] = { first = 0x1CF00, last = 0x1CFCF, description = "Znamenny Musical Notation" },
+
+ -- we need this early on:
+
+ ["lowercasecalligraphic"] = { first = 0x100000, last = 0x100019, math = true },
+ ["uppercasecalligraphic"] = { first = 0x100020, last = 0x100039, math = true },
+ ["lowercaseboldcalligraphic"] = { first = 0x100040, last = 0x100059, math = true },
+ ["uppercaseboldcalligraphic"] = { first = 0x100060, last = 0x100079, math = true },
+ -- ["lowercasesansgreek"] = { first = 0x100040, last = 0x100059, math = true }, -- reserved for future use
+ -- ["uppercasesansgreek"] = { first = 0x100060, last = 0x100079, math = true }, -- reserved for future use
+ -- ["lowercaseitalicsansgreek"] = { first = 0x100080, last = 0x100099, math = true }, -- reserved for future use
+ -- ["uppercaseitalicsansgreek"] = { first = 0x1000A0, last = 0x1000B9, math = true }, -- reserved for future use
+ -- ["lowercaseblackboarditalic"] = { first = 0x1000C0, last = 0x1000D9, math = true }, -- reserved for future use
+ -- ["uppercaseblackboarditalic"] = { first = 0x1000E0, last = 0x1000F9, math = true }, -- reserved for future use
}
-- moved from math-act.lua to here:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 40594ad05..688232bf2 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2022.09.16 14:39}
+\newcontextversion{2022.10.14 10:13}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 1de2ec104..7b5df628c 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -49,7 +49,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2022.09.16 14:39}
+\edef\contextversion{2022.10.14 10:13}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-cff.lua b/tex/context/base/mkiv/font-cff.lua
index 114d7dd07..4b60cd6c0 100644
--- a/tex/context/base/mkiv/font-cff.lua
+++ b/tex/context/base/mkiv/font-cff.lua
@@ -348,11 +348,11 @@ do
top = 0
end
+ P("\10") / function()
- result.strhw = stack[top]
+ result.stdhw = stack[top]
top = 0
end
+ P("\11") / function()
- result.strvw = stack[top]
+ result.stdvw = stack[top]
top = 0
end
+ P("\13") / function()
@@ -453,7 +453,7 @@ do
top = 0
end
+ P("\10") / function()
- result.bluesnap = stack[top]
+ result.blueshift = stack[top]
top = 0
end
+ P("\11") / function()
@@ -528,7 +528,7 @@ do
-- the second variant is much faster. Not that it matters much as we don't see
-- such numbers often.
- local remap = {
+ local remap_1 = {
["\x00"] = "00", ["\x01"] = "01", ["\x02"] = "02", ["\x03"] = "03", ["\x04"] = "04", ["\x05"] = "05", ["\x06"] = "06", ["\x07"] = "07", ["\x08"] = "08", ["\x09"] = "09", ["\x0A"] = "0.", ["\x0B"] = "0E", ["\x0C"] = "0E-", ["\x0D"] = "0", ["\x0E"] = "0-", ["\x0F"] = "0",
["\x10"] = "10", ["\x11"] = "11", ["\x12"] = "12", ["\x13"] = "13", ["\x14"] = "14", ["\x15"] = "15", ["\x16"] = "16", ["\x17"] = "17", ["\x18"] = "18", ["\x19"] = "19", ["\x1A"] = "1.", ["\x1B"] = "1E", ["\x1C"] = "1E-", ["\x1D"] = "1", ["\x1E"] = "1-", ["\x1F"] = "1",
["\x20"] = "20", ["\x21"] = "21", ["\x22"] = "22", ["\x23"] = "23", ["\x24"] = "24", ["\x25"] = "25", ["\x26"] = "26", ["\x27"] = "27", ["\x28"] = "28", ["\x29"] = "29", ["\x2A"] = "2.", ["\x2B"] = "2E", ["\x2C"] = "2E-", ["\x2D"] = "2", ["\x2E"] = "2-", ["\x2F"] = "2",
@@ -544,11 +544,18 @@ do
["\xC0"] = "E-0", ["\xC1"] = "E-1", ["\xC2"] = "E-2", ["\xC3"] = "E-3", ["\xC4"] = "E-4", ["\xC5"] = "E-5", ["\xC6"] = "E-6", ["\xC7"] = "E-7", ["\xC8"] = "E-8", ["\xC9"] = "E-9", ["\xCA"] = "E-.", ["\xCB"] = "E-E", ["\xCC"] = "E-E-", ["\xCD"] = "E-", ["\xCE"] = "E--", ["\xCF"] = "E-",
["\xD0"] = "-0", ["\xD1"] = "-1", ["\xD2"] = "-2", ["\xD3"] = "-3", ["\xD4"] = "-4", ["\xD5"] = "-5", ["\xD6"] = "-6", ["\xD7"] = "-7", ["\xD8"] = "-8", ["\xD9"] = "-9", ["\xDA"] = "-.", ["\xDB"] = "-E", ["\xDC"] = "-E-", ["\xDD"] = "-", ["\xDE"] = "--", ["\xDF"] = "-",
}
+ local remap_2 = {
+ ["\x0F"] = "0", ["\x1F"] = "1", ["\x2F"] = "2", ["\x3F"] = "3", ["\x4F"] = "4",
+ ["\x5F"] = "5", ["\x6F"] = "6", ["\x7F"] = "7", ["\x8F"] = "8", ["\x9F"] = "9",
+ }
+
+ local p_last_1 = S("\x0F\x1F\x2F\x3F\x4F\x5F\x6F\x7F\x8F\x9F\xAF\xBF")
+ local p_last_2 = R("\xF0\xFF")
- local p_last = S("\x0F\x1F\x2F\x3F\x4F\x5F\x6F\x7F\x8F\x9F\xAF\xBF")
- + R("\xF0\xFF")
+ -- tricky, we don't want to append last
- local p_nibbles = P("\30") * Cs(((1-p_last)/remap)^0 * (P(1)/remap)) / function(n)
+ -- local p_nibbles = P("\30") * Cs(((1-p_last)/remap)^0 * (P(1)/remap)) / function(n)
+ local p_nibbles = P("\30") * Cs(((1-(p_last_1+p_last_2))/remap_1)^0 * (p_last_1/remap_2 + p_last_2/"")) / function(n)
-- 0-9=digit a=. b=E c=E- d=reserved e=- f=finish
top = top + 1
stack[top] = tonumber(n) or 0
@@ -2715,6 +2722,8 @@ function readers.cff(f,fontdata,specification)
cffinfo.bluefuzz = data.bluefuzz
cffinfo.stdhw = data.stdhw
cffinfo.stdvw = data.stdvw
+ cffinfo.stemsnaph = data.stemsnaph
+ cffinfo.stemsnapv = data.stemsnapv
end
end
cleanup(data,dictionaries)
diff --git a/tex/context/base/mkiv/font-dsp.lua b/tex/context/base/mkiv/font-dsp.lua
index 8f65ed9d9..1735b4cdc 100644
--- a/tex/context/base/mkiv/font-dsp.lua
+++ b/tex/context/base/mkiv/font-dsp.lua
@@ -2177,6 +2177,8 @@ do
--
local usedlookups = false -- setmetatableindex("number")
--
+ local allsteps = { } -- new per 2022-09-25
+
for lookupid=1,noflookups do
local lookup = lookups[lookupid]
local lookuptype = lookup.type
@@ -2214,6 +2216,7 @@ do
steps[nofsteps] = step
local rules = step.rules
if rules then
+ allsteps[#allsteps+1] = step -- new per 2022-09-25
for i=1,#rules do
local rule = rules[i]
local before = rule.before
@@ -2337,11 +2340,14 @@ do
end
end
- for i=lastsequence+1,nofsequences do
- local sequence = sequences[i]
- local steps = sequence.steps
- for i=1,#steps do
- local step = steps[i]
+ -- for i=lastsequence+1,nofsequences do
+ -- local sequence = sequences[i]
+ -- local steps = sequence.steps
+ -- for i=1,#steps do
+ -- local step = steps[i]
+
+ for i=1,#allsteps do -- new per 2022-09-25
+ local step = allsteps[i] -- new per 2022-09-25
local rules = step.rules
if rules then
for i=1,#rules do
@@ -2419,7 +2425,7 @@ do
end
end
end
- end
+ -- end -- new per 2022-09-25
for i, n in sortedhash(sublookupcheck) do
local l = lookups[i]
@@ -2881,7 +2887,7 @@ local function readmathglyphinfo(f,fontdata,offset)
if not math then
glyph.math = { accent = accent }
else
- math.accent = accent
+ math.accent = accent -- will become math.topanchor
end
end
end
diff --git a/tex/context/base/mkiv/font-imp-italics.lua b/tex/context/base/mkiv/font-imp-italics.lua
index 6c432d7cf..10a419daf 100644
--- a/tex/context/base/mkiv/font-imp-italics.lua
+++ b/tex/context/base/mkiv/font-imp-italics.lua
@@ -6,7 +6,7 @@ if not modules then modules = { } end modules ['font-imp-italics'] = {
license = "see context related readme files"
}
-local next = next
+local next, tonumber = next, tonumber
local fonts = fonts
local handlers = fonts.handlers
@@ -14,11 +14,13 @@ local registerotffeature = handlers.otf.features.register
local registerafmfeature = handlers.afm.features.register
local function initialize(tfmdata,key,value)
+ local factor = tonumber(value) or 1
for unicode, character in next, tfmdata.characters do
local olditalic = character.italic
if olditalic and olditalic ~= 0 then
- character.width = character.width + olditalic
- character.italic = 0
+ character.width = character.width + olditalic
+ character.italic = 0
+ character.bottomright = -factor * olditalic
end
end
end
diff --git a/tex/context/base/mkiv/font-mis.lua b/tex/context/base/mkiv/font-mis.lua
index c294bd638..5ae6659c5 100644
--- a/tex/context/base/mkiv/font-mis.lua
+++ b/tex/context/base/mkiv/font-mis.lua
@@ -21,7 +21,7 @@ local readers = otf.readers
if readers then
- otf.version = otf.version or 3.120
+ otf.version = otf.version or 3.121
otf.cache = otf.cache or containers.define("fonts", "otl", otf.version, true)
function fonts.helpers.getfeatures(name,save)
diff --git a/tex/context/base/mkiv/font-osd.lua b/tex/context/base/mkiv/font-osd.lua
index ecf8009f9..f35be2cd1 100644
--- a/tex/context/base/mkiv/font-osd.lua
+++ b/tex/context/base/mkiv/font-osd.lua
@@ -6,16 +6,6 @@ if not modules then modules = { } end modules ['font-osd'] = { -- script devanag
license = "see context related readme files"
}
--- local experiment1 = false
--- local experiment2 = false
--- local experiment2b1 = false
--- local experiment2b2 = false
-
--- experiments.register("fonts.indic.experiment1", function(v) experiment1 = v end)
--- experiments.register("fonts.indic.experiment2", function(v) experiment2 = v end)
--- experiments.register("fonts.indic.experiment2b1", function(v) experiment2b1 = v end)
--- experiments.register("fonts.indic.experiment2b2", function(v) experiment2b2 = v end)
-
-- we need to check nbsphash (context only)
-- A few remarks:
@@ -1392,16 +1382,13 @@ local function reorder_one(head,start,stop,font,attr,nbspaces)
end
if reph or vattu then
--- print(">>> has reph or vattu")
local current = start
local cns = nil
local done = false
while current ~= stop do
--- print("\t>>> current ~= stop yet")
local c = current
local n = getnext(current)
if ra[getchar(current)] and halant[getchar(n)] then
--- print("\t\t>>> current ra; next halant")
c = n
n = getnext(n)
local b, bn = base, base
@@ -1415,7 +1402,6 @@ local function reorder_one(head,start,stop,font,attr,nbspaces)
if getstate(current,s_rphf) then
-- position Reph (Ra + H) after post-base 'matra' (if any) since these
-- become marks on the 'matra', not on the base glyph
--- print("\t\t\t>>> ra + halant form → reph")
if b ~= current then
if current == start then
if head == start then
@@ -1435,7 +1421,6 @@ local function reorder_one(head,start,stop,font,attr,nbspaces)
end
elseif cns and getnext(cns) ~= current then -- todo: optimize next
-- position below-base Ra (vattu) following the consonants on which it is placed (either the base consonant or one of the pre-base consonants)
--- print("\t\t\t>>> ra below base (vattu) → rkrf")
local cp = getprev(current)
local cnsn = getnext(cns)
setlink(cp,n)
@@ -1449,17 +1434,14 @@ local function reorder_one(head,start,stop,font,attr,nbspaces)
current = getprev(n)
end
else
--- print("\t\t>>> NOT! current ra; next halant")
local char = getchar(current)
if consonant[char] then
--- print("\t\t\t>>> is consonant")
cns = current
local next = getnext(cns)
if halant[getchar(next)] then
cns = next
end
if not vatucache[char] then
--- print("\t\t\t\t>>> is in vatucache")
next = getnext(cns)
while dependent_vowel[getchar(next)] do
cns = next
@@ -1467,7 +1449,6 @@ local function reorder_one(head,start,stop,font,attr,nbspaces)
end
end
elseif char == c_nbsp then
--- print("\t\t\t>>> is nbsp")
nbspaces = nbspaces + 1
cns = current
local next = getnext(cns)
@@ -1936,8 +1917,6 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
reorderreph.coverage = { } -- use local
rephbase[font] = { } -- use local
--- print("!!!!!! reorder two ")
-
for i=1,#seqsubset do
-- this can be done more efficient, the last test and less getnext
@@ -2064,7 +2043,7 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
end
end
- local current, base, firstcons = start, nil, nil
+ local current, base, firstcons, subnotafterbase, postnotafterbase = start, nil, nil, nil, nil
if getstate(start,s_rphf) then
-- if syllable starts with Ra + H and script has 'Reph' then exclude Reph from candidates for base consonants
@@ -2125,10 +2104,17 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
end
end
else -- not Stand Alone cluster
--- print("!!!! not standalone cluster")
local last = getnext(stop)
while current ~= last do -- find base consonant
local next = getnext(current)
+-- IF PATCHED THEN
+-- if current == subpos then
+-- subnotafterbase = current
+-- end
+-- if current == postpos then
+-- postnotafterbase = current
+-- end
+-- END
if consonant[getchar(current)] then
if not (current ~= stop and next ~= stop and halant[getchar(next)] and getchar(getnext(next)) == c_zwj) then
if not firstcons then
@@ -2138,6 +2124,14 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
local a = getstate(current)
if not (a == s_blwf or a == s_pstf or (a ~= s_rphf and a ~= s_blwf and ra[getchar(current)])) then
base = current
+-- IF PATCHED THEN
+-- if subnotafterbase then
+-- subpos = base
+-- end
+-- if postnotafterbase then
+-- postpos = base
+-- end
+-- END
end
end
end
@@ -2195,12 +2189,17 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
end
end
--
--- print("char: " .. char)
--- if not moved[current] and dependent_vowel[char] then
- if dependent_vowel[char] then
--- print(">>!! dependent vowel")
+-- IF PATCHED THEN
+-- if dependent_vowel[char] then
+-- ELSE
+ if not moved[current] and dependent_vowel[char] then
+-- END
if pre_mark[char] then -- or: if before_main or before_half
+-- IF PATCHED THEN
+-- -- nothing
+-- ELSE
moved[current] = true
+-- END
-- can be helper to remove one node
local prev, next = getboth(current)
setlink(prev,next)
@@ -2251,6 +2250,13 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
end
elseif above_mark[char] then
-- after main consonant
+-- IF PATCHED
+-- target = subpos
+-- if postpos == subpos then
+-- postpos = current
+-- end
+-- subpos = current
+-- ELSE
target = basepos
if subpos == basepos then
subpos = current
@@ -2259,6 +2265,7 @@ local function reorder_two(head,start,stop,font,attr,nbspaces) -- maybe do a pas
postpos = current
end
basepos = current
+-- END
elseif below_mark[char] then
-- after subjoined consonants
target = subpos
@@ -2502,12 +2509,16 @@ local function analyze_next_chars_one(c,font,variant) -- skip one dependent vowe
if pre_mark[v] and not already_pre_mark then
already_pre_mark = true
elseif post_mark[v] and not already_post_mark then
- if devanagarihash[font].conjuncts == "mixed" then
- -- for messy fonts
- return c
- else
- already_post_mark = true
- end
+-- IF PATCHED THEN
+-- already_post_mark = true
+-- ELSE
+ if devanagarihash[font].conjuncts == "mixed" then
+ -- for messy fonts
+ return c
+ else
+ already_post_mark = true
+ end
+-- END
elseif below_mark[v] and not already_below_mark then
already_below_mark = true
elseif above_mark[v] and not already_above_mark then
@@ -2710,10 +2721,6 @@ local function analyze_next_chars_two(c,font)
for k=1,#vowels do
local v = vowels[k]
if pre_mark[v] and not already_pre_mark then
--- print(">>> pre_mark")
--- if dependent_vowel[v] then
--- print(">>>> dependent vowel")
--- end
already_pre_mark = true
elseif above_mark[v] and not already_above_mark then
already_above_mark = true
@@ -2731,12 +2738,16 @@ local function analyze_next_chars_two(c,font)
if pre_mark[v] and not already_pre_mark then
already_pre_mark = true
elseif post_mark[v] and not already_post_mark then
- if devanagarihash[font].conjuncts == "mixed" then
- -- for messy fonts
- return c
- else
- already_post_mark = true
- end
+-- IF PATCHED THEN
+-- already_post_mark = true
+-- ELSE
+ if devanagarihash[font].conjuncts == "mixed" then
+ -- for messy fonts
+ return c
+ else
+ already_post_mark = true
+ end
+-- END
elseif below_mark[v] and not already_below_mark then
already_below_mark = true
elseif above_mark[v] and not already_above_mark then
@@ -3068,15 +3079,12 @@ local function method_two(head,font,attr)
end
end
if independent_vowel[char] then
--- print("!!>>> independent_vowel")
-- vowel-based syllable: [Ra+H]+V+[N]+[<[<ZWJ|ZWNJ>]+H+C|ZWJ+C>]+[{M}+[N]+[H]]+[SM]+[(VD)]
current = analyze_next_chars_one(c,font,1)
syllableend = current
else
--- print("!!>>> dependent vowel")
local standalone = char == c_nbsp
if standalone then
--- print("!!>>> standalone")
nbspaces = nbspaces + 1
local p = getprev(current)
if not p then
@@ -3090,12 +3098,10 @@ local function method_two(head,font,attr)
end
end
if standalone then
--- print("!!>>>>>>> next standalone")
-- Stand Alone cluster (at the start of the word only): #[Ra+H]+NBSP+[N]+[<[<ZWJ|ZWNJ>]+H+C>]+[{M}+[N]+[H]]+[SM]+[(VD)]
current = analyze_next_chars_one(c,font,2)
syllableend = current
elseif consonant[getchar(current)] then
--- print("!!>>>>>>> a consonant")
-- WHY current INSTEAD OF c ?
-- Consonant syllable: {C+[N]+<H+[<ZWNJ|ZWJ>]|<ZWNJ|ZWJ>+H>} + C+[N]+[A] + [< H+[<ZWNJ|ZWJ>] | {M}+[N]+[H]>]+[SM]+[(VD)]
current = analyze_next_chars_two(current,font) -- not c !
@@ -3104,7 +3110,6 @@ local function method_two(head,font,attr)
end
end
if syllableend then
--- print("!!!>>> syllable end")
syllabe = syllabe + 1
local c = syllablestart
local n = getnext(syllableend)
diff --git a/tex/context/base/mkiv/font-otc.lua b/tex/context/base/mkiv/font-otc.lua
index 67b77b111..f83c3e8ec 100644
--- a/tex/context/base/mkiv/font-otc.lua
+++ b/tex/context/base/mkiv/font-otc.lua
@@ -142,6 +142,12 @@ local function addfeature(data,feature,specifications,prepareonly)
local descriptions = data.descriptions
local resources = data.resources
+
+ if not descriptions or not resources then
+ report_otf("missing specification")
+ return
+ end
+
local features = resources.features
local sequences = resources.sequences
diff --git a/tex/context/base/mkiv/font-otl.lua b/tex/context/base/mkiv/font-otl.lua
index f36e533ca..9493bd03c 100644
--- a/tex/context/base/mkiv/font-otl.lua
+++ b/tex/context/base/mkiv/font-otl.lua
@@ -52,7 +52,7 @@ local report_otf = logs.reporter("fonts","otf loading")
local fonts = fonts
local otf = fonts.handlers.otf
-otf.version = 3.120 -- beware: also sync font-mis.lua and in mtx-fonts
+otf.version = 3.121 -- beware: also sync font-mis.lua and in mtx-fonts
otf.cache = containers.define("fonts", "otl", otf.version, true)
otf.svgcache = containers.define("fonts", "svg", otf.version, true)
otf.pngcache = containers.define("fonts", "png", otf.version, true)
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 7de108d4c..b3055976a 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -8,6 +8,11 @@ if not modules then modules = { } end modules ['font-ots'] = { -- sequences
}
--[[ldx--
+<p>I need to check the description at the microsoft site ... it has been improved
+so maybe there are some interesting details there. Most below is based on old and
+incomplete documentation and involved quite a bit of guesswork (checking with the
+abstract uniscribe of those days. But changing things is tricky!</p>
+
<p>This module is a bit more split up that I'd like but since we also want to test
with plain <l n='tex'/> it has to be so. This module is part of <l n='context'/>
and discussion about improvements and functionality mostly happens on the
@@ -165,13 +170,8 @@ local forcepairadvance = false -- for testing
local repeatablemultiples = context or false
-directives.register("otf.forcediscretionaries",function(v)
- forcediscretionaries = v
-end)
-
-directives.register("otf.forcepairadvance",function(v)
- forcepairadvance = v
-end)
+directives.register("otf.forcediscretionaries", function(v) forcediscretionaries = v end)
+directives.register("otf.forcepairadvance", function(v) forcepairadvance = v end)
local report_direct = logs.reporter("fonts","otf direct")
local report_subchain = logs.reporter("fonts","otf subchain")
@@ -197,7 +197,6 @@ local setboth = nuts.setboth
local getid = nuts.getid
local getstate = nuts.getstate
local getsubtype = nuts.getsubtype
-local setsubtype = nuts.setsubtype
local getchar = nuts.getchar
local setchar = nuts.setchar
local getdisc = nuts.getdisc
@@ -229,10 +228,10 @@ local ischar = nuts.ischar
local usesfont = nuts.usesfont
local insertnodeafter = nuts.insertafter
-local copy_node = nuts.copy
-local copy_node_list = nuts.copylist
-local remove_node = nuts.remove
-local find_node_tail = nuts.tail
+local copynode = nuts.copy
+local copynodelist = nuts.copylist
+local removenode = nuts.remove
+local findnodetail = nuts.tail
local flushnodelist = nuts.flushlist
local flushnode = nuts.flushnode
local endofmath = nuts.endofmath
@@ -244,12 +243,8 @@ local setmetatableindex = table.setmetatableindex
local nextnode = nuts.traversers.node
------ zwnj = 0x200C
------ zwj = 0x200D
-
local nodecodes = nodes.nodecodes
local glyphcodes = nodes.glyphcodes
-local disccodes = nodes.disccodes
local glyph_code = nodecodes.glyph
local glue_code = nodecodes.glue
@@ -261,8 +256,7 @@ local par_code = nodecodes.par
local lefttoright_code = nodes.dirvalues.lefttoright
local righttoleft_code = nodes.dirvalues.righttoleft
-local discretionarydisc_code = disccodes.discretionary
-local ligatureglyph_code = glyphcodes.ligature
+local discretionarydisc_code = nodes.disccodes.discretionary
local a_noligature = attributes.private("noligature")
@@ -377,7 +371,7 @@ local function cref(dataset,sequence,index)
return "no valid dataset"
end
local merged = sequence.merged and "merged " or ""
- if index then
+ if index and index > 1 then
return formatters["feature %a, type %a, %schain lookup %a, index %a"](
dataset[4],sequence.type,merged,sequence.name,index)
else
@@ -455,7 +449,7 @@ end
local function appenddisc(disc,list)
local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
local posthead = list
- local replacehead = copy_node_list(list)
+ local replacehead = copynodelist(list)
if post then
setlink(posttail,posthead)
else
@@ -483,7 +477,6 @@ local function markstoligature(head,start,stop,char)
end
resetinjection(base)
setchar(base,char)
- setsubtype(base,ligatureglyph_code)
setcomponents(base,start)
setlink(prev,base,next)
flushcomponents(start)
@@ -536,7 +529,6 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
end
resetinjection(base)
setchar(base,char)
- setsubtype(base,ligatureglyph_code)
setcomponents(base,comp)
setlink(prev,base,next)
if not discfound then
@@ -560,7 +552,7 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
if trace_marks then
logwarning("%s: keep ligature mark %s, gets index %s",pref(dataset,sequence),gref(char),getligaindex(start))
end
- local n = copy_node(start)
+ local n = copynode(start)
copyinjection(n,start) -- is this ok ? we position later anyway
head, current = insertnodeafter(head,current,n) -- unlikely that mark has components
elseif trace_marks then
@@ -634,67 +626,68 @@ end
local function multiple_glyphs(head,start,multiple,skiphash,what,stop) -- what to do with skiphash matches here
local nofmultiples = #multiple
if nofmultiples > 0 then
+ local first = start
resetinjection(start)
setchar(start,multiple[1])
if nofmultiples > 1 then
- local sn = getnext(start)
- for k=2,nofmultiples do
+ -- local sn = getnext(start)
+ for i=2,nofmultiples do
-- untested:
--
-- while ignoremarks and marks[getchar(sn)] then
-- local sn = getnext(sn)
-- end
- local n = copy_node(start) -- ignore components
+ local n = copynode(start) -- ignore components
resetinjection(n)
- setchar(n,multiple[k])
+ setchar(n,multiple[i])
insertnodeafter(head,start,n)
start = n
end
- if what ~= true and repeatablemultiples then
- -- This is just some experimental code; we might introduce gsub_extensible
- -- some day instead. Beware: when we have a feature that mixes alternates and
- -- multiples we need to make sure we don't handle the alternate string values
- -- here. This might eventually become an lmtx only feature.
- local kind = type(what)
- local m, f, l
- if kind == "string" then
- local what, n = string.match(what,"^repeat(.-)[:=](%d+)$")
- if what == "middle" then
- m = tonumber(n)
- elseif what == "first" then
- f = tonumber(n)
- elseif what == "last" then
- l = tonumber(n)
- end
- elseif kind == "table" then
- -- won't happen because currently we don't split these values
- m = what.middle
- f = what.first
- l = what.last
+ end
+ if what ~= true and repeatablemultiples then
+ -- This is just some experimental code; we might introduce gsub_extensible
+ -- some day instead. Beware: when we have a feature that mixes alternates and
+ -- multiples we need to make sure we don't handle the alternate string values
+ -- here.
+ local kind = type(what)
+ local m, f, l
+ if kind == "string" then
+ local what, n = string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what == "middle" then
+ m = tonumber(n)
+ elseif what == "first" then
+ f = tonumber(n)
+ elseif what == "last" then
+ l = tonumber(n)
end
- if f or m or l then
- if m and m > 1 and nofmultiples == 3 then
- local middle = getnext(first)
- for i=2,m do
- local n = copynode(middle) -- ignore components
- resetinjection(n)
- insertnodeafter(head,first,n)
- end
+ elseif kind == "table" then
+ -- won't happen because currently we don't split these values
+ m = what.middle
+ f = what.first
+ l = what.last
+ end
+ if f or m or l then
+ if m and m > 1 and nofmultiples == 3 then
+ local middle = getnext(first)
+ for i=2,m do
+ local n = copynode(middle) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
end
- if f and f > 1 then
- for i=2,f do
- local n = copynode(first) -- ignore components
- resetinjection(n)
- insertnodeafter(head,first,n)
- end
+ end
+ if f and f > 1 then
+ for i=2,f do
+ local n = copynode(first) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
end
- if l and l > 1 then
- for i=2,l do
- local n = copynode(start) -- ignore components
- resetinjection(n)
- insertnodeafter(head,start,n)
- start = n
- end
+ end
+ if l and l > 1 then
+ for i=2,l do
+ local n = copynode(start) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start = n
end
end
end
@@ -894,9 +887,9 @@ function handlers.gsub_ligature(head,start,dataset,sequence,ligature,rlmode,skip
local prev = getprev(start)
if stop then
setnext(stop)
- local copy = copy_node_list(start)
+ local copy = copynodelist(start)
local tail = stop -- was: getprev(stop) -- Kai: needs checking on your samples
- local liat = find_node_tail(copy)
+ local liat = findnodetail(copy)
if pre then
setlink(liat,pre)
end
@@ -907,7 +900,7 @@ function handlers.gsub_ligature(head,start,dataset,sequence,ligature,rlmode,skip
replace = start
else
setnext(start)
- local copy = copy_node(start)
+ local copy = copynode(start)
if pre then
setlink(copy,pre)
end
@@ -1321,7 +1314,7 @@ as less as needed but that would also make the code even more messy.</p>
-- To be done (example needed): what if > 1 steps
--- this is messy: do we need this disc checking also in alternaties?
+-- this is messy: do we need this disc checking also in alternates?
local function reportzerosteps(dataset,sequence)
logwarning("%s: no steps",cref(dataset,sequence))
@@ -1357,7 +1350,7 @@ function chainprocs.gsub_remove(head,start,stop,dataset,sequence,currentlookup,r
if trace_chains then
logprocess("%s: removing character %s",cref(dataset,sequence,chainindex),gref(getchar(start)))
end
- head, start = remove_node(head,start,true)
+ head, start = removenode(head,start,true)
return head, getprev(start), true
end
@@ -1952,7 +1945,7 @@ do if not userkern then -- generic
local setkern = nuts.setkern -- not injections.setkern
userkern = function(k)
- local n = copy_node(thekern)
+ local n = copynode(thekern)
setkern(n,k)
return n
end
@@ -1994,12 +1987,11 @@ end
local noflags = { false, false, false, false }
-local function chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck)
+local function chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck,where)
local size = ck[5] - ck[4] + 1
local chainlookups = ck[6]
local done = false
-
-- current match
if chainlookups then
-- Lookups can be like { 1, false, 3 } or { false, 2 } or basically anything and
@@ -2010,23 +2002,30 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck)
-- if nofchainlookups > size then
-- -- bad rules
-- end
-
local chainlookup = chainlookups[1]
- for j=1,#chainlookup do
- local chainstep = chainlookup[j]
- local chainkind = chainstep.type
- local chainproc = chainprocs[chainkind]
- if chainproc then
- local ok
- -- HH: chainindex 1 added here (for KAI to check too), there are weird ligatures e.g.
- -- char + mark -> char where mark has to disappear
- head, start, ok = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,skiphash,1)
- if ok then
- done = true
+ if chainlookup then
+ for j=1,#chainlookup do
+ local chainstep = chainlookup[j]
+ if chainstep then
+ local chainkind = chainstep.type
+ local chainproc = chainprocs[chainkind]
+ if chainproc then
+ local ok
+ -- HH: chainindex 1 added here (for KAI to check too), there are weird ligatures e.g.
+ -- char + mark -> char where mark has to disappear
+ head, start, ok = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,skiphash,1)
+ if ok then
+ done = true
+ end
+ else
+ logprocess("%s: %s is not yet supported (1)",cref(dataset,sequence),chainkind)
+ end
+ else
+ logprocess("%s: has an issue (1)",cref(dataset,sequence))
end
- else
- logprocess("%s: %s is not yet supported (1)",cref(dataset,sequence),chainkind)
end
+ else
+ -- whatever
end
else
@@ -2067,23 +2066,28 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck)
if chainlookup then
for j=1,#chainlookup do
local chainstep = chainlookup[j]
- local chainkind = chainstep.type
- local chainproc = chainprocs[chainkind]
- if chainproc then
- local ok, n
- head, start, ok, n = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,skiphash,i)
- -- messy since last can be changed !
- if ok then
- done = true
- if n and n > 1 and i + n > nofchainlookups then
- -- this is a safeguard, we just ignore the rest of the lookups
- i = size -- prevents an advance
- break
+ if chainstep then
+ local chainkind = chainstep.type
+ local chainproc = chainprocs[chainkind]
+ if chainproc then
+ local ok, n
+ head, start, ok, n = chainproc(head,start,last,dataset,sequence,chainstep,rlmode,skiphash,i)
+ -- messy since last can be changed !
+ if ok then
+ done = true
+ if n and n > 1 and i + n > nofchainlookups then
+ -- this is a safeguard, we just ignore the rest of the lookups
+ i = size -- prevents an advance
+ break
+ end
end
+ else
+ -- actually an error
+ logprocess("%s: %s is not yet supported (2)",cref(dataset,sequence),chainkind)
end
else
-- actually an error
- logprocess("%s: %s is not yet supported (2)",cref(dataset,sequence),chainkind)
+ logprocess("%s: has an issue (2)",cref(dataset,sequence))
end
end
else
@@ -2111,7 +2115,7 @@ local function chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck)
else
done = true
if trace_contexts then
- logprocess("%s: skipping match",cref(dataset,sequence))
+ logprocess("%s: skipping match @ %i",cref(dataset,sequence),where)
end
end
end
@@ -2141,6 +2145,8 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
local last = start
local prev = getprev(start)
local hasglue = false
+ local useddisc = nil -- new 2022-09-25
+ local usedstart = start -- new 2022-09-25
-- fishy: so we can overflow and then go on in the sweep?
-- todo : id can also be glue_code as we checked spaces
@@ -2211,7 +2217,7 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
tail = prev
setprev(current,sweepnode)
else
- tail = find_node_tail(head)
+ tail = findnodetail(head)
end
setnext(sweepnode,current)
setprev(head)
@@ -2302,15 +2308,14 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
end
end
end
+
local done = false
if lookaheaddisc then
-
local cf = start
local cl = getprev(lookaheaddisc)
local cprev = getprev(start)
local insertedmarks = 0
-
while cprev do
local char = ischar(cf,currentfont)
if char and marks[char] then
@@ -2329,13 +2334,13 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
head = lookaheaddisc
end
local pre, post, replace = getdisc(lookaheaddisc)
- local new = copy_node_list(cf) -- br, how often does that happen
+ local new = copynodelist(cf) -- br, how often does that happen
local cnew = new
if pre then
- setlink(find_node_tail(cf),pre)
+ setlink(findnodetail(cf),pre)
end
if replace then
- local tail = find_node_tail(new)
+ local tail = findnodetail(new)
setlink(tail,replace)
end
for i=1,insertedmarks do
@@ -2349,14 +2354,14 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
end
if not notmatchpre[lookaheaddisc] then
local ok = false
- cf, start, ok = chainrun(cf,start,cl,dataset,sequence,rlmode,skiphash,ck)
+ cf, start, ok = chainrun(cf,start,cl,dataset,sequence,rlmode,skiphash,ck,1)
if ok then
done = true
end
end
if not notmatchreplace[lookaheaddisc] then
local ok = false
- new, cnew, ok = chainrun(new,cnew,clast,dataset,sequence,rlmode,skiphash,ck)
+ new, cnew, ok = chainrun(new,cnew,clast,dataset,sequence,rlmode,skiphash,ck,2)
if ok then
done = true
end
@@ -2367,16 +2372,14 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
setdisc(lookaheaddisc,cf,post,new)
end
start = getprev(lookaheaddisc)
+ useddisc = lookaheaddisc -- new 2022-09-25
sweephead[cf] = getnext(clast) or false
sweephead[new] = getnext(cl) or false
-
elseif backtrackdisc then
-
local cf = getnext(backtrackdisc)
local cl = start
local cnext = getnext(start)
local insertedmarks = 0
-
while cnext do
local char = ischar(cnext,currentfont)
if char and marks[char] then
@@ -2391,8 +2394,8 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
setprev(cf)
setnext(cl)
local pre, post, replace, pretail, posttail, replacetail = getdisc(backtrackdisc,true)
- local new = copy_node_list(cf)
- local cnew = find_node_tail(new)
+ local new = copynodelist(cf)
+ local cnew = findnodetail(new)
for i=1,insertedmarks do
cnew = getprev(cnew)
end
@@ -2402,14 +2405,14 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
end
if not notmatchpost[backtrackdisc] then
local ok = false
- cf, start, ok = chainrun(cf,start,last,dataset,sequence,rlmode,skiphash,ck)
+ cf, start, ok = chainrun(cf,start,last,dataset,sequence,rlmode,skiphash,ck,3)
if ok then
done = true
end
end
if not notmatchreplace[backtrackdisc] then
local ok = false
- new, cnew, ok = chainrun(new,cnew,clast,dataset,sequence,rlmode,skiphash,ck)
+ new, cnew, ok = chainrun(new,cnew,clast,dataset,sequence,rlmode,skiphash,ck,4)
if ok then
done = true
end
@@ -2430,33 +2433,57 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
setdisc(backtrackdisc,pre,post,replace)
end
start = getprev(backtrackdisc)
+ useddisc = backtrackdisc -- new 2022-09-25
sweephead[post] = getnext(clast) or false
sweephead[replace] = getnext(last) or false
-
else
local ok = false
- head, start, ok = chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck)
+ head, start, ok = chainrun(head,start,last,dataset,sequence,rlmode,skiphash,ck,5)
if ok then
done = true
end
end
-
- return head, start, done
+ if useddisc and start ~= usedstart then -- make this option per font -- new 2022-09-25
+ start = getnext(start) -- new 2022-09-25
+ end -- new 2022-09-25
+ return head, start, done, useddisc -- new 2022-09-25
end
-local function chaintrac(head,start,dataset,sequence,rlmode,skiphash,ck,match,discseen,sweepnode)
- local rule = ck[1]
- local lookuptype = ck[8] or ck[2]
- local nofseq = #ck[3]
- local first = ck[4]
- local last = ck[5]
- local char = getchar(start)
- logwarning("%s: rule %s %s at char %s for (%s,%s,%s) chars, lookuptype %a, %sdisc seen, %ssweeping",
- cref(dataset,sequence),rule,match and "matches" or "nomatch",
- gref(char),first-1,last-first+1,nofseq-last,lookuptype,
- discseen and "" or "no ", sweepnode and "" or "not ")
+local chaintrac do
+
+ local level = 0
+ local last = { }
+
+ chaintrac = function(head,start,dataset,sequence,rlmode,skiphash,ck,match,discseen,sweepnode)
+ if dataset then
+ level = level + 1
+ last[level] = start
+ local rule = ck[1]
+ local lookuptype = ck[8] or ck[2]
+ local nofseq = #ck[3] -- ck[3].n
+ local first = ck[4]
+ local last = ck[5]
+ local char = getchar(start)
+ logwarning("+ %i : %s: rule %s %s at char %s for (%s,%s,%s) chars, lookuptype %a, %sdisc seen, %ssweeping",
+ level,cref(dataset,sequence),rule,match and "matches" or "nomatch",
+ gref(char),first-1,last-first+1,nofseq-last,lookuptype,
+ discseen and "" or "no ", sweepnode and "" or "not ")
+ else
+ -- (start,done)
+ local what = start and "done" or "continue"
+ local where = head == last[level] and "same" or "different"
+ local char = getchar(head)
+ if char then
+ logwarning("- %i : %s at char %s, %s node",level,what,gref(char),where)
+ else
+ logwarning("- %i : %s, %s node",level,what,where)
+ end
+ level = level - 1
+ end
+ end
+
end
-- The next one is quite optimized but still somewhat slow, fonts like ebgaramond
@@ -2470,6 +2497,9 @@ end
-- the previous disc .. such be it (<before><disc><current=fl><after> with only f done)
local function handle_contextchain(head,start,dataset,sequence,contexts,rlmode,skiphash)
+ if not contexts then
+ return head, start, false
+ end
-- optimizing for rlmode gains nothing
local sweepnode = sweepnode
local sweeptype = sweeptype
@@ -2510,10 +2540,10 @@ local function handle_contextchain(head,start,dataset,sequence,contexts,rlmode,s
for k=1,nofcontexts do -- does this disc mess work well with n > 1
- local ck = contexts[k]
- local seq = ck[3]
- local f = ck[4] -- first current
-local last = start
+ local ck = contexts[k]
+ local seq = ck[3]
+ local f = ck[4] -- first current
+ local last = start
if not startchar or not seq[f][startchar] then
-- report("no hit in %a at %i of %i contexts",sequence.type,k,nofcontexts)
goto next
@@ -2524,7 +2554,7 @@ local last = start
else
local l = ck[5] -- last current
local current = start
--- local last = start
+ -- local last = start
-- current match
@@ -2638,7 +2668,7 @@ local last = start
-- before
if f > 1 then
- if startprev then
+ -- if startprev then -- new 2022-09-25
local prev = startprev
if prereplace and prev == checkdisc then
prev = getprev(sweepnode)
@@ -2762,9 +2792,9 @@ local last = start
else
goto next
end
- else
- goto next
- end
+ -- else -- new 2022-09-25
+ -- goto next -- new 2022-09-25
+ -- end -- new 2022-09-25
end
-- after
@@ -2888,24 +2918,25 @@ local last = start
end
end
end
-
if trace_contexts then
chaintrac(head,start,dataset,sequence,rlmode,skipped and skiphash,ck,true,discseen,sweepnode)
end
if discseen or sweepnode then
+ -- When we process a disc we can collapse and therefore we backtrack one node (start) and
+ -- reprocess. This is needed because there might be more in the collapsed list.
head, start, done = chaindisk(head,start,dataset,sequence,rlmode,skipped and skiphash,ck)
else
- head, start, done = chainrun(head,start,last,dataset,sequence,rlmode,skipped and skiphash,ck)
+ head, start, done = chainrun(head,start,last,dataset,sequence,rlmode,skipped and skiphash,ck,6)
+ end
+ if trace_contexts then
+ chaintrac(start,done)
end
if done then
break
-- else
-- next context
end
- ::next::
- -- if trace_chains then
- -- chaintrac(head,start,dataset,sequence,rlmode,skipped and skiphash,ck,false,discseen,sweepnode)
- -- end
+ ::next::
end
if discseen then
notmatchpre = { }
@@ -2924,21 +2955,46 @@ handlers.gsub_reversecontextchain = handle_contextchain
handlers.gpos_contextchain = handle_contextchain
handlers.gpos_context = handle_contextchain
--- this needs testing
+-- local function chained_contextchain(head,start,stop,dataset,sequence,currentlookup,rlmode,skiphash)
+-- local steps = currentlookup.steps
+-- local nofsteps = currentlookup.nofsteps
+-- if nofsteps > 1 then
+-- reportmoresteps(dataset,sequence)
+-- end
+-- -- probably wrong
+-- local l = steps[1].coverage[getchar(start)]
+-- if l then
+-- return handle_contextchain(head,start,dataset,sequence,l,rlmode,skiphash)
+-- else
+-- return head, start, false
+-- end
+-- end
+-- new 2022-09-25
+
local function chained_contextchain(head,start,stop,dataset,sequence,currentlookup,rlmode,skiphash)
local steps = currentlookup.steps
local nofsteps = currentlookup.nofsteps
- if nofsteps > 1 then
- reportmoresteps(dataset,sequence)
- end
- -- probably wrong
- local l = steps[1].coverage[getchar(start)]
- if l then
- return handle_contextchain(head,start,dataset,sequence,l,rlmode,skiphash)
+ local char = getchar(start)
+ if nofsteps == 1 then
+ local s = steps[1]
+ local l = s.coverage[char]
+ if l then
+ return handle_contextchain(head,start,dataset,sequence,l,rlmode,skiphash)
+ end
else
- return head, start, false
+ for i=1,nofsteps do
+ local s = steps[i]
+ local l = s.coverage[char]
+ if l then
+ local h, s, d = handle_contextchain(head,start,dataset,sequence,l,rlmode,skiphash)
+ if d then
+ return h, s, d
+ end
+ end
+ end
end
+ return head, start, false
end
chainprocs.gsub_context = chained_contextchain
@@ -3077,7 +3133,7 @@ do -- overcome local limit
end
-- Functions like kernrun, comprun etc evolved over time and in the end look rather
--- complex. It's a bit of a compromis between extensive copying and creating subruns.
+-- complex. It's a bit of a compromise between extensive copying and creating subruns.
-- The logic has been improved a lot by Kai and Ivo who use complex fonts which
-- really helped to identify border cases on the one hand and get insight in the diverse
-- ways fonts implement features (not always that consistent and efficient). At the same
@@ -3184,7 +3240,8 @@ local function kernrun(disc,k_run,font,attr,...)
if done and trace_testruns then
report_disc("done",disc)
end
- return nextstart, done
+ -- return nextstart, done
+ return nextstart
end
-- fonts like ebgaramond do ligatures this way (less efficient than e.g. dejavu which
@@ -3237,12 +3294,19 @@ local function comprun(disc,c_run,...) -- vararg faster than the whole list
setdisc(disc,pre,post,replace)
end
--
- return getnext(disc), renewed
+ -- return getnext(disc), renewed
+ return getnext(disc)
end
-- if we can hyphenate in a lig then unlikely a lig so we
-- could have a option here to ignore lig
+local test_flatten_start = 2 -- must start at 2 according to Kai
+
+directives.register("otf.testrun.forceflatten", function(v)
+ test_flatten_start = v and 1 or 2
+end)
+
local function testrun(disc,t_run,c_run,...)
if trace_testruns then
report_disc("test",disc)
@@ -3271,7 +3335,7 @@ local function testrun(disc,t_run,c_run,...)
local d = d_replace > d_post and d_replace or d_post
local head = getnext(disc) -- is: next
local tail = head
- for i=2,d do -- must start at 2 according to Kai
+ for i=test_flatten_start,d do
local nx = getnext(tail)
local id = getid(nx)
if id == disc_code then
@@ -3286,7 +3350,7 @@ local function testrun(disc,t_run,c_run,...)
next = getnext(tail)
setnext(tail)
setprev(head)
- local new = copy_node_list(head)
+ local new = copynodelist(head)
if posttail then
setlink(posttail,head)
else
@@ -3359,7 +3423,8 @@ local function testrun(disc,t_run,c_run,...)
end
end
-- next can have changed (copied list)
- return getnext(disc), renewed
+ -- return getnext(disc), renewed
+ return getnext(disc)
end
-- 1{2{\oldstyle\discretionary{3}{4}{5}}6}7\par
@@ -3882,7 +3947,7 @@ do
-- the before and after lists in the loader. But first I need to see a font that uses multiple
-- matches.
--
- local start = find_node_tail(head)
+ local start = findnodetail(head)
local rlmode = 0 -- how important is this .. do we need to check for dir?
local merged = steps.merged
while start do
@@ -3968,17 +4033,13 @@ do
start = getnext(start)
elseif id == disc_code then
if not discs or discs[start] == true then
- local ok
if gpossing then
- start, ok = kernrun(start,k_run_single, font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
+ start = kernrun(start,k_run_single, font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
elseif forcetestrun then
- start, ok = testrun(start,t_run_single,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
+ start = testrun(start,t_run_single,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
else
- start, ok = comprun(start,c_run_single, font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
+ start = comprun(start,c_run_single, font,attr,lookupcache,step,dataset,sequence,rlmode,skiphash,handler)
end
- -- if ok then
- -- done = true
- -- end
else
start = getnext(start)
end
@@ -4052,17 +4113,13 @@ do
start = getnext(start)
elseif id == disc_code then
if not discs or discs[start] == true then
- local ok
if gpossing then
- start, ok = kernrun(start,k_run_multiple, font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
+ start = kernrun(start,k_run_multiple, font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
elseif forcetestrun then
- start, ok = testrun(start,t_run_multiple,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
+ start = testrun(start,t_run_multiple,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
else
- start, ok = comprun(start,c_run_multiple, font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
+ start = comprun(start,c_run_multiple, font,attr,steps,nofsteps,dataset,sequence,rlmode,skiphash,handler)
end
- -- if ok then
- -- done = true
- -- end
else
start = getnext(start)
end
@@ -4184,7 +4241,7 @@ do
start = getnext(start)
-- elseif id == par_code and startofpar(start) then
-- rlparmode, rlmode = pardirstate(start)
- -- start = getnext(start)
+ -- start = nxt
else
start = getnext(start)
end
@@ -4274,8 +4331,8 @@ registerotffeature {
}
}
--- Moved here (up) a bit. This doesn't really belong in generic so it will
--- move to a context module some day.
+-- Moved here (up) a bit. This doesn't really belong in generic so it will move to a
+-- context module some day.
local function markinitializer(tfmdata,value)
local properties = tfmdata.properties
diff --git a/tex/context/base/mkiv/font-shp.lua b/tex/context/base/mkiv/font-shp.lua
index 2ca3011a5..cab4b7540 100644
--- a/tex/context/base/mkiv/font-shp.lua
+++ b/tex/context/base/mkiv/font-shp.lua
@@ -17,7 +17,7 @@ local pfb = fonts.handlers.pfb
local hashes = fonts.hashes
local identifiers = hashes.identifiers
-local version = otf.version or 0.011
+local version = otf.version or 0.013
local shapescache = containers.define("fonts", "shapes", version, true)
local streamscache = containers.define("fonts", "streams", version, true)
diff --git a/tex/context/base/mkiv/math-dir.lua b/tex/context/base/mkiv/math-dir.lua
index f26324ed9..f0298d243 100644
--- a/tex/context/base/mkiv/math-dir.lua
+++ b/tex/context/base/mkiv/math-dir.lua
@@ -142,6 +142,7 @@ function directions.processmath(head) -- style, penalties
return processmath(head)
end
end
+ return head
end
function directions.setmath(n)
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index e8ce240f0..e4566b7e4 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -101,9 +101,9 @@ return {
"adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode",
"gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode",
--
- "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode",
- "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode",
- "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode",
+ -- "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode",
+ -- "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode",
+ -- "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode",
--
"overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode",
"accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode",
@@ -112,10 +112,11 @@ return {
"applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode",
"checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode",
"analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode",
+ "accenttopskewwithoffsetmathcontrolcode", "ignorekerndimensionsmathcontrolcode",
--
"noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode",
"noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode",
- "noitaliccorrectionglyphoptioncode",
+ "noitaliccorrectionglyphoptioncode", "islargeoperatorglyphoptioncode", "hasitalicshapeglyphoptioncode",
--
"normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode",
"vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode",
@@ -217,6 +218,7 @@ return {
"flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode",
"carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode",
"preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "removeitaliccorrectionclassoptioncode",
+ "operatoritaliccorrectionclassoptioncode",
--
"noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode",
"noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 546b93af3..60fb704d4 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -164,6 +164,8 @@ return {
"Umathradicaldegreeafter",
"Umathradicaldegreebefore",
"Umathradicaldegreeraise",
+ "Umathradicalextensibleafter",
+ "Umathradicalextensiblebefore",
"Umathradicalkern",
"Umathradicalrule",
"Umathradicalvariant",
@@ -256,12 +258,14 @@ return {
"aligntab",
"allcrampedstyles",
"alldisplaystyles",
+ "allmainstyles",
"allmathstyles",
"allscriptscriptstyles",
"allscriptstyles",
"allsplitstyles",
"alltextstyles",
"alluncrampedstyles",
+ "allunsplitstyles",
"atendofgroup",
"atendofgrouped",
"attribute",
@@ -411,6 +415,8 @@ return {
"ifparameters",
"ifrelax",
"iftok",
+ "ifzerodim",
+ "ifzeronum",
"ignorearguments",
"ignorepars",
"immediate",
diff --git a/tex/context/base/mkiv/pack-cut.mkiv b/tex/context/base/mkiv/pack-cut.mkiv
index 84c14d648..533440efd 100644
--- a/tex/context/base/mkiv/pack-cut.mkiv
+++ b/tex/context/base/mkiv/pack-cut.mkiv
@@ -102,9 +102,8 @@
\vss}%
\hss}}
-\unexpanded\def\makecutbox#1%
- {\bgroup
- \d_pack_cutmarks_height\ht#1%
+\unexpanded\def\makecutbox#1% not grouped !
+ {\d_pack_cutmarks_height\ht#1%
\d_pack_cutmarks_depth \dp#1%
\d_pack_cutmarks_width \wd#1%
\setbox#1\hpack
@@ -155,8 +154,7 @@
\box#1}%
\wd#1\d_pack_cutmarks_width
\ht#1\d_pack_cutmarks_height
- \dp#1\d_pack_cutmarks_depth
- \egroup}
+ \dp#1\d_pack_cutmarks_depth}
\unexpanded\def\cuthbox{\hpack\bgroup\dowithnextbox{\makecutbox\nextbox\flushnextbox\egroup}\hbox}
\unexpanded\def\cutvbox{\vpack\bgroup\dowithnextbox{\makecutbox\nextbox\flushnextbox\egroup}\vbox}
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index fb4443218..982b677cd 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 d75e37cee..9469ffdf0 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/strc-doc.lua b/tex/context/base/mkiv/strc-doc.lua
index d613d1aa7..7a79a7121 100644
--- a/tex/context/base/mkiv/strc-doc.lua
+++ b/tex/context/base/mkiv/strc-doc.lua
@@ -168,9 +168,9 @@ end
local lastsaved = 0
function sections.save(sectiondata)
-local sectiondata = helpers.simplify(sectiondata) -- maybe done earlier
- local numberdata = sectiondata.numberdata
- local ntobesaved = #tobesaved
+ local sectiondata = helpers.simplify(sectiondata) -- maybe done earlier
+ local numberdata = sectiondata.numberdata
+ local ntobesaved = #tobesaved
if not numberdata or sectiondata.metadata.nolist then
-- stay
else
diff --git a/tex/context/base/mkiv/strc-lst.lua b/tex/context/base/mkiv/strc-lst.lua
index 865c44624..4a190132b 100644
--- a/tex/context/base/mkiv/strc-lst.lua
+++ b/tex/context/base/mkiv/strc-lst.lua
@@ -263,6 +263,14 @@ function lists.addto(t) -- maybe more more here (saves parsing at the tex end)
if r and not r.section then
r.section = structures.sections.currentid()
end
+ local b = r and t.block
+ if r and not b then
+ local s = r.section
+ if s then
+ s = structures.sections.tobesaved[s]
+ r.block = s and s.block or nil
+ end
+ end
local i = r and r.internal or 0 -- brrr
if r and kind and name then
local tag = tags.getid(kind,name)
@@ -834,6 +842,7 @@ filters[v_default] = function(specification) -- is named
for i=1,#collected do
local v = collected[i]
local r = v.references
+-- inspect(v)
if r and (not block or not r.block or pblock == r.block) then
local sectionnumber = sections[r.section]
if sectionnumber then
diff --git a/tex/context/base/mkiv/type-set.mkiv b/tex/context/base/mkiv/type-set.mkiv
index 3447c4e6e..269d41966 100644
--- a/tex/context/base/mkiv/type-set.mkiv
+++ b/tex/context/base/mkiv/type-set.mkiv
@@ -132,6 +132,7 @@
\definefilesynonym [type-imp-coloredsheep.mkiv] [type-imp-koeielettersot.mkiv]
\definefilesynonym [type-imp-koeieletters.mkiv] [type-imp-koeielettersot.mkiv]
+%definefilesynonym [type-imp-xits.mkiv] [type-imp-stix.mkiv]
\definefilesynonym [type-imp-stixtwo.mkiv] [type-imp-stix.mkiv]
\definefilesynonym [type-imp-ibmplex.mkiv] [type-imp-plex.mkiv]