From 8fb5c26bd2f15104a6db9945299d3ca2c75db2d6 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 11 Jun 2020 22:30:31 +0200 Subject: 2020-06-11 21:29:00 --- .../documents/general/manuals/luametatex.pdf | Bin 1229837 -> 1229025 bytes .../sources/general/manuals/evenmore/evenmore.tex | 1 + .../general/manuals/luametatex/luametatex.tex | 95 +++++++++++ scripts/context/lua/mtxrun.lua | 6 +- scripts/context/stubs/mswin/mtxrun.lua | 6 +- scripts/context/stubs/unix/mtxrun | 6 +- scripts/context/stubs/win64/mtxrun.lua | 6 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/char-def.lua | 182 ++++++++++++++++++++- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/context.mkxl | 2 +- tex/context/base/mkiv/font-ota.lua | 116 ++++++++++++- tex/context/base/mkiv/font-pre.mkiv | 11 ++ tex/context/base/mkiv/font-tra.mkiv | 13 +- tex/context/base/mkiv/status-files.pdf | Bin 27771 -> 27806 bytes tex/context/base/mkiv/status-lua.pdf | Bin 252766 -> 252768 bytes tex/context/base/mkiv/trac-inf.lua | 2 +- tex/context/modules/mkiv/s-system-tokens.mkxl | 36 ++++ tex/generic/context/luatex/luatex-fonts-merged.lua | 105 +++++++++++- 21 files changed, 565 insertions(+), 30 deletions(-) create mode 100644 doc/context/sources/general/manuals/luametatex/luametatex.tex create mode 100644 tex/context/modules/mkiv/s-system-tokens.mkxl diff --git a/doc/context/documents/general/manuals/luametatex.pdf b/doc/context/documents/general/manuals/luametatex.pdf index 541c2e700..3fca734bd 100644 Binary files a/doc/context/documents/general/manuals/luametatex.pdf and b/doc/context/documents/general/manuals/luametatex.pdf differ diff --git a/doc/context/sources/general/manuals/evenmore/evenmore.tex b/doc/context/sources/general/manuals/evenmore/evenmore.tex index fc2c3ba66..b662e5108 100644 --- a/doc/context/sources/general/manuals/evenmore/evenmore.tex +++ b/doc/context/sources/general/manuals/evenmore/evenmore.tex @@ -23,6 +23,7 @@ \component evenmore-numbers % \component evenmore-parameters % \component evenmore-parsing + % \component evenmore-tokens \stopbodymatter \stopdocument diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex new file mode 100644 index 000000000..0fd7a31b3 --- /dev/null +++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex @@ -0,0 +1,95 @@ +% ------------------------ ------------------------ +% 2019-12-17 32bit 64bit 2020-01-10 32bit 64bit +% ------------------------ ------------------------ +% freebsd 2270k 2662k freebsd 2186k 2558k +% openbsd6.6 2569k 2824k openbsd6.6 2472k 2722k +% linux-armhf 2134k linux-armhf 2063k +% linux 2927k 2728k linux 2804k 2613k +% osx 2821k osx 2732k +% mswin 2562k 2555k mswin 2481k 2471k +% ------------------------ ------------------------ + +% experiment (if this becomes default we need to check visualizers and disable it when needed): + +\startluacode +nodes.handlers.cleanuppage = nodes.nuts.flatten_discretionaries +nodes.tasks.prependaction("shipouts", "normalizers", "nodes.handlers.cleanuppage", nil, "nut", "enabled") +\stopluacode + +% 20200509 : 258 pages +% +% my 2013 i7 laptop with windows : 11.8 sec mingw64 +% raspberry pi 64 bit with ssd : 39.5 sec gcc 9.2 +% idem with native bin : 38.5 sec +% idem overclocked f=2000/v=6 : 31.5 sec +% +% 20200526 : 258 pages +% mingw all in: 10.9 / rpi: 33.1 + +% 20200610 : 258 pages +% mingw all in: 10.6 + +% But speed can differ a bit per compilation (upto .5 seconds maybe due +% to how compiled code is organized which might influence caching. Who +% knows ... (or cares). For instance at 20200407 I measured 10.9 seconds +% after some new low level metapost magic was added but who knows if that +% was the reason, because mp processing is already fast. A week later, +% at 20200415, a by then 254 page file took 10.5 seconds, that is, we +% were at exactly 24 pages per second but after switching to gcc9 it +% dropped again. + +% msvc 1899k (2% slower than mingw) +% msvc /GL 2297k (similar to mingw) +% msvc /GL /Ob3 2847k (not faster than /GL) +% msvc /Ob3 2052k (slower than /Ob2) +% msvc /Ob1 1763k (slower than /Ob2) +% clang 2460k (15% slower than mingw) + +% Thanks to sebastian.miele@gmail.com for close reading the manual and +% sending fixes. + +% \enabletrackers[*] + +\environment luametatex-style +\environment luametatex-private + +\startdocument + [manual=LuaMeta\TeX, + % status=experimental, + version=\cldcontext{status.luatex_verbose}] + +\component luametatex-titlepage +\component luametatex-firstpage + +\startfrontmatter + \component luametatex-contents + \component luametatex-introduction +\stopfrontmatter + +\startbodymatter + \component luametatex-preamble + \component luametatex-differences + \component luametatex-modifications + \component luametatex-lua + \component luametatex-enhancements + \component luametatex-fonts + \component luametatex-languages + \component luametatex-math + \component luametatex-nodes + \component luametatex-callbacks + \component luametatex-tex + \component luametatex-metapost + \component luametatex-pdf + \component luametatex-libraries + \component luametatex-primitives +\stopbodymatter + +\startbackmatter + % \component luametatex-rejected % local file + \component luametatex-registers + \component luametatex-differences + \component luametatex-statistics +\stopbackmatter + +\stopdocument + diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 23dc08145..74cb62938 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -13961,7 +13961,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-inf"] = package.loaded["trac-inf"] or true --- original size: 10184, stripped down to: 7500 +-- original size: 10182, stripped down to: 7498 if not modules then modules={} end modules ['trac-inf']={ version=1.001, @@ -14146,7 +14146,7 @@ function statistics.show() LUATEXENGINE,LUATEXVERSION,LUATEXFUNCTIONALITY,lower(status.banner)) end) end - register("control sequences",function() + register("used hash slots",function() return format("%s of %s + %s",status.cs_count,status.hash_size,status.hash_extra) end) register("callbacks",statistics.callbacks) @@ -26169,7 +26169,7 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1040908 +-- original bytes : 1040906 -- stripped bytes : 411386 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 23dc08145..74cb62938 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -13961,7 +13961,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-inf"] = package.loaded["trac-inf"] or true --- original size: 10184, stripped down to: 7500 +-- original size: 10182, stripped down to: 7498 if not modules then modules={} end modules ['trac-inf']={ version=1.001, @@ -14146,7 +14146,7 @@ function statistics.show() LUATEXENGINE,LUATEXVERSION,LUATEXFUNCTIONALITY,lower(status.banner)) end) end - register("control sequences",function() + register("used hash slots",function() return format("%s of %s + %s",status.cs_count,status.hash_size,status.hash_extra) end) register("callbacks",statistics.callbacks) @@ -26169,7 +26169,7 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1040908 +-- original bytes : 1040906 -- stripped bytes : 411386 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 23dc08145..74cb62938 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -13961,7 +13961,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-inf"] = package.loaded["trac-inf"] or true --- original size: 10184, stripped down to: 7500 +-- original size: 10182, stripped down to: 7498 if not modules then modules={} end modules ['trac-inf']={ version=1.001, @@ -14146,7 +14146,7 @@ function statistics.show() LUATEXENGINE,LUATEXVERSION,LUATEXFUNCTIONALITY,lower(status.banner)) end) end - register("control sequences",function() + register("used hash slots",function() return format("%s of %s + %s",status.cs_count,status.hash_size,status.hash_extra) end) register("callbacks",statistics.callbacks) @@ -26169,7 +26169,7 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1040908 +-- original bytes : 1040906 -- stripped bytes : 411386 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 23dc08145..74cb62938 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -13961,7 +13961,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-inf"] = package.loaded["trac-inf"] or true --- original size: 10184, stripped down to: 7500 +-- original size: 10182, stripped down to: 7498 if not modules then modules={} end modules ['trac-inf']={ version=1.001, @@ -14146,7 +14146,7 @@ function statistics.show() LUATEXENGINE,LUATEXVERSION,LUATEXFUNCTIONALITY,lower(status.banner)) end) end - register("control sequences",function() + register("used hash slots",function() return format("%s of %s + %s",status.cs_count,status.hash_size,status.hash_extra) end) register("callbacks",statistics.callbacks) @@ -26169,7 +26169,7 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1040908 +-- original bytes : 1040906 -- stripped bytes : 411386 -- end library merge diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 99d624dc7..5c6a2ec10 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2020.06.09 18:53} +\newcontextversion{2020.06.11 21:26} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 8f714b4c4..bf4e8407f 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.09 18:53} +\edef\contextversion{2020.06.11 21:26} %D For those who want to use this: diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua index 7bf46ae74..51a227cb5 100644 --- a/tex/context/base/mkiv/char-def.lua +++ b/tex/context/base/mkiv/char-def.lua @@ -1675,6 +1675,7 @@ characters.data={ contextname="nobreakspace", description="NO-BREAK SPACE", direction="cs", + mongolian="nj", linebreak="gl", specials={ "nobreak", 0x20 }, synonyms={ "nbsp", "non-breaking space" }, @@ -45901,6 +45902,7 @@ characters.data={ category="po", description="MONGOLIAN BIRGA", direction="on", + mongolian="nj", linebreak="al", unicodeslot=0x1800, }, @@ -45908,6 +45910,7 @@ characters.data={ category="po", description="MONGOLIAN ELLIPSIS", direction="on", + mongolian="nj", linebreak="al", unicodeslot=0x1801, }, @@ -45915,6 +45918,7 @@ characters.data={ category="po", description="MONGOLIAN COMMA", direction="on", + mongolian="nj", linebreak="ex", unicodeslot=0x1802, }, @@ -45922,6 +45926,7 @@ characters.data={ category="po", description="MONGOLIAN FULL STOP", direction="on", + mongolian="nj", linebreak="ex", unicodeslot=0x1803, }, @@ -45929,6 +45934,7 @@ characters.data={ category="po", description="MONGOLIAN COLON", direction="on", + mongolian="nj", linebreak="ba", unicodeslot=0x1804, }, @@ -45936,6 +45942,7 @@ characters.data={ category="po", description="MONGOLIAN FOUR DOTS", direction="on", + mongolian="nj", linebreak="ba", unicodeslot=0x1805, }, @@ -45944,6 +45951,7 @@ characters.data={ category="pd", description="MONGOLIAN TODO SOFT HYPHEN", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x1806, }, @@ -45952,6 +45960,7 @@ characters.data={ category="po", description="MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER", direction="on", + mongolian="d", linebreak="al", unicodeslot=0x1807, }, @@ -45959,6 +45968,7 @@ characters.data={ category="po", description="MONGOLIAN MANCHU COMMA", direction="on", + mongolian="nj", linebreak="ex", unicodeslot=0x1808, }, @@ -45966,6 +45976,7 @@ characters.data={ category="po", description="MONGOLIAN MANCHU FULL STOP", direction="on", + mongolian="nj", linebreak="ex", unicodeslot=0x1809, }, @@ -45974,6 +45985,7 @@ characters.data={ category="po", description="MONGOLIAN NIRUGU", direction="on", + mongolian="jc", linebreak="al", unicodeslot=0x180A, }, @@ -45981,6 +45993,7 @@ characters.data={ category="mn", description="MONGOLIAN FREE VARIATION SELECTOR ONE", direction="nsm", + mongolian="t", linebreak="cm", synonyms={ "fvs1" }, unicodeslot=0x180B, @@ -45989,6 +46002,7 @@ characters.data={ category="mn", description="MONGOLIAN FREE VARIATION SELECTOR TWO", direction="nsm", + mongolian="t", linebreak="cm", unicodeslot=0x180C, }, @@ -45996,6 +46010,7 @@ characters.data={ category="mn", description="MONGOLIAN FREE VARIATION SELECTOR THREE", direction="nsm", + mongolian="t", linebreak="cm", unicodeslot=0x180D, }, @@ -46004,6 +46019,7 @@ characters.data={ category="zs", description="MONGOLIAN VOWEL SEPARATOR", direction="bn", + mongolian="nj", linebreak="gl", unicodeslot=0x180E, }, @@ -46011,6 +46027,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT ZERO", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1810, }, @@ -46018,6 +46035,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT ONE", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1811, }, @@ -46025,6 +46043,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT TWO", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1812, }, @@ -46032,6 +46051,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT THREE", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1813, }, @@ -46039,6 +46059,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT FOUR", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1814, }, @@ -46046,6 +46067,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT FIVE", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1815, }, @@ -46053,6 +46075,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT SIX", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1816, }, @@ -46060,6 +46083,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT SEVEN", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1817, }, @@ -46067,6 +46091,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT EIGHT", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1818, }, @@ -46074,6 +46099,7 @@ characters.data={ category="nd", description="MONGOLIAN DIGIT NINE", direction="l", + mongolian="nj", linebreak="nu", unicodeslot=0x1819, }, @@ -46082,6 +46108,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER A", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1820, variants={ @@ -46094,6 +46121,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER E", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1821, variants={ @@ -46105,6 +46133,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER I", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1822, variants={ @@ -46116,6 +46145,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER O", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1823, variants={ @@ -46127,6 +46157,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER U", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1824, variants={ @@ -46138,6 +46169,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER OE", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1825, variants={ @@ -46150,6 +46182,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER UE", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1826, variants={ @@ -46161,6 +46194,7 @@ characters.data={ arabic="d", category="lo", description="MONGOLIAN LETTER EE", + mongolian="d", direction="l", linebreak="al", unicodeslot=0x1827, @@ -46170,6 +46204,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER NA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1828, variants={ @@ -46183,6 +46218,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ANG", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1829, }, @@ -46191,6 +46227,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER BA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182A, variants={ @@ -46202,6 +46239,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER PA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182B, }, @@ -46210,6 +46248,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER QA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182C, variants={ @@ -46223,6 +46262,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER GA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182D, variants={ @@ -46236,6 +46276,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182E, }, @@ -46244,6 +46285,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER LA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x182F, }, @@ -46252,6 +46294,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1830, variants={ @@ -46264,6 +46307,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1831, }, @@ -46272,6 +46316,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1832, variants={ @@ -46283,6 +46328,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER DA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1833, variants={ @@ -46294,6 +46340,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER CHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1834, }, @@ -46302,6 +46349,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER JA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1835, variants={ @@ -46313,6 +46361,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER YA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1836, variants={ @@ -46325,6 +46374,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER RA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1837, }, @@ -46333,6 +46383,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER WA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1838, variants={ @@ -46344,6 +46395,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER FA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1839, }, @@ -46352,6 +46404,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER KA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183A, }, @@ -46360,6 +46413,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER KHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183B, }, @@ -46368,6 +46422,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TSA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183C, }, @@ -46376,6 +46431,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ZA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183D, }, @@ -46384,6 +46440,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER HAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183E, }, @@ -46392,6 +46449,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ZRA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x183F, }, @@ -46400,6 +46458,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER LHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1840, }, @@ -46408,6 +46467,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ZHI", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1841, }, @@ -46416,6 +46476,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER CHI", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1842, }, @@ -46424,6 +46485,7 @@ characters.data={ category="lm", description="MONGOLIAN LETTER TODO LONG VOWEL SIGN", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1843, }, @@ -46432,6 +46494,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO E", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1844, variants={ @@ -46443,6 +46506,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO I", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1845, variants={ @@ -46454,6 +46518,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO O", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1846, variants={ @@ -46465,6 +46530,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO U", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1847, variants={ @@ -46477,6 +46543,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO OE", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1848, variants={ @@ -46488,6 +46555,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO UE", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1849, variants={ @@ -46499,6 +46567,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO ANG", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184A, }, @@ -46507,6 +46576,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO BA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184B, }, @@ -46515,6 +46585,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO PA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184C, }, @@ -46523,6 +46594,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO QA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184D, variants={ @@ -46534,6 +46606,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO GA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184E, variants={ @@ -46545,6 +46618,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO MA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x184F, }, @@ -46553,6 +46627,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1850, }, @@ -46561,6 +46636,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO DA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1851, }, @@ -46569,6 +46645,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO CHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1852, }, @@ -46577,6 +46654,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO JA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1853, }, @@ -46585,6 +46663,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO TSA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1854, }, @@ -46593,6 +46672,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO YA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1855, }, @@ -46601,6 +46681,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO WA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1856, }, @@ -46609,6 +46690,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO KA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1857, }, @@ -46617,6 +46699,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO GAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1858, }, @@ -46625,6 +46708,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO HAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1859, }, @@ -46633,6 +46717,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO JIA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185A, }, @@ -46641,6 +46726,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO NIA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185B, }, @@ -46649,6 +46735,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO DZA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185C, }, @@ -46657,6 +46744,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE E", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185D, variants={ @@ -46668,6 +46756,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE I", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185E, variants={ @@ -46680,6 +46769,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE IY", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x185F, }, @@ -46688,6 +46778,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE UE", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1860, variants={ @@ -46699,6 +46790,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE U", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1861, }, @@ -46707,6 +46799,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE ANG", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1862, }, @@ -46715,6 +46808,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE KA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1863, variants={ @@ -46726,6 +46820,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE GA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1864, }, @@ -46734,6 +46829,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE HA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1865, }, @@ -46742,6 +46838,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE PA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1866, }, @@ -46750,6 +46847,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE SHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1867, }, @@ -46758,6 +46856,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1868, variants={ @@ -46770,6 +46869,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE DA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1869, variants={ @@ -46781,6 +46881,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE JA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186A, }, @@ -46789,6 +46890,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE FA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186B, }, @@ -46797,6 +46899,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE GAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186C, }, @@ -46805,6 +46908,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE HAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186D, }, @@ -46813,6 +46917,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE TSA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186E, }, @@ -46821,6 +46926,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE ZA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x186F, variants={ @@ -46832,6 +46938,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE RAA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1870, }, @@ -46840,6 +46947,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE CHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1871, }, @@ -46848,6 +46956,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER SIBE ZHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1872, }, @@ -46856,6 +46965,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU I", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1873, variants={ @@ -46869,6 +46979,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU KA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1874, variants={ @@ -46882,6 +46993,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU RA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1875, }, @@ -46890,6 +47002,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU FA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1876, variants={ @@ -46901,6 +47014,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ZHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1877, }, @@ -46909,6 +47023,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER CHA WITH TWO DOTS", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1878, }, @@ -46917,6 +47032,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI ANUSVARA ONE", direction="l", + mongolian="nj", linebreak="al", unicodeslot=0x1880, variants={ @@ -46928,6 +47044,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI VISARGA ONE", direction="l", + mongolian="nj", linebreak="al", unicodeslot=0x1881, variants={ @@ -46939,6 +47056,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI DAMARU", direction="l", + mongolian="nj", linebreak="al", unicodeslot=0x1882, }, @@ -46947,6 +47065,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI UBADAMA", direction="l", + mongolian="nj", linebreak="al", unicodeslot=0x1883, }, @@ -46955,6 +47074,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI INVERTED UBADAMA", direction="l", + mongolian="nj", linebreak="al", unicodeslot=0x1884, }, @@ -46963,6 +47083,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI BALUDA", direction="nsm", + mongolian="t", linebreak="cm", unicodeslot=0x1885, }, @@ -46971,6 +47092,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI THREE BALUDA", direction="nsm", + mongolian="t", linebreak="cm", unicodeslot=0x1886, }, @@ -46979,6 +47101,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI A", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1887, variants={ @@ -46992,6 +47115,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI I", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1888, variants={ @@ -47003,6 +47127,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI KA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1889, }, @@ -47011,6 +47136,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI NGA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188A, variants={ @@ -47022,6 +47148,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI CA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188B, }, @@ -47030,6 +47157,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI TTA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188C, }, @@ -47038,6 +47166,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI TTHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188D, }, @@ -47046,6 +47175,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI DDA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188E, }, @@ -47054,6 +47184,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI NNA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x188F, }, @@ -47062,6 +47193,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1890, }, @@ -47070,6 +47202,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI DA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1891, }, @@ -47078,6 +47211,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI PA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1892, }, @@ -47086,6 +47220,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI PHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1893, }, @@ -47094,6 +47229,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI SSA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1894, }, @@ -47102,6 +47238,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI ZHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1895, }, @@ -47110,6 +47247,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI ZA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1896, }, @@ -47118,6 +47256,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI AH", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1897, }, @@ -47126,6 +47265,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO ALI GALI TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1898, }, @@ -47134,6 +47274,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER TODO ALI GALI ZHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x1899, }, @@ -47142,6 +47283,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI GHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189A, }, @@ -47150,6 +47292,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI NGA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189B, }, @@ -47158,6 +47301,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI CA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189C, }, @@ -47166,6 +47310,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI JHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189D, }, @@ -47174,6 +47319,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI TTA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189E, }, @@ -47182,6 +47328,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI DDHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x189F, }, @@ -47190,6 +47337,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI TA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A0, }, @@ -47198,6 +47346,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI DHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A1, }, @@ -47206,6 +47355,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI SSA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A2, }, @@ -47214,6 +47364,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI CYA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A3, }, @@ -47222,6 +47373,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI ZHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A4, }, @@ -47230,6 +47382,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI ZA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A5, }, @@ -47238,6 +47391,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI HALF U", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A6, }, @@ -47246,6 +47400,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER ALI GALI HALF YA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A7, }, @@ -47254,6 +47409,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI BHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18A8, }, @@ -47262,6 +47418,7 @@ characters.data={ combining=0xE4, description="MONGOLIAN LETTER ALI GALI DAGALGA", direction="nsm", + mongolian="t", linebreak="cm", unicodeslot=0x18A9, }, @@ -47270,6 +47427,7 @@ characters.data={ category="lo", description="MONGOLIAN LETTER MANCHU ALI GALI LHA", direction="l", + mongolian="d", linebreak="al", unicodeslot=0x18AA, }, @@ -61352,6 +61510,7 @@ characters.data={ contextname="zwnj", description="ZERO WIDTH NON-JOINER", direction="bn", + mongolian="nj", linebreak="cm", synonyms={ "zwnj" }, unicodeslot=0x200C, @@ -61363,6 +61522,7 @@ characters.data={ contextname="zwj", description="ZERO WIDTH JOINER", direction="bn", + mongolian="nj", linebreak="zwj", synonyms={ "zwj" }, unicodeslot=0x200D, @@ -61391,6 +61551,7 @@ characters.data={ cjkwd="a", description="HYPHEN", direction="on", + mongolian="nj", linebreak="ba", unicodeslot=0x2010, }, @@ -61398,6 +61559,7 @@ characters.data={ category="pd", description="NON-BREAKING HYPHEN", direction="on", + mongolian="nj", linebreak="gl", specials={ "nobreak", 0x2010 }, unicodeslot=0x2011, @@ -61408,6 +61570,7 @@ characters.data={ contextname="textminus", description="FIGURE DASH", direction="on", + mongolian="nj", linebreak="ba", unicodeslot=0x2012, }, @@ -61418,6 +61581,7 @@ characters.data={ contextname="endash", description="EN DASH", direction="on", + mongolian="nj", linebreak="ba", unicodeslot=0x2013, }, @@ -61428,6 +61592,7 @@ characters.data={ contextname="emdash", description="EM DASH", direction="on", + mongolian="nj", linebreak="b2", unicodeslot=0x2014, }, @@ -61740,6 +61905,7 @@ characters.data={ contextname="narrownobreakspace", description="NARROW NO-BREAK SPACE", direction="cs", + mongolian="nj", linebreak="gl", specials={ "nobreak", 0x20 }, synonyms={ "nnbsp" }, @@ -74342,6 +74508,7 @@ characters.data={ contextname="dottedcircle", description="DOTTED CIRCLE", direction="on", + mongolian="nj", linebreak="al", unicodeslot=0x25CC, }, @@ -165291,6 +165458,7 @@ characters.data={ category="po", description="MONGOLIAN BIRGA WITH ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11660, }, @@ -165298,6 +165466,7 @@ characters.data={ category="po", description="MONGOLIAN ROTATED BIRGA", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11661, }, @@ -165305,6 +165474,7 @@ characters.data={ category="po", description="MONGOLIAN DOUBLE BIRGA WITH ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11662, }, @@ -165312,6 +165482,7 @@ characters.data={ category="po", description="MONGOLIAN TRIPLE BIRGA WITH ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11663, }, @@ -165319,6 +165490,7 @@ characters.data={ category="po", description="MONGOLIAN BIRGA WITH DOUBLE ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11664, }, @@ -165326,6 +165498,7 @@ characters.data={ category="po", description="MONGOLIAN ROTATED BIRGA WITH ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11665, }, @@ -165333,6 +165506,7 @@ characters.data={ category="po", description="MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11666, }, @@ -165340,6 +165514,7 @@ characters.data={ category="po", description="MONGOLIAN INVERTED BIRGA", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11667, }, @@ -165347,6 +165522,7 @@ characters.data={ category="po", description="MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11668, }, @@ -165354,6 +165530,7 @@ characters.data={ category="po", description="MONGOLIAN SWIRL BIRGA", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x11669, }, @@ -165361,6 +165538,7 @@ characters.data={ category="po", description="MONGOLIAN SWIRL BIRGA WITH ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x1166A, }, @@ -165368,6 +165546,7 @@ characters.data={ category="po", description="MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x1166B, }, @@ -165375,6 +165554,7 @@ characters.data={ category="po", description="MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT", direction="on", + mongolian="nj", linebreak="bb", unicodeslot=0x1166C, }, @@ -264677,4 +264857,4 @@ characters.data={ synonyms={ "vs17" }, unicodeslot=0xE0100, }, -} \ No newline at end of file +} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 269c8d98f..5f62f3ebc 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{2020.06.09 18:53} +\newcontextversion{2020.06.11 21:26} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index a33d7b1ed..e59b015f4 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.09 18:53} +\edef\contextversion{2020.06.11 21:26} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index eefe2f97b..28322d492 100644 --- a/tex/context/base/mkiv/context.mkxl +++ b/tex/context/base/mkiv/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.09 18:53} +\edef\contextversion{2020.06.11 21:26} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/font-ota.lua b/tex/context/base/mkiv/font-ota.lua index 6cbf4bb86..ce1b22b50 100644 --- a/tex/context/base/mkiv/font-ota.lua +++ b/tex/context/base/mkiv/font-ota.lua @@ -9,6 +9,7 @@ if not modules then modules = { } end modules ['font-ota'] = { -- context only local type = type +local setmetatableindex = table.setmetatableindex if not trackers then trackers = { register = function() end } end @@ -285,7 +286,7 @@ if not classifiers then local f_nko, l_nko = characters.blockrange("nko") local f_ext_a, l_ext_a = characters.blockrange("arabicextendeda") - classifiers = table.setmetatableindex(function(t,k) + classifiers = setmetatableindex(function(t,k) if type(k) == "number" then local c = chardata[k] local v = false @@ -461,6 +462,119 @@ methods.syrc = methods.arab methods.mand = methods.arab methods.nko = methods.arab +-- a quick first attemp .. more later + +do + + -- https://github.com/n8willis/opentype-shaping-documents/blob/master/opentype-shaping-mongolian.md#joining-properties + -- todo syrc + + local joining = setmetatableindex(function(t,k) + if type(k) == "number" then + local c = chardata[k] + local v = false + if c then + local mongolian = c.mongolian + -- + v = mongolian + end + t[k] = v + return v + end + end) + + function methods.mong(head,font,attr) + local first, last + local current = head + local done = false + local prevjoin = nil + local prestate = nil + current = tonut(current) + + local function wrapup() + if last then + if last ~= first then + local s = getstate(last) + if s == s_medi then + setstate(last,s_fina) + elseif s == s_init then + setstate(last,s_isol) + end + end + last = nil + first = nil + prevjoin = nil + prestate = nil + end + end + + while current do + local char, id = ischar(current,font) + if char and not getstate(current) then + local currjoin = joining[char] + done = true + if not last then + setstate(current,s_isol) + prevjoin = currjoin + first = current + last = current + prevstate = s_isol + elseif currjoin == "t" then -- transparent + -- keep state + last = current + elseif prevjoin == "d" or prevjoin == "jc" or prevjoin == "l" then + if currjoin == "d" or prevjoin == "jc" or prevjoin == "r" then + local s = getstate(last) + if s == s_isol then + setstate(last,s_init) + elseif s == s_fina then + setstate(last,s_medi) + end + setstate(current,s_fina) + prevstate = s_fina + elseif prevjoin == "nj" or prevjoin == "l" then + local s = getstate(last) + if s == s_medi then + setstate(last,s_fina) + elseif s == s_init then + setstate(last,s_isol) + end + setstate(current,s_isol) + prevstate = s_isol + end + prevjoin = currjoin + last = current + elseif prevjoin == "nj" or prevjoin == "r" then + if s == s_medi then + setstate(last,s_fina) + elseif s == s_init then + setstate(last,s_isol) + end + setstate(current,s_isol) + prevjoin = currjoin + prevstate = s_isol + last = current + elseif last then + wrapup() + end + else + if last then + wrapup() + end + if id == math_code then -- a bit duplicate as we test for glyphs twice + current = end_of_math(current) + end + end + current = getnext(current) + end + if last then + wrapup() + end + return head, done + end + +end + directives.register("otf.analyze.useunicodemarks",function(v) analyzers.useunicodemarks = v end) diff --git a/tex/context/base/mkiv/font-pre.mkiv b/tex/context/base/mkiv/font-pre.mkiv index 92da3892b..749c66fe7 100644 --- a/tex/context/base/mkiv/font-pre.mkiv +++ b/tex/context/base/mkiv/font-pre.mkiv @@ -325,6 +325,17 @@ \definefontfeature [tamil-two] [tamil-one] [script=tml2] \definefontfeature [telugu-two] [telugu-one] [script=tel2] +% mongolian + +\definefontfeature + [mongolian] + [default] + [script=mong, + init=yes,medi=yes,fina=yes,isol=yes, + rlig=yes,rclt=yes,calt=yes, + %dlig=yes,cswh=yes, % optional + mset] + % tibetan \definefontfeature diff --git a/tex/context/base/mkiv/font-tra.mkiv b/tex/context/base/mkiv/font-tra.mkiv index 89a50c5ae..7d02cd140 100644 --- a/tex/context/base/mkiv/font-tra.mkiv +++ b/tex/context/base/mkiv/font-tra.mkiv @@ -20,8 +20,8 @@ %D \macros %D {showbodyfont} %D -%D One can call for a rather simple overview of a bodyfont and the -%D relations between its alternative fonts. +%D One can call for a rather simple overview of a bodyfont and the relations between +%D its alternative fonts. %D %D \showsetup{showbodyfont} %D @@ -37,9 +37,8 @@ %D \macros %D {showfontstrip, testminimalbaseline, showminimalbaseline} %D -%D The next command can come in handy when combining -%D different fonts into a collection (typeface) and -%D determining optimal baseline distances. +%D The next command can come in handy when combining different fonts into a +%D collection (typeface) and determining optimal baseline distances. %D %D \showfontstrip \blank \showminimalbaseline @@ -109,10 +108,8 @@ \unexpanded\def\stopotfcollecting {\ctxlua{nodes.tracers.steppers.stop()}} \unexpanded\def\resetotfcollecting{\ctxlua{nodes.tracers.steppers.reset()}} -% Rather experimental: -% % \page \showotfcomposition{arabtype*arab-default at 48pt}{-1}{الضَّرَّ} \page -% \page \showotfcomposition{arabtype*arab-default at 48pt}{-1}{لِلّٰهِ} \page +% \page \showotfcomposition{arabtype*arab-default at 48pt}{-1}{لِلّٰهِ} \page \unexpanded\def\showotfstepglyphs#1% {\ctxlua{nodes.tracers.steppers.glyphs(\number\otfcollector,#1)}% diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index e57661b9e..2a2a4781c 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 271444c2d..ae6c11e6c 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/trac-inf.lua b/tex/context/base/mkiv/trac-inf.lua index 244ba4604..daf478199 100644 --- a/tex/context/base/mkiv/trac-inf.lua +++ b/tex/context/base/mkiv/trac-inf.lua @@ -237,7 +237,7 @@ function statistics.show() LUATEXENGINE, LUATEXVERSION, LUATEXFUNCTIONALITY, lower(status.banner)) end) end - register("control sequences", function() + register("used hash slots", function() return format("%s of %s + %s", status.cs_count, status.hash_size,status.hash_extra) end) register("callbacks", statistics.callbacks) diff --git a/tex/context/modules/mkiv/s-system-tokens.mkxl b/tex/context/modules/mkiv/s-system-tokens.mkxl new file mode 100644 index 000000000..e33b11a70 --- /dev/null +++ b/tex/context/modules/mkiv/s-system-tokens.mkxl @@ -0,0 +1,36 @@ +%D \module +%D [ file=s-system-tokens.mkxl, +%D version=2020.06.02, +%D title=\CONTEXT\ Style File, +%D subtitle=System Tokens Checking, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\startmodule[system-tokens] + +\registerctxluafile{s-system-tokens}{} + +\unexpanded\def\showsystemtokens + {\ctxlua{moduledata.system.tokens.showlist()}} + +\stopmodule + +\continueifinputfile{s-system-tokens.mkxl} + +\usemodule[article-basic] + +\setuppapersize[A4,landscape] + +\setuplayout[tight] + +\setupbodyfont[8pt] + +\starttext + \showsystemtokens +\stoptext + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index d0aa965f3..c2128e8c3 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2020-06-09 18:53 +-- merge date : 2020-06-11 21:26 do -- begin closure to overcome local limits and interference @@ -26005,6 +26005,7 @@ if not modules then modules={} end modules ['font-ota']={ license="see context related readme files" } local type=type +local setmetatableindex=table.setmetatableindex if not trackers then trackers={ register=function() end } end local fonts,nodes,node=fonts,nodes,node local allocate=utilities.storage.allocate @@ -26218,7 +26219,7 @@ if not classifiers then local f_mandiac,l_mandiac=characters.blockrange("mandiac") local f_nko,l_nko=characters.blockrange("nko") local f_ext_a,l_ext_a=characters.blockrange("arabicextendeda") - classifiers=table.setmetatableindex(function(t,k) + classifiers=setmetatableindex(function(t,k) if type(k)=="number" then local c=chardata[k] local v=false @@ -26384,6 +26385,106 @@ end methods.syrc=methods.arab methods.mand=methods.arab methods.nko=methods.arab +do + local joining=setmetatableindex(function(t,k) + if type(k)=="number" then + local c=chardata[k] + local v=false + if c then + local mongolian=c.mongolian + v=mongolian + end + t[k]=v + return v + end + end) + function methods.mong(head,font,attr) + local first,last + local current=head + local done=false + local prevjoin=nil + local prestate=nil + current=tonut(current) + local function wrapup() + if last then + if last~=first then + local s=getstate(last) + if s==s_medi then + setstate(last,s_fina) + elseif s==s_init then + setstate(last,s_isol) + end + end + last=nil + first=nil + prevjoin=nil + prestate=nil + end + end + while current do + local char,id=ischar(current,font) + if char and not getstate(current) then + local currjoin=joining[char] + done=true + if not last then + setstate(current,s_isol) + prevjoin=currjoin + first=current + last=current + prevstate=s_isol + elseif currjoin=="t" then + last=current + elseif prevjoin=="d" or prevjoin=="jc" or prevjoin=="l" then + if currjoin=="d" or prevjoin=="jc" or prevjoin=="r" then + local s=getstate(last) + if s==s_isol then + setstate(last,s_init) + elseif s==s_fina then + setstate(last,s_medi) + end + setstate(current,s_fina) + prevstate=s_fina + elseif prevjoin=="nj" or prevjoin=="l" then + local s=getstate(last) + if s==s_medi then + setstate(last,s_fina) + elseif s==s_init then + setstate(last,s_isol) + end + setstate(current,s_isol) + prevstate=s_isol + end + prevjoin=currjoin + last=current + elseif prevjoin=="nj" or prevjoin=="r" then + if s==s_medi then + setstate(last,s_fina) + elseif s==s_init then + setstate(last,s_isol) + end + setstate(current,s_isol) + prevjoin=currjoin + prevstate=s_isol + last=current + elseif last then + wrapup() + end + else + if last then + wrapup() + end + if id==math_code then + current=end_of_math(current) + end + end + current=getnext(current) + end + if last then + wrapup() + end + return head,done + end +end directives.register("otf.analyze.useunicodemarks",function(v) analyzers.useunicodemarks=v end) -- cgit v1.2.3