From 4af09333cc14015426fc193878c1a35157207518 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Mon, 2 Dec 2019 18:57:49 +0100
Subject: 2019-12-02 18:38:00

---
 tex/context/base/mkii/cont-new.mkii                |   2 +-
 tex/context/base/mkii/context.mkii                 |   2 +-
 tex/context/base/mkiv/colo-ini.lua                 |   3 +
 tex/context/base/mkiv/cont-new.mkiv                |   2 +-
 tex/context/base/mkiv/context.mkiv                 |   2 +-
 tex/context/base/mkiv/context.mkxl                 |   4 +-
 tex/context/base/mkiv/driv-shp.lua                 |  13 +--
 tex/context/base/mkiv/hand-ini.mkxl                | 111 +++++++++++++++++++++
 tex/context/base/mkiv/mult-prm.lua                 |   5 +-
 tex/context/base/mkiv/pack-lyr.mkiv                |   8 +-
 tex/context/base/mkiv/status-files.pdf             | Bin 26661 -> 26597 bytes
 tex/context/base/mkiv/status-lua.pdf               | Bin 268220 -> 268220 bytes
 tex/context/interface/mkiv/i-context.pdf           | Bin 893992 -> 894230 bytes
 tex/context/interface/mkiv/i-readme.pdf            | Bin 61165 -> 61165 bytes
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 15 files changed, 136 insertions(+), 18 deletions(-)
 create mode 100644 tex/context/base/mkiv/hand-ini.mkxl

(limited to 'tex')

diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 92326c9fb..c6965809e 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{2019.11.29 21:47}
+\newcontextversion{2019.12.02 18:28}
 
 %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 e5f3237d9..171e1555a 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{2019.11.29 21:47}
+\edef\contextversion{2019.12.02 18:28}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/mkiv/colo-ini.lua b/tex/context/base/mkiv/colo-ini.lua
index cd2c19a75..d39e87878 100644
--- a/tex/context/base/mkiv/colo-ini.lua
+++ b/tex/context/base/mkiv/colo-ini.lua
@@ -510,6 +510,9 @@ local function defineprocesscolor(name,str,global,freeze) -- still inconsistent
     colorset[name] = true-- maybe we can store more
 end
 
+-- You cannot overload a local color so one then has to use some prefix, like
+-- mp:red. Kind of protection.
+
 local function defineprocesscolordirect(settings)
     if settings then
         local name = settings.name
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 4c5925235..f0590d199 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{2019.11.29 21:47}
+\newcontextversion{2019.12.02 18:28}
 
 %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 a40bf3a14..3169d21f8 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{2019.11.29 21:47}
+\edef\contextversion{2019.12.02 18:28}
 \edef\contextkind   {beta}
 
 %D Kind of special:
diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl
index ab1d2d6f8..5cf9188d4 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{2019.11.29 21:47}
+\edef\contextversion{2019.12.02 18:28}
 \edef\contextkind   {beta}
 
 %D Kind of special:
@@ -211,7 +211,7 @@
 
 \loadmarkfile{regi-ini}
 \loadmarkfile{enco-ini}
-\loadmarkfile{hand-ini}
+\loadmkxlfile{hand-ini}
 
 \loadmkxlfile{lang-ini} % LMTX
 \loadmarkfile{lang-hyp} % also loads dis
diff --git a/tex/context/base/mkiv/driv-shp.lua b/tex/context/base/mkiv/driv-shp.lua
index 0137fb203..7340fe523 100644
--- a/tex/context/base/mkiv/driv-shp.lua
+++ b/tex/context/base/mkiv/driv-shp.lua
@@ -364,12 +364,13 @@ flush_character = function(current,font,char,factor,vfcommands,pos_h,pos_v,pos_r
 
     local width, height, depth, naturalwidth
     if current then
-        width, height, depth, factor = getwhd(current,true)
-        naturalwidth = width
-        if factor ~= 0 then
-         -- width = (1.0 + factor/1000000.0) * width
-            width = width + width * factor/1000000.0
-         -- width = width + width * 0.000001 * factor
+        naturalwidth, height, depth, factor = getwhd(current,true)
+        if factor == 0 then
+            width = naturalwidth
+        else
+         -- width = (1.0 + factor/1000000.0) * naturalwidth
+            width = naturalwidth + naturalwidth * factor/1000000.0
+         -- width = naturalwidth + naturalwidth * 0.000001 * factor
         end
     else
         width  = data.width or 0
diff --git a/tex/context/base/mkiv/hand-ini.mkxl b/tex/context/base/mkiv/hand-ini.mkxl
new file mode 100644
index 000000000..66da0585e
--- /dev/null
+++ b/tex/context/base/mkiv/hand-ini.mkxl
@@ -0,0 +1,111 @@
+%D \module
+%D   [       file=hand-ini,
+%D        version=2008.02.12,
+%D          title=\CONTEXT\ Handling Macros,
+%D       subtitle=Initialization,
+%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.
+
+%D Handling is implemented differently in \MKIV. Maybe I'll cook up
+%D some compatibility hack.
+
+% \definefontfeature[demo][default][mode=node,expansion=quality]
+% \definefontfeature[demo][default][mode=node,protrusion=pure]
+
+% experimental setup:
+%
+%  \showframe \setupalign[hanging] \enabletrackers[fonts.protrusion]
+%
+%  \definefontfeature[default] [default][mode=node,script=latn]
+%  %definefontfeature[whatever][default][mode=node,lfbd=yes,rtbd=yes,script=latn]
+%  \definefontfeature[whatever][default][mode=node,protrusion=quality]
+%  \definefontfeature[whocares][default][mode=node,protrusion=yes,opbd=yes,script=latn] % left|right|yes
+%
+%  \definedfont[fxlbi.otf*default]  \input tufte 0123456789 \par \dorecurse{15}{1 2 3 4 5 6 7 8 9 0 } \par
+%  \definedfont[fxlbi.otf*whatever] \input tufte 0123456789 \par \dorecurse{15}{1 2 3 4 5 6 7 8 9 0 } \par
+%  \definedfont[fxlbi.otf*whocares] \input tufte 0123456789 \par \dorecurse{15}{1 2 3 4 5 6 7 8 9 0 } \par
+%
+%  %definefontfeature[whocares][default][mode=node,protrusion=2,opbd=yes,script=latn,featurefile=texgyrepagella-regularxx.fea]
+%  \definefontfeature[whocares][default][mode=node,protrusion=2,opbd=yes,script=latn]
+%
+%  \definedfont[texgyrepagella-regularxx.otf*whocares] \input tufte
+
+\unprotect
+
+%D New stuff.
+
+\unexpanded\def\setupfontexpansion {\dodoubleargument\font_expansion_setup }
+\unexpanded\def\setupfontprotrusion{\dodoubleargument\font_protrusion_setup}
+
+\def\font_expansion_setup [#1][#2]{\clf_setupfontexpansion {#1}{#2}}
+\def\font_protrusion_setup[#1][#2]{\clf_setupfontprotrusion{#1}{#2}}
+
+% \setupfontprotrusion[quality-upright][vector=quality]
+% \setupfontprotrusion[quality-slanted][vector=quality,right=1.5]
+
+\let\adjustspacing\relax \newcount\adjustspacing % a little bit protection
+\let\protrudechars\relax \newcount\protrudechars % a little bit protection
+
+% at some point we can introduce extreme expansion, i.e. \normaladjustspacing\plustwo
+
+% 0 = disabled
+% 1 = notused (thesis)
+% 2 = glyph + kern
+% 3 = glyph only
+
+\def\font_expansion_enable  {\normaladjustspacing\plusthree}
+\def\font_expansion_enable_k{\normaladjustspacing\plustwo}
+\def\font_expansion_enable_n{\normaladjustspacing\plusone}
+\def\font_expansion_disable {\normaladjustspacing\zerocount}
+
+\def\font_protruding_enable_b{\normalprotrudechars\plusthree} % also deal with r2l (experimental lmtx)
+\def\font_protruding_enable  {\normalprotrudechars\plustwo  }
+\def\font_protruding_disable {\normalprotrudechars\zerocount}
+
+\appendtoks \font_expansion_disable  \to \everyforgetall % Here or not here?
+\appendtoks \font_protruding_disable \to \everyforgetall % Here or not here?
+
+% \def\fonthandlingerror{\writestatus\m!fonts{font handling is replaced by features in mkiv}}
+%
+% \let\fonthandling\empty
+%
+% \unexpanded\def\startfonthandling  #1{\fonthandlingerror\fonthandlingerror\gobbleuntil\stopfonthandling} % can't happen
+% \unexpanded\def\definefonthandling   {\dotripleempty\dodefinefonthandling}
+% \unexpanded\def\setupfonthandling    {\dodoubleempty\dosetupfonthandling }
+% \def\dodefinefonthandling[#1][#2][#3]{\fonthandlingerror}
+% \def\dosetupfonthandling     [#1][#2]{\fonthandlingerror}
+% \def\usehandling                 [#1]{\fonthandlingerror}
+
+\installcorenamespace{expansion}
+
+\installcommandhandler \??expansion {expansion} \??expansion
+
+\appendtoks
+    \setuevalue{\??expansion:\currentexpansion}%
+      {\adjustspacingstep   \expansionparameter\c!step\relax
+       \adjustspacingstretch\expansionparameter\c!stretch\relax
+       \adjustspacingshrink \expansionparameter\c!shrink\relax}%
+\to \everydefineexpansion
+
+\defineexpansion
+  [\c!step=1,
+   \c!stretch=40,
+   \c!shrink=20]
+
+% \defineexpansion
+%   [myexpansion]
+%   [\c!stretch=50,
+%    \c!shrink=20]
+
+\unexpanded\def\setexpansion
+  {\dosingleempty\font_expansion_set}
+
+\unexpanded\def\font_expansion_set[#1]%
+  {\begincsname\??expansion:#1\endcsname}
+
+\protect \endinput
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 7b30b232e..d390f9c15 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -219,6 +219,9 @@ return {
   "Uunderdelimiter",
   "Uvextensible",
   "adjustspacing",
+  "adjustspacingshrink",
+  "adjustspacingstep",
+  "adjustspacingstretch",
   "aftergrouped",
   "alignmark",
   "aligntab",
@@ -320,7 +323,6 @@ return {
   "matheqnogapstep",
   "mathflattenmode",
   "mathitalicsmode",
-  "mathlimitsmode",
   "mathnolimitsmode",
   "matholdmode",
   "mathpenaltiesmode",
@@ -692,6 +694,7 @@ return {
   "omit",
   "openin",
   "or",
+  "ordlimits",
   "orelse",
   "outer",
   "output",
diff --git a/tex/context/base/mkiv/pack-lyr.mkiv b/tex/context/base/mkiv/pack-lyr.mkiv
index 5112aed52..e952a73b9 100644
--- a/tex/context/base/mkiv/pack-lyr.mkiv
+++ b/tex/context/base/mkiv/pack-lyr.mkiv
@@ -584,22 +584,22 @@
 \def\pack_layers_flush_double#1%
   {\startoverlay
      {\ifcsname\??layerbox\currentlayer\endcsname
-        \ifvoid\lastnamedcss\else \chardef\b_layer_two\lastnamedcs
+        \ifvoid\lastnamedcs\else \chardef\b_layer_two\lastnamedcs
           \pack_layers_flush_indeed\plusone\currentlayer\b_layer_two
         \fi
       \fi}%
      {\ifcsname\??layerbox\currentlayer:\the\realpageno\endcsname
-        \ifvoid\lastnamedcss\else \chardef\b_layer_two\lastnamedcs
+        \ifvoid\lastnamedcs\else \chardef\b_layer_two\lastnamedcs
           \pack_layers_flush_indeed\zerocount{\currentlayer:\the\realpageno}\b_layer_two
         \fi
       \fi}%
      {\ifcsname\??layerbox#1\currentlayer\endcsname
-        \ifvoid\lastnamedcss\else \chardef\b_layer_two\lastnamedcs
+        \ifvoid\lastnamedcs\else \chardef\b_layer_two\lastnamedcs
           \pack_layers_flush_indeed\plusone{#1\currentlayer}\b_layer_two
         \fi
       \fi}%
      {\ifcsname\??layerbox#1\currentlayer:\the\realpageno\endcsname
-        \ifvoid\lastnamedcss\else \chardef\b_layer_two\lastnamedcs
+        \ifvoid\lastnamedcs\else \chardef\b_layer_two\lastnamedcs
           \pack_layers_flush_indeed\zerocount{#1\currentlayer:\the\realpageno}\b_layer_two
         \fi
       \fi}%
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 6cb5363b9..ebe7a3717 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 d8065f6bf..a9f5e7dbb 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/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 6e498dc8e..078c2dd7a 100644
Binary files a/tex/context/interface/mkiv/i-context.pdf and b/tex/context/interface/mkiv/i-context.pdf differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 6a784061e..14396db1c 100644
Binary files a/tex/context/interface/mkiv/i-readme.pdf and b/tex/context/interface/mkiv/i-readme.pdf differ
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 47ee5769c..26d79fe47 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  : 11/29/19 21:47:35
+-- merge date  : 12/02/19 18:28:49
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3