From 4e863080ff7d71e04f861ab33046e7e799a8a8c6 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 20 May 2021 17:05:45 +0200 Subject: 2021-05-20 15:59:00 --- scripts/context/lua/mtx-fonts.lua | 2 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/char-fio.lua | 4 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/core-con.lua | 6 +++ tex/context/base/mkiv/font-mis.lua | 2 +- tex/context/base/mkiv/font-otj.lua | 35 +++++++------- tex/context/base/mkiv/font-otl.lua | 2 +- tex/context/base/mkiv/font-oup.lua | 4 +- tex/context/base/mkiv/node-nut.lua | 6 +-- tex/context/base/mkiv/node-res.lua | 47 ++++++------------- tex/context/base/mkiv/node-typ.lua | 7 +-- tex/context/base/mkiv/scrp-cjk.lua | 1 - tex/context/base/mkiv/scrp-ini.lua | 4 +- tex/context/base/mkiv/status-files.pdf | Bin 23930 -> 23933 bytes tex/context/base/mkiv/status-lua.pdf | Bin 229267 -> 229263 bytes tex/context/base/mkiv/syst-lua.mkiv | 4 +- tex/context/base/mkiv/trac-ctx.lua | 4 +- tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/font-otj.lmt | 51 ++++++++++----------- tex/context/base/mkxl/scrp-ini.lmt | 4 +- tex/context/base/mkxl/syst-lua.mkxl | 13 ++++-- tex/generic/context/luatex/luatex-fonts-merged.lua | 36 +++++++-------- 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 = [[ 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 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 30eef15fe..0cddd6377 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf 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 -- cgit v1.2.3