From 8fb5c26bd2f15104a6db9945299d3ca2c75db2d6 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Thu, 11 Jun 2020 22:30:31 +0200
Subject: 2020-06-11 21:29:00

---
 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 +++++++++++-
 14 files changed, 457 insertions(+), 18 deletions(-)
 create mode 100644 tex/context/modules/mkiv/s-system-tokens.mkxl

(limited to 'tex')

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