diff options
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 Binary files differindex cc4b8a7b6..ae2bbfc23 100644 --- a/doc/context/documents/general/manuals/luametatex.pdf +++ b/doc/context/documents/general/manuals/luametatex.pdf 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 Binary files differindex fb6af0b89..e6b9a8894 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 350261887..75f6a775a 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf 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 |