summaryrefslogtreecommitdiff
path: root/tex/context
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2022-05-11 11:48:41 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2022-05-11 11:48:41 +0200
commit3a55e11c7295abf8f2dfe5e9d1c8b153f4518824 (patch)
treeef19e02db5f451f90d12f88ddf60619e0cb07344 /tex/context
parentd2e1112ef8921f361ac7cf1b49e30923cce6d5f0 (diff)
downloadcontext-3a55e11c7295abf8f2dfe5e9d1c8b153f4518824.tar.gz
2022-05-11 11:35:00
Diffstat (limited to 'tex/context')
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-de.mkii13
-rw-r--r--tex/context/base/mkii/mult-en.mkii3
-rw-r--r--tex/context/base/mkii/mult-it.mkii10
-rw-r--r--tex/context/base/mkii/mult-nl.mkii3
-rw-r--r--tex/context/base/mkii/mult-pe.mkii3
-rw-r--r--tex/context/base/mkii/mult-ro.mkii2
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-imp-ligatures.lua4
-rw-r--r--tex/context/base/mkiv/font-otc.lua20
-rw-r--r--tex/context/base/mkiv/mult-low.lua4
-rw-r--r--tex/context/base/mkiv/mult-mps.lua2
-rw-r--r--tex/context/base/mkiv/mult-prm.lua4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24641 -> 24628 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin257295 -> 257246 bytes
-rw-r--r--tex/context/base/mkxl/bndr-ini.lmt52
-rw-r--r--tex/context/base/mkxl/bndr-ini.mkxl39
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl3
-rw-r--r--tex/context/base/mkxl/font-imp-ligatures.lmt158
-rw-r--r--tex/context/base/mkxl/font-lib.mklx2
-rw-r--r--tex/context/base/mkxl/font-ots.lmt2
-rw-r--r--tex/context/base/mkxl/lang-ini.lmt110
-rw-r--r--tex/context/base/mkxl/lang-mis.mkxl4
-rw-r--r--tex/context/base/mkxl/math-ini.lmt22
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl26
-rw-r--r--tex/context/base/mkxl/math-spa.lmt3
-rw-r--r--tex/context/base/mkxl/meta-imp-gamesymbols.mkxl160
-rw-r--r--tex/context/base/mkxl/meta-ini.mkxl8
-rw-r--r--tex/context/base/mkxl/mlib-svg.lmt21
-rw-r--r--tex/context/base/mkxl/mult-sys.mkxl1
-rw-r--r--tex/context/base/mkxl/phys-dim.mkxl42
-rw-r--r--tex/context/base/mkxl/spac-hor.mkxl109
-rw-r--r--tex/context/base/mkxl/spac-ver.mkxl70
-rw-r--r--tex/context/base/mkxl/strc-itm.mklx8
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl7
-rw-r--r--tex/context/base/mkxl/strc-not.mklx10
-rw-r--r--tex/context/base/mkxl/strc-sec.mkxl6
-rw-r--r--tex/context/base/mkxl/supp-mat.mkxl60
-rw-r--r--tex/context/base/mkxl/trac-vis.lmt44
-rw-r--r--tex/context/base/mkxl/typo-cap.mkxl5
-rw-r--r--tex/context/base/mkxl/typo-del.mkxl44
-rw-r--r--tex/context/fonts/mkiv/type-imp-ebgaramond.mkiv4
-rw-r--r--tex/context/fonts/mkxl/bhai.lfg4
-rw-r--r--tex/context/fonts/mkxl/shobhika.lfg4
-rw-r--r--tex/context/interface/mkii/keys-de.xml13
-rw-r--r--tex/context/interface/mkii/keys-en.xml3
-rw-r--r--tex/context/interface/mkii/keys-it.xml10
-rw-r--r--tex/context/interface/mkii/keys-nl.xml3
-rw-r--r--tex/context/interface/mkii/keys-pe.xml3
-rw-r--r--tex/context/interface/mkii/keys-ro.xml2
53 files changed, 831 insertions, 309 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index cc51b0c45..1844779fd 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{2022.05.02 15:48}
+\newcontextversion{2022.05.11 11:34}
%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 88a77e354..a520470b2 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{2022.05.02 15:48}
+\edef\contextversion{2022.05.11 11:34}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii
index bca35a89f..8537c66cd 100644
--- a/tex/context/base/mkii/mult-de.mkii
+++ b/tex/context/base/mkii/mult-de.mkii
@@ -281,7 +281,6 @@
\setinterfacevariable{inright}{imrechten}
\setinterfacevariable{inrightedge}{imrechtenrand}
\setinterfacevariable{inrightmargin}{inrechtermarginale}
-\setinterfacevariable{integral}{integral}
\setinterfacevariable{interaction}{interaktion}
\setinterfacevariable{interactionmenu}{interaktionsmenue}
\setinterfacevariable{interactive}{interactive}
@@ -642,6 +641,7 @@
% definitions for interface constants for language de
%
\setinterfaceconstant{action}{aktion}
+\setinterfaceconstant{adaptive}{adaptive}
\setinterfaceconstant{address}{adresse}
\setinterfaceconstant{after}{nach}
\setinterfaceconstant{afterhead}{nachkopf}
@@ -716,6 +716,7 @@
\setinterfaceconstant{bottom}{unten}
\setinterfaceconstant{bottomafter}{bottomafter}
\setinterfaceconstant{bottombefore}{bottombefore}
+\setinterfaceconstant{bottomcolor}{bottomcolor}
\setinterfaceconstant{bottomcommand}{bottomcommand}
\setinterfaceconstant{bottomdistance}{abstandunten}
\setinterfaceconstant{bottomframe}{untenrahmen}
@@ -887,6 +888,7 @@
\setinterfaceconstant{header}{kopfzeile}
\setinterfaceconstant{headerdistance}{kopfzeilenabstand}
\setinterfaceconstant{headerstate}{kopfzeilenstatus}
+\setinterfaceconstant{headindenting}{headindenting}
\setinterfaceconstant{headlabel}{headlabel}
\setinterfaceconstant{headnumber}{kopfnummer}
\setinterfaceconstant{headseparator}{headseparator}
@@ -918,6 +920,7 @@
\setinterfaceconstant{inputfile}{inputfile}
\setinterfaceconstant{insidesection}{insidesection}
\setinterfaceconstant{instance}{instance}
+\setinterfaceconstant{integral}{integral}
\setinterfaceconstant{intent}{intent}
\setinterfaceconstant{interaction}{interaktion}
\setinterfaceconstant{interlinespace}{zeilenabstande}
@@ -960,6 +963,7 @@
\setinterfaceconstant{leftquote}{linkerzitieren}
\setinterfaceconstant{leftsample}{leftsample}
\setinterfaceconstant{leftsentence}{linkersatz}
+\setinterfaceconstant{leftsource}{leftsource}
\setinterfaceconstant{leftspeech}{leftspeech}
\setinterfaceconstant{leftstyle}{linkerstil}
\setinterfaceconstant{leftsubsentence}{linkersubsatz}
@@ -992,7 +996,9 @@
\setinterfaceconstant{marstyle}{beschrstil}
\setinterfaceconstant{mask}{mask}
\setinterfaceconstant{mathclass}{mathclass}
+\setinterfaceconstant{mathdenominatorstyle}{mathdenominatorstyle}
\setinterfaceconstant{mathlimits}{mathlimits}
+\setinterfaceconstant{mathnumeratorstyle}{mathnumeratorstyle}
\setinterfaceconstant{mathstyle}{mathstyle}
\setinterfaceconstant{max}{max}
\setinterfaceconstant{maxdepth}{maxdepth}
@@ -1004,6 +1010,7 @@
\setinterfaceconstant{middle}{mittig}
\setinterfaceconstant{middlecolor}{middlecolor}
\setinterfaceconstant{middlecommand}{middlecommand}
+\setinterfaceconstant{middlesource}{middlesource}
\setinterfaceconstant{middlespeech}{middlespeech}
\setinterfaceconstant{middlestyle}{middlestyle}
\setinterfaceconstant{middletext}{mittigertext}
@@ -1176,6 +1183,7 @@
\setinterfaceconstant{rightquote}{rechterzitieren}
\setinterfaceconstant{rightsample}{rightsample}
\setinterfaceconstant{rightsentence}{rechtersatz}
+\setinterfaceconstant{rightsource}{rightsource}
\setinterfaceconstant{rightspeech}{rightspeech}
\setinterfaceconstant{rightstyle}{rechterstil}
\setinterfaceconstant{rightsubsentence}{rechtersubsatz}
@@ -1227,6 +1235,8 @@
\setinterfaceconstant{small}{klein}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{solution}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{sorttype}
@@ -1311,6 +1321,7 @@
\setinterfaceconstant{toffset}{toffset}
\setinterfaceconstant{tolerance}{toleranz}
\setinterfaceconstant{top}{oben}
+\setinterfaceconstant{topcolor}{topcolor}
\setinterfaceconstant{topcommand}{topcommand}
\setinterfaceconstant{topdistance}{obenabstand}
\setinterfaceconstant{topframe}{obenrahmen}
diff --git a/tex/context/base/mkii/mult-en.mkii b/tex/context/base/mkii/mult-en.mkii
index a5c8bc7ef..2a00dba9b 100644
--- a/tex/context/base/mkii/mult-en.mkii
+++ b/tex/context/base/mkii/mult-en.mkii
@@ -641,6 +641,7 @@
% definitions for interface constants for language en
%
\setinterfaceconstant{action}{action}
+\setinterfaceconstant{adaptive}{adaptive}
\setinterfaceconstant{address}{address}
\setinterfaceconstant{after}{after}
\setinterfaceconstant{afterhead}{afterhead}
@@ -1234,6 +1235,8 @@
\setinterfaceconstant{small}{small}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{solution}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{sorttype}
diff --git a/tex/context/base/mkii/mult-it.mkii b/tex/context/base/mkii/mult-it.mkii
index 41e24c0bb..0e91646df 100644
--- a/tex/context/base/mkii/mult-it.mkii
+++ b/tex/context/base/mkii/mult-it.mkii
@@ -281,7 +281,6 @@
\setinterfacevariable{inright}{indestra}
\setinterfacevariable{inrightedge}{inlatodestro}
\setinterfacevariable{inrightmargin}{inmarginedestro}
-\setinterfacevariable{integral}{integral}
\setinterfacevariable{interaction}{interazione}
\setinterfacevariable{interactionmenu}{menuinterattivo}
\setinterfacevariable{interactive}{interactive}
@@ -642,6 +641,7 @@
% definitions for interface constants for language it
%
\setinterfaceconstant{action}{azione}
+\setinterfaceconstant{adaptive}{adaptive}
\setinterfaceconstant{address}{indirizzo}
\setinterfaceconstant{after}{dopo}
\setinterfaceconstant{afterhead}{dopotesta}
@@ -716,6 +716,7 @@
\setinterfaceconstant{bottom}{fondo}
\setinterfaceconstant{bottomafter}{bottomafter}
\setinterfaceconstant{bottombefore}{bottombefore}
+\setinterfaceconstant{bottomcolor}{bottomcolor}
\setinterfaceconstant{bottomcommand}{bottomcommand}
\setinterfaceconstant{bottomdistance}{distanzafondo}
\setinterfaceconstant{bottomframe}{cornicefondo}
@@ -919,6 +920,7 @@
\setinterfaceconstant{inputfile}{inputfile}
\setinterfaceconstant{insidesection}{insidesection}
\setinterfaceconstant{instance}{instance}
+\setinterfaceconstant{integral}{integral}
\setinterfaceconstant{intent}{intent}
\setinterfaceconstant{interaction}{interazione}
\setinterfaceconstant{interlinespace}{interlinea}
@@ -961,6 +963,7 @@
\setinterfaceconstant{leftquote}{menzionesinistra}
\setinterfaceconstant{leftsample}{leftsample}
\setinterfaceconstant{leftsentence}{frasesinistra}
+\setinterfaceconstant{leftsource}{leftsource}
\setinterfaceconstant{leftspeech}{leftspeech}
\setinterfaceconstant{leftstyle}{stilesinistra}
\setinterfaceconstant{leftsubsentence}{sottofrasesinistra}
@@ -1007,6 +1010,7 @@
\setinterfaceconstant{middle}{centro}
\setinterfaceconstant{middlecolor}{middlecolor}
\setinterfaceconstant{middlecommand}{middlecommand}
+\setinterfaceconstant{middlesource}{middlesource}
\setinterfaceconstant{middlespeech}{middlespeech}
\setinterfaceconstant{middlestyle}{middlestyle}
\setinterfaceconstant{middletext}{testocentro}
@@ -1179,6 +1183,7 @@
\setinterfaceconstant{rightquote}{menzionedestra}
\setinterfaceconstant{rightsample}{rightsample}
\setinterfaceconstant{rightsentence}{frasedestra}
+\setinterfaceconstant{rightsource}{rightsource}
\setinterfaceconstant{rightspeech}{rightspeech}
\setinterfaceconstant{rightstyle}{stiledestra}
\setinterfaceconstant{rightsubsentence}{sottofrasedestra}
@@ -1230,6 +1235,8 @@
\setinterfaceconstant{small}{piccolo}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{solution}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{sorttype}
@@ -1314,6 +1321,7 @@
\setinterfaceconstant{toffset}{toffset}
\setinterfaceconstant{tolerance}{tolleranza}
\setinterfaceconstant{top}{cima}
+\setinterfaceconstant{topcolor}{topcolor}
\setinterfaceconstant{topcommand}{topcommand}
\setinterfaceconstant{topdistance}{distanzacima}
\setinterfaceconstant{topframe}{cornicecima}
diff --git a/tex/context/base/mkii/mult-nl.mkii b/tex/context/base/mkii/mult-nl.mkii
index 1754c268a..235db7a1e 100644
--- a/tex/context/base/mkii/mult-nl.mkii
+++ b/tex/context/base/mkii/mult-nl.mkii
@@ -641,6 +641,7 @@
% definitions for interface constants for language nl
%
\setinterfaceconstant{action}{actie}
+\setinterfaceconstant{adaptive}{adaptive}
\setinterfaceconstant{address}{adres}
\setinterfaceconstant{after}{na}
\setinterfaceconstant{afterhead}{kopna}
@@ -1234,6 +1235,8 @@
\setinterfaceconstant{small}{klein}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{oplossing}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{sortering}
diff --git a/tex/context/base/mkii/mult-pe.mkii b/tex/context/base/mkii/mult-pe.mkii
index a8f4fc599..7823d3eef 100644
--- a/tex/context/base/mkii/mult-pe.mkii
+++ b/tex/context/base/mkii/mult-pe.mkii
@@ -641,6 +641,7 @@
% definitions for interface constants for language pe
%
\setinterfaceconstant{action}{کنش}
+\setinterfaceconstant{adaptive}{adaptive}
\setinterfaceconstant{address}{نشانی}
\setinterfaceconstant{after}{بعداز}
\setinterfaceconstant{afterhead}{بعدازسر}
@@ -1234,6 +1235,8 @@
\setinterfaceconstant{small}{کوچک}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{solution}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{ترتیب‌تایپ}
diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii
index 4525d6a47..661b94194 100644
--- a/tex/context/base/mkii/mult-ro.mkii
+++ b/tex/context/base/mkii/mult-ro.mkii
@@ -1235,6 +1235,8 @@
\setinterfaceconstant{small}{mic}
\setinterfaceconstant{smallcapsfeatures}{smallcapsfeatures}
\setinterfaceconstant{smallcapsfont}{smallcapsfont}
+\setinterfaceconstant{snap}{snap}
+\setinterfaceconstant{snapstep}{snapstep}
\setinterfaceconstant{solution}{solution}
\setinterfaceconstant{sort}{sort}
\setinterfaceconstant{sorttype}{sorttype}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 558b0481a..19f0f51a2 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2022.05.02 15:48}
+\newcontextversion{2022.05.11 11:34}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index fa7ba1e2a..6c37e0f35 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -49,7 +49,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2022.05.02 15:48}
+\edef\contextversion{2022.05.11 11:34}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-imp-ligatures.lua b/tex/context/base/mkiv/font-imp-ligatures.lua
index 091eb5d4b..02833707b 100644
--- a/tex/context/base/mkiv/font-imp-ligatures.lua
+++ b/tex/context/base/mkiv/font-imp-ligatures.lua
@@ -104,14 +104,14 @@ local function blockligatures(str)
before = before,
current = { one, two },
after = after,
- lookups = { 1 }, -- not shared !
+ lookups = { 1, false }, -- not shared !
}
revert[new] = {
-- before = before,
current = { one, zwj },
-- after = { two, unpack(after) },
after = { two },
- lookups = { 1 }, -- not shared !
+ lookups = { 1, false }, -- not shared !
}
end
end
diff --git a/tex/context/base/mkiv/font-otc.lua b/tex/context/base/mkiv/font-otc.lua
index 943bb7e38..67b77b111 100644
--- a/tex/context/base/mkiv/font-otc.lua
+++ b/tex/context/base/mkiv/font-otc.lua
@@ -501,15 +501,15 @@ local function addfeature(data,feature,specifications,prepareonly)
local lookups = rule.lookups or false
local subtype = nil
if lookups and sublookups then
--- inspect(lookups)
-if #lookups > 0 then
- local ns = stop - start + 1
- for i=1,ns do
- if lookups[i] == nil then
- lookups[i] = 0
- end
- end
-end
+ -- inspect(lookups)
+ if #lookups > 0 then
+ local ns = stop - start + 1
+ for i=1,ns do
+ if lookups[i] == nil then
+ lookups[i] = 0
+ end
+ end
+ end
local l = { }
for k, v in sortedhash(lookups) do
local t = type(v)
@@ -830,7 +830,7 @@ end
order = featureorder,
[stepkey] = steps,
nofsteps = nofsteps,
- type = types[featuretype],
+ type = specification.handler or types[featuretype],
}
if prepareonly then
return sequence
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index 1c5b4be5e..7fb7e3fa8 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -166,6 +166,7 @@ return {
"mathfractioncode", "mathmiddlecode", "mathaccentcode", "mathfencedcode", "mathghostcode",
"mathvariablecode", "mathactivecode", "mathvcentercode", "mathconstructcode", "mathwrappedcode",
"mathbegincode", "mathendcode", "mathexplicitcode", "mathdivisioncode", "mathfactorialcode",
+ "mathdimensioncode",
--
"mathimaginarycode", "mathdifferentialcode", "mathexponentialcode", "mathfunctioncode", "mathdigitcode",
-- "mathtopaccentcode", "mathbottomaccentcode", "mathdelimitercode", "mathrootcode", "mathprintcode", --
@@ -454,8 +455,7 @@ return {
"newconstant", "setnewconstant", "setconstant", "setconstantvalue",
"newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional",
--
- "newmacro", "setnewmacro", "newfraction",
- "newsignal",
+ "newmacro", "setnewmacro", "newfraction", "newsignal", "newboundary",
--
"dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty",
"dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument",
diff --git a/tex/context/base/mkiv/mult-mps.lua b/tex/context/base/mkiv/mult-mps.lua
index fa1aa22b3..9807902f8 100644
--- a/tex/context/base/mkiv/mult-mps.lua
+++ b/tex/context/base/mkiv/mult-mps.lua
@@ -68,6 +68,8 @@ return {
--
"runscript", "maketext", "numbersystem",
"overloadmode", "setproperty",
+ --
+ "intersectiontimeslist", "arcpoint", "arcpointlist", "subarclength", "maxknotpool", "nocycle",
},
commands = {
"on", "off",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 32de6f81a..2a6cd60cc 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -412,12 +412,14 @@ return {
"instance",
"integerdef",
"lastarguments",
+ "lastboundary",
"lastchkdim",
"lastchknum",
"lastleftclass",
"lastloopiterator",
"lastnamedcs",
"lastnodesubtype",
+ "lastpageextra",
"lastparcontext",
"lastrightclass",
"leftmarginkern",
@@ -512,6 +514,7 @@ return {
"overloadmode",
"pageboundary",
"pageboundarypenalty",
+ "pageextragoal",
"pagevsize",
"parametercount",
"parametermark",
@@ -1015,6 +1018,7 @@ return {
"tracingstats",
"uccode",
"uchyph",
+ "unboundary",
"underline",
"unhbox",
"unhcopy",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 683f2d822..e45d119cd 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 7bef77ee0..0015ece2b 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkxl/bndr-ini.lmt b/tex/context/base/mkxl/bndr-ini.lmt
new file mode 100644
index 000000000..2ee127020
--- /dev/null
+++ b/tex/context/base/mkxl/bndr-ini.lmt
@@ -0,0 +1,52 @@
+if not modules then modules = { } end modules ['bndr-ini'] = {
+ version = 1.001,
+ comment = "companion to bndr-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local context = context
+local storage = storage
+local implement = interfaces.implement
+local sharedstorage = storage.shared
+
+local boundaries = tex.boundaries or { } -- maybe different namespace
+tex.boundaries = boundaries
+
+boundaries.names = boundaries.names or { }
+boundaries.numbers = boundaries.numbers or { }
+
+local names = boundaries.names
+local numbers = boundaries.numbers
+
+storage.register("boundaries/names", names, "tex.boundaries.names")
+storage.register("boundaries/numbers", numbers, "tex.boundaries.numbers")
+
+sharedstorage.boundaries_last = sharedstorage.boundaries_last or 0 -- so zero is not used
+
+function boundaries.system(name)
+ local number = numbers[name]
+ if not number then
+ local last = sharedstorage.boundaries_last
+ number = last + 1
+ sharedstorage.boundaries_last = number
+ numbers[name] = number
+ names[number] = name
+ end
+ return number
+end
+
+implement {
+ name = "defineboundary",
+ arguments = "string",
+ actions = { boundaries.system, context }
+}
+
+-- implement {
+-- name = "newboundary",
+-- arguments = "csname",
+-- public = true,
+-- protected = true,
+-- actions = function(n) tex.setintegervalue(n,boundaries.system()) end,
+-- }
diff --git a/tex/context/base/mkxl/bndr-ini.mkxl b/tex/context/base/mkxl/bndr-ini.mkxl
new file mode 100644
index 000000000..8481048bb
--- /dev/null
+++ b/tex/context/base/mkxl/bndr-ini.mkxl
@@ -0,0 +1,39 @@
+%D \module
+%D [ file=bndr-ini,
+%D version=2022.05.02,
+%D title=\CONTEXT\ Boundary 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.
+
+\writestatus{loading}{ConTeXt Boundary Macros / Initialization}
+
+\unprotect
+
+\registerctxluafile{bndr-ini}{autosuffix}
+
+% \defineboundary[foobar][public]\meaning\foobar\par
+% \defineboundary[barfoo][public]\meaning\barfoo\par
+
+\immutable\def\??boundaryprefix{c_bndr_}
+
+\permanent\tolerant\protected\def\defineboundary[#1]#*[#2]% nicer for users
+ {\doifelseinset\s!public{#2}%
+ {\ifcsname#1\endcsname\else
+ \global\permanent\expandafter\integerdef\csname#1\endcsname\clf_defineboundary{#1}\relax
+ \fi}
+ {\ifcsname\??boundaryprefix#1\endcsname\else
+ \global\permanent\expandafter\integerdef\csname\??boundaryprefix#1\endcsname\clf_defineboundary{#1}\relax
+ \fi}}
+
+\permanent\protected\def\newboundary#1% nicer for lowlevel
+ {\ifdefined#1\else
+ \global\immutable\integerdef#1\clf_defineboundary{\csstring#1}\relax
+ \fi}
+
+\protect
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 4dc93d0bf..6e20f62a4 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2022.05.02 15:48}
+\newcontextversion{2022.05.11 11:34}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index 009c493a2..71c602887 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2022.05.02 15:48}
+\immutable\edef\contextversion{2022.05.11 11:34}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
@@ -144,6 +144,7 @@
\loadmkxlfile{toks-aux}
\loadmkxlfile{attr-ini}
+\loadmkxlfile{bndr-ini}
\loadmkxlfile{core-ini}
\loadmkxlfile{core-env}
diff --git a/tex/context/base/mkxl/font-imp-ligatures.lmt b/tex/context/base/mkxl/font-imp-ligatures.lmt
new file mode 100644
index 000000000..da5282428
--- /dev/null
+++ b/tex/context/base/mkxl/font-imp-ligatures.lmt
@@ -0,0 +1,158 @@
+if not modules then modules = { } end modules ['font-imp-ligatures'] = {
+ version = 1.001,
+ comment = "companion to font-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- Not perfect (disc) but we have allternatives.
+
+local lpegmatch = lpeg.match
+local utfsplit = utf.split
+local settings_to_array = utilities.parsers.settings_to_array
+
+local fonts = fonts
+local otf = fonts.handlers.otf
+local registerotffeature = otf.features.register
+local addotffeature = otf.addfeature
+
+-- This is a quick and dirty hack.
+
+local lookups = { }
+local protect = { }
+local revert = { }
+local zwjchar = 0x200C
+local zwj = { zwjchar }
+
+addotffeature {
+ name = "blockligatures",
+ type = "chainsubstitution",
+ nocheck = true, -- because there is no 0x200C in the font
+ prepend = true, -- make sure we do it early
+ future = true, -- avoid nilling due to no steps yet
+ lookups = {
+ {
+ type = "multiple",
+ data = lookups,
+ },
+ },
+ data = {
+ rules = protect,
+ }
+}
+
+addotffeature {
+ name = "blockligatures",
+ type = "chainsubstitution",
+ nocheck = true, -- because there is no 0x200C in the font
+ append = true, -- this is done late
+ overload = false, -- we don't want to overload the previous definition
+ lookups = {
+ {
+ type = "ligature",
+ data = lookups,
+ },
+ },
+ data = {
+ rules = revert,
+ }
+}
+
+registerotffeature {
+ name = 'blockligatures',
+ description = 'block certain ligatures',
+}
+
+-- local splitter = lpeg.splitat(":")
+--
+-- local function blockligatures(str)
+-- local t = settings_to_array(str)
+-- for i=1,#t do
+-- local ti = t[i]
+-- local before, current, after = lpegmatch(splitter,ti)
+-- if current and after then -- before is returned when no match
+-- -- experimental joke
+-- if before then
+-- before = utfsplit(before)
+-- for i=1,#before do
+-- before[i] = { before[i] }
+-- end
+-- end
+-- if current then
+-- current = utfsplit(current)
+-- end
+-- if after then
+-- after = utfsplit(after)
+-- for i=1,#after do
+-- after[i] = { after[i] }
+-- end
+-- end
+-- else
+-- before = nil
+-- current = utfsplit(ti)
+-- after = nil
+-- end
+-- if #current > 1 then
+-- local one = current[1]
+-- local two = current[2]
+-- lookups[one] = { one, zwjchar }
+-- local one = { one }
+-- local two = { two }
+-- local new = #protect + 1
+-- protect[new] = {
+-- before = before,
+-- current = { one, two },
+-- after = after,
+-- lookups = { 1, false }, -- not shared !
+-- }
+-- revert[new] = {
+-- current = { one, zwj },
+-- after = { two },
+-- lookups = { 1, false }, -- not shared !
+-- }
+-- end
+-- end
+-- end
+
+local function blockligatures(str)
+ local t = settings_to_array(str)
+ for i=1,#t do
+ local ti = t[i]
+ local current = utfsplit(ti)
+ if #current > 1 then
+ local one = current[1]
+ local two = current[2]
+ lookups[one] = { one, zwjchar }
+ local one = { one }
+ local two = { two }
+ local new = #protect + 1
+ protect[new] = {
+ current = { one, two },
+ lookups = { 1, false }, -- not shared !
+ }
+ revert[new] = {
+ current = { one, zwj },
+ after = { two },
+ lookups = { 1, false }, -- not shared !
+ }
+ end
+ end
+end
+
+-- blockligatures("\0\0")
+
+otf.helpers.blockligatures = blockligatures
+
+-- blockligatures("fi,ff")
+-- blockligatures("fl")
+
+if context then
+
+ interfaces.implement {
+ name = "blockligatures",
+ arguments = "string",
+ actions = blockligatures,
+ }
+
+end
diff --git a/tex/context/base/mkxl/font-lib.mklx b/tex/context/base/mkxl/font-lib.mklx
index 953ff06fb..b9a79c0d9 100644
--- a/tex/context/base/mkxl/font-lib.mklx
+++ b/tex/context/base/mkxl/font-lib.mklx
@@ -101,7 +101,7 @@
% extensions, order matters
-\registerctxluafile{font-imp-ligatures}{}
+\registerctxluafile{font-imp-ligatures}{autosuffix}
\registerctxluafile{font-imp-tex}{}
\registerctxluafile{font-imp-reorder}{}
\registerctxluafile{font-imp-properties}{autosuffix}
diff --git a/tex/context/base/mkxl/font-ots.lmt b/tex/context/base/mkxl/font-ots.lmt
index f9c6b2fae..e5c5db2fa 100644
--- a/tex/context/base/mkxl/font-ots.lmt
+++ b/tex/context/base/mkxl/font-ots.lmt
@@ -4294,7 +4294,7 @@ registerotffeature {
-- we use a different call:
--
-- function(head,dataset,sequence,initialrl,font,dynamic)
--- return head, done
+-- return head
-- end
--
-- Also see (!!).
diff --git a/tex/context/base/mkxl/lang-ini.lmt b/tex/context/base/mkxl/lang-ini.lmt
index 7919df530..64f1e82d0 100644
--- a/tex/context/base/mkxl/lang-ini.lmt
+++ b/tex/context/base/mkxl/lang-ini.lmt
@@ -605,7 +605,7 @@ end
-- needed only a few loops of relistening the concert to implement it. In
-- restrospect this was a language feature that should have been there a while ago.
-do
+local expand ; do
local nuts = nodes.nuts
local nextglyph = nuts.traversers.glyph
@@ -639,10 +639,11 @@ do
local goodiesdata = setmetatableindex(function(t,k)
local v = {
- properties = { },
- replacements = { },
- characters = { },
- exceptions = { },
+ properties = { },
+ replacements = { },
+ characters = { },
+ exceptions = { },
+ substitutions = { },
}
t[k] = v
return v
@@ -847,17 +848,19 @@ do
languages.setgoodieshandler = function(specification) -- will become a table specifier
if type(specification) == "table" then
- local tag = specification.tag
- local goodies = specification.goodies or tag
- local result = specification.result or 2
- local data = goodiesdata[goodies]
- local properties = data.properties
- local replacements = data.replacements
- local characters = data.characters
- local exceptions = data.exceptions
- local replacer = nil
- local d, instance = resolve(tag)
- local done = false
+ local tag = specification.tag
+ local goodies = specification.goodies or tag
+ local result = specification.result or 2
+ local data = goodiesdata[goodies]
+ local properties = data.properties
+ local replacements = data.replacements
+ local substitutions = data.substitutions
+ local characters = data.characters
+ local exceptions = data.exceptions
+ local replacer = nil
+ local substituter = nil
+ local d, instance = resolve(tag)
+ local done = false
-- check if something at all
if type(characters) == "table" and characters and next(characters) then
addhjcodestoinstance(instance,characters)
@@ -880,6 +883,13 @@ do
end
done = true
end
+ if type(substitutions) == "table" and next(substitutions) then
+ substituter = Cs((utfchartabletopattern(substitutions) / substitutions + 1)^0)
+ if trace_goodies then
+ report_goodies("registering %a substitutor for %a",goodies,tag)
+ end
+ done = true
+ end
if type(exceptions) == "table" and next(exceptions) then
done = true
else
@@ -923,6 +933,7 @@ do
end
local result = 2
local o = properties[remapped]
+ ::again::
if o then
if trace_goodies then
report("properties: %s %s",original,remapped)
@@ -946,7 +957,9 @@ do
break
end
end
- elseif replacer then
+ return result
+ end
+ if replacer then
-- todo: check lengths so that we can avoid a check
if getprop(first,"replaced") then
-- maybe some deadcycles
@@ -965,7 +978,31 @@ do
result = 1
end
end
- elseif exceptions then
+ return result
+ end
+ if substituter then
+ if getprop(first,"replaced") then
+ -- maybe some deadcycles
+ else
+ local r = lpegmatch(substituter,original)
+ if original == r then
+ if trace_goodies then
+ report_goodies("kept: %s => %s",original,remapped)
+ end
+ else
+ if trace_goodies then
+ report_goodies("substituted: %s => %s => %s",original,remapped,r)
+ end
+ setprop(first,"replaced",true)
+ if not properties[r] then
+ o = expand(r)
+ properties[original] = o
+ goto again
+ end
+ end
+ end
+ end
+ if exceptions then
local exception = exceptions[original]
if exception then
if trace_goodies then
@@ -975,10 +1012,10 @@ do
else
result = 3
end
- else
- if trace_goodies then
- report_goodies("ignored: %s => %s",original,remapped)
- end
+ return result
+ end
+ if trace_goodies then
+ report_goodies("ignored: %s => %s",original,remapped)
end
return result
end)
@@ -1123,6 +1160,10 @@ do
return v
end)
+ expand = function(str)
+ return analyzed(true,actions,{},str)
+ end
+
-- maybe also a skip symbol
local replace1 = Cs ( ( S("|=<>+-.0123456789")/"" + lpegpatterns.utf8character )^0 )
@@ -1199,11 +1240,12 @@ do
local nw = 0
local nl = #list
--
- local data = goodiesdata[tag]
- local properties = data.properties
- local replacements = data.replacements
- local characters = data.characters
- local exceptions = data.exceptions
+ local data = goodiesdata[tag]
+ local properties = data.properties
+ local replacements = data.replacements
+ local substitutions = data.substitutions
+ local characters = data.characters
+ local exceptions = data.exceptions
if filename then
if not data.goodies then
data.goodies = { }
@@ -1217,10 +1259,11 @@ do
for i=1,nl do
local l = list[i]
if type(l) == "table" then
- local w = l.words
- local p = l.patterns
- local c = l.characters
- local e = l.exceptions
+ local w = l.words
+ local p = l.patterns
+ local s = l.substitutions
+ local c = l.characters
+ local e = l.exceptions
lh = l.left or false -- for practical reasons these are semi-global
rh = l.right or false -- for practical reasons these are semi-global
if c then
@@ -1301,9 +1344,12 @@ do
nw = nw + 1
end
end
+ elseif s then
+ for k, v in next, s do
+ substitutions[k] = v
+ end
elseif p then
for k, v in next, p do
- -- todo: warning overload
replacements[k] = v
end
elseif e then
diff --git a/tex/context/base/mkxl/lang-mis.mkxl b/tex/context/base/mkxl/lang-mis.mkxl
index 7b6c90857..5aa40537c 100644
--- a/tex/context/base/mkxl/lang-mis.mkxl
+++ b/tex/context/base/mkxl/lang-mis.mkxl
@@ -227,8 +227,6 @@
%D \type{||word}, while it counterpart \type {\lang_discretionaries_check_after} is
%D responsible for handling the comma.
-\newsignal\d_lang_discretionaries_breakpoint % todo: never consulted so maybe obsolete
-
\newconditional\punctafterdiscretionary
\newconditional\spaceafterdiscretionary
@@ -500,7 +498,7 @@
\def\lang_compounds_fake_hyphen
{\enforced\permanent\protected\def##1|%
{\doifelsenothing{##1}\compoundhyphen{##1}%
- \kern\d_lang_discretionaries_breakpoint
+ \wordboundary % was a signal
\allowbreak}}
%D \macros
diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt
index b12c81086..306b6585a 100644
--- a/tex/context/base/mkxl/math-ini.lmt
+++ b/tex/context/base/mkxl/math-ini.lmt
@@ -121,16 +121,18 @@ local function registerengineclass(name,short)
return class
end
-local explicit_class = registerengineclass("explicit","expl")
-local imaginary_class = registerengineclass("imaginary","im")
-local diferential_class = registerengineclass("differential","dif")
-local exponential_class = registerengineclass("exponential","exp")
-local function_class = registerengineclass("function","fnc")
-local digit_class = registerengineclass("digit","dig")
-local division_class = registerengineclass("division","div")
-local factorial_class = registerengineclass("factorial","fac")
-local wrapped_class = registerengineclass("wrapped", "wra")
-local construct_class = registerengineclass("construct", "con")
+registerengineclass("explicit", "expl")
+registerengineclass("imaginary", "img")
+registerengineclass("differential","dif")
+registerengineclass("exponential", "exp")
+registerengineclass("function", "fnc")
+registerengineclass("digit", "dig")
+local division_class =
+registerengineclass("division", "div")
+registerengineclass("factorial", "fac")
+registerengineclass("wrapped", "wra")
+registerengineclass("construct", "con")
+registerengineclass("dimension", "dim")
classes["begin"] = 62 classnames[62] = "begin"
classes["end"] = 63 classnames[63] = "end"
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index 551f3f96a..f4358d5e7 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -32,6 +32,10 @@
%D a proper DAC connected but it can hardly keep up which also counts for me with MS
%D testing faster than I can provide variants (www.youtube.com/watch?v=xzQCqAJNOSM).
+%D After an extremely short discussion MS and HH decided that we will not support
+%D \quote { BS ISO 80000-2:2009} because it doesn't comply to the CMS quality
+%D standards and is BS anyway.
+
\unprotect
%D We move these definitions into the format:
@@ -141,6 +145,7 @@
\setnewconstant\mathfactorialcode \mathclassvalue factorial
\setnewconstant\mathwrappedcode \mathclassvalue wrapped
\setnewconstant\mathconstructcode \mathclassvalue construct
+\setnewconstant\mathdimensioncode \mathclassvalue dimension
\setnewconstant\mathbegincode \mathclassvalue begin
\setnewconstant\mathendcode \mathclassvalue end
@@ -413,6 +418,18 @@
{\settrue \c_math_discretionaries}
{\setfalse\c_math_discretionaries}
+%D This is moved here from supp-mat:
+
+\permanent\protected\def\dimension#1%
+ {\mathematics
+ {\mathatom
+ \s!leftclass \mathdimensioncode
+ \s!rightclass \mathordinarycode
+ {\tf #1}}}
+
+\permanent\protected\def\nodimension#1%
+ {#1}
+
%D A starter:
%D
%D \startbuffer
@@ -1142,6 +1159,15 @@
%
\inherited\setmathspacing \mathopencode \mathconstructcode \allmathstyles \thinmuskip
\inherited\setmathspacing \mathconstructcode \mathclosecode \allmathstyles \thinmuskip
+ %
+ \inherited\setmathspacing \mathdimensioncode \mathdimensioncode \allmathstyles \zeromuskip
+ \inherited\setmathspacing \mathordinarycode \mathdimensioncode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathordinarycode \mathdimensioncode \allscriptstyles \tinymuskip
+ \inherited\setmathspacing \mathdigitcode \mathdimensioncode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathdigitcode \mathdimensioncode \allscriptstyles \tinymuskip
+ \inherited\setmathspacing \mathclosecode \mathdimensioncode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathclosecode \mathdimensioncode \allscriptstyles \tinymuskip
+ %
\stopsetups
\directsetup{math:spacing:default}
diff --git a/tex/context/base/mkxl/math-spa.lmt b/tex/context/base/mkxl/math-spa.lmt
index 57965c97b..32de6e417 100644
--- a/tex/context/base/mkxl/math-spa.lmt
+++ b/tex/context/base/mkxl/math-spa.lmt
@@ -30,6 +30,7 @@ local v_auto = interfaces.variables.auto
local method = v_none
local distance = 0
+local boundary = tex.boundaries.system("mathalign")
function noads.handlers.align(h)
if method ~= v_none then
@@ -39,7 +40,7 @@ function noads.handlers.align(h)
while s do
local id = getid(s)
local n = getnext(s)
- if id == boundary_code and getdata(s) == 314 then
+ if id == boundary_code and getdata(s) == boundary then
if n and getid(n) == glue_code then
s = n
n = getnext(s)
diff --git a/tex/context/base/mkxl/meta-imp-gamesymbols.mkxl b/tex/context/base/mkxl/meta-imp-gamesymbols.mkxl
index d79e59f69..fa1500b60 100644
--- a/tex/context/base/mkxl/meta-imp-gamesymbols.mkxl
+++ b/tex/context/base/mkxl/meta-imp-gamesymbols.mkxl
@@ -22,64 +22,54 @@
%D execute the code and leave no traces in the text flow. The code itself is not
%D that spectacular:
+%D Todo: variant -2/-3 3D dice
+
\startMPcalculation{simplefun}
+ picture DiceDots[] ; pickup pencircle scaled 3/2 ;
+
+ DiceDots[ 1] := image ( draw(4,4) ; ) ;
+ DiceDots[ 2] := image ( draw(2,6) ; draw(6,2) ; ) ;
+ DiceDots[-2] := image ( draw(6,6) ; draw(2,2) ; ) ;
+ DiceDots[ 3] := image ( draw(2,6) ; draw(4,4) ; draw(6,2) ; ) ;
+ DiceDots[-3] := image ( draw(6,6) ; draw(4,4) ; draw(2,2) ; ) ;
+ DiceDots[ 4] := image ( draw(2,6) ; draw(6,6) ; draw(2,2) ; draw(6,2) ; ) ;
+ DiceDots[ 5] := image ( draw(2,6) ; draw(6,6) ; draw(4,4) ; draw(2,2) ; draw(6,2) ; ) ;
+ DiceDots[ 6] := image ( draw(2,6) ; draw(6,6) ; draw(2,4) ; draw(6,4) ; draw(2,2) ; draw(6,2) ; ) ;
+
def DiceFrame =
pickup pencircle scaled 1/2 ;
draw unitsquare scaled 8 ;
- pickup pencircle scaled 3/2 ;
+ % pickup pencircle scaled 3/2 ;
enddef ;
vardef DiceOne =
DiceFrame ;
- draw (4,4) ;
- enddef ;
- vardef DiceTwoA =
- DiceFrame ;
- draw (2,6) ; draw (6,2) ;
- enddef ;
- vardef DiceTwoB =
- DiceFrame ;
- draw (6,6) ; draw (2,2) ;
+ draw DiceDots[1] ;
enddef ;
vardef DiceTwo =
- if hasoption "mpsfont" "option" "reverse" :
- DiceTwoB
- else :
- DiceTwoA
- fi ;
- enddef ;
- vardef DiceThreeA =
- DiceFrame ;
- draw (2,6) ; draw (4,4) ; draw (6,2) ;
- enddef ;
- vardef DiceThreeB =
DiceFrame ;
- draw (6,6) ; draw (4,4) ; draw (2,2) ;
+ draw DiceDots[if hasoption "mpsfont" "option" "reverse" : - fi 2] ;
enddef ;
vardef DiceThree =
- if hasoption "mpsfont" "option" "reverse" :
- DiceThreeB
- else :
- DiceThreeA
- fi ;
+ DiceFrame ;
+ draw DiceDots[if hasoption "mpsfont" "option" "reverse" : - fi 3] ;
enddef ;
vardef DiceFour =
DiceFrame ;
- draw (2,6) ; draw (6,6) ; draw (2,2) ; draw (6,2) ;
+ draw DiceDots[4] ;
enddef ;
vardef DiceFive =
DiceFrame ;
- draw (2,6) ; draw (6,6) ; draw (4,4) ; draw (2,2) ; draw (6,2) ;
+ draw DiceDots[5] ;
enddef ;
vardef DiceSix =
DiceFrame ;
- draw (2,6) ; draw (6,6) ; draw (2,4) ; draw (6,4) ; draw (2,2) ; draw (6,2) ;
+ draw DiceDots[6] ;
enddef ;
vardef DiceBad =
- pickup pencircle scaled 1/2 ;
- draw unitsquare scaled 8 ;
+ DiceFrame ;
draw (1,7) -- (7,1) ; draw (1,1) -- (7,7) ;
enddef ;
@@ -101,9 +91,67 @@
lmt_registerglyph [ category = "dice", private = "invaliddice", code = "DiceBad;" ] ;
+ %D The transformations come from DICE3D.MF by Thomas A. Heim (1998)
+
+ transform t[];
+
+ numeric r ; r := sqrt(1/4) ;
+
+ hide((0,0) transformed t1 = (0,0)) ;
+ hide((1,0) transformed t1 = (r,r)) ;
+ hide((0,1) transformed t1 = (0,1)) ;
+
+ hide((0,0) transformed t2 = (0,0)) ;
+ hide((1,0) transformed t2 = (1,0)) ;
+ hide((0,1) transformed t2 = (r,r)) ;
+
+ t3 := t1 shifted (8,0) ; % front to right side
+ t4 := t2 shifted (0,8) ; % front to top
+
+ vardef Diced(expr a, b, c) =
+ draw image (
+ pickup pencircle scaled 1/2 ;
+ draw image (
+ % unitsquare smoothed 1/10
+ nodraw unitsquare scaled 8 transformed t4 ;
+ nodraw unitsquare scaled 8 transformed t3 ;
+ nodraw unitsquare scaled 8 ;
+ dodraw unitsquare scaled 8 ;
+ ) ;
+ draw DiceDots[a] ;
+ draw DiceDots[b] transformed t3 ;
+ draw DiceDots[c] transformed t4 ;
+ ) ;
+ enddef ;
+
+ lmt_registerglyph [ category = "dice", unicode = "123", code = "Diced(1,2,3);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "135", code = "Diced(1,3,5);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "142", code = "Diced(1,4,2);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "154", code = "Diced(1,5,4);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "214", code = "Diced(2,1,4);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "231", code = "Diced(2,3,1);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "246", code = "Diced(2,4,6);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "263", code = "Diced(2,6,3);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "312", code = "Diced(3,1,2);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "326", code = "Diced(3,2,6);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "351", code = "Diced(3,5,1);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "365", code = "Diced(3,6,5);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "415", code = "Diced(4,1,5);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "421", code = "Diced(4,2,1);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "456", code = "Diced(4,5,6);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "462", code = "Diced(4,6,2);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "513", code = "Diced(5,1,3);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "536", code = "Diced(5,3,6);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "541", code = "Diced(5,4,1);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "564", code = "Diced(5,6,4);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "624", code = "Diced(6,2,4);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "632", code = "Diced(6,3,2);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "645", code = "Diced(6,4,5);", width = 12, height = 12 ] ;
+ lmt_registerglyph [ category = "dice", unicode = "653", code = "Diced(6,5,3);", width = 12, height = 12 ] ;
+
\stopMPcalculation
-%D At the \TEX\ end we define three features. The reverse is just there for fun. The
+%D At the \TEX\ end we define four features. The reverse is just there for fun. The
%D digits features will map digits onto dice.
\definefontfeature
@@ -120,10 +168,48 @@
[dice:digits]
[dice:digits=yes]
+\definefontfeature
+ [dice:three]
+ [dice:three=yes]
+
%D The mapping to dice happens here:
\startluacode
+ -- before the digits feature
+
+ fonts.handlers.otf.addfeature("dice:three", {
+ type = "ligature",
+ order = { "dice:three" },
+ nocheck = true,
+ data = {
+ [123] = { 0x31, 0x32, 0x33 },
+ [135] = { 0x31, 0x33, 0x35 },
+ [142] = { 0x31, 0x34, 0x32 },
+ [154] = { 0x31, 0x35, 0x34 },
+ [214] = { 0x32, 0x31, 0x34 },
+ [231] = { 0x32, 0x33, 0x31 },
+ [246] = { 0x32, 0x34, 0x36 },
+ [263] = { 0x32, 0x36, 0x33 },
+ [312] = { 0x33, 0x31, 0x32 },
+ [326] = { 0x33, 0x32, 0x36 },
+ [351] = { 0x33, 0x35, 0x31 },
+ [365] = { 0x33, 0x36, 0x35 },
+ [415] = { 0x34, 0x31, 0x35 },
+ [421] = { 0x34, 0x32, 0x31 },
+ [456] = { 0x34, 0x35, 0x36 },
+ [462] = { 0x34, 0x36, 0x32 },
+ [513] = { 0x35, 0x31, 0x33 },
+ [536] = { 0x35, 0x33, 0x36 },
+ [541] = { 0x35, 0x34, 0x31 },
+ [564] = { 0x35, 0x36, 0x34 },
+ [624] = { 0x36, 0x32, 0x34 },
+ [632] = { 0x36, 0x33, 0x32 },
+ [645] = { 0x36, 0x34, 0x35 },
+ [653] = { 0x36, 0x35, 0x33 },
+ }
+ } )
+
-- local invalid = fonts.helpers.privateslot("invaliddice")
fonts.handlers.otf.addfeature("dice:digits", {
@@ -336,14 +422,20 @@
\definefont[DiceN][Serif*dice:normal]
\definefont[DiceR][Serif*dice:reverse]
\definefont[DiceD][Serif*dice:normal,dice:digits]
+ \definefont[DiceT][Serif*dice:normal,dice:three,dice:digits]
\startTEXpage[offset=3pt]
\DiceN
\dostepwiserecurse{"2680}{"2685}{1}{\char#1\quad}%
- \DiceN
+ \DiceR
\dostepwiserecurse{"2680}{"2685}{1}{\char#1\quad}%
\DiceD
\darkblue 2\quad5\quad3\quad0
\stopTEXpage
+ \startTEXpage[offset=3pt]
+ \showglyphs \DiceT 1 2 3 4 5 6
+ \showglyphs \DiceT 653 421
+ \stopTEXpage
+
\stoptext
diff --git a/tex/context/base/mkxl/meta-ini.mkxl b/tex/context/base/mkxl/meta-ini.mkxl
index 86eaea3ae..700191ef8 100644
--- a/tex/context/base/mkxl/meta-ini.mkxl
+++ b/tex/context/base/mkxl/meta-ini.mkxl
@@ -203,10 +203,11 @@
\mutable\def\currentMPinstance {\defaultMPinstance}
\mutable\def\currentMPformat {\currentMPinstance}
-\defineMPinstance[metafun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes]
-\defineMPinstance[minifun] [\s!format=minifun,\s!extensions=\v!yes,\s!initializations=\v!yes]
-\defineMPinstance[extrafun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes]
+\defineMPinstance[metafun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!double]
+\defineMPinstance[minifun] [\s!format=minifun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!double]
+\defineMPinstance[extrafun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!double]
\defineMPinstance[lessfun] [\s!format=metafun]
+\defineMPinstance[scaledfun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!scaled]
\defineMPinstance[doublefun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!double]
\defineMPinstance[binaryfun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!binary]
\defineMPinstance[decimalfun] [\s!format=metafun,\s!extensions=\v!yes,\s!initializations=\v!yes,\c!method=\s!decimal]
@@ -215,6 +216,7 @@
\defineMPinstance[metapost] [\s!format=mpost]
\defineMPinstance[nofun] [\s!format=mpost]
+\defineMPinstance[scaledpost] [\s!format=mpost,\c!method=\s!scaled]
\defineMPinstance[doublepost] [\s!format=mpost,\c!method=\s!double]
\defineMPinstance[binarypost] [\s!format=mpost,\c!method=\s!binary]
\defineMPinstance[decimalpost][\s!format=mpost,\c!method=\s!decimal]
diff --git a/tex/context/base/mkxl/mlib-svg.lmt b/tex/context/base/mkxl/mlib-svg.lmt
index 5279bea71..2dec349db 100644
--- a/tex/context/base/mkxl/mlib-svg.lmt
+++ b/tex/context/base/mkxl/mlib-svg.lmt
@@ -1312,7 +1312,7 @@ local handletransform, handleviewbox do
end
local p_transform = (
- lpegpatterns.whitespace^0 * (
+ p_space^0 * (
P("translate") * (p_numbers / translate) -- maybe xy
+ P("scale") * (p_numbers / scale)
+ P("rotate") * (p_numbers / rotate)
@@ -1491,17 +1491,28 @@ do
["fill-opacity"] = ".75",
}
+ local skipspace = p_space^0
+ local colon = P(":")
+ local semicolon = P(";")
+ local eos = P(-1)
+
+ local someaction = (
+ skipspace * C((1 - (skipspace * (semicolon + eos + colon)))^1)
+ * colon
+ * skipspace * C((1 - (skipspace * (semicolon + eos)))^0)
+ * Carg(1) / function(k,v,a) a[k] = v end
+ + (p_space + semicolon)^1
+ )^1
+
local function handlechains(c)
if tags[c.tg] then
local at = c.at
local dt = c.dt
if at and dt then
- -- at["inkscape:connector-curvature"] = nil -- cleare entry and might prevent table growth
+ -- at["inkscape:connector-curvature"] = nil -- clear entry and might prevent table growth
local estyle = rawget(at,"style")
if estyle and estyle ~= "" then
- for k, v in gmatch(estyle,"%s*([^:]+):%s*([^;]+);?") do
- at[k] = v
- end
+ lpegmatch(someaction,estyle,1,at)
end
local eclass = rawget(at,"class")
if eclass and eclass ~= "" then
diff --git a/tex/context/base/mkxl/mult-sys.mkxl b/tex/context/base/mkxl/mult-sys.mkxl
index 71342e582..26abaf20f 100644
--- a/tex/context/base/mkxl/mult-sys.mkxl
+++ b/tex/context/base/mkxl/mult-sys.mkxl
@@ -349,6 +349,7 @@
\definesystemconstant {SansSlanted}
\definesystemconstant {Sans}
\definesystemconstant {sans}
+\definesystemconstant {scaled}
\definesystemconstant {scriptscript}
\definesystemconstant {script}
\definesystemconstant {sc}
diff --git a/tex/context/base/mkxl/phys-dim.mkxl b/tex/context/base/mkxl/phys-dim.mkxl
index 51ebbe172..c84e7fffa 100644
--- a/tex/context/base/mkxl/phys-dim.mkxl
+++ b/tex/context/base/mkxl/phys-dim.mkxl
@@ -388,6 +388,7 @@
\frozen\protected\def\unitsmediumspace{\medspace}
\frozen\protected\def\unitsbigspace {\thickspace}
\frozen\protected\def\unitsbackspace {\negthinspace}
+\frozen\protected\def\unitsmathspace {\ifmmode\mathatomskip\mathdimensioncode\mathdimensioncode\mathstyle\fi}
\permanent\protected\def\installunitsseparator#1#2%
{\defcsname\??unitseparator#1\endcsname{#2}}
@@ -395,11 +396,12 @@
\protected\def\phys_units_separator
{\ifcsname\??unitseparator\unitparameter\c!separator\endcsname\lastnamedcs\else\cdot\fi}
-\installunitsseparator\v!normal {\cdot}
-\installunitsseparator\v!big {\unitsbigspace}
-\installunitsseparator\v!medium {\unitsmediumspace}
-\installunitsseparator\v!small {\unitssmallspace}
-\installunitsseparator\v!none {}
+\installunitsseparator\v!normal{\cdot}
+\installunitsseparator\v!big {\unitsbigspace}
+\installunitsseparator\v!medium{\unitsmediumspace}
+\installunitsseparator\v!small {\unitssmallspace}
+\installunitsseparator\v!none {}
+\installunitsseparator\v!math {\unitsmathspace}
\permanent\protected\def\installunitsspace#1#2%
{\defcsname\??unitspace#1\endcsname{#2}}
@@ -413,6 +415,7 @@
\installunitsspace\v!medium{\unitsmediumspace}
\installunitsspace\v!small {\unitssmallspace}
\installunitsspace\v!none {}
+\installunitsspace\v!math {\unitsmathspace}
\newtoks \everyunits % we keep the old \units command so we need a longer one
@@ -606,10 +609,37 @@
\permanent\protected\def\unitsN#1%
{\unitsNstart#1\unitsNstop}
+% \def\phys_units_start
+% {\ifmmode
+% \dostarttagged\t!maction\t!unit
+% \bgroup % make an mrow
+% \else
+% \dostarttagged\t!unit\empty
+% \fi
+% \let\phys_units_finish\phys_units_stop
+% \let\phys_units_start\relax}
+%
+% \def\phys_units_stop
+% {\ifconditional\c_phys_units_number
+% \setfalse\c_phys_units_number
+% \dostoptagged
+% \fi
+% \ifconditional\c_phys_units_quantity
+% \setfalse\c_phys_units_quantity
+% \dostoptagged
+% \fi
+% \dostoptagged
+% \ifmmode
+% \egroup
+% \fi}
+
\def\phys_units_start
{\ifmmode
\dostarttagged\t!maction\t!unit
- \bgroup % make an mrow
+ \mathatom
+ \s!leftclass \mathdimensioncode
+ \s!rightclass \mathordinarycode
+ \bgroup
\else
\dostarttagged\t!unit\empty
\fi
diff --git a/tex/context/base/mkxl/spac-hor.mkxl b/tex/context/base/mkxl/spac-hor.mkxl
index 9bde93997..0773b042a 100644
--- a/tex/context/base/mkxl/spac-hor.mkxl
+++ b/tex/context/base/mkxl/spac-hor.mkxl
@@ -530,16 +530,40 @@
\enforced\let\ \space
\to \everysimplifycommands
-\newsignal\d_spac_keep_unwanted_space_signal
+% \newsignal\d_spac_keep_unwanted_space_signal
+%
+% % \parindentmode\plusone
+%
+% \permanent\protected\def\keepunwantedspaces
+% {\ifhmode
+% \ifdim\lastskip=\d_spac_keep_unwanted_space_signal\else
+% \hskip\d_spac_keep_unwanted_space_signal\relax
+% \fi
+% \fi}
+%
+% \permanent\protected\def\removeunwantedspaces
+% {\ifhmode
+% \expandafter \spac_helpers_remove_unwantedspace
+% \fi}
+%
+% \def\spac_helpers_remove_unwantedspace
+% {\ifnum\lastnodetype=\gluenodecode\relax
+% \ifnum\lastnodesubtype=\indentskipsubtypecode\relax
+% % keep parindent
+% \orelse\ifdim\lastskip=\d_spac_keep_unwanted_space_signal\relax
+% \unskip
+% \else
+% \unskip
+% \doubleexpandafter\spac_helpers_remove_unwantedspace
+% \fi
+% \fi}
-% \parindentmode\plusone
+\newboundary\c_spac_keepspaces_boundary
\permanent\protected\def\keepunwantedspaces
- {\ifhmode
- \ifdim\lastskip=\d_spac_keep_unwanted_space_signal\else
- \hskip\d_spac_keep_unwanted_space_signal\relax
- \fi
- \fi}
+ {\ifhmode\ifnum\lastboundary=\c_spac_keepspaces_boundary\else
+ \boundary\c_spac_keepspaces_boundary
+ \fi\fi}
\permanent\protected\def\removeunwantedspaces
{\ifhmode
@@ -547,15 +571,15 @@
\fi}
\def\spac_helpers_remove_unwantedspace
- {\ifnum\lastnodetype=\gluenodecode\relax
- \ifnum\lastnodesubtype=\indentskipsubtypecode\relax
- % keep parindent
- \orelse\ifdim\lastskip=\d_spac_keep_unwanted_space_signal\relax
- \unskip
- \else
- \unskip
- \doubleexpandafter\spac_helpers_remove_unwantedspace
- \fi
+ {\ifnum\lastboundary=\c_spac_keepspaces_boundary
+ \expandafter\unboundary
+ \orunless\ifnum\lastnodetype=\gluenodecode
+ % no skip
+ \orelse\ifnum\lastnodesubtype=\indentskipsubtypecode
+ % keep parindent
+ \else
+ \unskip
+ \expandafter\spac_helpers_remove_unwantedspace
\fi}
\permanent\protected\def\onlynonbreakablespace
@@ -1183,33 +1207,40 @@
%D \oeps}
%D \stoptyping
-\newsignal\d_spac_ignore_spaces_signal
-\newcount \c_spac_ignore_spaces
+% \newsignal\d_spac_ignore_spaces_signal
+% \newcount \c_spac_ignore_spaces
+%
+% \permanent\protected\def\startignorespaces
+% {\advance\c_spac_ignore_spaces\plusone
+% \ifcase\c_spac_ignore_spaces\or \ifhmode
+% \hskip\d_spac_ignore_spaces_signal
+% \fi \fi
+% \ignorespaces}
+%
+% \permanent\protected\def\stopignorespaces
+% {\ifcase\c_spac_ignore_spaces \or
+% \ifhmode
+% \doloop\spac_ignore_spaces_body
+% \fi
+% \fi
+% \advance\c_spac_ignore_spaces\minusone}
+%
+% \def\spac_ignore_spaces_body
+% {\ifzeropt\lastskip
+% \exitloop
+% \orelse\ifdim\lastskip=\d_spac_ignore_spaces_signal
+% \unskip
+% \exitloop
+% \else
+% \unskip
+% \fi}
\permanent\protected\def\startignorespaces
- {\advance\c_spac_ignore_spaces\plusone
- \ifcase\c_spac_ignore_spaces\or \ifhmode
- \hskip\d_spac_ignore_spaces_signal
- \fi \fi
- \ignorespaces}
+ {\pushmacro\nospaces
+ \nospaces\plusone}
\permanent\protected\def\stopignorespaces
- {\ifcase\c_spac_ignore_spaces \or
- \ifhmode
- \doloop\spac_ignore_spaces_body
- \fi
- \fi
- \advance\c_spac_ignore_spaces\minusone}
-
-\def\spac_ignore_spaces_body
- {\ifzeropt\lastskip
- \exitloop
- \orelse\ifdim\lastskip=\d_spac_ignore_spaces_signal
- \unskip
- \exitloop
- \else
- \unskip
- \fi}
+ {\popmacro\nospaces}
%D \macros
%D {obeyfollowingtoken}
diff --git a/tex/context/base/mkxl/spac-ver.mkxl b/tex/context/base/mkxl/spac-ver.mkxl
index 1db2c8b06..2aff966bc 100644
--- a/tex/context/base/mkxl/spac-ver.mkxl
+++ b/tex/context/base/mkxl/spac-ver.mkxl
@@ -1076,76 +1076,6 @@
\permanent\protected\def\rightboundary {\protrusionboundary\plustwo}
\permanent\protected\def\signalcharacter{\boundary\plusone\char\zerocount\boundary\plustwo} % not the same as strut signals
-%D We no longer need these sigstruts:
-%
-% \newsignal\d_spac_struts_signal \setfalse\sigstruts
-%
-% \permanent\protected\def\begstrut
-% {\relax\ifcase\strutht
-% % \ignorespaces % maybe
-% \else
-% \expandafter\spac_struts_beg
-% \fi}
-%
-% \def\spac_struts_beg
-% {\ifconditional\sigstruts
-% \spac_struts_beg_signal
-% \else
-% \spac_struts_beg_normal
-% \fi
-% \ignorespaces}
-%
-% \def\spac_struts_beg_signal
-% {\noindent\horizontalstrut
-% \penalty\plustenthousand
-% \hskip-\d_spac_struts_signal
-% \hskip\d_spac_struts_signal}
-%
-% \def\spac_struts_beg_normal
-% {\boundary\plusone
-% \strut
-% %\boundary\plusone
-% \penalty\plustenthousand
-% %\boundary\plusone
-% \hskip\zeropoint}
-%
-% \permanent\protected\def\endstrut
-% {\relax\ifhmode
-% \ifcase\strutht
-% % \removeunwantedspaces % maybe
-% \else
-% \spac_struts_end
-% \fi
-% \fi}
-%
-% \def\spac_struts_end
-% {\ifconditional\sigstruts
-% \spac_struts_end_signal
-% \else
-% \spac_struts_end_normal
-% \fi}
-%
-% \def\spac_struts_end_signal
-% {\ifdim\lastskip=\d_spac_struts_signal
-% \unskip
-% \unskip
-% \unpenalty
-% \setbox\scratchbox\lastbox
-% \else
-% \penalty\plustenthousand
-% \hskip\zeropoint
-% \strut
-% \fi}
-%
-% \def\spac_struts_end_normal
-% {\removeunwantedspaces
-% \penalty\plustenthousand
-% %\boundary\plustwo
-% \hskip\zeropoint
-% %\boundary\plustwo
-% \strut
-% \boundary\plustwo}
-
%D \starttyping
%D $ \ifhmode H1\fi x \ifhmode H2\fi $\par
%D $ \ifmmode M1\fi x \ifmmode M2\fi $\par
diff --git a/tex/context/base/mkxl/strc-itm.mklx b/tex/context/base/mkxl/strc-itm.mklx
index 96e98e769..db6bdadf3 100644
--- a/tex/context/base/mkxl/strc-itm.mklx
+++ b/tex/context/base/mkxl/strc-itm.mklx
@@ -209,7 +209,7 @@
\newconditional\c_strc_itemgroups_optimize \settrue\c_strc_itemgroups_optimize
\newconditional\c_strc_itemgroups_auto_concat \settrue\c_strc_itemgroups_auto_concat
-\newsignal \d_strc_itemgroups_signal
+\newboundary \c_strc_itemgroups_boundary
\newbox \b_strc_itemgroups
@@ -849,7 +849,7 @@
%
% \ifhmode
% \ifconditional\c_strc_itemgroups_auto_concat
-% \ifdim\lastskip=\d_strc_itemgroups_signal
+% \ifnum\lastboundary=\c_strc_itemgroups_boundary
% \settrue\c_strc_itemgroups_concat
% \fi
% \fi
@@ -883,7 +883,7 @@
%
\ifhmode
\ifconditional\c_strc_itemgroups_auto_concat
- \ifdim\lastskip=\d_strc_itemgroups_signal
+ \ifnum\lastboundary=\c_strc_itemgroups_boundary
\settrue\c_strc_itemgroups_concat
\fi
\fi
@@ -1196,7 +1196,7 @@
\begstrut % \strut
\nobreak % else problems with intext items
\seteffectivehsize % NEW !
- \hskip\d_strc_itemgroups_signal % concat
+ \boundary\c_strc_itemgroups_boundary % was signal
\itemgroupparameter\c!command}
\protected\permanent\def\stopitemgroupitem
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 709ef7ac4..98c64205b 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -887,12 +887,15 @@
% {\mathatom \s!leftclass \mathendcode \s!rightclass \mathbegincode{}\noatomruling}
{\mathatom \s!class \mathbegincode{}\noatomruling}
+% maybe: \newboundary \c_strc_math_align_boundary
+
+\defineboundary[mathalign] % this one is also used at the lua end
+
\protected\def\strc_math_align_here
{\ifmmode
% we can have a more dedicated value, and also maybe store the class so that we can
% pick it up at the engine end (second pass)
-% \boundary\plusone
- \boundary314\relax
+ \boundary\c_bndr_mathalign
\fi}
\protected\def\strc_math_break_here
diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx
index 34f74dd68..f6de80efe 100644
--- a/tex/context/base/mkxl/strc-not.mklx
+++ b/tex/context/base/mkxl/strc-not.mklx
@@ -511,7 +511,7 @@
\ifconditional\c_strc_notes_skip
\global\setfalse\c_strc_notes_skip
\else
- \kern\d_strc_notes_signal\relax % \relax is needed to honor spaces
+ \boundary\noteboundary
\fi}
%D Interaction in notes is somewhat complex due to the way notes get flushed. In
@@ -708,7 +708,8 @@
\removeunwantedspaces
\doifelseitalic\/\donothing % Charles IV \footnote{the fourth}
\fi
- \ifdim\lastkern=\d_strc_notes_signal
+ \ifnum\lastboundary=\noteboundary
+ \unboundary
% \kern\noteparameter\c!distance % yes or no note font? or main text
\strc_notes_inject_separator
\fi
@@ -731,7 +732,8 @@
\protected\def\strc_notes_inject_dummy % temp hack
{\removeunwantedspaces
\doifelseitalic\/\donothing % Charles IV \footnote{the fourth}
- \ifdim\lastkern=\d_strc_notes_signal
+ \ifnum\lastboundary=\noteboundary
+ \unboundary
% \kern\noteparameter\c!distance % yes or no note font? or main text
\strc_notes_inject_separator
\fi
@@ -1316,7 +1318,7 @@
\installstructurelistprocessor{construction}{\usestructurelistprocessor{section}}
-\newsignal\d_strc_notes_signal
+\newboundary\noteboundary
\newconditional\processingnote
\newconditional\postponednote
diff --git a/tex/context/base/mkxl/strc-sec.mkxl b/tex/context/base/mkxl/strc-sec.mkxl
index 0776249fa..cb897d906 100644
--- a/tex/context/base/mkxl/strc-sec.mkxl
+++ b/tex/context/base/mkxl/strc-sec.mkxl
@@ -1147,11 +1147,11 @@
\newcount \c_strc_sectioning_preceding_level \c_strc_sectioning_preceding_level\plusone
\newconditional\c_strc_sectioning_auto_break \settrue\c_strc_sectioning_auto_break
\newconditional\c_strc_sectioning_ignore_page
-\newsignal \d_strc_sectioning_continuous_signal
+\newboundary \c_strc_sectioning_boundary
\protected\def\strc_sectioning_inject_continuous_signal
{\ifhmode
- \hskip\d_strc_sectioning_continuous_signal\relax
+ \boundary\c_strc_sectioning_boundary
\fi}
% \let\dotagsectionlevel\relax
@@ -1184,7 +1184,7 @@
{\ifhmode
\scratchcounter\lastpenalty
\unpenalty % no beauty in this
- \ifdim\lastskip=\d_strc_sectioning_continuous_signal
+ \ifnum\lastboundary=\c_strc_sectioning_boundary
% no page break
\ifconditional\c_strc_sectioning_ignore_page
\setfalse\c_strc_sectioning_ignore_page
diff --git a/tex/context/base/mkxl/supp-mat.mkxl b/tex/context/base/mkxl/supp-mat.mkxl
index 680f4ea37..ef72e0e9a 100644
--- a/tex/context/base/mkxl/supp-mat.mkxl
+++ b/tex/context/base/mkxl/supp-mat.mkxl
@@ -125,36 +125,36 @@
%D
%D REPLACED (keep commented):
-\newsignal\dimensionsignal
-
-\mutable\def\dimensiontypeface {\tf}
-\mutable\def\dimensionhalfspace {\,}
-
-\aliased\let\dodimensionsignal\relax
-
-\permanent\protected\def\dimension#1%
- {\pushmacro\dodimensionsignal
- \enforced\gdef\dodimensionsignal{\kern\dimensionsignal}%
- \ifzeropt\lastskip
- \ifzeropt\lastkern
- \ifmmode
- \mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
- \else
- \mathematics{\dimensiontypeface#1}%
- \fi
- \orelse\ifdim\lastkern=\dimensionsignal
- \mathematics{\dimensionhalfspace\dimensiontypeface#1}%
- \else
- \unkern\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
- \fi
- \else
- \unskip\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
- \fi
- \dodimensionsignal
- \popmacro\dodimensionsignal}
-
-\permanent\protected\def\nodimension#1%
- {\unskip#1\enforced\glet\dodimensionsignal\relax}
+% \newsignal\dimensionsignal
+%
+% \mutable\def\dimensiontypeface {\tf}
+% \mutable\def\dimensionhalfspace {\,}
+%
+% \aliased\let\dodimensionsignal\relax
+%
+% \permanent\protected\def\dimension#1%
+% {\pushmacro\dodimensionsignal
+% \enforced\gdef\dodimensionsignal{\kern\dimensionsignal}%
+% \ifzeropt\lastskip
+% \ifzeropt\lastkern
+% \ifmmode
+% \mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+% \else
+% \mathematics{\dimensiontypeface#1}%
+% \fi
+% \orelse\ifdim\lastkern=\dimensionsignal
+% \mathematics{\dimensionhalfspace\dimensiontypeface#1}%
+% \else
+% \unkern\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+% \fi
+% \else
+% \unskip\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+% \fi
+% \dodimensionsignal
+% \popmacro\dodimensionsignal}
+%
+% \permanent\protected\def\nodimension#1%
+% {\unskip#1\enforced\glet\dodimensionsignal\relax}
% experiment, not yet to be used
diff --git a/tex/context/base/mkxl/trac-vis.lmt b/tex/context/base/mkxl/trac-vis.lmt
index 13d043a93..d277095a3 100644
--- a/tex/context/base/mkxl/trac-vis.lmt
+++ b/tex/context/base/mkxl/trac-vis.lmt
@@ -143,20 +143,21 @@ local modes = {
mathglue = 0x1000000,
mark = 0x2000000,
insert = 0x4000000,
+ boundary = 0x8000000,
}
visualizers.modes = modes
local usedfont, exheight, emwidth
local l_penalty, l_glue, l_kern, l_fontkern, l_hbox, l_vbox, l_vtop, l_strut, l_whatsit, l_glyph, l_user, l_math, l_marginkern, l_mathkern, l_mathshape, l_italic, l_origin, l_discretionary, l_expansion, l_line, l_space, l_depth,
- l_dir, l_whatsit, l_mark, l_insert
+ l_dir, l_whatsit, l_mark, l_insert, l_boundary
local enabled = false
local layers = { }
local preset_boxes = modes.hbox + modes.vbox + modes.vtop + modes.origin
local preset_makeup = preset_boxes
- + modes.kern + modes.glue + modes.penalty
+ + modes.kern + modes.glue + modes.penalty + modes.boundary
local preset_all = preset_makeup
+ modes.fontkern + modes.marginkern + modes.mathkern
+ modes.whatsit + modes.glyph + modes.user + modes.math
@@ -218,6 +219,7 @@ local function initialize()
l_par = layers.par
l_mark = layers.mark
l_insert = layers.insert
+ l_boundary = layers.boundary
--
if not userrule then
userrule = nuts.rules.userrule
@@ -608,7 +610,7 @@ local ruledinsert do
local si_cache = setmetatableindex(caches["insert"], function(f,index)
local info = sometext(formatters["SI:%i"](index),usedfont,nil,"trace:w") -- whatsit
setattr(info,a_layer,l_insert)
- i_cache[index] = info
+ si_cache[index] = info
end)
ruledinsert = function(head,current)
@@ -665,6 +667,34 @@ local ruledwhatsit do
end
+local ruledboundary do
+
+ local boundarycodes = nodes.boundarycodes
+ local b_cache = caches["boundary"]
+
+ local tags = {
+ [boundarycodes.cancel] = "CAN",
+ [boundarycodes.user] = "USR",
+ [boundarycodes.protrusion] = "PRO",
+ [boundarycodes.word] = "WRD",
+ }
+
+ ruledboundary = function(head,current)
+ local what = getsubtype(current)
+ local info = b_cache[what]
+ if info then
+ -- print("hit whatsit")
+ else
+ info = sometext(formatters["B:%s"](tags[what] or what),usedfont,nil,"trace:w")
+ setattr(info,a_layer,l_boundary)
+ b_cache[what] = info
+ end
+ head, current = insertnodeafter(head,current,copylist(info))
+ return head, current
+ end
+
+end
+
local ruleddir, ruledpar do
local dircodes = nodes.dircodes
@@ -1396,6 +1426,7 @@ do
local mark_code = nodecodes.mark
local insert_code = nodecodes.insert
local rule_code = nodecodes.rule
+ local boundary_code = nodecodes.boundary
local kerncodes = nodes.kerncodes
local fontkern_code = kerncodes.fontkern
@@ -1455,6 +1486,7 @@ do
local trace_mathglue = false
local trace_mark = false
local trace_insert = false
+ local trace_boundary = false
local current = head
local previous = nil
local attr = unsetvalue
@@ -1499,6 +1531,7 @@ do
trace_mathglue = false
trace_mark = false
trace_insert = false
+ trace_boundary = false
if id == kern_code then
goto kern
else
@@ -1533,6 +1566,7 @@ do
trace_mathglue = a & 0x1000000 ~= 0
trace_mark = a & 0x2000000 ~= 0
trace_insert = a & 0x4000000 ~= 0
+ trace_boundary = a & 0x8000000 ~= 0
end
elseif a == unsetvalue then
goto list
@@ -1604,6 +1638,10 @@ do
if trace_insert then
head, current = ruledinsert(head,current)
end
+ elseif id == boundary_code then
+ if trace_boundary then
+ head, current = ruledboundary(head,current)
+ end
end
goto next
::glue::
diff --git a/tex/context/base/mkxl/typo-cap.mkxl b/tex/context/base/mkxl/typo-cap.mkxl
index 744b09a47..0a6867a43 100644
--- a/tex/context/base/mkxl/typo-cap.mkxl
+++ b/tex/context/base/mkxl/typo-cap.mkxl
@@ -73,7 +73,10 @@
% test \word{test TEST \TeX} test
% test \Word{test TEST \TeX} test
-\permanent\protected\def\setcharactercasing[#1]{\clf_setcharactercasing{#1}} % can be public implementor
+\permanent\tolerant\protected\def\setcharactercasing[#1]{\clf_setcharactercasing{#1}} % can be public implementor
+
+\protected\def\casing[#1]{\groupedcommand{\clf_setcharactercasing{#1}}{}}
+\protected\def\nocasing {\groupedcommand{\clf_setcharactercasing {}}{}}
\protected\def\typo_capitale_WORD {\clf_setcharactercasing\v!WORD }
\protected\def\typo_capitale_word {\clf_setcharactercasing\v!word }
diff --git a/tex/context/base/mkxl/typo-del.mkxl b/tex/context/base/mkxl/typo-del.mkxl
index f322b4f48..5b8431070 100644
--- a/tex/context/base/mkxl/typo-del.mkxl
+++ b/tex/context/base/mkxl/typo-del.mkxl
@@ -142,7 +142,6 @@
[\c!rightsubsentence]
[\rightboundarycharacter\c!rightsubsentence{sentence}]
-\newsignal\d_typo_subsentence_signal
\newcount \c_typo_subsentence_nesting
\mutable\let\beforesubsentence\donothing % maybe just a parameter
@@ -171,10 +170,12 @@
\symbol[\c!midsentence]%
\dostoptagged}
+\newboundary\c_typo_subsentence_boundary
+
\permanent\protected\def\beginofsubsentence
{\beforesubsentence
- \ifdim\lastkern=\d_typo_subsentence_signal
- \unskip
+ \ifnum\lastboundary=\c_typo_subsentence_boundary
+ \unboundary
\kern\hspaceamount\currentusedlanguage{intersentence}%
\fi
\global\advance\c_typo_subsentence_nesting\plusone
@@ -199,15 +200,15 @@
\dostoptagged
\global\advance\c_typo_subsentence_nesting\minusone
\unskip
- \kern\d_typo_subsentence_signal\relax
+ \boundary\c_typo_subsentence_boundary
\aftersubsentence}
\permanent\protected\def\beginofsubsentencespacing % relax prevents space gobbling
- {\kern\d_typo_subsentence_signal\relax}% \ignorespaces}
+ {\boundary\c_typo_subsentence_boundary}% \ignorespaces}
\permanent\protected\def\endofsubsentencespacing
- {\ifdim\lastkern=\d_typo_subsentence_signal
- \unskip
+ {\ifnum\lastboundary=\c_typo_subsentence_boundary
+ \unboundary
\hskip\hspaceamount\currentusedlanguage{intersentence}%
% no good, actually language dependent:
% \ignorespaces
@@ -286,8 +287,6 @@
%D could be build on top of it. The speech opening and closing symbols are defined
%D per language. Italian is an example of a language that has them set.
-\newsignal\d_typo_delimited_signal
-
\mutable\let\currentdelimitedtext \s!unknown
\mutable\let\currentparentdelimitedtext\currentdelimitedtext
@@ -711,14 +710,16 @@
% even in \MKII. Maybe we should to this in \LUA. Only Italian has the
% middlespeech parameter set.
+\newboundary\c_typo_delimited_boundary
+
\def\typo_delimited_handle_middle#1% special case
{\ifconditional\c_typo_delimited_repeating
\begingroup
\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor
\setbox\scratchbox\hbox{\delimitedtextparameter#1}%
\ifdim\wd\scratchbox>\zeropoint
- \ifdim\lastkern=\d_typo_delimited_signal
- \unkern
+ \ifnum\lastboundary=\c_typo_delimited_boundary
+ \unboundary
\hskip\hspaceamount\currentusedlanguage{interquotation}%
\else % maybe an option:
%\edef\p_delimited_margin{\delimitedtextparameter\c!location}%
@@ -732,7 +733,7 @@
\delimitedtextparameter#1% unhbox\scratchbox
\dostoptagged
% \penalty\plustenthousand % else overfull boxes, but that's better than dangling periods
- \kern\d_typo_delimited_signal % +- \prewordbreak
+ \boundary\c_typo_delimited_boundary
\fi
\endgroup
\else
@@ -744,11 +745,8 @@
\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor
\setbox\scratchbox\hbox{\delimitedtextparameter#1}%
\ifdim\wd\scratchbox>\zeropoint
- \ifdim\lastkern=\d_typo_delimited_signal
- \unkern
- \hskip\hspaceamount\currentusedlanguage{interquotation}%
- \orelse\ifdim\lastskip=\d_typo_delimited_signal
- \unskip
+ \ifnum\lastboundary=\c_typo_delimited_boundary
+ \unboundary
\hskip\hspaceamount\currentusedlanguage{interquotation}%
\fi
% \strut % new, needed below
@@ -762,7 +760,7 @@
\delimitedtextparameter#1% unhbox\scratchbox
\dostoptagged
\penalty\plustenthousand % new per 2013-03-09 WS mailing list
- \hskip\d_typo_delimited_signal % +- \prewordbreak
+ \boundary\c_typo_delimited_boundary
\fi
\endgroup}
@@ -771,12 +769,8 @@
\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor
\setbox\scratchbox\hbox{\delimitedtextparameter#1}%
\ifdim\wd\scratchbox>\zeropoint
- \ifdim\lastkern=\d_typo_delimited_signal
- \unkern
- \penalty\plustenthousand
- \hskip\hspaceamount\currentusedlanguage{interquotation}%
- \orelse\ifdim\lastskip=\d_typo_delimited_signal
- \unskip
+ \ifnum\lastboundary=\c_typo_delimited_boundary
+ \unboundary
\penalty\plustenthousand
\hskip\hspaceamount\currentusedlanguage{interquotation}%
\fi
@@ -789,7 +783,7 @@
\dotagsetdelimitedsymbol\s!right
\delimitedtextparameter#1% unhbox\scratchbox
\dostoptagged
- \kern\d_typo_delimited_signal % +- \prewordbreak
+ \boundary\c_typo_delimited_boundary
\fi
\endgroup}
diff --git a/tex/context/fonts/mkiv/type-imp-ebgaramond.mkiv b/tex/context/fonts/mkiv/type-imp-ebgaramond.mkiv
index 03bb91989..32c1528ad 100644
--- a/tex/context/fonts/mkiv/type-imp-ebgaramond.mkiv
+++ b/tex/context/fonts/mkiv/type-imp-ebgaramond.mkiv
@@ -72,8 +72,8 @@
\starttypescript[ebgaramond]
\definetypeface [ebgaramond] [\s!rm] [\s!serif] [ebgaramond] [\s!default]
- \definetypeface [ebgaramond] [\s!tt] [\s!mono] [dejavu] [\s!default] [\s!rscale=0.8] % rather arbitrary but seldom mixed anyway
- % \definetypeface [ebgaramond] [\s!mm] [\s!math] [bonum] [\s!default] [\s!rscale=0.8] % rather arbitrary but seldom mixed anyway
+ \definetypeface [ebgaramond] [\s!tt] [\s!mono] [dejavu] [\s!default] [\s!rscale=0.8]
+ % \definetypeface [ebgaramond] [\s!mm] [\s!math] [bonum] [\s!default] [\s!rscale=0.8]
\definetypeface [ebgaramond] [\s!mm] [\s!math] [ebgaramond] [\s!default]
\stoptypescript
diff --git a/tex/context/fonts/mkxl/bhai.lfg b/tex/context/fonts/mkxl/bhai.lfg
index ab309e0b8..7356f6255 100644
--- a/tex/context/fonts/mkxl/bhai.lfg
+++ b/tex/context/fonts/mkxl/bhai.lfg
@@ -1,7 +1,7 @@
return {
name = "bhai",
version = "1.00",
- comment = "Goodies that complement shobhika.",
+ comment = "Goodies that complement bhai.",
author = "Hans Hagen & Sreeram",
copyright = "ConTeXt development team",
sanitizers = {
@@ -20,8 +20,6 @@ return {
-- ["ઙૈ્ર"] = "ઙ્રૈ",
["ચે્ર"] = "ચ્રે",
["ચૈ્ર"] = "ચ્રૈ",
- ["છે્ર"] = "છ્રે",
- ["છૈ્ર"] = "છ્રૈ",
["જે્ર"] = "જ્રે",
["જૈ્ર"] = "જ્રૈ",
["ઝે્ર"] = "ઝ્રે",
diff --git a/tex/context/fonts/mkxl/shobhika.lfg b/tex/context/fonts/mkxl/shobhika.lfg
index f9b7dc433..ae5473d72 100644
--- a/tex/context/fonts/mkxl/shobhika.lfg
+++ b/tex/context/fonts/mkxl/shobhika.lfg
@@ -5,7 +5,7 @@ return {
author = "Hans Hagen & Sreeram",
copyright = "ConTeXt development team",
sanitizers = {
- dev2rkrf = {
+ dev2rkrf = {
mapping = {
["के्र"] = "क्रे",
["कै्र"] = "क्रै",
@@ -20,8 +20,6 @@ return {
-- ["ङै्र"] = "ङ्रै",
["चे्र"] = "च्रे",
["चै्र"] = "च्रै",
- ["छे्र"] = "छ्रे",
- ["छै्र"] = "छ्रै",
["जे्र"] = "ज्रे",
["जै्र"] = "ज्रै",
["झे्र"] = "झ्रे",
diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml
index 681e1282f..2ff113ecd 100644
--- a/tex/context/interface/mkii/keys-de.xml
+++ b/tex/context/interface/mkii/keys-de.xml
@@ -284,7 +284,6 @@
<cd:variable name='inright' value='imrechten'/>
<cd:variable name='inrightedge' value='imrechtenrand'/>
<cd:variable name='inrightmargin' value='inrechtermarginale'/>
- <cd:variable name='integral' value='integral'/>
<cd:variable name='interaction' value='interaktion'/>
<cd:variable name='interactionmenu' value='interaktionsmenue'/>
<cd:variable name='interactive' value='interactive'/>
@@ -648,6 +647,7 @@
<cd:constants>
<cd:constant name='action' value='aktion'/>
+ <cd:constant name='adaptive' value='adaptive'/>
<cd:constant name='address' value='adresse'/>
<cd:constant name='after' value='nach'/>
<cd:constant name='afterhead' value='nachkopf'/>
@@ -722,6 +722,7 @@
<cd:constant name='bottom' value='unten'/>
<cd:constant name='bottomafter' value='bottomafter'/>
<cd:constant name='bottombefore' value='bottombefore'/>
+ <cd:constant name='bottomcolor' value='bottomcolor'/>
<cd:constant name='bottomcommand' value='bottomcommand'/>
<cd:constant name='bottomdistance' value='abstandunten'/>
<cd:constant name='bottomframe' value='untenrahmen'/>
@@ -893,6 +894,7 @@
<cd:constant name='header' value='kopfzeile'/>
<cd:constant name='headerdistance' value='kopfzeilenabstand'/>
<cd:constant name='headerstate' value='kopfzeilenstatus'/>
+ <cd:constant name='headindenting' value='headindenting'/>
<cd:constant name='headlabel' value='headlabel'/>
<cd:constant name='headnumber' value='kopfnummer'/>
<cd:constant name='headseparator' value='headseparator'/>
@@ -924,6 +926,7 @@
<cd:constant name='inputfile' value='inputfile'/>
<cd:constant name='insidesection' value='insidesection'/>
<cd:constant name='instance' value='instance'/>
+ <cd:constant name='integral' value='integral'/>
<cd:constant name='intent' value='intent'/>
<cd:constant name='interaction' value='interaktion'/>
<cd:constant name='interlinespace' value='zeilenabstande'/>
@@ -966,6 +969,7 @@
<cd:constant name='leftquote' value='linkerzitieren'/>
<cd:constant name='leftsample' value='leftsample'/>
<cd:constant name='leftsentence' value='linkersatz'/>
+ <cd:constant name='leftsource' value='leftsource'/>
<cd:constant name='leftspeech' value='leftspeech'/>
<cd:constant name='leftstyle' value='linkerstil'/>
<cd:constant name='leftsubsentence' value='linkersubsatz'/>
@@ -998,7 +1002,9 @@
<cd:constant name='marstyle' value='beschrstil'/>
<cd:constant name='mask' value='mask'/>
<cd:constant name='mathclass' value='mathclass'/>
+ <cd:constant name='mathdenominatorstyle' value='mathdenominatorstyle'/>
<cd:constant name='mathlimits' value='mathlimits'/>
+ <cd:constant name='mathnumeratorstyle' value='mathnumeratorstyle'/>
<cd:constant name='mathstyle' value='mathstyle'/>
<cd:constant name='max' value='max'/>
<cd:constant name='maxdepth' value='maxdepth'/>
@@ -1010,6 +1016,7 @@
<cd:constant name='middle' value='mittig'/>
<cd:constant name='middlecolor' value='middlecolor'/>
<cd:constant name='middlecommand' value='middlecommand'/>
+ <cd:constant name='middlesource' value='middlesource'/>
<cd:constant name='middlespeech' value='middlespeech'/>
<cd:constant name='middlestyle' value='middlestyle'/>
<cd:constant name='middletext' value='mittigertext'/>
@@ -1182,6 +1189,7 @@
<cd:constant name='rightquote' value='rechterzitieren'/>
<cd:constant name='rightsample' value='rightsample'/>
<cd:constant name='rightsentence' value='rechtersatz'/>
+ <cd:constant name='rightsource' value='rightsource'/>
<cd:constant name='rightspeech' value='rightspeech'/>
<cd:constant name='rightstyle' value='rechterstil'/>
<cd:constant name='rightsubsentence' value='rechtersubsatz'/>
@@ -1233,6 +1241,8 @@
<cd:constant name='small' value='klein'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='solution'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='sorttype'/>
@@ -1317,6 +1327,7 @@
<cd:constant name='toffset' value='toffset'/>
<cd:constant name='tolerance' value='toleranz'/>
<cd:constant name='top' value='oben'/>
+ <cd:constant name='topcolor' value='topcolor'/>
<cd:constant name='topcommand' value='topcommand'/>
<cd:constant name='topdistance' value='obenabstand'/>
<cd:constant name='topframe' value='obenrahmen'/>
diff --git a/tex/context/interface/mkii/keys-en.xml b/tex/context/interface/mkii/keys-en.xml
index cf545b6eb..9533b43f6 100644
--- a/tex/context/interface/mkii/keys-en.xml
+++ b/tex/context/interface/mkii/keys-en.xml
@@ -647,6 +647,7 @@
<cd:constants>
<cd:constant name='action' value='action'/>
+ <cd:constant name='adaptive' value='adaptive'/>
<cd:constant name='address' value='address'/>
<cd:constant name='after' value='after'/>
<cd:constant name='afterhead' value='afterhead'/>
@@ -1240,6 +1241,8 @@
<cd:constant name='small' value='small'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='solution'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='sorttype'/>
diff --git a/tex/context/interface/mkii/keys-it.xml b/tex/context/interface/mkii/keys-it.xml
index 0143786fa..8a2dc7180 100644
--- a/tex/context/interface/mkii/keys-it.xml
+++ b/tex/context/interface/mkii/keys-it.xml
@@ -284,7 +284,6 @@
<cd:variable name='inright' value='indestra'/>
<cd:variable name='inrightedge' value='inlatodestro'/>
<cd:variable name='inrightmargin' value='inmarginedestro'/>
- <cd:variable name='integral' value='integral'/>
<cd:variable name='interaction' value='interazione'/>
<cd:variable name='interactionmenu' value='menuinterattivo'/>
<cd:variable name='interactive' value='interactive'/>
@@ -648,6 +647,7 @@
<cd:constants>
<cd:constant name='action' value='azione'/>
+ <cd:constant name='adaptive' value='adaptive'/>
<cd:constant name='address' value='indirizzo'/>
<cd:constant name='after' value='dopo'/>
<cd:constant name='afterhead' value='dopotesta'/>
@@ -722,6 +722,7 @@
<cd:constant name='bottom' value='fondo'/>
<cd:constant name='bottomafter' value='bottomafter'/>
<cd:constant name='bottombefore' value='bottombefore'/>
+ <cd:constant name='bottomcolor' value='bottomcolor'/>
<cd:constant name='bottomcommand' value='bottomcommand'/>
<cd:constant name='bottomdistance' value='distanzafondo'/>
<cd:constant name='bottomframe' value='cornicefondo'/>
@@ -925,6 +926,7 @@
<cd:constant name='inputfile' value='inputfile'/>
<cd:constant name='insidesection' value='insidesection'/>
<cd:constant name='instance' value='instance'/>
+ <cd:constant name='integral' value='integral'/>
<cd:constant name='intent' value='intent'/>
<cd:constant name='interaction' value='interazione'/>
<cd:constant name='interlinespace' value='interlinea'/>
@@ -967,6 +969,7 @@
<cd:constant name='leftquote' value='menzionesinistra'/>
<cd:constant name='leftsample' value='leftsample'/>
<cd:constant name='leftsentence' value='frasesinistra'/>
+ <cd:constant name='leftsource' value='leftsource'/>
<cd:constant name='leftspeech' value='leftspeech'/>
<cd:constant name='leftstyle' value='stilesinistra'/>
<cd:constant name='leftsubsentence' value='sottofrasesinistra'/>
@@ -1013,6 +1016,7 @@
<cd:constant name='middle' value='centro'/>
<cd:constant name='middlecolor' value='middlecolor'/>
<cd:constant name='middlecommand' value='middlecommand'/>
+ <cd:constant name='middlesource' value='middlesource'/>
<cd:constant name='middlespeech' value='middlespeech'/>
<cd:constant name='middlestyle' value='middlestyle'/>
<cd:constant name='middletext' value='testocentro'/>
@@ -1185,6 +1189,7 @@
<cd:constant name='rightquote' value='menzionedestra'/>
<cd:constant name='rightsample' value='rightsample'/>
<cd:constant name='rightsentence' value='frasedestra'/>
+ <cd:constant name='rightsource' value='rightsource'/>
<cd:constant name='rightspeech' value='rightspeech'/>
<cd:constant name='rightstyle' value='stiledestra'/>
<cd:constant name='rightsubsentence' value='sottofrasedestra'/>
@@ -1236,6 +1241,8 @@
<cd:constant name='small' value='piccolo'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='solution'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='sorttype'/>
@@ -1320,6 +1327,7 @@
<cd:constant name='toffset' value='toffset'/>
<cd:constant name='tolerance' value='tolleranza'/>
<cd:constant name='top' value='cima'/>
+ <cd:constant name='topcolor' value='topcolor'/>
<cd:constant name='topcommand' value='topcommand'/>
<cd:constant name='topdistance' value='distanzacima'/>
<cd:constant name='topframe' value='cornicecima'/>
diff --git a/tex/context/interface/mkii/keys-nl.xml b/tex/context/interface/mkii/keys-nl.xml
index 01a233a88..e7e05ec5c 100644
--- a/tex/context/interface/mkii/keys-nl.xml
+++ b/tex/context/interface/mkii/keys-nl.xml
@@ -647,6 +647,7 @@
<cd:constants>
<cd:constant name='action' value='actie'/>
+ <cd:constant name='adaptive' value='adaptive'/>
<cd:constant name='address' value='adres'/>
<cd:constant name='after' value='na'/>
<cd:constant name='afterhead' value='kopna'/>
@@ -1240,6 +1241,8 @@
<cd:constant name='small' value='klein'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='oplossing'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='sortering'/>
diff --git a/tex/context/interface/mkii/keys-pe.xml b/tex/context/interface/mkii/keys-pe.xml
index dcda83b79..598b3092c 100644
--- a/tex/context/interface/mkii/keys-pe.xml
+++ b/tex/context/interface/mkii/keys-pe.xml
@@ -647,6 +647,7 @@
<cd:constants>
<cd:constant name='action' value='کنش'/>
+ <cd:constant name='adaptive' value='adaptive'/>
<cd:constant name='address' value='نشانی'/>
<cd:constant name='after' value='بعداز'/>
<cd:constant name='afterhead' value='بعدازسر'/>
@@ -1240,6 +1241,8 @@
<cd:constant name='small' value='کوچک'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='solution'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='ترتیب‌تایپ'/>
diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml
index 32b76a9f5..d15ee78f1 100644
--- a/tex/context/interface/mkii/keys-ro.xml
+++ b/tex/context/interface/mkii/keys-ro.xml
@@ -1241,6 +1241,8 @@
<cd:constant name='small' value='mic'/>
<cd:constant name='smallcapsfeatures' value='smallcapsfeatures'/>
<cd:constant name='smallcapsfont' value='smallcapsfont'/>
+ <cd:constant name='snap' value='snap'/>
+ <cd:constant name='snapstep' value='snapstep'/>
<cd:constant name='solution' value='solution'/>
<cd:constant name='sort' value='sort'/>
<cd:constant name='sorttype' value='sorttype'/>