summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-05-20 17:05:45 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-05-20 17:05:45 +0200
commit4e863080ff7d71e04f861ab33046e7e799a8a8c6 (patch)
tree2e7b188c7873549d00c1ed5c8f3de006f4cf99e7
parentf0a7f858266c83825b2c8f6e9731d3c21abd3f9f (diff)
downloadcontext-4e863080ff7d71e04f861ab33046e7e799a8a8c6.tar.gz
2021-05-20 15:59:00
-rw-r--r--scripts/context/lua/mtx-fonts.lua2
-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/char-fio.lua4
-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/core-con.lua6
-rw-r--r--tex/context/base/mkiv/font-mis.lua2
-rw-r--r--tex/context/base/mkiv/font-otj.lua35
-rw-r--r--tex/context/base/mkiv/font-otl.lua2
-rw-r--r--tex/context/base/mkiv/font-oup.lua4
-rw-r--r--tex/context/base/mkiv/node-nut.lua6
-rw-r--r--tex/context/base/mkiv/node-res.lua47
-rw-r--r--tex/context/base/mkiv/node-typ.lua7
-rw-r--r--tex/context/base/mkiv/scrp-cjk.lua1
-rw-r--r--tex/context/base/mkiv/scrp-ini.lua4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin23930 -> 23933 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin229267 -> 229263 bytes
-rw-r--r--tex/context/base/mkiv/syst-lua.mkiv4
-rw-r--r--tex/context/base/mkiv/trac-ctx.lua4
-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-otj.lmt51
-rw-r--r--tex/context/base/mkxl/scrp-ini.lmt4
-rw-r--r--tex/context/base/mkxl/syst-lua.mkxl13
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua36
26 files changed, 108 insertions, 136 deletions
diff --git a/scripts/context/lua/mtx-fonts.lua b/scripts/context/lua/mtx-fonts.lua
index 73985bf9b..8abfee0cb 100644
--- a/scripts/context/lua/mtx-fonts.lua
+++ b/scripts/context/lua/mtx-fonts.lua
@@ -16,7 +16,7 @@ local lower = string.lower
local concat = table.concat
local write_nl = (logs and logs.writer) or (texio and texio.write_nl) or print
-local otlversion = 3.115
+local otlversion = 3.116
local helpinfo = [[
<?xml version="1.0"?>
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 1df1ff3e9..8f9793d5b 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{2021.05.20 11:01}
+\newcontextversion{2021.05.20 15:57}
%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 67ee22705..45e9cc413 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{2021.05.20 11:01}
+\edef\contextversion{2021.05.20 15:57}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/char-fio.lua b/tex/context/base/mkiv/char-fio.lua
index b1f652eed..2b0fe42ce 100644
--- a/tex/context/base/mkiv/char-fio.lua
+++ b/tex/context/base/mkiv/char-fio.lua
@@ -38,8 +38,8 @@ disableaction(textfileactions, "characters.filters.utf.decompose")
local report = logs.reporter("unicode filter")
local reporting = "no"
--- this is messy as for performance reasons i don't want this to happen
--- per line by default
+-- This is messy as for performance reasons i don't want this to happen per line by
+-- default.
local enforced = {
["characters.filters.utf.collapse"] = true,
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 9f8f0bebc..f8e6a0c29 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{2021.05.20 11:01}
+\newcontextversion{2021.05.20 15:57}
%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 7a64a1e20..bdf95eb9d 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{2021.05.20 11:01}
+\edef\contextversion{2021.05.20 15:57}
%D Kind of special:
diff --git a/tex/context/base/mkiv/core-con.lua b/tex/context/base/mkiv/core-con.lua
index f1aa37a7c..244ede469 100644
--- a/tex/context/base/mkiv/core-con.lua
+++ b/tex/context/base/mkiv/core-con.lua
@@ -2148,3 +2148,9 @@ local function field(n) return context(osdate("*t")[n]) end
implement { name = "actualday", public = true, actions = function() field("day") end }
implement { name = "actualmonth", public = true, actions = function() field("month") end }
implement { name = "actualyear", public = true, actions = function() field("year") end }
+
+implement {
+ name = "uuid",
+ public = true,
+ actions = { os.uuid, context },
+}
diff --git a/tex/context/base/mkiv/font-mis.lua b/tex/context/base/mkiv/font-mis.lua
index 29d4d91c8..6620dd9f4 100644
--- a/tex/context/base/mkiv/font-mis.lua
+++ b/tex/context/base/mkiv/font-mis.lua
@@ -21,7 +21,7 @@ local readers = otf.readers
if readers then
- otf.version = otf.version or 3.115
+ otf.version = otf.version or 3.116
otf.cache = otf.cache or containers.define("fonts", "otl", otf.version, true)
function fonts.helpers.getfeatures(name,save)
diff --git a/tex/context/base/mkiv/font-otj.lua b/tex/context/base/mkiv/font-otj.lua
index c21790100..c4ec9972c 100644
--- a/tex/context/base/mkiv/font-otj.lua
+++ b/tex/context/base/mkiv/font-otj.lua
@@ -90,6 +90,8 @@ local getoffsets = nuts.getoffsets
local getboth = nuts.getboth
local getdisc = nuts.getdisc
local setdisc = nuts.setdisc
+local getreplace = nuts.getreplace
+local setreplace = nuts.setreplace
local setoffsets = nuts.setoffsets
local ischar = nuts.ischar
local getkern = nuts.getkern
@@ -847,20 +849,17 @@ local function inject_positions_only(head,where)
insertnodeafter(head,current,fontkern(rightkern))
end
end
- else
+ elseif next then
local i = p.emptyinjections
if i then
-- glyph|disc|glyph (special case)
local rightkern = i.rightkern
- if rightkern and rightkern ~= 0 then
- if next and getid(next) == disc_code then
- if replace then
- -- error, we expect an empty one
- else
- -- KE setfield(next,"replace",fontkern(rightkern)) -- maybe also leftkern
- replace = fontkern(rightkern) -- maybe also leftkern
- done = true --KE
- end
+ if rightkern and rightkern ~= 0 and getid(next) == disc_code then
+ local replace = getreplace(next)
+ if replace then
+ -- can't happen
+ else
+ setreplace(next,fontkern(rightkern))
end
end
end
@@ -1313,19 +1312,17 @@ local function inject_everything(head,where)
end
end
end
- else
+ elseif next then
local i = p.emptyinjections
if i then
-- glyph|disc|glyph (special case)
local rightkern = i.rightkern
- if rightkern and rightkern ~= 0 then
- if next and getid(next) == disc_code then
- if replace then
- -- error, we expect an empty one
- else
- replace = fontkern(rightkern)
- done = true
- end
+ if rightkern and rightkern ~= 0 and getid(next) == disc_code then
+ local replace = getreplace(next)
+ if replace then
+ -- can't happen
+ else
+ setreplace(next,fontkern(rightkern))
end
end
end
diff --git a/tex/context/base/mkiv/font-otl.lua b/tex/context/base/mkiv/font-otl.lua
index c13011f95..4619e13dc 100644
--- a/tex/context/base/mkiv/font-otl.lua
+++ b/tex/context/base/mkiv/font-otl.lua
@@ -52,7 +52,7 @@ local report_otf = logs.reporter("fonts","otf loading")
local fonts = fonts
local otf = fonts.handlers.otf
-otf.version = 3.115 -- beware: also sync font-mis.lua and in mtx-fonts
+otf.version = 3.116 -- beware: also sync font-mis.lua and in mtx-fonts
otf.cache = containers.define("fonts", "otl", otf.version, true)
otf.svgcache = containers.define("fonts", "svg", otf.version, true)
otf.pngcache = containers.define("fonts", "png", otf.version, true)
diff --git a/tex/context/base/mkiv/font-oup.lua b/tex/context/base/mkiv/font-oup.lua
index 93a1d526e..c93ad4743 100644
--- a/tex/context/base/mkiv/font-oup.lua
+++ b/tex/context/base/mkiv/font-oup.lua
@@ -2608,8 +2608,8 @@ local function checkpairs(lookup)
local v = d2[1]
if v == true then
-- all zero
- -- elseif v and (v[1] ~= 0 or v[2] ~= 0 or v[4] ~= 0) then
- elseif v and (v[1] ~= 0 or v[2] ~= 0 or v[3] ~= 0 or v[4] ~= 0) then -- vkrn has v[3] ~= 0
+ elseif v and (v[1] ~= 0 or v[2] ~= 0 or v[4] ~= 0) then
+ -- complex kerns
return false
end
end
diff --git a/tex/context/base/mkiv/node-nut.lua b/tex/context/base/mkiv/node-nut.lua
index 2f69a0f15..dcd08f317 100644
--- a/tex/context/base/mkiv/node-nut.lua
+++ b/tex/context/base/mkiv/node-nut.lua
@@ -442,9 +442,9 @@ if not nuts.getpre then
function nuts.getpost (n) local _, h, _, _, t, _ = d_getdisc(n,true) return h, t end
function nuts.getreplace(n) local _, _, h, _, _, t = d_getdisc(n,true) return h, t end
- function nuts.setpre (n,h) d_setfield(d,"pre", h) end
- function nuts.setpost (n,h) d_setfield(d,"post", h) end
- function nuts.setreplace(n,h) d_setfield(d,"replace",h) end
+ function nuts.setpre (n,h) d_setfield(n,"pre", h) end
+ function nuts.setpost (n,h) d_setfield(n,"post", h) end
+ function nuts.setreplace(n,h) d_setfield(n,"replace",h) end
end
diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua
index 684a8cc77..408f8ea47 100644
--- a/tex/context/base/mkiv/node-res.lua
+++ b/tex/context/base/mkiv/node-res.lua
@@ -173,19 +173,10 @@ local savepos = register_nut(new_nut(whatsit_code,whatsitcodes.savepos
local user_node = new_nut(whatsit_code,whatsitcodes.userdefined)
-if CONTEXTLMTXMODE == 0 then
- setfield(user_node,"type",usercodes.number)
-end
-
-local left_margin_kern, right_margin_kern
+setfield(user_node,"type",usercodes.number)
-if CONTEXTLMTXMODE > 0 then
- left_margin_kern = register_nut(new_nut(kern_code,kerncodes.leftmargincode))
- right_margin_kern = register_nut(new_nut(kern_code,kerncodes.rightmargincode))
-else
- left_margin_kern = register_nut(new_nut(nodecodes.marginkern,0))
- right_margin_kern = register_nut(new_nut(nodecodes.marginkern,1))
-end
+local left_margin_kern = register_nut(new_nut(nodecodes.marginkern,0))
+local right_margin_kern = register_nut(new_nut(nodecodes.marginkern,1))
local lineskip = register_nut(new_nut(glue_code,gluecodes.lineskip))
local baselineskip = register_nut(new_nut(glue_code,gluecodes.baselineskip))
@@ -429,27 +420,15 @@ function nutpool.savepos()
return copy_nut(savepos)
end
-if CONTEXTLMTXMODE == 0 then
-
- function nutpool.latelua(code)
- local n = copy_nut(latelua)
- if type(code) == "table" then
- local action = code.action
- local specification = code.specification or code
- code = function() action(specification) end
- end
- setdata(n,code)
- return n
- end
-
-else
-
- function nutpool.latelua(code)
- local n = copy_nut(latelua)
- nodeproperties[n] = { data = code }
- return n
+function nutpool.latelua(code)
+ local n = copy_nut(latelua)
+ if type(code) == "table" then
+ local action = code.action
+ local specification = code.specification or code
+ code = function() action(specification) end
end
-
+ setdata(n,code)
+ return n
end
function nutpool.leftmarginkern(glyph,width)
@@ -575,7 +554,7 @@ local function cleanup(nofboxes) -- todo
return nr, nl, nofboxes -- can be nil
end
-local usage = CONTEXTLMTXMODE > 0 and node.inuse or function()
+local function usage()
local t = { }
for n, tag in gmatch(status.node_mem_usage,"(%d+) ([a-z_]+)") do
t[tag] = tonumber(n) or 0
@@ -583,7 +562,7 @@ local usage = CONTEXTLMTXMODE > 0 and node.inuse or function()
return t
end
-local stock = CONTEXTLMTXMODE > 0 and node.instock or { }
+local stock = { }
nutpool .cleanup = cleanup
nodepool.cleanup = cleanup
diff --git a/tex/context/base/mkiv/node-typ.lua b/tex/context/base/mkiv/node-typ.lua
index f1eceb8f3..d1e788d62 100644
--- a/tex/context/base/mkiv/node-typ.lua
+++ b/tex/context/base/mkiv/node-typ.lua
@@ -20,7 +20,6 @@ local setchar = nuts.setchar
local setattrlist = nuts.setattrlist
local getfont = nuts.getfont
-local getattrlist = nuts.getattrlist
local hpack_node_list = nuts.hpack
local vpack_node_list = nuts.vpack
@@ -41,11 +40,7 @@ local fontparameters = fonts.hashes.parameters
local function tonodes(str,fontid,spacing,templateglyph,attrid) -- quick and dirty
local head, prev = nil, nil
if not fontid then
- if templateglyph then
- fontid = getfont(templateglyph)
- else
- fontid = currentfont()
- end
+ fontid = templateglyph and getfont(templateglyph) or currentfont()
end
if attrid == true then
if templateglyph then
diff --git a/tex/context/base/mkiv/scrp-cjk.lua b/tex/context/base/mkiv/scrp-cjk.lua
index d28b7f922..eaffb5c5b 100644
--- a/tex/context/base/mkiv/scrp-cjk.lua
+++ b/tex/context/base/mkiv/scrp-cjk.lua
@@ -71,7 +71,6 @@ local report_details = logs.reporter("scripts","detail")
local insertnodeafter = scripts.helpers.insertnodeafter
local insertnodebefore = scripts.helpers.insertnodebefore
-
local inter_char_shrink = 0
local inter_char_stretch = 0
local inter_char_half_shrink = 0
diff --git a/tex/context/base/mkiv/scrp-ini.lua b/tex/context/base/mkiv/scrp-ini.lua
index e19ca5b40..1ae1e6cbd 100644
--- a/tex/context/base/mkiv/scrp-ini.lua
+++ b/tex/context/base/mkiv/scrp-ini.lua
@@ -122,13 +122,13 @@ local insertnodebefore, insertnodeafter do
local insertbefore = nuts.insertbefore
local setattributelist = nuts.setattributelist
- local function insertnodebefore(head,current,what) -- todo : lmtx
+ insertnodebefore = function (head,current,what)
head, current = insertbefore(head,current,what)
setattributelist(what,current)
return head, current
end
- local function insertnodeafter(head,current,what) -- todo : lmtx
+ insertnodeafter = function(head,current,what)
head, current = insertafter(head,current,what)
setattributelist(what,current)
return head, current
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index bb2027071..9338f9832 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 30eef15fe..0cddd6377 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/mkiv/syst-lua.mkiv b/tex/context/base/mkiv/syst-lua.mkiv
index f0902eaf5..327d1d407 100644
--- a/tex/context/base/mkiv/syst-lua.mkiv
+++ b/tex/context/base/mkiv/syst-lua.mkiv
@@ -73,8 +73,8 @@
%D We can omit the tex.ctxcatcodes here as nowadays we seldom change the regime at
%D the \TEX\ end:
-%def\luaexpr#1{\ctxlua{context (tostring(#1))}} % more efficient:
-\def\luaexpr#1{\ctxlua{tex.print(tostring(#1))}} % no use is shortcutting has to be compiled
+%def\luaexpr#1{\ctxlua{context (tostring(#1))}} % more efficient:
+\def\luaexpr#1{\ctxlua{tex.print(tostring(#1))}} % no use in shortcutting has to be compiled
%D But as we only use write 16 we could as well do all in \LUA\ and ignore the rest.
%D Okay, we still can do writes here but only when not blocked.
diff --git a/tex/context/base/mkiv/trac-ctx.lua b/tex/context/base/mkiv/trac-ctx.lua
index a808778b3..f3243d398 100644
--- a/tex/context/base/mkiv/trac-ctx.lua
+++ b/tex/context/base/mkiv/trac-ctx.lua
@@ -66,9 +66,9 @@ implement {
}
implement {
- name = "installtextracker",
+ name = "installtextracker",
arguments = "3 strings",
- actions = function(tag,enable,disable)
+ actions = function(tag,enable,disable)
install(textrackers,trackers.register,tag,enable,disable)
end,
}
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index a51da5498..495d9ba38 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{2021.05.20 11:01}
+\newcontextversion{2021.05.20 15:57}
%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 98a239c8f..0674d93a4 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{2021.05.20 11:01}
+\immutable\edef\contextversion{2021.05.20 15:57}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/font-otj.lmt b/tex/context/base/mkxl/font-otj.lmt
index 800628934..5ef3fd5c3 100644
--- a/tex/context/base/mkxl/font-otj.lmt
+++ b/tex/context/base/mkxl/font-otj.lmt
@@ -99,6 +99,8 @@ local yscaled = nuts.yscaled
local getboth = nuts.getboth
local getdisc = nuts.getdisc
local setdisc = nuts.setdisc
+local getreplace = nuts.getreplace
+local setreplace = nuts.setreplace
local setoffsets = nuts.setoffsets
local addxoffset = nuts.addxoffset
local addyoffset = nuts.addyoffset
@@ -1473,19 +1475,17 @@ local function inject_positions_only_kerns(head,where)
insertnodeafter(head,current,somekern(fontkern,rightkern,current))
end
end
- else
+ elseif next then
local i = p.emptyinjections
if i then
-- glyph|disc|glyph (special case)
local rightkern = i.rightkern
- if rightkern and rightkern ~= 0 then
- if next and getid(next) == disc_code then
- if replace then
- -- error, we expect an empty one
- else
- replace = somekern(fontkern,xscaled(current,rightkern),current) -- maybe also leftkern
- done = true --KE
- end
+ if rightkern and rightkern ~= 0 and getid(next) == disc_code then
+ local replace = getreplace(next)
+ if replace then
+ -- can't happen
+ else
+ setreplace(next,somekern(fontkern,xscaled(current,rightkern),current))
end
end
end
@@ -1694,20 +1694,17 @@ local function inject_positions_only_margins(head,where)
if leftkern ~= 0 or rightkern ~= 0 or yoffset ~= 0 then
addxymargins(n,-leftkern,-rightkern,yoffset) -- also scales
end
- else
+ elseif next then
local i = p.emptyinjections
if i then
-- glyph|disc|glyph (special case)
local rightkern = i.rightkern
- if rightkern and rightkern ~= 0 then
- if next and getid(next) == disc_code then
- if replace then
- -- error, we expect an empty one
- else
- -- next disc | current
- addxymargins(current,-rightkern) -- NEEDS CHECKING
- done = true --KE
- end
+ if rightkern and rightkern ~= 0 and getid(next) == disc_code then
+ local replace = getreplace(next)
+ if replace then
+ -- can't happen
+ else
+ setreplace(next,somekern(fontkern,xscaled(current,rightkern),current))
end
end
end
@@ -2067,19 +2064,17 @@ local function inject_everything(head,where)
end
end
end
- else
+ elseif next then
local i = p.emptyinjections
if i then
-- glyph|disc|glyph (special case)
local rightkern = i.rightkern
- if rightkern and rightkern ~= 0 then
- if next and getid(next) == disc_code then
- if replace then
- -- error, we expect an empty one
- else
- replace = somekern(fontkern,xscaled(current,rightkern),current)
- done = true
- end
+ if rightkern and rightkern ~= 0 and getid(next) == disc_code then
+ local replace = getreplace(next)
+ if replace then
+ -- can't happen
+ else
+ setreplace(next,somekern(fontkern,xscaled(current,rightkern),current))
end
end
end
diff --git a/tex/context/base/mkxl/scrp-ini.lmt b/tex/context/base/mkxl/scrp-ini.lmt
index 38687fe97..c0a42720a 100644
--- a/tex/context/base/mkxl/scrp-ini.lmt
+++ b/tex/context/base/mkxl/scrp-ini.lmt
@@ -94,13 +94,13 @@ local insertnodebefore, insertnodeafter do
local insertbefore = nuts.insertbefore
local setattributelist = nuts.setattributelist
- local function insertnodebefore(head,current,what) -- todo : lmtx
+ insertnodebefore = function (head,current,what) -- todo : lmtx
head, current = insertbefore(head,current,what)
setattributelist(what,current)
return head, current
end
- local function insertnodeafter(head,current,what) -- todo : lmtx
+ insertnodeafter = function(head,current,what) -- todo : lmtx
head, current = insertafter(head,current,what)
setattributelist(what,current)
return head, current
diff --git a/tex/context/base/mkxl/syst-lua.mkxl b/tex/context/base/mkxl/syst-lua.mkxl
index 158682399..4b60ee59f 100644
--- a/tex/context/base/mkxl/syst-lua.mkxl
+++ b/tex/context/base/mkxl/syst-lua.mkxl
@@ -52,18 +52,21 @@
\popoverloadmode
%D We can omit the tex.ctxcatcodes here as nowadays we seldom change the regime at
-%D the \TEX\ end:
+%D the \TEX\ end. Beware: the expression is compiled each time so it is not that
+%D efficient.
-%def\luaexpr#1{\ctxlua{context (tostring(#1))}} % more efficient:
-\permanent\def\luaexpr#1{\ctxlua{tex.print(tostring(#1))}} % no use is shortcutting has to be compiled
+% \def\luaexpr #1{\ctxlua {context (tostring(#1))}} % more efficient:
+% \permanent\def\luaexpr #1{\ctxlua {tex.print(tostring(#1))}} % no use is shortcutting has to be compiled
+\tolerant\permanent\edef\luaexpr[#1]#:#2{\noexpand\cldcontext{\noexpand\iftok{#1}\noexpand\emptytoks\noexpand\else"\letterpercent #1",\noexpand\fi#2}}
%D But as we only use write 16 we could as well do all in \LUA\ and ignore the rest.
%D Okay, we still can do writes here but only when not blocked.
\aliased\let\syst_write_execute\clf_execute % always {...}
-%D There is a probably rather useless \type {\expression} command that can mix \LUA\ numeric
-%D expressions with \TEX\ commands (for as far that makes sense) that works like this:
+%D There is a probably rather useless \type {\expression} command that can mix \LUA\
+%D numeric expressions with \TEX\ commands (for as far that makes sense) that works
+%D like this:
%D
%D \starttyping
%D \mathchardef\foooo 1234
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 3afd1a804..59cbd9ef8 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 : 2021-05-20 11:01
+-- merge date : 2021-05-20 15:57
do -- begin closure to overcome local limits and interference
@@ -20858,7 +20858,7 @@ local trace_defining=false registertracker("fonts.defining",function(v) trace_d
local report_otf=logs.reporter("fonts","otf loading")
local fonts=fonts
local otf=fonts.handlers.otf
-otf.version=3.115
+otf.version=3.116
otf.cache=containers.define("fonts","otl",otf.version,true)
otf.svgcache=containers.define("fonts","svg",otf.version,true)
otf.pngcache=containers.define("fonts","png",otf.version,true)
@@ -22049,6 +22049,8 @@ local getoffsets=nuts.getoffsets
local getboth=nuts.getboth
local getdisc=nuts.getdisc
local setdisc=nuts.setdisc
+local getreplace=nuts.getreplace
+local setreplace=nuts.setreplace
local setoffsets=nuts.setoffsets
local ischar=nuts.ischar
local getkern=nuts.getkern
@@ -22714,17 +22716,15 @@ local function inject_positions_only(head,where)
insertnodeafter(head,current,fontkern(rightkern))
end
end
- else
+ elseif next then
local i=p.emptyinjections
if i then
local rightkern=i.rightkern
- if rightkern and rightkern~=0 then
- if next and getid(next)==disc_code then
- if replace then
- else
- replace=fontkern(rightkern)
- done=true
- end
+ if rightkern and rightkern~=0 and getid(next)==disc_code then
+ local replace=getreplace(next)
+ if replace then
+ else
+ setreplace(next,fontkern(rightkern))
end
end
end
@@ -23082,17 +23082,15 @@ local function inject_everything(head,where)
end
end
end
- else
+ elseif next then
local i=p.emptyinjections
if i then
local rightkern=i.rightkern
- if rightkern and rightkern~=0 then
- if next and getid(next)==disc_code then
- if replace then
- else
- replace=fontkern(rightkern)
- done=true
- end
+ if rightkern and rightkern~=0 and getid(next)==disc_code then
+ local replace=getreplace(next)
+ if replace then
+ else
+ setreplace(next,fontkern(rightkern))
end
end
end
@@ -25768,7 +25766,7 @@ local function checkpairs(lookup)
else
local v=d2[1]
if v==true then
- elseif v and (v[1]~=0 or v[2]~=0 or v[3]~=0 or v[4]~=0) then
+ elseif v and (v[1]~=0 or v[2]~=0 or v[4]~=0) then
return false
end
end