[latex3-commits] [git/LaTeX3-latex3-luaotfload] dev: Import fontloader yet again (52c331c)
Marcel Fabian Krüger
tex at 2krueger.de
Tue Sep 14 17:14:02 CEST 2021
Repository : https://github.com/latex3/luaotfload
On branch : dev
Link : https://github.com/latex3/luaotfload/commit/52c331cd95b50841ec0de42282bb96454f87936e
>---------------------------------------------------------------
commit 52c331cd95b50841ec0de42282bb96454f87936e
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date: Tue Sep 14 17:14:02 2021 +0200
Import fontloader yet again
>---------------------------------------------------------------
52c331cd95b50841ec0de42282bb96454f87936e
build.lua | 2 +-
...er-2021-09-09.lua => fontloader-2021-09-14.lua} | 217 ++++++++++++---------
src/auto/luaotfload-status.lua | 8 +-
src/fontloader/misc/fontloader-font-ots.lua | 64 ++++--
src/fontloader/runtime/fontloader-reference.lua | 57 ++++--
testfiles/aaaaa-luakern.tlg | 2 +-
6 files changed, 227 insertions(+), 123 deletions(-)
diff --git a/build.lua b/build.lua
index d30efb2..4cae934 100644
--- a/build.lua
+++ b/build.lua
@@ -1,7 +1,7 @@
packageversion= "3.19-dev"
packagedate = "2021-05-21"
-fontloaderdate= "2021-09-09"
+fontloaderdate= "2021-09-14"
packagedesc = ""
module = "luaotfload"
diff --git a/src/auto/fontloader-2021-09-09.lua b/src/auto/fontloader-2021-09-14.lua
similarity index 99%
rename from src/auto/fontloader-2021-09-09.lua
rename to src/auto/fontloader-2021-09-14.lua
index 01241ec..2851044 100644
--- a/src/auto/fontloader-2021-09-09.lua
+++ b/src/auto/fontloader-2021-09-14.lua
@@ -1,6 +1,6 @@
--[[info-----------------------------------------------------------------------
Luaotfload fontloader package
- build 2021-09-09 17:18:20
+ build 2021-09-14 17:12:58
-------------------------------------------------------------------------------
© 2021 PRAGMA ADE / ConTeXt Development Team
@@ -63,7 +63,7 @@
--info]]-----------------------------------------------------------------------
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “data-con” 23a0f5386d46a1c157ae82a373e35fa0] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “data-con” 23a0f5386d46a1c157ae82a373e35fa0] ---
if not modules then modules={} end modules ['data-con']={
version=1.100,
@@ -184,10 +184,10 @@ function containers.cleanname(name)
return (gsub(lower(name),"[^%w\128-\255]+","-"))
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “data-con”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “data-con”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “basics-nod” 1750af43148def9e7a75c6900a96f9dc] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “basics-nod” 1750af43148def9e7a75c6900a96f9dc] ---
if not modules then modules={} end modules ['luatex-fonts-nod']={
version=1.001,
@@ -454,10 +454,10 @@ do
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “basics-nod”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “basics-nod”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “basics-chr” 64fafe4eaf55d64aead6513c1e74a024] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “basics-chr” 64fafe4eaf55d64aead6513c1e74a024] ---
characters=characters or {}
@@ -4067,10 +4067,10 @@ characters.indicgroups={
},
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “basics-chr”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “basics-chr”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ini” 5343de60613adb24cdd7a8d2ee1d153c] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ini” 5343de60613adb24cdd7a8d2ee1d153c] ---
if not modules then modules={} end modules ['font-ini']={
version=1.001,
@@ -4111,10 +4111,10 @@ if node and not tex.getfontoffamily then
tex.getfontoffamily=node.family_font
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ini”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ini”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-mis” 17e967c9ec4d001deefd43ddf25e98f7] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-mis” 17e967c9ec4d001deefd43ddf25e98f7] ---
if not modules then modules={} end modules ['luatex-font-mis']={
version=1.001,
@@ -4146,10 +4146,10 @@ function font.each()
return table.sortedhash(fonts.hashes.identifiers)
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-mis”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-mis”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-con” 724e5dd14aec2d4d189f8619898004cf] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-con” 724e5dd14aec2d4d189f8619898004cf] ---
if not modules then modules={} end modules ['font-con']={
version=1.001,
@@ -5517,10 +5517,10 @@ function constructors.addcoreunicodes(unicodes)
return unicodes
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-con”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-con”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-enc” c24fd6b4f34f87b9c4ff5e6193ce2656] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-enc” c24fd6b4f34f87b9c4ff5e6193ce2656] ---
if not modules then modules={} end modules ['luatex-font-enc']={
version=1.001,
@@ -5595,10 +5595,10 @@ function encodings.load(filename)
return containers.write(encodings.cache,name,data)
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-enc”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-enc”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-cid” 22b0367742fb253deef84ef7ccf5e8de] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-cid” 22b0367742fb253deef84ef7ccf5e8de] ---
if not modules then modules={} end modules ['font-cid']={
version=1.001,
@@ -5749,10 +5749,10 @@ function cid.getmap(specification)
return found
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-cid”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-cid”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-map” c4a39db5ad822b348aa61bca5f4a599a] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-map” c4a39db5ad822b348aa61bca5f4a599a] ---
if not modules then modules={} end modules ['font-map']={
version=1.001,
@@ -6160,10 +6160,10 @@ function mappings.addtounicode(data,filename,checklookups,forceligatures)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-map”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-map”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-vfc” a81c29eda98cd62cbebdb6c93544b50d] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-vfc” a81c29eda98cd62cbebdb6c93544b50d] ---
if not modules then modules={} end modules ['font-vfc']={
version=1.001,
@@ -6260,10 +6260,10 @@ helpers.commands=utilities.storage.allocate {
dummy=dummy,
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-vfc”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-vfc”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otr” ca66878618fd8b320c4bbde59831c4b1] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otr” ca66878618fd8b320c4bbde59831c4b1] ---
if not modules then modules={} end modules ['font-otr']={
version=1.001,
@@ -8106,10 +8106,10 @@ function readers.extend(fontdata)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otr”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otr”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oti” 309a75f9c14b77d87e94eba827dc4e71] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oti” 309a75f9c14b77d87e94eba827dc4e71] ---
if not modules then modules={} end modules ['font-oti']={
version=1.001,
@@ -8252,10 +8252,10 @@ function otffeatures.checkeddefaultlanguage(featuretype,autolanguage,languages)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oti”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oti”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ott” 3f67b1b1d40bbc222681d8db4aff0f42] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ott” 3f67b1b1d40bbc222681d8db4aff0f42] ---
if not modules then modules={} end modules ["font-ott"]={
version=1.001,
@@ -9371,10 +9371,10 @@ function otffeatures.normalize(features,wrap)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ott”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ott”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-cff” 81464a0626c3a7aadec69281362d5626] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-cff” 81464a0626c3a7aadec69281362d5626] ---
if not modules then modules={} end modules ['font-cff']={
version=1.001,
@@ -11603,10 +11603,10 @@ function readers.cffcheck(filename)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-cff”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-cff”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ttf” 1a1d87746ffb79f0af1db8f70d96f083] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ttf” 1a1d87746ffb79f0af1db8f70d96f083] ---
if not modules then modules={} end modules ['font-ttf']={
version=1.001,
@@ -12836,10 +12836,10 @@ function readers.gvar(f,fontdata,specification,glyphdata,shapedata)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ttf”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ttf”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-dsp” 174ce11f3ba0bddf270f48d8d2addd56] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-dsp” 174ce11f3ba0bddf270f48d8d2addd56] ---
if not modules then modules={} end modules ['font-dsp']={
version=1.001,
@@ -16115,10 +16115,10 @@ function readers.mvar(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-dsp”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-dsp”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oup” 711eae407ca09ed0bc33a4a1ef9218ed] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oup” 711eae407ca09ed0bc33a4a1ef9218ed] ---
if not modules then modules={} end modules ['font-oup']={
version=1.001,
@@ -18877,10 +18877,10 @@ function readers.expand(data)
expandlookups(sublookups)
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oup”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oup”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otl” 67078f58bc1a612e4646523538a4e3eb] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otl” 67078f58bc1a612e4646523538a4e3eb] ---
if not modules then modules={} end modules ['font-otl']={
version=1.001,
@@ -19608,10 +19608,10 @@ otf.coverup={
end
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otl”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otl”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oto” 9b6a24b54b81a351632093deddf5bde5] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oto” 9b6a24b54b81a351632093deddf5bde5] ---
if not modules then modules={} end modules ['font-oto']={
version=1.001,
@@ -20080,10 +20080,10 @@ registerotffeature {
}
otf.basemodeinitializer=featuresinitializer
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-oto”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-oto”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otj” b2c165bd6771a57633f992d07384b739] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otj” b2c165bd6771a57633f992d07384b739] ---
if not modules then modules={} end modules ['font-otj']={
version=1.001,
@@ -21576,10 +21576,10 @@ function injections.handler(head,where)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otj”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otj”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ota” 2bb12d708e35bc05443eba791e2554e7] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ota” 2bb12d708e35bc05443eba791e2554e7] ---
if not modules then modules={} end modules ['font-ota']={
version=1.001,
@@ -22073,10 +22073,10 @@ directives.register("otf.analyze.useunicodemarks",function(v)
analyzers.useunicodemarks=v
end)
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ota”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ota”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ots” bdfa7a9fb4a22116341b57d55b3f7c52] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ots” 55316a605d11a1d07d38795224c90a63] ---
if not modules then modules={} end modules ['font-ots']={
version=1.001,
@@ -22118,6 +22118,7 @@ local trace_compruns=false registertracker("otf.compruns",function(v) trace_com
local trace_testruns=false registertracker("otf.testruns",function(v) trace_testruns=v end)
local forcediscretionaries=false
local forcepairadvance=false
+local repeatablemultiples=context or false
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries=v
end)
@@ -22496,15 +22497,47 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop)
insertnodeafter(head,start,n)
start=n
end
- if what==true then
- elseif what>1 then
- local m=multiple[nofmultiples]
- for i=2,what do
- local n=copy_node(start)
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start=n
+ if what~=true and repeatablemultiples then
+ local kind=type(what)
+ local m,f,l
+ if kind=="string" then
+ local what,n=string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what=="middle" then
+ m=tonumber(n)
+ elseif what=="first" then
+ f=tonumber(n)
+ elseif what=="last" then
+ l=tonumber(n)
+ end
+ elseif kind=="table" then
+ m=what.middle
+ f=what.first
+ l=what.last
+ end
+ if f or m or l then
+ if m and m>1 and nofmultiples==3 then
+ local middle=getnext(first)
+ for i=2,m do
+ local n=copynode(middle)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f>1 then
+ for i=2,f do
+ local n=copynode(first)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l>1 then
+ for i=2,l do
+ local n=copynode(start)
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start=n
+ end
+ end
end
end
end
@@ -22918,7 +22951,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
end
elseif trace_bugs then
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -23558,7 +23591,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end
@@ -25703,10 +25736,10 @@ registerotffeature {
},
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ots”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ots”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-osd” 51e2301f68e139303ecb53a4a3fecedb] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-osd” 51e2301f68e139303ecb53a4a3fecedb] ---
if not modules then modules={} end modules ['font-osd']={
version=1.001,
@@ -28139,10 +28172,10 @@ for i=1,nofscripts do
methods[scripts_two[i]]=method_two
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-osd”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-osd”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ocl” 2a377351ae23c339764ec8ce2e8e9164] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ocl” 2a377351ae23c339764ec8ce2e8e9164] ---
if not modules then modules={} end modules ['font-ocl']={
version=1.001,
@@ -28690,10 +28723,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-ocl”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-ocl”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otc” 582295d3d1e44cd4a31e8bbc1156f7c1] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otc” 582295d3d1e44cd4a31e8bbc1156f7c1] ---
if not modules then modules={} end modules ['font-otc']={
version=1.001,
@@ -29503,10 +29536,10 @@ end
otf.enhancers.enhance=enhance
otf.enhancers.register("check extra features",enhance)
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-otc”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-otc”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-onr” 6d161533f3437435e12a0ad64866df44] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-onr” 6d161533f3437435e12a0ad64866df44] ---
if not modules then modules={} end modules ['font-onr']={
version=1.001,
@@ -29879,10 +29912,10 @@ function readers.getinfo(filename)
end
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-onr”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-onr”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-one” bd39d42055a44ca2002f8ddbbbbf27c3] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-one” bd39d42055a44ca2002f8ddbbbbf27c3] ---
if not modules then modules={} end modules ['font-one']={
version=1.001,
@@ -30597,10 +30630,10 @@ registerafmenhancer("normalize features",enhance_normalize_features)
registerafmenhancer("check extra features",otfenhancers.enhance)
registerafmenhancer("fix names",enhance_fix_names)
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-one”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-one”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-afk” 9da14e0fb22129c053acc599d1312544] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-afk” 9da14e0fb22129c053acc599d1312544] ---
if not modules then modules={} end modules ['font-afk']={
version=1.001,
@@ -30767,10 +30800,10 @@ fonts.handlers.afm.helpdata={
}
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-afk”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-afk”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-tfm” f0eb5e2a8068b17ad401bb7efdba1630] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-tfm” f0eb5e2a8068b17ad401bb7efdba1630] ---
if not modules then modules={} end modules ['luatex-fonts-tfm']={
version=1.001,
@@ -31285,10 +31318,10 @@ registertfmfeature {
}
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-tfm”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-tfm”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
if not modules then modules={} end modules ['font-lua']={
version=1.001,
@@ -31328,10 +31361,10 @@ function readers.lua(specification)
return check_lua(specification,fullname)
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-lua”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-lua”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-def” b9d908c2338b7dc443ce9d1e9fcb7139] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-def” b9d908c2338b7dc443ce9d1e9fcb7139] ---
if not modules then modules={} end modules ['font-def']={
version=1.001,
@@ -31731,10 +31764,10 @@ if not context then
callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-def”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-def”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-shp” a40862fe382d26c1f3753431254bcfdd] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-shp” a40862fe382d26c1f3753431254bcfdd] ---
if not modules then modules={} end modules ['font-shp']={
version=1.001,
@@ -32099,10 +32132,10 @@ callback.register("glyph_stream_provider",function(id,index,mode)
return ""
end)
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-shp”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-shp”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-def” f435e0875f203f343157baeff876ec9c] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-def” f435e0875f203f343157baeff876ec9c] ---
if not modules then modules={} end modules ['luatex-fonts-def']={
version=1.001,
@@ -32183,10 +32216,10 @@ function fonts.definers.applypostprocessors(tfmdata)
return tfmdata
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-def”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-def”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-ext” 32013cbc5d5d336be8b1d1e5879d86c4] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-ext” 32013cbc5d5d336be8b1d1e5879d86c4] ---
if not modules then modules={} end modules ['luatex-fonts-ext']={
version=1.001,
@@ -32372,10 +32405,10 @@ registerotffeature {
}
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-ext”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-ext”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-tex” ceb087ef6fa2f89aed7179f60ddf8f35] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-tex” ceb087ef6fa2f89aed7179f60ddf8f35] ---
if not modules then modules={} end modules ['font-imp-tex']={
version=1.001,
@@ -32474,10 +32507,10 @@ registerotffeature {
description="arabic digits",
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-tex”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-tex”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-ligatures” 26ffcf089391445f7af59536c8814364] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-ligatures” 26ffcf089391445f7af59536c8814364] ---
if not modules then modules={} end modules ['font-imp-ligatures']={
version=1.001,
@@ -32591,10 +32624,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-ligatures”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-ligatures”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-italics” defcb415bc1e0a0999b27773902adc18] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-italics” defcb415bc1e0a0999b27773902adc18] ---
if not modules then modules={} end modules ['font-imp-italics']={
version=1.001,
@@ -32698,10 +32731,10 @@ if context then
registerafmfeature(dimensions_specification)
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-italics”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-italics”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-effects” d05997c1826355548ec9aec1346f9f23] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-effects” d05997c1826355548ec9aec1346f9f23] ---
if not modules then modules={} end modules ['font-imp-effects']={
version=1.001,
@@ -33058,10 +33091,10 @@ local specification={
registerotffeature(specification)
registerafmfeature(specification)
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “font-imp-effects”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “font-imp-effects”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-lig” fbd251eea3810a43a8d5542319361d68] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-lig” fbd251eea3810a43a8d5542319361d68] ---
fonts.handlers.otf.addfeature {
@@ -35130,10 +35163,10 @@ fonts.handlers.otf.addfeature {
["type"]="ligature",
}
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-lig”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-lig”] ---
-do --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-gbn” 34e4543a02f6fbc8c2ade896cb6dc7df] ---
+do --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-gbn” 34e4543a02f6fbc8c2ade896cb6dc7df] ---
if not modules then modules={} end modules ['luatex-fonts-gbn']={
version=1.001,
@@ -35398,7 +35431,7 @@ function nodes.simple_font_handler(head,groupcode,size,packtype,direction)
return head
end
-end --- [luaotfload, fontloader-2021-09-09.lua scope for “fonts-gbn”] ---
+end --- [luaotfload, fontloader-2021-09-14.lua scope for “fonts-gbn”] ---
--- vim:ft=lua:sw=2:ts=8:et:tw=79
diff --git a/src/auto/luaotfload-status.lua b/src/auto/luaotfload-status.lua
index 7b8b1d6..63571d2 100644
--- a/src/auto/luaotfload-status.lua
+++ b/src/auto/luaotfload-status.lua
@@ -1,6 +1,6 @@
return {
["hashes"]={
- { "fontloader-2021-09-09.lua", "1fd9d0975950c31e5aeab31f0c602f98" },
+ { "fontloader-2021-09-14.lua", "3c04b16455b2f83c62f92e4928185b1e" },
{ "fontloader-util-fil.lua", "d0accf4180201efd567816a25ad5e037" },
{ "fontloader-util-str.lua", "4c212d82d24a81dd7eb00604df9f7db9" },
{ "fontloader-l-unicode.lua", "f368874f11f3c525de5864fd413e4b24" },
@@ -92,8 +92,8 @@ return {
["notes"]={
["committer"]="Marcel Fabian Krüger <tex at 2krueger.de>",
["description"]="v3.19-dev/2021-05-21",
- ["loader"]="fontloader-2021-09-09.lua",
- ["revision"]="7acf6519981c59152a55043181fc078baafcc070",
- ["timestamp"]="2021-09-09 17:06:16 +0200",
+ ["loader"]="fontloader-2021-09-14.lua",
+ ["revision"]="89883887746084c6932ce097ad12cb33350ba6b5",
+ ["timestamp"]="2021-09-09 17:19:14 +0200",
},
}
\ No newline at end of file
diff --git a/src/fontloader/misc/fontloader-font-ots.lua b/src/fontloader/misc/fontloader-font-ots.lua
index 8e8be6f..7de108d 100644
--- a/src/fontloader/misc/fontloader-font-ots.lua
+++ b/src/fontloader/misc/fontloader-font-ots.lua
@@ -163,6 +163,8 @@ local trace_testruns = false registertracker("otf.testruns", function
local forcediscretionaries = false
local forcepairadvance = false -- for testing
+local repeatablemultiples = context or false
+
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries = v
end)
@@ -648,16 +650,52 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop) -- what t
insertnodeafter(head,start,n)
start = n
end
- if what == true then
- -- we're ok
- elseif what > 1 then
- local m = multiple[nofmultiples]
- for i=2,what do
- local n = copy_node(start) -- ignore components
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start = n
+ if what ~= true and repeatablemultiples then
+ -- This is just some experimental code; we might introduce gsub_extensible
+ -- some day instead. Beware: when we have a feature that mixes alternates and
+ -- multiples we need to make sure we don't handle the alternate string values
+ -- here. This might eventually become an lmtx only feature.
+ local kind = type(what)
+ local m, f, l
+ if kind == "string" then
+ local what, n = string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what == "middle" then
+ m = tonumber(n)
+ elseif what == "first" then
+ f = tonumber(n)
+ elseif what == "last" then
+ l = tonumber(n)
+ end
+ elseif kind == "table" then
+ -- won't happen because currently we don't split these values
+ m = what.middle
+ f = what.first
+ l = what.last
+ end
+ if f or m or l then
+ if m and m > 1 and nofmultiples == 3 then
+ local middle = getnext(first)
+ for i=2,m do
+ local n = copynode(middle) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f > 1 then
+ for i=2,f do
+ local n = copynode(first) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l > 1 then
+ for i=2,l do
+ local n = copynode(start) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start = n
+ end
+ end
end
end
end
@@ -1052,7 +1090,7 @@ function handlers.gpos_mark2base(head,start,dataset,sequence,markanchors,rlmode,
end
return head, start, true
elseif trace_bugs then
- -- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ -- onetimemessage(currentfont,basechar,"no base anchors")
logwarning("%s: mark %s is not anchored to %s",pref(dataset,sequence),gref(markchar),gref(basechar))
end
elseif trace_bugs then
@@ -1118,7 +1156,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
elseif trace_bugs then
-- logwarning("%s: char %s is missing in font",pref(dataset,sequence),gref(basechar))
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -1858,7 +1896,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end
diff --git a/src/fontloader/runtime/fontloader-reference.lua b/src/fontloader/runtime/fontloader-reference.lua
index c83cc13..66e8b62 100644
--- a/src/fontloader/runtime/fontloader-reference.lua
+++ b/src/fontloader/runtime/fontloader-reference.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-09-06 11:44
+-- merge date : 2021-09-13 09:37
do -- begin closure to overcome local limits and interference
@@ -26899,6 +26899,7 @@ local trace_compruns=false registertracker("otf.compruns",function(v) trace_com
local trace_testruns=false registertracker("otf.testruns",function(v) trace_testruns=v end)
local forcediscretionaries=false
local forcepairadvance=false
+local repeatablemultiples=context or false
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries=v
end)
@@ -27277,15 +27278,47 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop)
insertnodeafter(head,start,n)
start=n
end
- if what==true then
- elseif what>1 then
- local m=multiple[nofmultiples]
- for i=2,what do
- local n=copy_node(start)
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start=n
+ if what~=true and repeatablemultiples then
+ local kind=type(what)
+ local m,f,l
+ if kind=="string" then
+ local what,n=string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what=="middle" then
+ m=tonumber(n)
+ elseif what=="first" then
+ f=tonumber(n)
+ elseif what=="last" then
+ l=tonumber(n)
+ end
+ elseif kind=="table" then
+ m=what.middle
+ f=what.first
+ l=what.last
+ end
+ if f or m or l then
+ if m and m>1 and nofmultiples==3 then
+ local middle=getnext(first)
+ for i=2,m do
+ local n=copynode(middle)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f>1 then
+ for i=2,f do
+ local n=copynode(first)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l>1 then
+ for i=2,l do
+ local n=copynode(start)
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start=n
+ end
+ end
end
end
end
@@ -27699,7 +27732,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
end
elseif trace_bugs then
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -28339,7 +28372,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end
diff --git a/testfiles/aaaaa-luakern.tlg b/testfiles/aaaaa-luakern.tlg
index dcc46a2..149084f 100644
--- a/testfiles/aaaaa-luakern.tlg
+++ b/testfiles/aaaaa-luakern.tlg
@@ -1,6 +1,6 @@
This is a generated file for the l3build validation system.
Don't change this file in any respect.
-3.19-dev with fontloaderxxx2021xxx09xxx09.lua
+3.19-dev with fontloaderxxx2021xxx09xxx14.lua
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0, direction TLT
.\glue 16.0
More information about the latex3-commits
mailing list.