summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/context/documents/general/manuals/luametatex.pdfbin1227386 -> 1226839 bytes
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-tex.tex38
-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/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-ots.lua5
-rw-r--r--tex/context/base/mkiv/node-gcm.lua5
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26167 -> 26177 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin256292 -> 256376 bytes
-rw-r--r--tex/context/base/mkxl/back-pdf.mkxl2
-rw-r--r--tex/context/base/mkxl/buff-ver.mkxl4
-rw-r--r--tex/context/base/mkxl/colo-ini.mkxl1
-rw-r--r--tex/context/base/mkxl/cont-log.mkxl2
-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/font-ini.mklx22
-rw-r--r--tex/context/base/mkxl/font-sty.mklx2
-rw-r--r--tex/context/base/mkxl/lang-ini.mkxl4
-rw-r--r--tex/context/base/mkxl/node-bck.mkxl22
-rw-r--r--tex/context/base/mkxl/node-gcm.lmt6
-rw-r--r--tex/context/base/mkxl/node-rul.mkxl68
-rw-r--r--tex/context/base/mkxl/page-mcl.mkxl7
-rw-r--r--tex/context/base/mkxl/page-txt.mklx2
-rw-r--r--tex/context/base/mkxl/scrn-wid.mklx8
-rw-r--r--tex/context/base/mkxl/spac-ver.lmt4
-rw-r--r--tex/context/base/mkxl/spac-ver.mkxl32
-rw-r--r--tex/context/base/mkxl/strc-des.mklx2
-rw-r--r--tex/context/base/mkxl/strc-itm.mklx2
-rw-r--r--tex/context/base/mkxl/tabl-ntb.mkxl4
-rw-r--r--tex/context/base/mkxl/typo-dir.mkxl2
-rw-r--r--tex/context/base/mkxl/typo-prc.mklx2
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua5
33 files changed, 132 insertions, 131 deletions
diff --git a/doc/context/documents/general/manuals/luametatex.pdf b/doc/context/documents/general/manuals/luametatex.pdf
index cc4b8a7b6..ae2bbfc23 100644
--- a/doc/context/documents/general/manuals/luametatex.pdf
+++ b/doc/context/documents/general/manuals/luametatex.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex b/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
index 5aaa73cec..48266aa2e 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-tex.tex
@@ -750,8 +750,8 @@ Here is an example using a threesome:
\startfunctioncall
local d = tex.getdimen("foo")
-if tex.isdimen("bar") then
- tex.setdimen("bar",d)
+if tex.isdimen("oof") then
+ tex.setdimen("oof",d)
end
\stopfunctioncall
@@ -2111,8 +2111,8 @@ will scan characters with catcode \type {letter} or \type {other}. So, given the
following definition:
\startbuffer
-\def\bar{bar}
-\def\foo{foo-\bar}
+\def\oof{oof}
+\def\foo{foo-\oof}
\stopbuffer
\typebuffer \getbuffer
@@ -2468,28 +2468,28 @@ When scanning for the next token you need to keep in mind that we're not scannin
like \TEX\ does: expanding, changing modes and doing things as it goes. When we
scan with \LUA\ we just pick up tokens. Say that we have:
-\pushmacro\bar \let\bar\undefined
+\pushmacro\oof \let\oof\undefined
\starttyping
-\bar
+\oof
\stoptyping
-but \type {\bar} is undefined. Normally \TEX\ will then issue an error message.
+but \type {\oof} is undefined. Normally \TEX\ will then issue an error message.
However, when we have:
\starttyping
-\def\foo{\bar}
+\def\foo{\oof}
\stoptyping
-We get no error, unless we expand \type {\foo} while \type {\bar} is still
+We get no error, unless we expand \type {\foo} while \type {\oof} is still
undefined. What happens is that as soon as \TEX\ sees an undefined macro it will
create a hash entry and when later it gets defined that entry will be reused. So,
-\type {\bar} really exists but can be in an undefined state.
+\type {\oof} really exists but can be in an undefined state.
\startbuffer[demo]
-bar : \directlua{tex.print(token.scan_csname())}\bar
+oof : \directlua{tex.print(token.scan_csname())}\oof
foo : \directlua{tex.print(token.scan_csname())}\foo
-myfirstbar : \directlua{tex.print(token.scan_csname())}\myfirstbar
+myfirstoof : \directlua{tex.print(token.scan_csname())}\myfirstoof
\stopbuffer
\startlines
@@ -2500,8 +2500,8 @@ This was entered as:
\typebuffer[demo]
-The reason that you see \type {bar} reported and not \type {myfirstbar} is that
-\type {\bar} was already used in a previous paragraph.
+The reason that you see \type {oof} reported and not \type {myfirstoof} is that
+\type {\oof} was already used in a previous paragraph.
If we now say:
@@ -2520,7 +2520,7 @@ we get:
And if we say
\startbuffer
-\def\foo{\bar}
+\def\foo{\oof}
\stopbuffer
\typebuffer \getbuffer
@@ -2535,9 +2535,9 @@ When scanning from \LUA\ we are not in a mode that defines (undefined) macros at
all. There we just get the real primitive undefined macro token.
\startbuffer
-\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\myfirstbar
-\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\mysecondbar
-\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\mythirdbar
+\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\myfirstoof
+\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\mysecondoof
+\directlua{local t = token.scan_next() tex.print(t.id.." "..t.tok)}\mythirdoof
\stopbuffer
\startlines
@@ -2552,7 +2552,7 @@ So, we do get a unique token because after all we need some kind of \LUA\ object
that can be used and garbage collected, but it is basically the same one,
representing an undefined control sequence.
-\popmacro\bar
+\popmacro\oof
\stopsubsection
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index acb4fe4bc..07b8c55e1 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2020.11.24 18:58}
+\newcontextversion{2020.11.25 16:53}
%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 ff9f1ef08..d3a0b269a 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.11.24 18:58}
+\edef\contextversion{2020.11.25 16:53}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index d6fd6fe25..f0ee92bc2 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2020.11.24 18:58}
+\newcontextversion{2020.11.25 16:53}
%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 d16151db6..2f64747a9 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.11.24 18:58}
+\edef\contextversion{2020.11.25 16:53}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index bb13a4801..38044cac6 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -218,6 +218,7 @@ local copy_only_glyphs = nuts.copy_only_glyphs
local count_components = nuts.count_components
local set_components = nuts.set_components
local get_components = nuts.get_components
+local flush_components = nuts.flush_components
---------------------------------------------------------------------------------------
@@ -488,6 +489,7 @@ local function markstoligature(head,start,stop,char)
setsubtype(base,ligatureglyph_code)
set_components(base,start)
setlink(prev,base,next)
+ flush_components(start)
return head, base
end
end
@@ -515,6 +517,8 @@ local has_glyph_option = node.direct.has_glyph_option or function(n,c)
end
end
+-- in lmtx we need to check the components and can be slightly more clever
+
local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfound,hasmarks) -- brr head
if has_glyph_option(start,no_right_ligature_code) then
return head, start
@@ -586,6 +590,7 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
break
end
end
+ flush_components(components)
else
-- discfound ... forget about marks .. probably no scripts that hyphenate and have marks
local discprev, discnext = getboth(discfound)
diff --git a/tex/context/base/mkiv/node-gcm.lua b/tex/context/base/mkiv/node-gcm.lua
index 1085f637f..5b598f6b0 100644
--- a/tex/context/base/mkiv/node-gcm.lua
+++ b/tex/context/base/mkiv/node-gcm.lua
@@ -81,11 +81,16 @@ local function count_components(start,marks)
return 0
end
+local function flush_components()
+ -- this is a no-op in mkiv / generic
+end
+
nuts.set_components = set_components
nuts.get_components = get_components
nuts.copy_only_glyphs = copy_only_glyphs
nuts.copy_no_components = copy_no_components
nuts.count_components = count_components
+nuts.flush_components = flush_components
nuts.setcomponents = function() report_error("unsupported: %a","setcomponents") end
nuts.getcomponents = function() report_error("unsupported: %a","getcomponents") end
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index fb6af0b89..e6b9a8894 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 350261887..75f6a775a 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/back-pdf.mkxl b/tex/context/base/mkxl/back-pdf.mkxl
index 1ce97cede..18aa8354b 100644
--- a/tex/context/base/mkxl/back-pdf.mkxl
+++ b/tex/context/base/mkxl/back-pdf.mkxl
@@ -126,7 +126,7 @@
\permanent\protected\def\pdfbackendsetshade #1#2{\clf_lpdf_adddocumentshade{#1}{#2}}
\permanent \def\pdfbackendcurrentresources {\clf_lpdf_collectedresources}
-\permanent \def\pdfcolor #1{\clf_lpdf_color\numexpr\thecolorattribute{#1}\relax}
+\permanent \def\pdfcolor #1{\clf_lpdf_color\numexpr\rawcolorattribute{#1}\relax}
%D This is a temporary hack mthat will be removed, improved or somehow can become
%D default.
diff --git a/tex/context/base/mkxl/buff-ver.mkxl b/tex/context/base/mkxl/buff-ver.mkxl
index 8ca44a956..3df572702 100644
--- a/tex/context/base/mkxl/buff-ver.mkxl
+++ b/tex/context/base/mkxl/buff-ver.mkxl
@@ -836,8 +836,8 @@
\permanent\protected\def\typeinlinebuffer
{\dontleavehmode
\begingroup
- \let\buff_verbatim_type_buffer_indeed\buff_verbatim_type_buffer_indeed_inline
- \let\setupcurrenttyping\setupcurrenttype % a terrible hack but it saves code
+ \enforced\let\buff_verbatim_type_buffer_indeed\buff_verbatim_type_buffer_indeed_inline
+ \enforced\let\setupcurrenttyping\setupcurrenttype % a terrible hack but it saves code
\let\currenttype\empty
\buff_verbatim_type_buffer}
diff --git a/tex/context/base/mkxl/colo-ini.mkxl b/tex/context/base/mkxl/colo-ini.mkxl
index 15cedb51d..b71ac42d9 100644
--- a/tex/context/base/mkxl/colo-ini.mkxl
+++ b/tex/context/base/mkxl/colo-ini.mkxl
@@ -1250,6 +1250,7 @@
\colo_helpers_inherited_current_ca{#1} %
\colo_helpers_inherited_current_ta{#1} }
+\permanent\def\rawcolormodelattribute {\c_attr_colormodel}
\permanent\def\thecolormodelattribute {\the\c_attr_colormodel}
\permanent\def\rawcolorattribute #1{\ifcsname\??colorattribute \currentcolorprefix#1\endcsname\lastnamedcs\orelse\ifcsname\??colorattribute #1\endcsname\lastnamedcs\else\zerocount\fi}
diff --git a/tex/context/base/mkxl/cont-log.mkxl b/tex/context/base/mkxl/cont-log.mkxl
index 3d110c648..12d0d06de 100644
--- a/tex/context/base/mkxl/cont-log.mkxl
+++ b/tex/context/base/mkxl/cont-log.mkxl
@@ -213,7 +213,7 @@
\ifx\fontalternative\s!it\syst_logos_xetex_e\orelse
\ifx\fontalternative\s!sl\syst_logos_xetex_e\orelse
\ifx\fontalternative\s!bi\syst_logos_xetex_e\orelse
- \ifx\fontalternative\s!bs\syst_logos_xetex_e\orelse
+ \ifx\fontalternative\s!bs\syst_logos_xetex_e\else
\mirror{E}\fi
\fi}%
\kern-.1667\emwidth\TeX}
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index e8fd03810..facf1f03a 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{2020.11.24 18:58}
+\newcontextversion{2020.11.25 16:53}
%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 fa3d1ecd3..1c9a0c02f 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.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.11.24 18:58}
+\edef\contextversion{2020.11.25 16:53}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/font-ini.mklx b/tex/context/base/mkxl/font-ini.mklx
index 0e3c414d5..9278183a8 100644
--- a/tex/context/base/mkxl/font-ini.mklx
+++ b/tex/context/base/mkxl/font-ini.mklx
@@ -1706,7 +1706,7 @@
\ifdefined\trycurrentfontclass \else
\protected\def\trycurrentfontclass#typeface%
- {\letvalueempty{\??fontclassnop#typeface}}
+ {\letcsname\??fontclassnop#typeface\endcsname\empty}
\fi
@@ -2282,7 +2282,7 @@
%D The next auxilliary macro is an alternative to \type {\fontname}.
-\def\purefontname#font{\clf_purefontname{\fontname#font}}
+\permanent\def\purefontname#font{\clf_purefontname{\fontname#font}}
%D \macros
%D {switchstyleonly}
@@ -2360,7 +2360,7 @@
%D the running text is temporary set to a smaller one|>| by saying \type
%D {\switchtobodyfont [global]}.
-\let\globalfontstyle\s!rm
+\mutable\let\globalfontstyle\s!rm
\permanent\protected\def\fullrestoreglobalbodyfont
{\let\fontsize\defaultfontsize
@@ -2426,7 +2426,7 @@
{\ifcsname\??predefinedfont#1\endcsname
\lastnamedcs
\else
- \font_basics_predefined{#1}%
+ \definedfont[#1]%
\fi}
\protected\def\font_basics_predefine#1#2%
@@ -2445,8 +2445,8 @@
\xdef\saveddefinedfontname{\fontname\font}%
\egroup}
-\def\saveddefinedfontid {\number\fontid\font}
-\def\saveddefinedfontname{\fontname\font}
+\mutable\def\saveddefinedfontid {\number\fontid\font}
+\mutable\def\saveddefinedfontname{\fontname\font}
%D Ugly helper:
@@ -2458,17 +2458,17 @@
\c_attr_transparency\the\c_attr_transparency
\relax}}
-\let\restorerunningstyleandcolor\relax
+\aliased\let\restorerunningstyleandcolor\relax
%D Handy for defining additional glyphs:
% todo: public implementors
-\let\getprivateglyphslot\clf_getprivateglyphslot % kind of private macro
+\aliased\let\getprivateglyphslot\clf_getprivateglyphslot % kind of private macro
-\let\getprivatechar \clf_getprivatechar % gives back a utf !
-\let\getprivatemathchar \clf_getprivatemathchar % gives back a utf !
-\let\getprivateslot \clf_getprivateslot % companion to fonts.helpers.addprivate
+\aliased\let\getprivatechar \clf_getprivatechar % gives back a utf !
+\aliased\let\getprivatemathchar \clf_getprivatemathchar % gives back a utf !
+\aliased\let\getprivateslot \clf_getprivateslot % companion to fonts.helpers.addprivate
% \protected\def\getprivatemathchar#1%
% {\begingroup\the\textfont\zerocount\getprivatechar{#1}\endgroup}
diff --git a/tex/context/base/mkxl/font-sty.mklx b/tex/context/base/mkxl/font-sty.mklx
index 01c02665e..db7b69e48 100644
--- a/tex/context/base/mkxl/font-sty.mklx
+++ b/tex/context/base/mkxl/font-sty.mklx
@@ -58,7 +58,7 @@
% maybe permanent
\def\font_basics_define_alternative_style_indeed#variantone#varianttwo#command%
- {\setuvalue{\??alternativestyle#command}{\font_helpers_apply_alternative_style{#variantone}{#varianttwo}}%
+ {\protected\defcsname\??alternativestyle#command\endcsname{\font_helpers_apply_alternative_style{#variantone}{#varianttwo}}%
\ifcsname#command\endcsname
% no redefinition
\orelse\ifnum\c_fonts_basics_alternative_style_method=\plusone
diff --git a/tex/context/base/mkxl/lang-ini.mkxl b/tex/context/base/mkxl/lang-ini.mkxl
index 9c55bcee3..b32ae4c30 100644
--- a/tex/context/base/mkxl/lang-ini.mkxl
+++ b/tex/context/base/mkxl/lang-ini.mkxl
@@ -209,8 +209,8 @@
\fi}
\def\lang_basics_install_indeed#1#2%
- {\ifcstok{\specificlanguageparameter{#1}\c!command}\v!no\else
- \ifcsname#1\endcsname\else\frozen\instance\setuvalue{#1}{\lang_basics_set_current[#2]}\fi
+ {\ifcstok{\specificlanguageparameter{#1}\c!command}\v!no\orelse\ifcsname#1\endcsname\else
+ \frozen\instance\protected\defcsname#1\endcsname{\lang_basics_set_current[#2]}%
\fi}
%D When the second argument is a language identifier, a synonym is created. This
diff --git a/tex/context/base/mkxl/node-bck.mkxl b/tex/context/base/mkxl/node-bck.mkxl
index e37d65b1c..0da516c88 100644
--- a/tex/context/base/mkxl/node-bck.mkxl
+++ b/tex/context/base/mkxl/node-bck.mkxl
@@ -36,12 +36,12 @@
\def\node_backgrounds_thecolorattr#1%
{attr \colormodelattribute \c_attr_colormodel
attr \colorattribute \lastnamedcs
- attr \transparencyattribute \thetransparencyattribute{#1} } % can be optimized
+ attr \transparencyattribute \rawtransparencyattribute{#1} } % can be optimized
\permanent\def\thecolorattr#1%
{attr \colormodelattribute \c_attr_colormodel
attr \colorattribute \csname\??colorattribute#1\endcsname
- attr \transparencyattribute \thetransparencyattribute{#1} } % can be optimized
+ attr \transparencyattribute \rawtransparencyattribute{#1} } % can be optimized
\permanent\def\backgroundcolorattr#1%
{\ifcsname\??colorattribute\currentcolorprefix#1\endcsname
@@ -54,37 +54,25 @@
{attr \backgroundattribute \plusone
attr \colormodelattribute \c_attr_colormodel
attr \colorattribute \csname\??colorattribute#1\endcsname
- attr \transparencyattribute \thetransparencyattribute{#1} } % can be optimized
+ attr \transparencyattribute \rawtransparencyattribute{#1} } % can be optimized
\def\node_backgrounds_thebackgroundcolorattr#1%
{attr \backgroundattribute \plusone
attr \colormodelattribute \c_attr_colormodel
attr \colorattribute \lastnamedcs
- attr \transparencyattribute \thetransparencyattribute{#1} } % can be optimized
+ attr \transparencyattribute \rawtransparencyattribute{#1} } % can be optimized
\permanent\def\thealignbackgroundcolorattr#1%
{attr \alignbackgroundattribute \plusone
attr \colormodelattribute \c_attr_colormodel
attr \colorattribute \csname\??colorattribute#1\endcsname
- attr \transparencyattribute \thetransparencyattribute{#1} } % can be optimized
+ attr \transparencyattribute \rawtransparencyattribute{#1} } % can be optimized
\permanent\protected\def\backgroundhbox{\node_backgrounds_boxes_add\hbox}
\permanent\protected\def\backgroundvbox{\node_backgrounds_boxes_add\vbox}
\permanent\protected\def\backgroundvtop{\node_backgrounds_boxes_add\vtop}
\permanent\protected\def\backgroundline{\dontleavehmode\node_backgrounds_boxes_add\hbox}
-% \def\node_backgrounds_boxes_add#1[#2]%
-% {\begingroup
-% \clf_enablebackgroundboxes
-% \dousecolorparameter{#2}%
-% \normalexpanded{\endgroup#1
-% attr \backgroundattribute \plusone
-% attr \colormodelattribute \the\c_attr_colormodel
-% attr \colorattribute \the\c_attr_color
-% attr \transparencyattribute \the\c_attr_transparency}}
-%
-% more efficient:
-
\def\node_backgrounds_boxes_add#1[#2]%
{\clf_enablebackgroundboxes
#1\backgroundcolorattr{#2}}
diff --git a/tex/context/base/mkxl/node-gcm.lmt b/tex/context/base/mkxl/node-gcm.lmt
index 8b09fb82b..7f2a7bded 100644
--- a/tex/context/base/mkxl/node-gcm.lmt
+++ b/tex/context/base/mkxl/node-gcm.lmt
@@ -37,8 +37,9 @@ local function set_components(base,list)
end
list = getnext(list)
end
- -- was forgotten:
- flush_list(l)
+ -- not yet as we need them
+ --
+ -- flush_list(l)
--
setprop(base,"components",n > 0 and t or false)
end
@@ -107,6 +108,7 @@ nuts.get_components = get_components
nuts.copy_only_glyphs = copy_only_glyphs
nuts.copy_no_components = copy_no_components
nuts.count_components = count_components
+nuts.flush_components = flush_list
nuts.setcomponents = function() report_error("unsupported: %a","setcomponents") end
nuts.getcomponents = function() report_error("unsupported: %a","getcomponents") end
diff --git a/tex/context/base/mkxl/node-rul.mkxl b/tex/context/base/mkxl/node-rul.mkxl
index f0f660f22..2ded50c77 100644
--- a/tex/context/base/mkxl/node-rul.mkxl
+++ b/tex/context/base/mkxl/node-rul.mkxl
@@ -116,27 +116,28 @@
\ifx\p_node_text\empty\else
\setbox\b_node_rules\hbox{\p_node_text}%
\fi
- \setevalue{\??barattribute\currentbar}{\number
+ \expandafter\integerdef\csname\??barattribute\currentbar\endcsname
\clf_definerule
- continue {\barparameter\c!continue}%
- unit {\barparameter\c!unit}%
- order {\barparameter\c!order}%
- rulethickness {\barparameter\c!rulethickness}%
- method \barparameter\c!method
- max \barparameter\c!max\space % number
- mp {\includeMPgraphic{\barparameter\c!mp}}
- ma \thecolormodelattribute
- ca \thecolorattribute\p_node_rules_color
- ta \thetransparencyattribute\p_node_rules_color
- offset \barparameter\c!offset\space % number
- dy \barparameter\c!dy\space % number
- empty {\barparameter\c!empty}%
+ continue {\barparameter\c!continue}%
+ unit {\barparameter\c!unit}%
+ order {\barparameter\c!order}%
+ rulethickness {\barparameter\c!rulethickness}%
+ method \barparameter\c!method
+ max \barparameter\c!max\space % number
+ mp {\includeMPgraphic{\barparameter\c!mp}}
+ ma \c_attr_colormodel
+ ca \rawcolorattribute\p_node_rules_color
+ ta \rawtransparencyattribute\p_node_rules_color
+ offset \barparameter\c!offset\space % number
+ dy \barparameter\c!dy\space % number
+ empty {\barparameter\c!empty}%
\ifx\p_node_text\empty\else
- % not that useful and efficient, more for testing something
- text \b_node_rules
- repeat {\barparameter\c!repeat}%
+ % not that useful and efficient, more for testing something
+ text \b_node_rules
+ repeat {\barparameter\c!repeat}%
\fi
- \relax}}
+ \relax
+ \relax}
\protected\def\node_rules_redefine#1%
{\def\currentbar{#1}\node_rules_define}
@@ -498,21 +499,22 @@
\protected\def\node_linefiller_define
{\edef\p_node_rules_color{\linefillerparameter\c!color}%
- \setevalue{\??linefillerattribute\currentlinefiller}{\number
- \clf_definelinefiller
- %method \linefillerparameter\c!method
- location {\linefillerparameter\c!location}%
- scope {\linefillerparameter\c!scope}%
- mp {\includeMPgraphic{\linefillerparameter\c!mp}}%
- ma \thecolormodelattribute
- ca \thecolorattribute\p_node_rules_color
- ta \thetransparencyattribute\p_node_rules_color
- height \dimexpr\linefillerparameter\c!height\relax
- depth \dimexpr\linefillerparameter\c!depth\relax
- distance \dimexpr\linefillerparameter\c!distance\relax
- threshold \dimexpr\linefillerparameter\c!threshold\relax
- rulethickness \dimexpr\linefillerparameter\c!rulethickness\relax
- \relax}}
+ \expandafter\integerdef\csname\??linefillerattribute\currentlinefiller\endcsname
+ \clf_definelinefiller
+ %method \linefillerparameter\c!method
+ location {\linefillerparameter\c!location}%
+ scope {\linefillerparameter\c!scope}%
+ mp {\includeMPgraphic{\linefillerparameter\c!mp}}%
+ ma \c_attr_colormodel
+ ca \rawcolorattribute\p_node_rules_color
+ ta \rawtransparencyattribute\p_node_rules_color
+ height \dimexpr\linefillerparameter\c!height\relax
+ depth \dimexpr\linefillerparameter\c!depth\relax
+ distance \dimexpr\linefillerparameter\c!distance\relax
+ threshold \dimexpr\linefillerparameter\c!threshold\relax
+ rulethickness \dimexpr\linefillerparameter\c!rulethickness\relax
+ \relax
+ \relax}
\protected\def\node_linefiller_redefine#1%
{\def\currentlinefiller{#1}\node_linefiller_define}
diff --git a/tex/context/base/mkxl/page-mcl.mkxl b/tex/context/base/mkxl/page-mcl.mkxl
index 3cac820c2..cff4a6a63 100644
--- a/tex/context/base/mkxl/page-mcl.mkxl
+++ b/tex/context/base/mkxl/page-mcl.mkxl
@@ -529,11 +529,8 @@
\let\strc_itemgroups_start_columns_old\strc_itemgroups_start_columns
\let\strc_itemgroups_stop_columns_old \strc_itemgroups_stop_columns
-\def\strc_itemgroups_start_columns_new
- {\startmulticolumns[\c!n=\itemgroupparameter\c!n]}
-
-\def\strc_itemgroups_stop_columns_new
- {\stopmulticolumns}
+\def\strc_itemgroups_start_columns_new{\startmulticolumns[\c!n=\itemgroupparameter\c!n]}
+\def\strc_itemgroups_stop_columns_new {\stopmulticolumns}
\installtexexperiment
{itemize.columns}
diff --git a/tex/context/base/mkxl/page-txt.mklx b/tex/context/base/mkxl/page-txt.mklx
index f8c77e572..5980277c3 100644
--- a/tex/context/base/mkxl/page-txt.mklx
+++ b/tex/context/base/mkxl/page-txt.mklx
@@ -405,7 +405,7 @@
\resetlayoutelementparameter\c!righttext
\or % 3
\edef\currentlayoutelement{#vertical:#horizontal}%
- \letvalueempty{\layoutelementhash\begincsname\??layouttextcontent\v!text:#tag\endcsname\c!middletext}%
+ \letcsname\layoutelementhash\begincsname\??layouttextcontent\v!text:#tag\endcsname\c!middletext\endcsname\empty
\fi}
\letvalue{\??layouttextcontent\v!text:\c!middle}\c!middletext
diff --git a/tex/context/base/mkxl/scrn-wid.mklx b/tex/context/base/mkxl/scrn-wid.mklx
index 40bf95cf5..b35391d19 100644
--- a/tex/context/base/mkxl/scrn-wid.mklx
+++ b/tex/context/base/mkxl/scrn-wid.mklx
@@ -190,8 +190,8 @@
depth \dimexpr\currentattachmentdepth \relax
color {\attachmentparameter\c!color}%
colormodel \c_attr_colormodel
- colorvalue \numexpr\thecolorattribute{\attachmentparameter\c!color}\relax % or are these chardefs
- transparencyvalue \numexpr\thetransparencyattribute{\attachmentparameter\c!color}\relax % or are these chardefs
+ colorvalue \rawcolorattribute{\attachmentparameter\c!color}%
+ transparencyvalue \rawtransparencyattribute{\attachmentparameter\c!color}%
symbol {\currentattachmentsymbol}%
layer {\attachmentparameter\c!textlayer}%
% these will be overloaded by registered when available
@@ -478,8 +478,8 @@
nx {\commentparameter\c!nx}%
ny {\commentparameter\c!ny}%
colormodel \c_attr_colormodel
- colorvalue \numexpr\thecolorattribute{\commentparameter\c!color}\relax
- transparencyvalue \numexpr\thetransparencyattribute{\commentparameter\c!color}\relax
+ colorvalue \rawcolorattribute{\commentparameter\c!color}%
+ transparencyvalue \rawtransparencyattribute{\commentparameter\c!color}%
option {\commentparameter\c!option}% % todo
symbol {\commentparameter\c!symbol}%
buffer {\commentparameter\c!buffer}% {\v!comment}%
diff --git a/tex/context/base/mkxl/spac-ver.lmt b/tex/context/base/mkxl/spac-ver.lmt
index 90eeacf26..f3fa78ddd 100644
--- a/tex/context/base/mkxl/spac-ver.lmt
+++ b/tex/context/base/mkxl/spac-ver.lmt
@@ -804,7 +804,7 @@ do
end
local function after()
- if fixed then
+ if b_fixed then
b_stretch = 0
b_shrink = 0
else
@@ -924,7 +924,7 @@ do
end
b_done = false
b_packed = false
- b_grid = gridsnapping
+ b_grid = grid
before()
lpegmatch(pattern,str)
after()
diff --git a/tex/context/base/mkxl/spac-ver.mkxl b/tex/context/base/mkxl/spac-ver.mkxl
index 3e68016cc..f2bb68093 100644
--- a/tex/context/base/mkxl/spac-ver.mkxl
+++ b/tex/context/base/mkxl/spac-ver.mkxl
@@ -402,7 +402,7 @@
\fi}
\permanent\protected\def\installwhitespacemethod#1#2%
- {\setvalue{\??whitespacemethod#1}{#2}}
+ {\defcsname\??whitespacemethod#1\endcsname{#2}}
\installwhitespacemethod \v!fix {}
\installwhitespacemethod \v!fixed {\setfalse\c_spac_whitespace_flexible}
@@ -1489,8 +1489,8 @@
\newdimen \globalbodyfontstrutheight
\newdimen \globalbodyfontstrutdepth
-\permanent\def\snappedvboxattribute{\ifgridsnapping attr\snapvboxattribute\c_attr_snapmethod\fi}
-\permanent\def\setlocalgridsnapping{\ifgridsnapping \c_attr_snapvbox \c_attr_snapmethod\fi}
+\permanent\def\snappedvboxattribute{\ifgridsnapping attr\snapvboxattribute\c_attr_snapmethod\fi}
+\permanent\def\setlocalgridsnapping{\ifgridsnapping \c_attr_snapvbox \c_attr_snapmethod\fi}
\def\spac_grids_set_local_snapping#1%
{\ifgridsnapping
@@ -1502,9 +1502,7 @@
\def\spac_grids_expand_snapper#1%
{\edef\m_spac_snapper
{\ifempty\m_spac_snapper\else\m_spac_snapper,\fi
- \ifcsname\??gridsnappersets#1\endcsname
- \lastnamedcs\else#1%
- \fi}}
+ \ifcsname\??gridsnappersets#1\endcsname\lastnamedcs\else#1\fi}}
\permanent\protected\def\installsnapvalues#1#2%
{\let\m_spac_snapper\empty
@@ -1514,10 +1512,10 @@
\scratchcounter\lastnamedcs % already defined
\else
\scratchcounter\clf_definesnapmethod{#1}{\m_spac_snapper}%
- \setevalue{\??gridsnapperattributes\currentsnapper}{\the\scratchcounter}%
+ \edefcsname\??gridsnapperattributes\currentsnapper\endcsname{\the\scratchcounter}%
\fi
- \setevalue{\??gridsnappers#1}{\c_attr_snapmethod\the\scratchcounter\relax}%
- \letvalue{\??gridsnappersets#1}\m_spac_snapper}
+ \edefcsname\??gridsnappers#1\endcsname{\c_attr_snapmethod\the\scratchcounter\relax}%
+ \letcsname\??gridsnappersets#1\endcsname\m_spac_snapper}
\permanent\def\theexpandedsnapperset#1{\begincsname\??gridsnappersets#1\endcsname} % only for manuals
@@ -1900,13 +1898,13 @@
\permanent\tolerant\protected\def\definevspacingamount[#1]#*[#2]#*[#3]% can be combined
{\ifarguments
- %setvalue{\??vspacingamount#1}{\lineheight}%
+ %defcsname\??vspacingamount#1\endcsname{\lineheight}%
\or
- \setvalue{\??vspacingamount#1}{\lineheight}%
+ \defcsname\??vspacingamount#1\endcsname{\lineheight}%
\or
- \setvalue{\??vspacingamount#1}{\ifgridsnapping\lineheight\else#2\fi}%
+ \defcsname\??vspacingamount#1\endcsname{\ifgridsnapping\lineheight\else#2\fi}%
\or
- \setvalue{\??vspacingamount#1}{\ifgridsnapping#3\else#2\fi}%
+ \defcsname\??vspacingamount#1\endcsname{\ifgridsnapping#3\else#2\fi}%
\fi
\clf_vspacingsetamount{#1}}
@@ -2008,7 +2006,7 @@
\fi}
\def\spac_vspacing_yes_preset#1%
- {\setxvalue{\??vspacing#1}{\clf_vspacing{#1}}%
+ {\xdefcsname\??vspacing#1\endcsname{\clf_vspacing{#1}}%
%\writestatus{}{}%
%\writestatus{#1}{\expandafter\meaning\csname\??vspacing#1\endcsname}%
%\writestatus{}{}%
@@ -2205,11 +2203,11 @@
\permanent\tolerant\protected\def\definevspace[#1]#*[#2]#*[#3]%
{\ifarguments
\or
- \letvalue{\??vspace:#1}\empty % or undefined?
+ \letcsname\??vspace:#1\endcsname\empty
\or
- \setvalue{\??vspace:#1}{#2}%
+ \defcsname\??vspace:#1\endcsname{#2}%
\or
- \setvalue{\??vspace#1:#2}{#3}%
+ \defcsname\??vspace#1:#2\endcsname{#3}%
\fi}
\letvalue{\??vspace:\s!unknown}\zeropoint
diff --git a/tex/context/base/mkxl/strc-des.mklx b/tex/context/base/mkxl/strc-des.mklx
index e63512c7f..5ff375e49 100644
--- a/tex/context/base/mkxl/strc-des.mklx
+++ b/tex/context/base/mkxl/strc-des.mklx
@@ -129,7 +129,7 @@
% \description [reference] text \par
% \description [reference] {title} text \par
-\tolerant\protected\def\strc_descriptions_command[#1]#*[#2]#:#*#=%
+\tolerant\protected\def\strc_descriptions_command[#1]#*[#2]%
{\begingroup
\strc_constructions_initialize{#1}%
\ifhastok={#2}%
diff --git a/tex/context/base/mkxl/strc-itm.mklx b/tex/context/base/mkxl/strc-itm.mklx
index a1de95195..df6272310 100644
--- a/tex/context/base/mkxl/strc-itm.mklx
+++ b/tex/context/base/mkxl/strc-itm.mklx
@@ -1754,7 +1754,7 @@
\protected\def\startcollectitems % todo: frozen
{\ifconditional\c_strc_itemgroups_collecting
\c_strc_itemgroups_collected_stored\zerocount
- \letvalue{\e!start\v!item}\strc_itemgroups_collected_store
+ \letcsname\e!start\v!item\endcsname\strc_itemgroups_collected_store
\fi}
%D Left-overs:
diff --git a/tex/context/base/mkxl/tabl-ntb.mkxl b/tex/context/base/mkxl/tabl-ntb.mkxl
index 51e718b9a..67288c83e 100644
--- a/tex/context/base/mkxl/tabl-ntb.mkxl
+++ b/tex/context/base/mkxl/tabl-ntb.mkxl
@@ -838,10 +838,10 @@
%D
%D \typebuffer \getbuffer
-\tolerant\def\tabl_ntb_th[#1]#2\eTH
+\tolerant\def\tabl_ntb_th[#1]#:#2\eTH
{\tabl_ntb_td[#1,\c!color=\naturaltablelocalparameter\c!headcolor,\c!style=\naturaltablelocalparameter\c!headstyle,\c!aligncharacter=\v!no]#2\eTD}
-\tolerant\def\tabl_ntb_tn[#1]#2\eTN
+\tolerant\def\tabl_ntb_tn[#1]#:#2\eTN
{\tabl_ntb_td[#1]\digits#2\relax\eTD}
%D Vit Zyka needed the option to create a distance between columns, so I added
diff --git a/tex/context/base/mkxl/typo-dir.mkxl b/tex/context/base/mkxl/typo-dir.mkxl
index 693a49c18..dd87a7299 100644
--- a/tex/context/base/mkxl/typo-dir.mkxl
+++ b/tex/context/base/mkxl/typo-dir.mkxl
@@ -52,7 +52,7 @@
% maybe use chardefs
\def\typo_dir_get_mode
- {\edef\currentbidimode{\clf_getbidimode
+ {\def\currentbidimode{\clf_getbidimode % test edef
scope {\directionsparameter\c!bidi}%
method {\directionsparameter\c!method}%
fences {\directionsparameter\c!fences}%
diff --git a/tex/context/base/mkxl/typo-prc.mklx b/tex/context/base/mkxl/typo-prc.mklx
index fa8bf2c07..9531949b8 100644
--- a/tex/context/base/mkxl/typo-prc.mklx
+++ b/tex/context/base/mkxl/typo-prc.mklx
@@ -55,7 +55,7 @@
\installcommandhandler \??processor {processor} \??processor
\appendtoks
- \letvalue{\??processorcheck\currentprocessor}\relax
+ \letcsname\??processorcheck\currentprocessor\endcsname\relax
\clf_registerstructureprocessor{\currentprocessor}% global, but it permits using processor that are yet undefined
\to \everydefineprocessor
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 8b4ae8542..bdaa695f5 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2020-11-24 18:58
+-- merge date : 2020-11-25 16:53
do -- begin closure to overcome local limits and interference
@@ -26627,6 +26627,7 @@ local copy_only_glyphs=nuts.copy_only_glyphs
local count_components=nuts.count_components
local set_components=nuts.set_components
local get_components=nuts.get_components
+local flush_components=nuts.flush_components
local ischar=nuts.ischar
local usesfont=nuts.uses_font
local insert_node_after=nuts.insert_after
@@ -26831,6 +26832,7 @@ local function markstoligature(head,start,stop,char)
setsubtype(base,ligatureglyph_code)
set_components(base,start)
setlink(prev,base,next)
+ flush_components(start)
return head,base
end
end
@@ -26910,6 +26912,7 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
break
end
end
+ flush_components(components)
else
local discprev,discnext=getboth(discfound)
if discprev and discnext then