summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-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-fr.mkii8
-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/lxml-tex.lua2
-rw-r--r--tex/context/base/mkiv/mult-low.lua1
-rw-r--r--tex/context/base/mkiv/mult-prm.lua9
-rw-r--r--tex/context/base/mkiv/scrp-cjk.lua1
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24614 -> 24626 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin258885 -> 259607 bytes
-rw-r--r--tex/context/base/mkxl/attr-ini.lmt10
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/lpdf-lmt.lmt2
-rw-r--r--tex/context/base/mkxl/math-ali.lmt17
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl37
-rw-r--r--tex/context/base/mkxl/math-dif.mkxl9
-rw-r--r--tex/context/base/mkxl/math-fen.mkxl23
-rw-r--r--tex/context/base/mkxl/math-ini.lmt141
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl69
-rw-r--r--tex/context/base/mkxl/math-spa.lmt36
-rw-r--r--tex/context/base/mkxl/math-twk.mkxl22
-rw-r--r--tex/context/base/mkxl/node-nut.lmt6
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl9
-rw-r--r--tex/context/fonts/mkiv/asana-math.lfg7
-rw-r--r--tex/context/fonts/mkiv/bonum-math.lfg64
-rw-r--r--tex/context/fonts/mkiv/cambria-math.lfg18
-rw-r--r--tex/context/fonts/mkiv/dejavu-math.lfg52
-rw-r--r--tex/context/fonts/mkiv/ebgaramond.lfg90
-rw-r--r--tex/context/fonts/mkiv/erewhon-math.lfg38
-rw-r--r--tex/context/fonts/mkiv/garamond-math.lfg35
-rw-r--r--tex/context/fonts/mkiv/kpfonts-math.lfg32
-rw-r--r--tex/context/fonts/mkiv/libertinus-math.lfg38
-rw-r--r--tex/context/fonts/mkiv/lm.lfg38
-rw-r--r--tex/context/fonts/mkiv/lucida-opentype-math.lfg54
-rw-r--r--tex/context/fonts/mkiv/pagella-math.lfg55
-rw-r--r--tex/context/fonts/mkiv/schola-math.lfg54
-rw-r--r--tex/context/fonts/mkiv/stix-two-math.lfg55
-rw-r--r--tex/context/fonts/mkiv/termes-math.lfg56
-rw-r--r--tex/context/interface/mkii/keys-fr.xml8
-rw-r--r--tex/context/modules/mkxl/x-mathml.mkxl39
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
43 files changed, 1097 insertions, 52 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index ab5bc863f..e5eeff7b9 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.08.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 b7cadf7a8..e302eb6f9 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.08.01 20:30}
+\edef\contextversion{2022.08.05 11:40}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-fr.mkii b/tex/context/base/mkii/mult-fr.mkii
index 1c9591d67..0d2c7c424 100644
--- a/tex/context/base/mkii/mult-fr.mkii
+++ b/tex/context/base/mkii/mult-fr.mkii
@@ -870,6 +870,7 @@
\setinterfaceconstant{frameradius}{rayoncadre}
\setinterfaceconstant{frames}{cadres}
\setinterfaceconstant{freeregion}{regionlibre}
+\setinterfaceconstant{freezespacing}{freezespacing}
\setinterfaceconstant{from}{de}
\setinterfaceconstant{functioncolor}{couleurfonction}
\setinterfaceconstant{functionstyle}{stylefonction}
@@ -950,6 +951,7 @@
\setinterfaceconstant{lastpubsep}{sepdernierepub}
\setinterfaceconstant{layout}{miseenpage}
\setinterfaceconstant{left}{gauche}
+\setinterfaceconstant{leftclass}{leftclass}
\setinterfaceconstant{leftcolor}{couleurgauche}
\setinterfaceconstant{leftcompoundhyphen}{traitdunioncomposegauche}
\setinterfaceconstant{leftedge}{bordgauche}
@@ -1008,6 +1010,7 @@
\setinterfaceconstant{menu}{menu}
\setinterfaceconstant{method}{methode}
\setinterfaceconstant{middle}{milieu}
+\setinterfaceconstant{middleclass}{middleclass}
\setinterfaceconstant{middlecolor}{couleurmilieu}
\setinterfaceconstant{middlecommand}{commandemilieu}
\setinterfaceconstant{middlesource}{middlesource}
@@ -1054,6 +1057,8 @@
\setinterfaceconstant{numberconversionset}{jeuconversionnumero}
\setinterfaceconstant{numberdistance}{distancenumero}
\setinterfaceconstant{numbering}{numérotation}
+\setinterfaceconstant{numberlocation}{numberlocation}
+\setinterfaceconstant{numbermethod}{numbermethod}
\setinterfaceconstant{numberorder}{ordrenumero}
\setinterfaceconstant{numberprefix}{prefixenumero}
\setinterfaceconstant{numbersegments}{segmentsnumero}
@@ -1064,6 +1069,7 @@
\setinterfaceconstant{numberstopper}{stoppeurnumero}
\setinterfaceconstant{numberstrut}{entretoisenumero}
\setinterfaceconstant{numberstyle}{stylenumero}
+\setinterfaceconstant{numberthreshold}{numberthreshold}
\setinterfaceconstant{numberwidth}{largeurnumero}
\setinterfaceconstant{nx}{nx}
\setinterfaceconstant{ny}{ny}
@@ -1117,6 +1123,7 @@
\setinterfaceconstant{palet}{palette}
\setinterfaceconstant{paper}{papier}
\setinterfaceconstant{paragraph}{paragraphe}
+\setinterfaceconstant{penalties}{penalties}
\setinterfaceconstant{period}{periode}
\setinterfaceconstant{place}{placer}
\setinterfaceconstant{placehead}{placertete}
@@ -1170,6 +1177,7 @@
\setinterfaceconstant{reverse}{inverser}
\setinterfaceconstant{right}{droite}
\setinterfaceconstant{rightchars}{caracteresdroite}
+\setinterfaceconstant{rightclass}{rightclass}
\setinterfaceconstant{rightcolor}{couleurdroite}
\setinterfaceconstant{rightcompoundhyphen}{traitdunioncomposedroite}
\setinterfaceconstant{rightedge}{borddroit}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 736563f33..493ef50a7 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.08.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 70ef42f89..736cd6e73 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.08.01 20:30}
+\edef\contextversion{2022.08.05 11:40}
%D Kind of special:
diff --git a/tex/context/base/mkiv/lxml-tex.lua b/tex/context/base/mkiv/lxml-tex.lua
index 95fafafac..520797883 100644
--- a/tex/context/base/mkiv/lxml-tex.lua
+++ b/tex/context/base/mkiv/lxml-tex.lua
@@ -2251,7 +2251,7 @@ function lxml.snippet(id,i)
if e then
local dt = e.dt
if dt then
- local dti = dt[i]
+ local dti = dt[tonumber(i)] -- string in lxml
if dti then
xmlsprint(dti,e)
end
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index b20156062..d2097e7b6 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -215,6 +215,7 @@ return {
"checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode",
"flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode",
"carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode",
+ "preferdelimiterdimensionsclassoptioncode",
--
"noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode",
"noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index e935fb40c..ceaa8d5e7 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -106,6 +106,8 @@ return {
"Umathdelimitershortfall",
"Umathdelimiterundervariant",
"Umathdenominatorvariant",
+ "Umathdict",
+ "Umathdictdef",
"Umathextrasubpreshift",
"Umathextrasubprespace",
"Umathextrasubshift",
@@ -227,8 +229,10 @@ return {
"Ustack",
"Ustartdisplaymath",
"Ustartmath",
+ "Ustartmathmode",
"Ustopdisplaymath",
"Ustopmath",
+ "Ustopmathmode",
"Ustyle",
"Usubprescript",
"Usubscript",
@@ -479,6 +483,8 @@ return {
"mathbackwardpenalties",
"mathbeginclass",
"mathcheckfencesmode",
+ "mathdictgroup",
+ "mathdictproperties",
"mathdirection",
"mathdisplaymode",
"mathdisplayskipmode",
@@ -492,6 +498,7 @@ return {
"mathghost",
"mathgluemode",
"mathgroupingmode",
+ "mathinlinemainstyle",
"mathleftclass",
"mathlimitsmode",
"mathmiddle",
@@ -574,6 +581,8 @@ return {
"setdefaultmathcodes",
"setfontid",
"setmathatomrule",
+ "setmathdisplaypostpenalty",
+ "setmathdisplayprepenalty",
"setmathignore",
"setmathoptions",
"setmathpostpenalty",
diff --git a/tex/context/base/mkiv/scrp-cjk.lua b/tex/context/base/mkiv/scrp-cjk.lua
index f9df7ed45..0667e8031 100644
--- a/tex/context/base/mkiv/scrp-cjk.lua
+++ b/tex/context/base/mkiv/scrp-cjk.lua
@@ -695,6 +695,7 @@ local chinese_8 = {
hiragana = stretch_break, -- nobreak_autoshrink_break_stretch,
katakana = stretch_break, -- nobreak_autoshrink_break_stretch,
half_width_open = nobreak_autoshrink_break_stretch_nobreak_autoshrink,
+half_width_open = stretch_break,
half_width_close = nobreak_autoshrink_nobreak_stretch,
full_width_open = nobreak_autoshrink_break_stretch_nobreak_shrink,
full_width_close = nobreak_autoshrink_nobreak_stretch,
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index b900f2fb5..a41240d11 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 776c1f125..aafa04ff5 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/attr-ini.lmt b/tex/context/base/mkxl/attr-ini.lmt
index 059de8fd7..8b2ec8911 100644
--- a/tex/context/base/mkxl/attr-ini.lmt
+++ b/tex/context/base/mkxl/attr-ini.lmt
@@ -216,12 +216,14 @@ function attributes.registervalue(index,value)
-- this can be an option
for i=c[1],c[2] do
if list[i] == nil then
+ -- we avoid 0 because that can be a signal attribute value
+ local n = i == 0 and 1 or i
if trace_values then
- report_value("reusing slot %i for attribute %i in range (%i,%i)",i,index,c[1],c[2])
+ report_value("reusing slot %i for attribute %i in range (%i,%i)",n,index,c[1],c[2])
end
- c[1] = i
- list[i] = value
- return i
+ c[1] = n
+ list[n] = value
+ return n
end
end
else
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index f72bb5f81..f9cc4b1b1 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.08.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 27bbaa46a..f167c0f58 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.08.01 20:30}
+\immutable\edef\contextversion{2022.08.05 11:40}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index cef18529c..7dbbe0cb7 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -1965,7 +1965,7 @@ do
permissions = permissions | 0xF0C3 -- needs work
--
optionlist = { }
- for k, v in table.sortedhash(options) do
+ for k, v in sortedhash(options) do
if permissions & v == v then
optionlist[#optionlist+1] = k
end
diff --git a/tex/context/base/mkxl/math-ali.lmt b/tex/context/base/mkxl/math-ali.lmt
index a84d5a4c4..718975a50 100644
--- a/tex/context/base/mkxl/math-ali.lmt
+++ b/tex/context/base/mkxl/math-ali.lmt
@@ -82,3 +82,20 @@ function mathematics.registersimplematrix(name,action)
useractions[name] = action
end
end
+
+-- \cases{1, x>0 ; -1, x<0 }
+
+interfaces.implement {
+ name = "simplecases",
+ arguments = "2 strings",
+ actions = function(method,data)
+ -- no methods yet
+ local m = lpegmatch(rows,(gsub(data,"%s+"," ")))
+ for i=1,#m do
+ m[i] = lpegmatch(cols,m[i])
+ end
+ for i=1,#m do
+ context("\\NC %{ \\NC }t \\NR",m[i])
+ end
+ end
+}
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index a9e9af722..aaf76c9b1 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -885,6 +885,39 @@
\frozen\instance \defcsname \e!stop \currentmathcases\endcsname{\math_cases_stop}%
\to \everydefinemathcases
+%D Why not \unknown:
+%D
+%D \starttyping
+%D \definemathcases[mycases][simplecommand=mycases]
+%D
+%D \startformula
+%D \startmycases
+%D \NC 1 \NC x>0 \NR
+%D \NC -1 \NC x<0 \NR
+%D \stopmycases
+%D \stopformula
+%D
+%D \startformula
+%D \mycases{1,x>0;-1,x<0}
+%D \stopformula
+%D \stoptyping
+
+\permanent\tolerant\protected\def\math_cases_simple[#1]#*[#2]#:#3%
+ {\begingroup
+ \edef\currentmathcases{#1}%
+ \setupcurrentmathcases[#2]%
+ \math_cases_start[\currentmathcases]%
+ \clf_simplecases{\mathcasesparameter\c!action}{#3}%
+ \math_cases_stop
+ \endgroup}
+
+\appendtoks
+ \edef\p_simplecommand{\mathcasesparameter\c!simplecommand}%
+ \ifempty\p_simplecommand\else
+ \frozen\protected\instance\edefcsname\p_simplecommand\endcsname{\math_cases_simple[\currentmathcases]}%
+ \fi
+\to \everydefinemathcases
+
\let\math_cases_strut\relax
\newcount\c_math_cases_nc
@@ -2604,6 +2637,9 @@
\permanent\protected\def\math_simplealign_NC
{\aligntab}
+\permanent\protected\def\math_simplealign_EQ
+ {\aligntab=\aligntab}
+
\noaligned\tolerant\permanent\protected\def\math_simplealign_NR[#1]#*[#2]%
{\unskip
\strc_formulas_place_number_nested{#1}{#2}\crcr}
@@ -2630,6 +2666,7 @@
\enforced\let\MC\math_simplealign_NC
\enforced\let\NC\math_simplealign_NC
\enforced\let\NR\math_simplealign_NR
+ \enforced\let\EQ\math_simplealign_EQ
\enforced\let\TB\math_common_TB
\math_eqalign_set_defaults
\math_eqalign_set_columns{\mathsimplealignparameter\c!align}%
diff --git a/tex/context/base/mkxl/math-dif.mkxl b/tex/context/base/mkxl/math-dif.mkxl
index 5cd65a80f..ad53ee25a 100644
--- a/tex/context/base/mkxl/math-dif.mkxl
+++ b/tex/context/base/mkxl/math-dif.mkxl
@@ -20,10 +20,12 @@
% For new times sake:
\let\normal_math_dd\dd
+ \let\normal_math_DD\DD
\def\c!differentiald{differentiald} % for now
\def\upright_math_dd{\mathatom \s!unpack \mathdifferentialcode{\mathupright d}}
+ \def\upright_math_DD{\mathatom \s!unpack \mathdifferentialcode{\mathupright D}}
\permanent\protected\def\dd
{\ifcstok{\mathematicsparameter\c!differentiald}\s!upright
@@ -32,6 +34,13 @@
\normal_math_dd
\fi}
+ \permanent\protected\def\DD
+ {\ifcstok{\mathematicsparameter\c!differentiald}\s!upright
+ \upright_math_DD
+ \else
+ \normal_math_DD
+ \fi}
+
% \setupmathematics[differentiald=upright]
\popoverloadmode
diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl
index 85a28acca..8f2a4d405 100644
--- a/tex/context/base/mkxl/math-fen.mkxl
+++ b/tex/context/base/mkxl/math-fen.mkxl
@@ -130,10 +130,12 @@
\s!axis
\s!exact}
-\newconstant \c_math_fenced_class
+\newconstant\c_math_fenced_class
+\integerdef \c_math_fence_check \zerocount
\def\math_fenced_common#1#2#3#4% \Uwhatever class symbol source
{\c_math_fenced_class\mathfenceparameter#2\relax
+ \math_fenced_check_size_mismatch % we need to catch an unbalanced \F as we are sequential
\ifconditional\c_math_fenced_sized
\orelse\ifconditional\c_math_fenced_level_mode
\ifnum\c_math_fenced_class=\mathopencode
@@ -347,14 +349,14 @@
{\math_fenced_fenced_stop\currentmathfence
\endgroup}
-\def\math_fenced_start_wrap#1%
+\protected\def\math_fenced_start_wrap#1%
{\begingroup
\edef\m_math_fenced_wrap{#1}%
\ifempty\m_math_fenced_wrap \else
\math_fenced_fenced_start\m_math_fenced_wrap
\fi}
-\def\math_fenced_stop_wrap
+\protected\def\math_fenced_stop_wrap
{\ifempty\m_math_fenced_wrap \else
\math_fenced_fenced_stop\m_math_fenced_wrap
\fi
@@ -410,6 +412,7 @@
%D \starttyping
%D \startTEXpage[offset=1dk,width=20dk]
%D \ruledhbox{$ \F3 \left( 1 + \F2 \left( a + b \right) + \left( a + b \right) \right) $}\par
+%D \ruledhbox{$ \left( 1 + \F3 \left( a + b \right) + \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F3 \left( 1 + \F0 \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F3 \left( 1 + \F= \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F4 \left( 1 + \fenced[parenthesis]{a + b} \right) $}\par
@@ -435,8 +438,18 @@
\letcsname\??fencelevels*\endcsname\donothing
+\def\math_fenced_check_size_mismatch
+ {\ifnum\c_math_fence_check=\c_math_fence_nesting
+ \c_attr_mathsize\attributeunsetvalue
+ \setfalse\c_math_fenced_level_mode
+ \c_math_fenced_level\zerocount
+ \fi}
+
\permanent\protected\def\F#1%
- {\settrue\c_math_fenced_level_mode
+ {\ifconditional\c_math_fenced_level_mode\else
+ \integerdef\c_math_fence_check\c_math_fence_nesting
+ \fi
+ \settrue\c_math_fenced_level_mode
\ifchknum#1\or
\c_math_fenced_level#1\relax
\orelse\ifcsname\??fencelevels#1\endcsname
@@ -857,7 +870,7 @@
\protected\def\math_fences_auto_left #1{\c_attr_mathautofence\plusone #1\c_attr_mathautofence\attributeunsetvalue}
\protected\def\math_fences_auto_right #1{\c_attr_mathautofence\plustwo #1\c_attr_mathautofence\attributeunsetvalue}
-\protected\def\math_fences_auto_middle#1{\c_attr_mathautofence\plusthree#1\c_attr_mathautofence\attributeunsetvalue nooverflow }
+\protected\def\math_fences_auto_middle#1{\c_attr_mathautofence\plusthree#1\c_attr_mathautofence\attributeunsetvalue}
\protected\def\math_fences_auto_both #1{\c_attr_mathautofence\plusfour #1\c_attr_mathautofence\attributeunsetvalue}
\permanent\let\autofenceopen \math_fences_auto_left % for testing
diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt
index 654e29d2b..48d905ca6 100644
--- a/tex/context/base/mkxl/math-ini.lmt
+++ b/tex/context/base/mkxl/math-ini.lmt
@@ -16,7 +16,7 @@ if not modules then modules = { } end modules ['math-ini'] = {
-- then we also have to set the other characters (only a subset done now)
local next, type = next, type
-local formatters, find = string.formatters, string.find
+local formatters, find, nospaces = string.formatters, string.find, string.nospaces
local utfchar, utfbyte, utflength = utf.char, utf.byte, utf.length
----- floor = math.floor
local sortedhash = table.sortedhash
@@ -48,6 +48,145 @@ local chardata = characters.data
local texsetattribute = tex.setattribute
local setmathcode = tex.setmathcode
local setdelcode = tex.setdelcode
+local texintegerdef = tex.integerdef
+
+-- This is relatively new and experimental:
+
+do
+
+ local dictionaries = { }
+ mathematics.dictionaries = dictionaries
+
+ local names = dictionaries.names or utilities.storage.allocate()
+ local groups = dictionaries.groups or utilities.storage.allocate()
+ local data = dictionaries.data or utilities.storage.allocate()
+
+ if storage then
+ storage.register("mathematics/dictionaries/names", names, "characters.dictionaries.names")
+ storage.register("mathematics/dictionaries/groups", groups, "characters.dictionaries.groups")
+ storage.register("mathematics/dictionaries/data", data, "characters.dictionaries.data")
+ end
+
+ function dictionaries.registergroup(name)
+ local group = rawget(names,name)
+ if not group then
+ group = #groups + 1
+ names[name] = group
+ names[group] = group
+ groups[group] = name
+ data[group] = { }
+ local csname = "math" .. nospaces(name) .. "dictionary"
+ texintegerdef(csname,group,"immutable")
+ end
+ return group
+ end
+
+ function dictionaries.registercharacter(group,index,description)
+ local d = names[group] -- can be number or string
+ if d then
+ data[d][index] = description
+ end
+ end
+
+ local fontchardata = fonts.hashes.characters
+ local f_dictionary = false
+ local register = callback.register
+ local whatdetail = "all"
+
+ local function trace(n,properties,group,index,font,char)
+ -- local properties, group, index, font, char = nodes.nuts.getchardict(nodes.nuts.tonut(n))
+ local char = fontchardata[font][char]
+ if char or whatdetail == "all" then
+ local unicode = char and char.unicode
+ if unicode then
+ local groupname = groups[group]
+ local indexname = false
+ if groupname then
+ indexname = data[group][index] -- dictionaries.data
+ else
+ groupname = "unknown"
+ end
+ if not indexname then
+ indexname = chardata[unicode]
+ indexname = indexname and indexname.description or "unknown"
+ end
+ if not f_dictionary then
+ f_dictionary = formatters["properties [%04X:%04X:%04X] [%s] %U : %s"]
+ end
+ return f_dictionary(properties,group,index,groupname,unicode,indexname)
+ end
+ end
+ end
+
+ trackers.register("math.dictionaries",function(v)
+ whatdetail = v
+ if whatdetail then
+ register("get_math_dictionary",trace)
+ else
+ register("get_math_dictionary")
+ end
+ end)
+
+ register("get_math_dictionary",trace)
+
+ -- This is experimental and a prelude to the long pending "relate math rendering to
+ -- some field" wish. In TeX characters and symbols are grouped by class but that is
+ -- mostly related to spacing etc. while we actually want to group by meaning. A
+ -- reasonable but incomplete starting point is:
+ --
+ -- https://www.w3.org/TR/MathML3/appendixa.html#parsing_DefEncAtt
+ --
+ -- But it has some weird short names mixed with long ones (and a strange suddenly
+ -- uppercase: Differential-Operator) but we are not bound to that at all. We will
+ -- probably remove and add categories anyway. This openmath stuff looks a bit
+ -- abandoned but we can use it as a start and playground anyway.
+ --
+ -- The char-def.lua file will have mathgroup entries reflecting this.
+
+ local registergroup = mathematics.dictionaries.registergroup
+
+ registergroup("default")
+ registergroup("binary arithmic")
+ registergroup("binary linear algebra")
+ registergroup("binary logical")
+ registergroup("binary relation")
+ registergroup("binary set")
+ registergroup("constant arithmic")
+ registergroup("constant set")
+ registergroup("differential")
+ registergroup("integral")
+ registergroup("interval")
+ registergroup("lambda")
+ registergroup("limit")
+ registergroup("nary arithmic")
+ registergroup("nary constructor")
+ registergroup("nary functional")
+ registergroup("nary linear algebra")
+ registergroup("nary logical")
+ registergroup("nary minmax")
+ registergroup("nary relation")
+ registergroup("nary set list")
+ registergroup("nary set relation")
+ registergroup("nary set")
+ registergroup("nary statistics")
+ registergroup("partial") -- partial differential
+ registergroup("product")
+ registergroup("quantifier")
+ registergroup("unary arithmic")
+ registergroup("unary elementary")
+ registergroup("unary functional")
+ registergroup("unary linear algebra")
+ registergroup("unary logical")
+ registergroup("unary set")
+ registergroup("unary vector")
+
+ -- \Umathdictdef\vdash 1 \mathbinarylogicaldictionary "22A2 \mathrelationcode 0 "22A2
+ --
+ -- \startluacode
+ -- mathematics.dictionaries.registercharacter("binary logical",0x22A2,"implies")
+ -- \stopluacode
+
+end
-- These are different from mkiv with luatex.
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index d3d652b37..0ce6d14ef 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -463,6 +463,11 @@
% +\checkkernpairclassoptioncode
% +\flattenclassoptioncode
% +\omitpenaltyclassoptioncode % old school check, we do pairwise instead
+ % +\carryoverlefttopkernclassoptioncode
+ % +\carryoverleftbottomkernclassoptioncode
+ % +\carryoverrighttopkernclassoptioncode
+ % +\carryoverrightbottomkernclassoptioncode
+ % +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathordinarycode\numexpr
@@ -547,6 +552,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathradicalcode\numexpr
@@ -556,6 +562,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathaccentcode\numexpr
@@ -591,6 +598,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
% test case for \lefttopkernclassoptioncode and \leftbottomkernclassoptioncode in cambria close:
@@ -738,15 +746,27 @@
\setfalse\indisplaymath
\fi}
+% \permanent\protected\def\startforceddisplaymath
+% {\startimath
+% \displaystyle
+% \begingroup
+% \settrue\indisplaymath}
+%
+% \permanent\protected\def\stopforceddisplaymath
+% {\endgroup
+% \stopimath}
+
+% \def\startidmath{\Ustartmathmode \displaystyle}
+% \def\stopidmath {\Ustopmathmode}
+
\permanent\protected\def\startforceddisplaymath
- {\startimath
- \displaystyle
- \begingroup
+ {\Ustartmathmode \displaystyle
+ \begingroup % can go
\settrue\indisplaymath}
\permanent\protected\def\stopforceddisplaymath
- {\endgroup
- \stopimath}
+ {\endgroup % can go
+ \Ustopmathmode}
\permanent\protected\def\startpickupmath % for the moment private
{\ifconditional\indisplaymath
@@ -877,12 +897,20 @@
\normalstopimath
\fi}
-%D maybe more setters
+%D We wrap in a construct so that we can do:
+%D
+%D \starttyping
+%D \startformula
+%D \dm{f(x) = \frac{x}{y}} \mtp{,}
+%D \im{g(x) = \frac{x}{y}} \mtp{.}
+%D \stopformula
+%D \stoptyping
\permanent\protected\def\dm#1%
{\relax
\ifmmode
- \beginmathgroup\forcedisplaymath#1\endmathgroup
+ %\beginmathgroup\forcedisplaymath#1\endmathgroup
+ \mathconstruct{\forcedisplaymath#1}%
\else
\startimath\begingroup\forcedisplaymath#1\endgroup\stopimath
\fi}
@@ -890,7 +918,8 @@
\permanent\protected\def\im#1%
{\relax
\ifmmode
- \beginmathgroup\forceinlinemath#1\endmathgroup
+ %\beginmathgroup\forceinlinemath#1\endmathgroup
+ \mathconstruct{\forceinlinemath#1}%
\else
\startimath#1\stopimath
\fi}
@@ -4019,6 +4048,30 @@
\scriptspace.05\Umathquad\textstyle % for Mikael
\to \everymathematics
+%D New:
+
+% \startformula
+% \mathatom class 0 all \mathbincode {a b c d} \breakhere
+% \mathatom class 0 all \mathfractioncode {a b c d} \breakhere
+% \base {FE03} \breakhere
+% \base[16]{FE03} \breakhere
+% \base[8] {7204}
+% \stopformula
+
+\permanent\tolerant\def\mathdigits#1%
+ {\ifmmode
+ \mathatom class \mathdigitcode all \mathdigitcode {#1}%
+ \else
+ #1%
+ \fi}
+
+\permanent\tolerant\protected\def\base[#1]#*#:#2%
+ {\ifmmode
+ \mathdigits{\tf#2}\ifparameter#1\or\subscript{\mathdigits{\tf#1}}\fi
+ \else
+ #2\ifparameter#1\or\low{#1}\fi
+ \fi}
+
\protect \endinput
% % not used (yet)
diff --git a/tex/context/base/mkxl/math-spa.lmt b/tex/context/base/mkxl/math-spa.lmt
index 698692a2c..2bde8dd1d 100644
--- a/tex/context/base/mkxl/math-spa.lmt
+++ b/tex/context/base/mkxl/math-spa.lmt
@@ -12,6 +12,8 @@ local setmetatableindex = table.setmetatableindex
local boundary_code = nodes.nodecodes.boundary
local hlist_code = nodes.nodecodes.hlist
+local kern_code = nodes.nodecodes.kern
+local penalty_code = nodes.nodecodes.penalty
local glue_code = nodes.nodecodes.glue
local line_code = nodes.listcodes.line
local ghost_code = nodes.listcodes.ghost
@@ -39,6 +41,7 @@ local addxoffset = nuts.addxoffset
local nextglue = nuts.traversers.glue
local nextlist = nuts.traversers.list
local nextboundary = nuts.traversers.boundary
+local nextnode = nuts.traversers.node
local texgetdimen = tex.getdimen
local texsetdimen = tex.setdimen
@@ -56,15 +59,32 @@ stages[1] = function(specification,stage)
for s in nextboundary, head do
if getdata(s) == boundary then
-- todo: skip over ghost, maybe penalty, maybe glues all in one loop
- local n = getnext(s)
- while n and getid(n) == hlist_code and getsubtype(n) == ghost_code do
- n = getnext(n)
- end
- -- while n and getid(n) == glue_code do
- if n and getid(n) == glue_code then
- n = getnext(n)
+-- local n = getnext(s)
+-- if n and getid(n) == kern_code then -- also needed
+-- n = getnext(n)
+-- end
+-- while n and getid(n) == hlist_code and getsubtype(n) == ghost_code do
+-- n = getnext(n)
+-- end
+-- -- while n and getid(n) == glue_code do
+-- if n and getid(n) == glue_code then
+-- n = getnext(n)
+-- end
+ for n, id, subtype in nextnode, getnext(s) do
+ s = n
+ if id == kern_code then
+ -- move on (s_2 case)
+ elseif id == glue_code then
+ -- move on
+ elseif id == penalty_code then
+ -- move on (untested)
+ elseif id == hlist_code and subtype == ghost_code then
+ -- move on
+ else
+ break
+ end
end
- distance = distance + getdimensions(head,n)
+ distance = distance + getdimensions(head,s)
break
end
end
diff --git a/tex/context/base/mkxl/math-twk.mkxl b/tex/context/base/mkxl/math-twk.mkxl
index 995f48bcb..269c855c0 100644
--- a/tex/context/base/mkxl/math-twk.mkxl
+++ b/tex/context/base/mkxl/math-twk.mkxl
@@ -71,4 +71,26 @@
\permanent\protected\def\±{\mathortext\mathunaryplusminus\textpm}
\permanent\protected\def\∓{\mathortext\mathunaryminusplus\textmp}
+% \permanent\protected\def\minute{\hbox shift -.8ex{$\char"2032$}}
+% \permanent\protected\def\second{\hbox shift -.8ex{$\char"2033$}}
+%
+% \permanent\protected\def\minute{$\char\privatecharactercode{prime 0x2032 1}$}
+% \permanent\protected\def\second{$\char\privatecharactercode{prime 0x2033 1}$}
+%
+% \permanent\protected\def\minute{$\Umathchar\zerocount\zerocount\privatecharactercode{prime 0x2032 1}$}
+% \permanent\protected\def\second{$\Umathchar\zerocount\zerocount\privatecharactercode{prime 0x2033 1}$}
+%
+% \immutable\Umathchardef\minute\zerocount\zerocount\privatecharactercode{prime 0x2032 1}
+% \immutable\Umathchardef\second\zerocount\zerocount\privatecharactercode{prime 0x2033 1}
+
+\immutable\chardef\textminute"2032
+\immutable\chardef\textsecond"2033
+
+\immutable\Umathchardef\mathminute\zerocount\zerocount\privatecharactercode{prime 0x2032 1}
+\immutable\Umathchardef\mathsecond\zerocount\zerocount\privatecharactercode{prime 0x2033 1}
+
+\permanent\protected\def\minute{\iffontchar\font\textminute\textminute\else\mathminute\fi}
+\permanent\protected\def\second{\iffontchar\font\textsecond\textsecond\else\mathsecond\fi}
+
+
\protect
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index 92e8f0990..fccb539f3 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -84,7 +84,7 @@ local nuts = {
getboxglue = direct.getglue,
getchar = direct.getchar,
getcharspec = direct.getcharspec,
- getcomponents = direct.getcomponents,
+ -- getcomponents = direct.getcomponents,
getdata = direct.getdata,
getdepth = direct.getdepth,
getdir = direct.getdir,
@@ -92,6 +92,7 @@ local nuts = {
getdisc = direct.getdisc,
getdiscpart = direct.getdiscpart,
getdiscretionary = direct.getdisc,
+ getchardict = direct.getchardict,
getexpansion = direct.getexpansion,
getfam = direct.getfam,
getfield = direct.getfield,
@@ -196,7 +197,7 @@ local nuts = {
setbox = direct.setbox,
setboxglue = direct.setglue,
setchar = direct.setchar,
- setcomponents = direct.setcomponents,
+ -- setcomponents = direct.setcomponents,
setdata = direct.setdata,
setdepth = direct.setdepth,
setdir = direct.setdir,
@@ -204,6 +205,7 @@ local nuts = {
setdisc = direct.setdisc,
setdiscpart = direct.setdiscpart,
setdiscretionary = direct.setdisc,
+ setchardict = direct.setchardict,
setexpansion = direct.setexpansion,
setfam = direct.setfam,
setfield = direct.setfield,
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 2f200056b..ed581db6a 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -1133,7 +1133,9 @@
{\vadjust pre \bgroup
\hbox to \displaywidth \bgroup
\strut
+ \hskip\leftskip
#1\hss
+ \hskip\rightskip
\strut
\egroup
\egroup}
@@ -1142,7 +1144,9 @@
{\vadjust \bgroup
\hbox to \displaywidth \bgroup
\strut
+ \hskip\leftskip
#1\hss
+ \hskip\rightskip
\strut
\egroup
\egroup}
@@ -1254,7 +1258,10 @@
\c_strc_math_split_status \zerocount
\to \everymathematics
-%
+\prependtoks
+ % we need to keep an eye on this
+ \mathgluemode\ifcase\raggedstatus\plusthree\else\zerocount\fi
+\to \everymathematics
\defcsname\??mathtextalign\v!flushleft\endcsname
{\raggedright
diff --git a/tex/context/fonts/mkiv/asana-math.lfg b/tex/context/fonts/mkiv/asana-math.lfg
index afa59d40a..07a96741b 100644
--- a/tex/context/fonts/mkiv/asana-math.lfg
+++ b/tex/context/fonts/mkiv/asana-math.lfg
@@ -24,6 +24,13 @@
-- Just don't use this font. It's not good enough for production unless we patch it
-- a lot, which we will not do unless we need it.
+-- When set this will bypass the italic correction hackery!
+
+-- local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+-- local integral_bottom = { bottomright = -0.25 }
+
+
return {
name = "asana-math",
version = "1.00",
diff --git a/tex/context/fonts/mkiv/bonum-math.lfg b/tex/context/fonts/mkiv/bonum-math.lfg
index 154f7c346..73a1efcaf 100644
--- a/tex/context/fonts/mkiv/bonum-math.lfg
+++ b/tex/context/fonts/mkiv/bonum-math.lfg
@@ -17,6 +17,11 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.30 }
+
return {
name = "bonum-math",
version = "1.00",
@@ -204,6 +209,65 @@ return {
-- bottomright = -0.1,
-- all = true,
-- },
+ [0x7D] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ [0x29] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ -- radical
+ [0x221A] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ },
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ },
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ },
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ },
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ --
+ [0x222B] = integral_variants, ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ [0x222C] = integral_variants, ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ [0x222D] = integral_variants, ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ [0x222E] = integral_variants, ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ [0x222F] = integral_variants, ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ [0x2230] = integral_variants, ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ [0x2231] = integral_variants, ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ [0x2232] = integral_variants, ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ [0x2233] = integral_variants, ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/cambria-math.lfg b/tex/context/fonts/mkiv/cambria-math.lfg
index a56a1b7d6..de8b55b22 100644
--- a/tex/context/fonts/mkiv/cambria-math.lfg
+++ b/tex/context/fonts/mkiv/cambria-math.lfg
@@ -40,6 +40,12 @@ end
-- patches.register("after","analyze math","cambria", function(data,filename) patch(data,filename,2800) end)
-- patches.register("after","analyze math","cambmath",function(data,filename) patch(data,filename,2800) end)
+-- -- We could stick to the italic correction here
+--
+-- local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+-- local integral_bottom = { bottomright = -0.30 }
+
return {
name = "cambria-math",
version = "1.00",
@@ -127,6 +133,18 @@ return {
topright = 0.2,
bottomright = 0.2,
},
+
+ -- Keep as example. not needed in cambria (after all it is the reference):
+
+ -- ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ -- ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ -- ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ -- ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ -- ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ -- ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ -- ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ -- ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ -- ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
},
},
{
diff --git a/tex/context/fonts/mkiv/dejavu-math.lfg b/tex/context/fonts/mkiv/dejavu-math.lfg
index cbba910ce..b13150295 100644
--- a/tex/context/fonts/mkiv/dejavu-math.lfg
+++ b/tex/context/fonts/mkiv/dejavu-math.lfg
@@ -10,6 +10,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.25 }
+
+
return {
name = "dejavu-math",
version = "1.00",
@@ -53,6 +59,52 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/ebgaramond.lfg b/tex/context/fonts/mkiv/ebgaramond.lfg
new file mode 100644
index 000000000..73676ce44
--- /dev/null
+++ b/tex/context/fonts/mkiv/ebgaramond.lfg
@@ -0,0 +1,90 @@
+return {
+ name = "ebgaramond",
+ version = "1.00",
+ comment = "Goodies that complement ebgaramond.",
+ author = "Hans Hagen & Mikael Sundqvist",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ tweaks = {
+ aftercopying = {
+ {
+ tweak = "version",
+ expected = "Version 2019-08-16",
+ },
+ {
+ tweak = "dimensions",
+ list = {
+ -- offset width italic
+ [0x00393] = { 0.05, 1.05, 0.075 }, -- \Gamma
+ -- [0x003A6] = { 0.05, 1.05, 0 }, -- \Phi difficult!
+ [0x003A8] = { 0.05, 1.05, 0.075 }, -- \Psi
+ [0x02113] = { 0, 1, 0.075 }, -- \ell
+ [0x1D436] = { 0, 1, 0.05 }, -- C
+ [0x1D43D] = { 0.3, 1.4, 0.1 }, -- J
+ [0x1D44B] = { 0, 1, 0.05 }, -- X
+ [0x1D450] = { 0, 1.1, 0 }, -- c
+ [0x1D451] = { 0, 1, 0.05 }, -- d
+ [0x1D452] = { 0, 1.1, 0.05 }, -- e
+ [0x1D453] = { 0.15, 1.15, 0.1 }, -- f
+ [0x1D454] = { 0.1, 1.2, 0.1 }, -- g
+ [0xF0276] = { 0, 1.1, 0 }, -- h
+ [0x1D457] = { 0.2, 1.25, 0.05 }, -- j
+ [0x1D459] = { 0, 1, 0.05 }, -- l
+ [0x1D45D] = { 0.15, 1.15, 0 }, -- p
+ [0x1D45E] = { 0, 1.05, 0 }, -- q
+ [0x1D45F] = { 0, 1.05, 0 }, -- r
+ [0x1D461] = { 0, 1, 0.1 }, -- t
+ [0x1D465] = { 0.05, 1.1, 0.05 }, -- x
+ [0x1D466] = { 0.2, 1.2, 0 }, -- y
+ [0x1D6FD] = { 0.05, 1.1, 0.05 }, -- \beta
+ [0x1D6FE] = { 0, 1.05, 0 }, -- \gamma
+ [0x1D6FF] = { 0, 1, 0.1 }, -- \delta
+ [0x1D716] = { 0, 1.1, 0 }, -- \epsilon
+ [0x1D700] = { 0, 1.1, 0 }, -- \varepsilon
+ [0x1D701] = { 0, 1, 0.15 }, -- \zeta
+ [0x1D703] = { 0, 1, 0.1 }, -- \theta
+ [0x1D705] = { 0, 1, 0.1 }, -- \kappa
+ [0x1D706] = { 0.05, 1.1, 0 }, -- \lambda
+ [0x1D707] = { 0.05, 1.05, 0 }, -- \mu
+ [0x1D708] = { 0, 1.1, 0 }, -- \nu
+ [0x1D709] = { 0, 1.1, 0 }, -- \xi
+ [0x1D70B] = { 0, 1.05, 0 }, -- \pi
+ [0x1D70C] = { 0.2, 1.2, 0 }, -- \rho
+ [0x1D70E] = { 0, 1, 0.1 }, -- \sigma
+ [0x1D70F] = { 0.05, 1.05, 0.1 }, -- \tau
+ [0x1D712] = { 0.15, 1.2, 0.05 }, -- \chi
+ [0x1D713] = { 0.05, 1.05, 0.05 }, -- \psi
+ },
+ },
+ {
+ tweak = "fixprimes",
+ scale = 0.75,
+ smaller = true,
+ factor = 0.8,
+ fake = 0.75,
+ },
+ {
+ tweak = "checkspacing",
+ },
+ {
+ tweak = "addscripts",
+ },
+ },
+ },
+ alternates = {
+ partial = { feature = 'ss02', value = 1, comment = "Curved partial" },
+ semibold = { feature = 'ss04', value = 1, comment = "Semibold" },
+ extrabold = { feature = 'ss05', value = 1, comment = "Extrabold" },
+ hbar = { feature = 'ss06', value = 1, comment = "Horizontal bar for h-bar" },
+ integral = { feature = 'ss07', value = 1, comment = "A more slanted integral sign" },
+ tilde = { feature = 'ss09', value = 1, comment = "A tilde variant" },
+ outbendingh = { feature = 'ss10', value = 1, comment = "Out-bending h" },
+ largeoperators = { feature = 'ss11', value = 1, comment = "Larger operators" },
+ },
+ bigslots = {
+ 1, 3, 5, 7
+ },
+ },
+}
+
+
diff --git a/tex/context/fonts/mkiv/erewhon-math.lfg b/tex/context/fonts/mkiv/erewhon-math.lfg
index ff0b8dac4..e1e7fe9fd 100644
--- a/tex/context/fonts/mkiv/erewhon-math.lfg
+++ b/tex/context/fonts/mkiv/erewhon-math.lfg
@@ -30,6 +30,44 @@ return {
-- topright = 0,
bottomright = -0.15,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
},
},
{
diff --git a/tex/context/fonts/mkiv/garamond-math.lfg b/tex/context/fonts/mkiv/garamond-math.lfg
index cdefd8077..bdbb6b155 100644
--- a/tex/context/fonts/mkiv/garamond-math.lfg
+++ b/tex/context/fonts/mkiv/garamond-math.lfg
@@ -110,6 +110,41 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
},
},
{
diff --git a/tex/context/fonts/mkiv/kpfonts-math.lfg b/tex/context/fonts/mkiv/kpfonts-math.lfg
index cb75644a9..3c2b89b79 100644
--- a/tex/context/fonts/mkiv/kpfonts-math.lfg
+++ b/tex/context/fonts/mkiv/kpfonts-math.lfg
@@ -39,6 +39,38 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.25,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.05,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.05,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
},
},
-- {
diff --git a/tex/context/fonts/mkiv/libertinus-math.lfg b/tex/context/fonts/mkiv/libertinus-math.lfg
index f0b542f42..4992b41be 100644
--- a/tex/context/fonts/mkiv/libertinus-math.lfg
+++ b/tex/context/fonts/mkiv/libertinus-math.lfg
@@ -79,6 +79,44 @@ return {
-- topright = 0,
bottomright = -0.15,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.2,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.2,
+ }, -- right brace bottom
+ -- ["0x7D.variants.*"] = {
+ -- topright = -0.05,
+ -- bottomright = -0.05,
+ -- }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
},
},
{
diff --git a/tex/context/fonts/mkiv/lm.lfg b/tex/context/fonts/mkiv/lm.lfg
index e3dbfc6b8..250fe9e93 100644
--- a/tex/context/fonts/mkiv/lm.lfg
+++ b/tex/context/fonts/mkiv/lm.lfg
@@ -279,6 +279,44 @@ return {
[0x1D4B3] = { bottomright = -0.11, }, -- script X
[0x1D4B4] = { bottomright = -0.18, }, -- script Y
[0x1D4B5] = { bottomright = -0.05, }, -- script Z
+
+ ["0x7D.parts.top"] = {
+ topright = -0.25,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.25,
+ bottomright = -0.25,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.3,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.3,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.25,
+ bottomright = -0.25,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
},
},
-- {
diff --git a/tex/context/fonts/mkiv/lucida-opentype-math.lfg b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
index 1ca9e77eb..a8cd48ca2 100644
--- a/tex/context/fonts/mkiv/lucida-opentype-math.lfg
+++ b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
@@ -24,6 +24,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.45 }
+
+
return {
name = "lucida-opentype-math",
version = "1.00",
@@ -113,6 +119,54 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/pagella-math.lfg b/tex/context/fonts/mkiv/pagella-math.lfg
index 88018193d..f03c10d65 100644
--- a/tex/context/fonts/mkiv/pagella-math.lfg
+++ b/tex/context/fonts/mkiv/pagella-math.lfg
@@ -27,6 +27,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.20 }
+
+
return {
name = "pagella-math",
version = "1.00",
@@ -144,6 +150,55 @@ return {
-- bottomright = 3,
-- },
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
},
},
{
diff --git a/tex/context/fonts/mkiv/schola-math.lfg b/tex/context/fonts/mkiv/schola-math.lfg
index 1287f19d0..5c96f9055 100644
--- a/tex/context/fonts/mkiv/schola-math.lfg
+++ b/tex/context/fonts/mkiv/schola-math.lfg
@@ -10,6 +10,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.20 }
+
+
return {
name = "schola-math",
version = "1.00",
@@ -52,6 +58,54 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/stix-two-math.lfg b/tex/context/fonts/mkiv/stix-two-math.lfg
index d543a4e9b..bd09c192b 100644
--- a/tex/context/fonts/mkiv/stix-two-math.lfg
+++ b/tex/context/fonts/mkiv/stix-two-math.lfg
@@ -1,3 +1,9 @@
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.35 }
+
+
return {
name = "stix-two-math",
version = "1.00",
@@ -51,6 +57,55 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ -- ["0x7D.variants.*"] = {
+ -- topright = -0.15,
+ -- bottomright = -0.15,
+ -- }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
},
},
-- 0xFEOO should be chancery style, if present
diff --git a/tex/context/fonts/mkiv/termes-math.lfg b/tex/context/fonts/mkiv/termes-math.lfg
index b7e3b2d45..f45ee4433 100644
--- a/tex/context/fonts/mkiv/termes-math.lfg
+++ b/tex/context/fonts/mkiv/termes-math.lfg
@@ -17,6 +17,11 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.30 }
+
return {
name = "termes-math",
@@ -72,6 +77,57 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
+
},
},
{
diff --git a/tex/context/interface/mkii/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml
index 213f129ed..96e655e31 100644
--- a/tex/context/interface/mkii/keys-fr.xml
+++ b/tex/context/interface/mkii/keys-fr.xml
@@ -876,6 +876,7 @@
<cd:constant name='frameradius' value='rayoncadre'/>
<cd:constant name='frames' value='cadres'/>
<cd:constant name='freeregion' value='regionlibre'/>
+ <cd:constant name='freezespacing' value='freezespacing'/>
<cd:constant name='from' value='de'/>
<cd:constant name='functioncolor' value='couleurfonction'/>
<cd:constant name='functionstyle' value='stylefonction'/>
@@ -956,6 +957,7 @@
<cd:constant name='lastpubsep' value='sepdernierepub'/>
<cd:constant name='layout' value='miseenpage'/>
<cd:constant name='left' value='gauche'/>
+ <cd:constant name='leftclass' value='leftclass'/>
<cd:constant name='leftcolor' value='couleurgauche'/>
<cd:constant name='leftcompoundhyphen' value='traitdunioncomposegauche'/>
<cd:constant name='leftedge' value='bordgauche'/>
@@ -1014,6 +1016,7 @@
<cd:constant name='menu' value='menu'/>
<cd:constant name='method' value='methode'/>
<cd:constant name='middle' value='milieu'/>
+ <cd:constant name='middleclass' value='middleclass'/>
<cd:constant name='middlecolor' value='couleurmilieu'/>
<cd:constant name='middlecommand' value='commandemilieu'/>
<cd:constant name='middlesource' value='middlesource'/>
@@ -1060,6 +1063,8 @@
<cd:constant name='numberconversionset' value='jeuconversionnumero'/>
<cd:constant name='numberdistance' value='distancenumero'/>
<cd:constant name='numbering' value='numérotation'/>
+ <cd:constant name='numberlocation' value='numberlocation'/>
+ <cd:constant name='numbermethod' value='numbermethod'/>
<cd:constant name='numberorder' value='ordrenumero'/>
<cd:constant name='numberprefix' value='prefixenumero'/>
<cd:constant name='numbersegments' value='segmentsnumero'/>
@@ -1070,6 +1075,7 @@
<cd:constant name='numberstopper' value='stoppeurnumero'/>
<cd:constant name='numberstrut' value='entretoisenumero'/>
<cd:constant name='numberstyle' value='stylenumero'/>
+ <cd:constant name='numberthreshold' value='numberthreshold'/>
<cd:constant name='numberwidth' value='largeurnumero'/>
<cd:constant name='nx' value='nx'/>
<cd:constant name='ny' value='ny'/>
@@ -1123,6 +1129,7 @@
<cd:constant name='palet' value='palette'/>
<cd:constant name='paper' value='papier'/>
<cd:constant name='paragraph' value='paragraphe'/>
+ <cd:constant name='penalties' value='penalties'/>
<cd:constant name='period' value='periode'/>
<cd:constant name='place' value='placer'/>
<cd:constant name='placehead' value='placertete'/>
@@ -1176,6 +1183,7 @@
<cd:constant name='reverse' value='inverser'/>
<cd:constant name='right' value='droite'/>
<cd:constant name='rightchars' value='caracteresdroite'/>
+ <cd:constant name='rightclass' value='rightclass'/>
<cd:constant name='rightcolor' value='couleurdroite'/>
<cd:constant name='rightcompoundhyphen' value='traitdunioncomposedroite'/>
<cd:constant name='rightedge' value='borddroit'/>
diff --git a/tex/context/modules/mkxl/x-mathml.mkxl b/tex/context/modules/mkxl/x-mathml.mkxl
index 1cb94ff44..12ddf2586 100644
--- a/tex/context/modules/mkxl/x-mathml.mkxl
+++ b/tex/context/modules/mkxl/x-mathml.mkxl
@@ -612,11 +612,13 @@
\stopxmlsetups
\startxmlsetups mml:cn:polar:b
- {\mr e}\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}}
+% {\mr e}\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}}
+ \ee\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\ii}
\stopxmlsetups
\startxmlsetups mml:cn:polar:c
- \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+% \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+ \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\ii\right)
\stopxmlsetups
\startxmlsetups mml:cn:complex-polar
@@ -624,7 +626,8 @@
\stopxmlsetups
\startxmlsetups mml:cn:complex % todo ( )
- \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+% \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+ \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\ii\right)
\stopxmlsetups
\startxmlsetups mml:cn:complex-cartesian
@@ -832,7 +835,7 @@
\startxmlsetups mml:otherwise
% \xmlflush{#1}\MMLcPIECEseparator&{\mr otherwise}\crcr
- \xmlflush{#1}&{\mr otherwise}\crcr
+ \xmlflush{#1}&\mtext{otherwise}\crcr
\stopxmlsetups
% end of piece
@@ -866,8 +869,10 @@
% min max
-\startxmlsetups mml:min \mathopnolimits{min} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
-\startxmlsetups mml:max \mathopnolimits{max} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+% \startxmlsetups mml:min \mathopnolimits{min} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+\startxmlsetups mml:min \min \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+% \startxmlsetups mml:max \mathopnolimits{max} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+\startxmlsetups mml:max \max \xmlsetup{#1}{mml:minmax} \stopxmlsetups
\startxmlsetups mml:minmax
\xmldoif {#1} {/mml:bvar} {
@@ -1243,7 +1248,8 @@
\xmlfirst{#1}{/mml:ci}
}
\xmldoifelse {#1} {/mml:bvar} {
- \thinspace {\mr d} \xmlfirst{#1}{/mml:bvar}
+% \thinspace {\mr d} \xmlfirst{#1}{/mml:bvar}
+ \dd \xmlfirst{#1}{/mml:bvar}
} {
% nothing
}
@@ -1270,7 +1276,8 @@
} {
\xmldoifelse {#1} {/mml:bvar} {
\mmlfrac {
- {\mr d}{
+% {\mr d}{
+ \dd{
\xmldoifelse {#1} {/mml:degree} {
\normalsuperscript{\xmlconcat{#1}{/mml:degree}\empty}
} {
@@ -1292,7 +1299,8 @@
}
}
} {
- {\mr d}
+% {\mr d}
+ \dd
\xmlfirst{#1}{/mml:bvar/!mml:degree}
\xmldoif {#1} {/mml:bvar/mml:degree} {
\normalsuperscript{\xmlfirst{#1}{/mml:bvar/mml:degree}}
@@ -1330,7 +1338,8 @@
\startxmlsetups mml:partialdiff
\xmldoifelse {#1} {/mml:list} {
- {\mr D}\normalsubscript{
+% {\mr D}\normalsubscript{
+ \DD\normalsubscript{
\begingroup
\setfalse\mmllistdelimiters
\xmlall{#1}{/mml:list}
@@ -1340,7 +1349,8 @@
} {
\xmldoifelse {#1} {/mml:bvar} {
\mmlfrac {
- {\mr d}\normalsuperscript{
+% {\mr d}\normalsuperscript{
+ \dd\normalsuperscript{
\xmldoifelse {#1} {/mml:degree} {
\xmlconcat{#1}{/mml:degree}\empty
} {
@@ -1353,7 +1363,8 @@
\xmldoif {#1}{/mml:bvar/!mml:degree} {
\xmlfirst{#1}{/mml:bvar/!mml:degree} \,
}
- {\mr d}\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
+% {\mr d}\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
+ \dd\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
\xmldoif {#1} {/mml:bvar/mml:degree} {
\normalsuperscript{\xmlfirst{#1}{/mml:bvar/mml:degree}}
}
@@ -1692,8 +1703,8 @@
\startxmlsetups mml:naturalnumbers \naturalnumbers \stopxmlsetups
\startxmlsetups mml:complexes \complexes \stopxmlsetups
\startxmlsetups mml:primes \primes \stopxmlsetups
-\startxmlsetups mml:exponentiale \mathopnolimits{e} \stopxmlsetups
-\startxmlsetups mml:imaginaryi \mathopnolimits{i} \stopxmlsetups
+\startxmlsetups mml:exponentiale \ee \stopxmlsetups % \mathopnolimits{e} \stopxmlsetups
+\startxmlsetups mml:imaginaryi \ii \stopxmlsetups % \mathopnolimits{i} \stopxmlsetups
\startxmlsetups mml:notanumber \mathopnolimits{NaN} \stopxmlsetups
\startxmlsetups mml:true \mathopnolimits{true} \stopxmlsetups
\startxmlsetups mml:false \mathopnolimits{false} \stopxmlsetups
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index fe7b710c3..ae49b363f 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 : 2022-08-01 20:30
+-- merge date : 2022-08-05 11:40
do -- begin closure to overcome local limits and interference