summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/luaotfload
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/luaotfload')
-rw-r--r--macros/luatex/generic/luaotfload/NEWS5
-rw-r--r--macros/luatex/generic/luaotfload/README.md4
-rw-r--r--macros/luatex/generic/luaotfload/filegraph.pdfbin40019 -> 40007 bytes
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua (renamed from macros/luatex/generic/luaotfload/fontloader-2022-06-15.lua)287
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-cff.lua122
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-dsp.lua3
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-osd.lua18
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-l-math.lua14
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-reference.lua141
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua61
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-bcp47.lua21
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-case.lua41
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-colors.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-conf.pdfbin77540 -> 77520 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-configuration.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-database.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-dvi.lua71
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-embolden.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-fallback.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-features.lua6
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-filelist.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-define.lua5
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua6
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-hashing.lua2
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-init.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-latex.pdfbin495247 -> 500170 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-letterspace.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-loaders.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-log.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-main.tex9
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-multiscript.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-notdef.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-parsers.lua8
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-resolvers.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-scripts.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-status.lua74
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-suppress.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-szss.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-t3.lua142
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.144
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.pdfbin76805 -> 76791 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.rst4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tounicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-unicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.528
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.rst4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.sty2
-rw-r--r--macros/luatex/generic/luaotfload/scripts-demo.pdfbin19082 -> 21682 bytes
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo-graphite.pdfbin8560 -> 8562 bytes
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo.pdfbin8481 -> 8478 bytes
57 files changed, 739 insertions, 483 deletions
diff --git a/macros/luatex/generic/luaotfload/NEWS b/macros/luatex/generic/luaotfload/NEWS
index 289861f917..ab31f8c84c 100644
--- a/macros/luatex/generic/luaotfload/NEWS
+++ b/macros/luatex/generic/luaotfload/NEWS
@@ -1,5 +1,10 @@
Change History
--------------
+2022-10-03 luaotfload v3.23
+
+ * More reliable ToUnicode mappings in Harf mode
+ * Various bug fixes
+
2022-06-15 luaotfload v3.22
* Tailored case mappings
diff --git a/macros/luatex/generic/luaotfload/README.md b/macros/luatex/generic/luaotfload/README.md
index 4a1fa3a3b0..c325c4171e 100644
--- a/macros/luatex/generic/luaotfload/README.md
+++ b/macros/luatex/generic/luaotfload/README.md
@@ -1,8 +1,8 @@
# The Luaotfload Package
-VERSION: 3.22
+VERSION: 3.23
-DATE: 2022-06-15
+DATE: 2022-10-03
## Description
diff --git a/macros/luatex/generic/luaotfload/filegraph.pdf b/macros/luatex/generic/luaotfload/filegraph.pdf
index 07ccf2b986..79a370e2b1 100644
--- a/macros/luatex/generic/luaotfload/filegraph.pdf
+++ b/macros/luatex/generic/luaotfload/filegraph.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/fontloader-2022-06-15.lua b/macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua
index 5e0af8e484..4df88ec41d 100644
--- a/macros/luatex/generic/luaotfload/fontloader-2022-06-15.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua
@@ -1,6 +1,6 @@
--[[info-----------------------------------------------------------------------
Luaotfload fontloader package
- build 2022-06-15 18:33:10
+ build 2022-10-03 20:21:57
-------------------------------------------------------------------------------
© 2022 PRAGMA ADE / ConTeXt Development Team
@@ -63,7 +63,7 @@
--info]]-----------------------------------------------------------------------
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “data-con” 23a0f5386d46a1c157ae82a373e35fa0] ---
+do --- [luaotfload, fontloader-2022-10-03.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-2022-06-15.lua scope for “data-con”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “data-con”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “basics-nod” 1750af43148def9e7a75c6900a96f9dc] ---
+do --- [luaotfload, fontloader-2022-10-03.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-2022-06-15.lua scope for “basics-nod”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “basics-nod”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “basics-chr” ce4afac7ba19471f3c8f90800839f315] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “basics-chr” ce4afac7ba19471f3c8f90800839f315] ---
characters=characters or {}
@@ -4291,10 +4291,10 @@ characters.indicgroups={
},
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “basics-chr”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “basics-chr”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ini” 5343de60613adb24cdd7a8d2ee1d153c] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ini” 5343de60613adb24cdd7a8d2ee1d153c] ---
if not modules then modules={} end modules ['font-ini']={
version=1.001,
@@ -4335,10 +4335,10 @@ if node and not tex.getfontoffamily then
tex.getfontoffamily=node.family_font
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ini”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ini”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-mis” 17e967c9ec4d001deefd43ddf25e98f7] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-mis” 17e967c9ec4d001deefd43ddf25e98f7] ---
if not modules then modules={} end modules ['luatex-font-mis']={
version=1.001,
@@ -4370,10 +4370,10 @@ function font.each()
return table.sortedhash(fonts.hashes.identifiers)
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-mis”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-mis”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-con” 724e5dd14aec2d4d189f8619898004cf] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-con” 724e5dd14aec2d4d189f8619898004cf] ---
if not modules then modules={} end modules ['font-con']={
version=1.001,
@@ -5741,10 +5741,10 @@ function constructors.addcoreunicodes(unicodes)
return unicodes
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-con”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-con”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-enc” c24fd6b4f34f87b9c4ff5e6193ce2656] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-enc” c24fd6b4f34f87b9c4ff5e6193ce2656] ---
if not modules then modules={} end modules ['luatex-font-enc']={
version=1.001,
@@ -5819,10 +5819,10 @@ function encodings.load(filename)
return containers.write(encodings.cache,name,data)
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-enc”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-enc”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-cid” 22b0367742fb253deef84ef7ccf5e8de] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-cid” 22b0367742fb253deef84ef7ccf5e8de] ---
if not modules then modules={} end modules ['font-cid']={
version=1.001,
@@ -5973,10 +5973,10 @@ function cid.getmap(specification)
return found
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-cid”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-cid”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-map” 27ee748150e56f5f0e5f0fefc864f35e] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-map” 27ee748150e56f5f0e5f0fefc864f35e] ---
if not modules then modules={} end modules ['font-map']={
version=1.001,
@@ -6384,10 +6384,10 @@ function mappings.addtounicode(data,filename,checklookups,forceligatures)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-map”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-map”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-vfc” a81c29eda98cd62cbebdb6c93544b50d] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-vfc” a81c29eda98cd62cbebdb6c93544b50d] ---
if not modules then modules={} end modules ['font-vfc']={
version=1.001,
@@ -6484,10 +6484,10 @@ helpers.commands=utilities.storage.allocate {
dummy=dummy,
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-vfc”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-vfc”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otr” 1896ac990a961f6d6fec551ca9b52a83] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otr” 1896ac990a961f6d6fec551ca9b52a83] ---
if not modules then modules={} end modules ['font-otr']={
version=1.001,
@@ -8331,10 +8331,10 @@ function readers.extend(fontdata)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otr”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otr”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oti” 309a75f9c14b77d87e94eba827dc4e71] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oti” 309a75f9c14b77d87e94eba827dc4e71] ---
if not modules then modules={} end modules ['font-oti']={
version=1.001,
@@ -8477,10 +8477,10 @@ function otffeatures.checkeddefaultlanguage(featuretype,autolanguage,languages)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oti”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oti”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ott” 3f67b1b1d40bbc222681d8db4aff0f42] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ott” 3f67b1b1d40bbc222681d8db4aff0f42] ---
if not modules then modules={} end modules ["font-ott"]={
version=1.001,
@@ -9596,10 +9596,10 @@ function otffeatures.normalize(features,wrap)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ott”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ott”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-cff” e38c1a40e1d1d577cdf7920fa50d0654] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-cff” 651c74e4804fbb85d31267210298f466] ---
if not modules then modules={} end modules ['font-cff']={
version=1.001,
@@ -10149,8 +10149,13 @@ local result={}
local justpass=false
local seacs={}
local procidx=nil
- local function showstate(where)
- report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ local function showstate(where,i,n)
+ if i then
+ local j=i+n-1
+ report("%w%-10s : [%s] step",depth*2+2,where,concat(stack," ",i,j<=top and j or top))
+ else
+ report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ end
end
local function showvalue(where,value,showstack)
if showstack then
@@ -10266,9 +10271,9 @@ local result={}
ymin=y
end
end
- local function xycurveto(x1,y1,x2,y2,x3,y3)
+ local function xycurveto(x1,y1,x2,y2,x3,y3,i,n)
if trace_charstrings then
- showstate("curveto")
+ showstate("curveto",i,n)
end
if keepcurve then
r=r+1
@@ -10405,6 +10410,15 @@ local result={}
if trace_charstrings then
showstate("rrcurveto")
end
+if top==6 then
+ local ax=x+stack[1]
+ local ay=y+stack[2]
+ local bx=ax+stack[3]
+ local by=ay+stack[4]
+ x=bx+stack[5]
+ y=by+stack[6]
+ xycurveto(ax,ay,bx,by,x,y,1,6)
+else
for i=1,top,6 do
local ax=x+stack[i]
local ay=y+stack[i+1]
@@ -10412,8 +10426,9 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
+end
top=0
end
local function hhcurveto()
@@ -10425,6 +10440,15 @@ local result={}
y=y+stack[1]
s=2
end
+if top==4 then
+ local ax=x+stack[1]
+ local ay=y
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx+stack[4]
+ y=by
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=s,top,4 do
local ax=x+stack[i]
local ay=y
@@ -10432,8 +10456,9 @@ local result={}
local by=ay+stack[i+2]
x=bx+stack[i+3]
y=by
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function vvcurveto()
@@ -10446,6 +10471,16 @@ local result={}
d=stack[1]
s=2
end
+if top==4 then
+ local ax=x+d
+ local ay=y+stack[1]
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx
+ y=by+stack[4]
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+ d=0
+else
for i=s,top,4 do
local ax=x+d
local ay=y+stack[i]
@@ -10453,9 +10488,10 @@ local result={}
local by=ay+stack[i+2]
x=bx
y=by+stack[i+3]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
d=0
end
+end
top=0
end
local function xxcurveto(swap)
@@ -10463,6 +10499,33 @@ local result={}
if last then
top=top-1
end
+if top==4 then
+ local ax,ay,bx,by
+ if swap then
+ ax=x+stack[1]
+ ay=y
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ y=by+stack[4]
+ if last then
+ x=bx+last
+ else
+ x=bx
+ end
+ else
+ ax=x
+ ay=y+stack[1]
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ x=bx+stack[4]
+ if last then
+ y=by+last
+ else
+ y=by
+ end
+ end
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=1,top,4 do
local ax,ay,bx,by
if swap then
@@ -10490,8 +10553,9 @@ local result={}
end
swap=true
end
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function hvcurveto()
@@ -10517,7 +10581,7 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
x=x+stack[top-1]
y=y+stack[top]
@@ -11661,26 +11725,35 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
end
end
else
+ report("unsupported fd index format %i",format)
end
if maxindex>=0 then
local cidarray=cid.fdarray
if cidarray then
setposition(f,header.offset+cidarray)
local dictionaries=readlengths(f,version=="cff2")
- for i=1,#dictionaries do
- dictionaries[i]=readstring(f,dictionaries[i])
- end
- parsedictionaries(data,dictionaries)
- cid.dictionaries=dictionaries
- readcidprivates(f,data)
- for i=1,#dictionaries do
- readlocals(f,data,dictionaries[i],version)
- end
- startparsing(fontdata,data,streams)
- for i=1,#charstrings do
- parsecharstring(fontdata,data,dictionaries[fdindex[i]+1],charstrings[i],glyphs,i,doshapes,version,streams)
+ if #dictionaries>0 then
+ for i=1,#dictionaries do
+ dictionaries[i]=readstring(f,dictionaries[i])
+ end
+ parsedictionaries(data,dictionaries)
+ cid.dictionaries=dictionaries
+ readcidprivates(f,data)
+ for i=1,#dictionaries do
+ readlocals(f,data,dictionaries[i],version)
+ end
+ startparsing(fontdata,data,streams)
+ for i=1,#charstrings do
+ local dictionary=dictionaries[fdindex[i]+1]
+ if dictionary then
+ parsecharstring(fontdata,data,dictionary,charstrings[i],glyphs,i,doshapes,version,streams)
+ else
+ end
+ end
+ stopparsing(fontdata,data)
+ else
+ report("no cid dictionaries")
end
- stopparsing(fontdata,data)
else
report("no cid array")
end
@@ -11828,10 +11901,10 @@ function readers.cffcheck(filename)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-cff”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-cff”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ttf” a3ff07150b3535fd32f68748d53fcd36] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ttf” a3ff07150b3535fd32f68748d53fcd36] ---
if not modules then modules={} end modules ['font-ttf']={
version=1.001,
@@ -13091,10 +13164,10 @@ function readers.gvar(f,fontdata,specification,glyphdata,shapedata)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ttf”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ttf”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-dsp” 4935e6605ffd7bf57e66f0b6c132f883] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-dsp” 23a82ec8fdb9f226427e78904402e48a] ---
if not modules then modules={} end modules ['font-dsp']={
version=1.001,
@@ -16372,10 +16445,10 @@ function readers.mvar(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-dsp”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-dsp”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oup” 76dc3379061e5650f772909966b5759e] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oup” 76dc3379061e5650f772909966b5759e] ---
if not modules then modules={} end modules ['font-oup']={
version=1.001,
@@ -19213,10 +19286,10 @@ end
expandlookups(sublookups,sequences)
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oup”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oup”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otl” 308b1aab04bc131da7eb8e8c3b0471d4] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otl” 308b1aab04bc131da7eb8e8c3b0471d4] ---
if not modules then modules={} end modules ['font-otl']={
version=1.001,
@@ -19944,10 +20017,10 @@ otf.coverup={
end
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otl”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otl”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oto” 9febc4d75d17a543cd73fb17918f7307] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oto” 9febc4d75d17a543cd73fb17918f7307] ---
if not modules then modules={} end modules ['font-oto']={
version=1.001,
@@ -20416,10 +20489,10 @@ registerotffeature {
}
otf.basemodeinitializer=featuresinitializer
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-oto”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-oto”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otj” b2c165bd6771a57633f992d07384b739] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otj” b2c165bd6771a57633f992d07384b739] ---
if not modules then modules={} end modules ['font-otj']={
version=1.001,
@@ -21912,10 +21985,10 @@ function injections.handler(head,where)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otj”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otj”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ota” 2bb12d708e35bc05443eba791e2554e7] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ota” 2bb12d708e35bc05443eba791e2554e7] ---
if not modules then modules={} end modules ['font-ota']={
version=1.001,
@@ -22409,10 +22482,10 @@ directives.register("otf.analyze.useunicodemarks",function(v)
analyzers.useunicodemarks=v
end)
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ota”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ota”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ots” 55316a605d11a1d07d38795224c90a63] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ots” 55316a605d11a1d07d38795224c90a63] ---
if not modules then modules={} end modules ['font-ots']={
version=1.001,
@@ -26072,10 +26145,10 @@ registerotffeature {
},
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ots”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ots”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-osd” 9b5337b0051b8e42b6c8329127c59794] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-osd” 1716513d8fe5f28e0e88daad2be0e05b] ---
if not modules then modules={} end modules ['font-osd']={
version=1.001,
@@ -26084,14 +26157,6 @@ if not modules then modules={} end modules ['font-osd']={
copyright="TAT Zetwerk / PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local experiment1=false
-local experiment2=false
-local experiment2b1=false
-local experiment2b2=false
-experiments.register("fonts.indic.experiment1",function(v) experiment1=v end)
-experiments.register("fonts.indic.experiment2",function(v) experiment2=v end)
-experiments.register("fonts.indic.experiment2b1",function(v) experiment2b1=v end)
-experiments.register("fonts.indic.experiment2b2",function(v) experiment2b2=v end)
local insert,remove,imerge,copy,tohash=table.insert,table.remove,table.imerge,table.copy,table.tohash
local next,type,rawget=next,type,rawget
local formatters=string.formatters
@@ -28716,10 +28781,10 @@ for i=1,nofscripts do
methods[scripts_two[i]]=method_two
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-osd”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-osd”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ocl” 2a377351ae23c339764ec8ce2e8e9164] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ocl” 2a377351ae23c339764ec8ce2e8e9164] ---
if not modules then modules={} end modules ['font-ocl']={
version=1.001,
@@ -29267,10 +29332,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-ocl”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-ocl”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otc” 57f5270b894e40efa93149c7d3fb0209] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otc” 57f5270b894e40efa93149c7d3fb0209] ---
if not modules then modules={} end modules ['font-otc']={
version=1.001,
@@ -30094,10 +30159,10 @@ end
otf.enhancers.enhance=enhance
otf.enhancers.register("check extra features",enhance)
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-otc”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-otc”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-onr” 6d161533f3437435e12a0ad64866df44] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-onr” 6d161533f3437435e12a0ad64866df44] ---
if not modules then modules={} end modules ['font-onr']={
version=1.001,
@@ -30470,10 +30535,10 @@ function readers.getinfo(filename)
end
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-onr”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-onr”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-one” bd39d42055a44ca2002f8ddbbbbf27c3] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-one” bd39d42055a44ca2002f8ddbbbbf27c3] ---
if not modules then modules={} end modules ['font-one']={
version=1.001,
@@ -31188,10 +31253,10 @@ registerafmenhancer("normalize features",enhance_normalize_features)
registerafmenhancer("check extra features",otfenhancers.enhance)
registerafmenhancer("fix names",enhance_fix_names)
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-one”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-one”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-afk” 9da14e0fb22129c053acc599d1312544] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-afk” 9da14e0fb22129c053acc599d1312544] ---
if not modules then modules={} end modules ['font-afk']={
version=1.001,
@@ -31358,10 +31423,10 @@ fonts.handlers.afm.helpdata={
}
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-afk”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-afk”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-tfm” f0eb5e2a8068b17ad401bb7efdba1630] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-tfm” f0eb5e2a8068b17ad401bb7efdba1630] ---
if not modules then modules={} end modules ['luatex-fonts-tfm']={
version=1.001,
@@ -31876,10 +31941,10 @@ registertfmfeature {
}
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-tfm”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-tfm”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
if not modules then modules={} end modules ['font-lua']={
version=1.001,
@@ -31919,10 +31984,10 @@ function readers.lua(specification)
return check_lua(specification,fullname)
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-lua”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-lua”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-def” b9d908c2338b7dc443ce9d1e9fcb7139] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-def” b9d908c2338b7dc443ce9d1e9fcb7139] ---
if not modules then modules={} end modules ['font-def']={
version=1.001,
@@ -32322,10 +32387,10 @@ if not context then
callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-def”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-def”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-shp” a40862fe382d26c1f3753431254bcfdd] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-shp” a40862fe382d26c1f3753431254bcfdd] ---
if not modules then modules={} end modules ['font-shp']={
version=1.001,
@@ -32690,10 +32755,10 @@ callback.register("glyph_stream_provider",function(id,index,mode)
return ""
end)
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-shp”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-shp”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-def” f435e0875f203f343157baeff876ec9c] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-def” f435e0875f203f343157baeff876ec9c] ---
if not modules then modules={} end modules ['luatex-fonts-def']={
version=1.001,
@@ -32774,10 +32839,10 @@ function fonts.definers.applypostprocessors(tfmdata)
return tfmdata
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-def”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-def”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-ext” 32013cbc5d5d336be8b1d1e5879d86c4] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-ext” 32013cbc5d5d336be8b1d1e5879d86c4] ---
if not modules then modules={} end modules ['luatex-fonts-ext']={
version=1.001,
@@ -32963,10 +33028,10 @@ registerotffeature {
}
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-ext”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-ext”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-tex” ceb087ef6fa2f89aed7179f60ddf8f35] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-tex” ceb087ef6fa2f89aed7179f60ddf8f35] ---
if not modules then modules={} end modules ['font-imp-tex']={
version=1.001,
@@ -33065,10 +33130,10 @@ registerotffeature {
description="arabic digits",
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-tex”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-tex”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-ligatures” 250f6f4488ee770c23177afb2ff75676] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-ligatures” 250f6f4488ee770c23177afb2ff75676] ---
if not modules then modules={} end modules ['font-imp-ligatures']={
version=1.001,
@@ -33182,10 +33247,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-ligatures”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-ligatures”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-italics” defcb415bc1e0a0999b27773902adc18] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-italics” defcb415bc1e0a0999b27773902adc18] ---
if not modules then modules={} end modules ['font-imp-italics']={
version=1.001,
@@ -33289,10 +33354,10 @@ if context then
registerafmfeature(dimensions_specification)
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-italics”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-italics”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-effects” d05997c1826355548ec9aec1346f9f23] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-effects” d05997c1826355548ec9aec1346f9f23] ---
if not modules then modules={} end modules ['font-imp-effects']={
version=1.001,
@@ -33649,10 +33714,10 @@ local specification={
registerotffeature(specification)
registerafmfeature(specification)
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “font-imp-effects”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “font-imp-effects”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-lig” fbd251eea3810a43a8d5542319361d68] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-lig” fbd251eea3810a43a8d5542319361d68] ---
fonts.handlers.otf.addfeature {
@@ -35721,10 +35786,10 @@ fonts.handlers.otf.addfeature {
["type"]="ligature",
}
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-lig”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-lig”] ---
-do --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-gbn” 34e4543a02f6fbc8c2ade896cb6dc7df] ---
+do --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-gbn” 34e4543a02f6fbc8c2ade896cb6dc7df] ---
if not modules then modules={} end modules ['luatex-fonts-gbn']={
version=1.001,
@@ -35989,7 +36054,7 @@ function nodes.simple_font_handler(head,groupcode,size,packtype,direction)
return head
end
-end --- [luaotfload, fontloader-2022-06-15.lua scope for “fonts-gbn”] ---
+end --- [luaotfload, fontloader-2022-10-03.lua scope for “fonts-gbn”] ---
--- vim:ft=lua:sw=2:ts=8:et:tw=79
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-cff.lua b/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
index 4258991c67..114d7dd079 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
@@ -735,8 +735,13 @@ local result = { }
local seacs = { }
local procidx = nil
- local function showstate(where)
- report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ local function showstate(where,i,n)
+ if i then
+ local j = i + n - 1
+ report("%w%-10s : [%s] step",depth*2+2,where,concat(stack," ",i,j <= top and j or top))
+ else
+ report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ end
end
local function showvalue(where,value,showstack)
@@ -873,9 +878,9 @@ local result = { }
end
end
- local function xycurveto(x1,y1,x2,y2,x3,y3) -- called local so no blend here
+ local function xycurveto(x1,y1,x2,y2,x3,y3,i,n) -- called local so no blend here
if trace_charstrings then
- showstate("curveto")
+ showstate("curveto",i,n)
end
if keepcurve then
r = r + 1
@@ -1019,6 +1024,16 @@ local result = { }
if trace_charstrings then
showstate("rrcurveto")
end
+if top == 6 then
+ local ax = x + stack[1] -- dxa
+ local ay = y + stack[2] -- dya
+ local bx = ax + stack[3] -- dxb
+ local by = ay + stack[4] -- dyb
+ x = bx + stack[5] -- dxc
+ y = by + stack[6] -- dyc
+ xycurveto(ax,ay,bx,by,x,y,1,6)
+else
+-- print("rr",top==6,top)
for i=1,top,6 do
local ax = x + stack[i] -- dxa
local ay = y + stack[i+1] -- dya
@@ -1026,8 +1041,9 @@ local result = { }
local by = ay + stack[i+3] -- dyb
x = bx + stack[i+4] -- dxc
y = by + stack[i+5] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
+end
top = 0
end
@@ -1040,6 +1056,15 @@ local result = { }
y = y + stack[1] -- dy1
s = 2
end
+if top == 4 then
+ local ax = x + stack[1] -- dxa
+ local ay = y
+ local bx = ax + stack[2] -- dxb
+ local by = ay + stack[3] -- dyb
+ x = bx + stack[4] -- dxc
+ y = by
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=s,top,4 do
local ax = x + stack[i] -- dxa
local ay = y
@@ -1047,8 +1072,9 @@ local result = { }
local by = ay + stack[i+2] -- dyb
x = bx + stack[i+3] -- dxc
y = by
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top = 0
end
@@ -1062,6 +1088,16 @@ local result = { }
d = stack[1] -- dx1
s = 2
end
+if top == 4 then
+ local ax = x + d
+ local ay = y + stack[1] -- dya
+ local bx = ax + stack[2] -- dxb
+ local by = ay + stack[3] -- dyb
+ x = bx
+ y = by + stack[4] -- dyc
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+ d = 0
+else
for i=s,top,4 do
local ax = x + d
local ay = y + stack[i] -- dya
@@ -1069,9 +1105,10 @@ local result = { }
local by = ay + stack[i+2] -- dyb
x = bx
y = by + stack[i+3] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
d = 0
end
+end
top = 0
end
@@ -1080,6 +1117,33 @@ local result = { }
if last then
top = top - 1
end
+if top == 4 then
+ local ax, ay, bx, by
+ if swap then
+ ax = x + stack[1]
+ ay = y
+ bx = ax + stack[2]
+ by = ay + stack[3]
+ y = by + stack[4]
+ if last then
+ x = bx + last
+ else
+ x = bx
+ end
+ else
+ ax = x
+ ay = y + stack[1]
+ bx = ax + stack[2]
+ by = ay + stack[3]
+ x = bx + stack[4]
+ if last then
+ y = by + last
+ else
+ y = by
+ end
+ end
+ xycurveto(ax,ay,bx,by,x,y,1 ,4)
+else
for i=1,top,4 do
local ax, ay, bx, by
if swap then
@@ -1107,8 +1171,9 @@ local result = { }
end
swap = true
end
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top = 0
end
@@ -1137,7 +1202,7 @@ local result = { }
local by = ay + stack[i+3] -- dyb
x = bx + stack[i+4] -- dxc
y = by + stack[i+5] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
x = x + stack[top-1] -- dxc
y = y + stack[top] -- dyc
@@ -2531,7 +2596,7 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
end
end
else
- -- unsupported format
+ report("unsupported fd index format %i",format)
end
-- hm, always
if maxindex >= 0 then
@@ -2539,21 +2604,30 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
if cidarray then
setposition(f,header.offset+cidarray)
local dictionaries = readlengths(f,version == "cff2")
- for i=1,#dictionaries do
- dictionaries[i] = readstring(f,dictionaries[i])
- end
- parsedictionaries(data,dictionaries)
- cid.dictionaries = dictionaries
- readcidprivates(f,data)
- for i=1,#dictionaries do
- readlocals(f,data,dictionaries[i],version)
- end
- startparsing(fontdata,data,streams)
- for i=1,#charstrings do
- parsecharstring(fontdata,data,dictionaries[fdindex[i]+1],charstrings[i],glyphs,i,doshapes,version,streams)
--- charstrings[i] = nil
+ if #dictionaries > 0 then
+ for i=1,#dictionaries do
+ dictionaries[i] = readstring(f,dictionaries[i])
+ end
+ parsedictionaries(data,dictionaries)
+ cid.dictionaries = dictionaries
+ readcidprivates(f,data)
+ for i=1,#dictionaries do
+ readlocals(f,data,dictionaries[i],version)
+ end
+ startparsing(fontdata,data,streams)
+ for i=1,#charstrings do
+ local dictionary = dictionaries[fdindex[i]+1]
+ if dictionary then
+ parsecharstring(fontdata,data,dictionary,charstrings[i],glyphs,i,doshapes,version,streams)
+ else
+ -- report("no dictionary for %a : %a => %a",version,i,fdindex[i]+1)
+ end
+ -- charstrings[i] = false
+ end
+ stopparsing(fontdata,data)
+ else
+ report("no cid dictionaries")
end
- stopparsing(fontdata,data)
else
report("no cid array")
end
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-dsp.lua b/macros/luatex/generic/luaotfload/fontloader-font-dsp.lua
index d036783284..8f65ed9d94 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-dsp.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-dsp.lua
@@ -2515,6 +2515,8 @@ do
local scriptoffset = tableoffset + readushort(f)
local featureoffset = tableoffset + readushort(f)
local lookupoffset = tableoffset + readushort(f)
+ -- MFK : Rubik-Regular.ttf : we need to delay adding the offset
+ -- local variationsoffset = version > 0x00010000 and (tableoffset + readulong(f)) or 0
local variationsoffset = version > 0x00010000 and readulong(f) or 0
if not scriptoffset then
return
@@ -2541,6 +2543,7 @@ do
end
--
if variationsoffset > 0 then
+ -- loadvariations(f,fontdata,variationsoffset,lookuptypes,featurehash,featureorder)
loadvariations(f,fontdata,tableoffset + variationsoffset,lookuptypes,featurehash,featureorder)
end
end
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-osd.lua b/macros/luatex/generic/luaotfload/fontloader-font-osd.lua
index d169faf64d..ecf8009f91 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-osd.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-osd.lua
@@ -6,15 +6,15 @@ if not modules then modules = { } end modules ['font-osd'] = { -- script devanag
license = "see context related readme files"
}
-local experiment1 = false
-local experiment2 = false
-local experiment2b1 = false
-local experiment2b2 = false
-
-experiments.register("fonts.indic.experiment1", function(v) experiment1 = v end)
-experiments.register("fonts.indic.experiment2", function(v) experiment2 = v end)
-experiments.register("fonts.indic.experiment2b1", function(v) experiment2b1 = v end)
-experiments.register("fonts.indic.experiment2b2", function(v) experiment2b2 = v end)
+-- local experiment1 = false
+-- local experiment2 = false
+-- local experiment2b1 = false
+-- local experiment2b2 = false
+
+-- experiments.register("fonts.indic.experiment1", function(v) experiment1 = v end)
+-- experiments.register("fonts.indic.experiment2", function(v) experiment2 = v end)
+-- experiments.register("fonts.indic.experiment2b1", function(v) experiment2b1 = v end)
+-- experiments.register("fonts.indic.experiment2b2", function(v) experiment2b2 = v end)
-- we need to check nbsphash (context only)
diff --git a/macros/luatex/generic/luaotfload/fontloader-l-math.lua b/macros/luatex/generic/luaotfload/fontloader-l-math.lua
index 69f0a19e98..6105bc3c2d 100644
--- a/macros/luatex/generic/luaotfload/fontloader-l-math.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-l-math.lua
@@ -14,9 +14,19 @@ end
if not math.round then
- local floor = math.floor
+ if xmath then
+
+ math.round = xmath.round
+
+ else
- function math.round(x) return floor(x + 0.5) end
+ local floor = math.floor
+
+ function math.round(x)
+ return x < 0 and -floor(-x + 0.5) or floor(x + 0.5)
+ end
+
+ end
end
diff --git a/macros/luatex/generic/luaotfload/fontloader-reference.lua b/macros/luatex/generic/luaotfload/fontloader-reference.lua
index 13389b292a..c539d886cc 100644
--- a/macros/luatex/generic/luaotfload/fontloader-reference.lua
+++ b/macros/luatex/generic/luaotfload/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 : 2022-05-11 11:34
+-- merge date : 2022-09-16 14:39
do -- begin closure to overcome local limits and interference
@@ -3031,8 +3031,14 @@ if not math.ceiling then
math.ceiling=math.ceil
end
if not math.round then
- local floor=math.floor
- function math.round(x) return floor(x+0.5) end
+ if xmath then
+ math.round=xmath.round
+ else
+ local floor=math.floor
+ function math.round(x)
+ return x<0 and -floor(-x+0.5) or floor(x+0.5)
+ end
+ end
end
if not math.div then
local floor=math.floor
@@ -13696,8 +13702,13 @@ local result={}
local justpass=false
local seacs={}
local procidx=nil
- local function showstate(where)
- report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ local function showstate(where,i,n)
+ if i then
+ local j=i+n-1
+ report("%w%-10s : [%s] step",depth*2+2,where,concat(stack," ",i,j<=top and j or top))
+ else
+ report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ end
end
local function showvalue(where,value,showstack)
if showstack then
@@ -13813,9 +13824,9 @@ local result={}
ymin=y
end
end
- local function xycurveto(x1,y1,x2,y2,x3,y3)
+ local function xycurveto(x1,y1,x2,y2,x3,y3,i,n)
if trace_charstrings then
- showstate("curveto")
+ showstate("curveto",i,n)
end
if keepcurve then
r=r+1
@@ -13952,6 +13963,15 @@ local result={}
if trace_charstrings then
showstate("rrcurveto")
end
+if top==6 then
+ local ax=x+stack[1]
+ local ay=y+stack[2]
+ local bx=ax+stack[3]
+ local by=ay+stack[4]
+ x=bx+stack[5]
+ y=by+stack[6]
+ xycurveto(ax,ay,bx,by,x,y,1,6)
+else
for i=1,top,6 do
local ax=x+stack[i]
local ay=y+stack[i+1]
@@ -13959,8 +13979,9 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
+end
top=0
end
local function hhcurveto()
@@ -13972,6 +13993,15 @@ local result={}
y=y+stack[1]
s=2
end
+if top==4 then
+ local ax=x+stack[1]
+ local ay=y
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx+stack[4]
+ y=by
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=s,top,4 do
local ax=x+stack[i]
local ay=y
@@ -13979,8 +14009,9 @@ local result={}
local by=ay+stack[i+2]
x=bx+stack[i+3]
y=by
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function vvcurveto()
@@ -13993,6 +14024,16 @@ local result={}
d=stack[1]
s=2
end
+if top==4 then
+ local ax=x+d
+ local ay=y+stack[1]
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx
+ y=by+stack[4]
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+ d=0
+else
for i=s,top,4 do
local ax=x+d
local ay=y+stack[i]
@@ -14000,9 +14041,10 @@ local result={}
local by=ay+stack[i+2]
x=bx
y=by+stack[i+3]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
d=0
end
+end
top=0
end
local function xxcurveto(swap)
@@ -14010,6 +14052,33 @@ local result={}
if last then
top=top-1
end
+if top==4 then
+ local ax,ay,bx,by
+ if swap then
+ ax=x+stack[1]
+ ay=y
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ y=by+stack[4]
+ if last then
+ x=bx+last
+ else
+ x=bx
+ end
+ else
+ ax=x
+ ay=y+stack[1]
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ x=bx+stack[4]
+ if last then
+ y=by+last
+ else
+ y=by
+ end
+ end
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=1,top,4 do
local ax,ay,bx,by
if swap then
@@ -14037,8 +14106,9 @@ local result={}
end
swap=true
end
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function hvcurveto()
@@ -14064,7 +14134,7 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
x=x+stack[top-1]
y=y+stack[top]
@@ -15208,26 +15278,35 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
end
end
else
+ report("unsupported fd index format %i",format)
end
if maxindex>=0 then
local cidarray=cid.fdarray
if cidarray then
setposition(f,header.offset+cidarray)
local dictionaries=readlengths(f,version=="cff2")
- for i=1,#dictionaries do
- dictionaries[i]=readstring(f,dictionaries[i])
- end
- parsedictionaries(data,dictionaries)
- cid.dictionaries=dictionaries
- readcidprivates(f,data)
- for i=1,#dictionaries do
- readlocals(f,data,dictionaries[i],version)
- end
- startparsing(fontdata,data,streams)
- for i=1,#charstrings do
- parsecharstring(fontdata,data,dictionaries[fdindex[i]+1],charstrings[i],glyphs,i,doshapes,version,streams)
+ if #dictionaries>0 then
+ for i=1,#dictionaries do
+ dictionaries[i]=readstring(f,dictionaries[i])
+ end
+ parsedictionaries(data,dictionaries)
+ cid.dictionaries=dictionaries
+ readcidprivates(f,data)
+ for i=1,#dictionaries do
+ readlocals(f,data,dictionaries[i],version)
+ end
+ startparsing(fontdata,data,streams)
+ for i=1,#charstrings do
+ local dictionary=dictionaries[fdindex[i]+1]
+ if dictionary then
+ parsecharstring(fontdata,data,dictionary,charstrings[i],glyphs,i,doshapes,version,streams)
+ else
+ end
+ end
+ stopparsing(fontdata,data)
+ else
+ report("no cid dictionaries")
end
- stopparsing(fontdata,data)
else
report("no cid array")
end
@@ -18685,7 +18764,7 @@ do
local scriptoffset=tableoffset+readushort(f)
local featureoffset=tableoffset+readushort(f)
local lookupoffset=tableoffset+readushort(f)
- local variationsoffset=version>0x00010000 and (tableoffset+readulong(f)) or 0
+ local variationsoffset=version>0x00010000 and readulong(f) or 0
if not scriptoffset then
return
end
@@ -18705,7 +18784,7 @@ do
resolvelookups(f,lookupoffset,fontdata,lookups,lookuptypes,lookuphandlers,what,tableoffset)
end
if variationsoffset>0 then
- loadvariations(f,fontdata,variationsoffset,lookuptypes,featurehash,featureorder)
+ loadvariations(f,fontdata,tableoffset+variationsoffset,lookuptypes,featurehash,featureorder)
end
end
end
@@ -31706,14 +31785,6 @@ if not modules then modules={} end modules ['font-osd']={
copyright="TAT Zetwerk / PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local experiment1=false
-local experiment2=false
-local experiment2b1=false
-local experiment2b2=false
-experiments.register("fonts.indic.experiment1",function(v) experiment1=v end)
-experiments.register("fonts.indic.experiment2",function(v) experiment2=v end)
-experiments.register("fonts.indic.experiment2b1",function(v) experiment2b1=v end)
-experiments.register("fonts.indic.experiment2b2",function(v) experiment2b2=v end)
local insert,remove,imerge,copy,tohash=table.insert,table.remove,table.imerge,table.copy,table.tohash
local next,type,rawget=next,type,rawget
local formatters=string.formatters
diff --git a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
index eb21180902..bcbdd74b2a 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
@@ -4,10 +4,10 @@
-- AUTHOR: Khaled Hosny, Élie Roux, Philipp Gesang
-----------------------------------------------------------------------
-assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
+assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-auxiliary",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / auxiliary functions",
license = "GPL v2.0"
}
@@ -584,6 +584,61 @@ function aux.provides_language(font_id, asked_script, asked_language)
end
--[[doc--
+A function to check if a font is a variabe font with a given axis.
+--doc]]--
+
+function aux.provides_axis(font_id, asked_axis)
+ if not font_id or type (font_id) ~= "number"
+ or not asked_axis or type (asked_axis) ~= "string"
+ then
+ logreport ("both", 0, "aux",
+ "invalid parameters to provides_axis(%s, %s)",
+ tostring (font_id), tostring (asked_axis))
+ return false
+ end
+ local tfmdata = identifiers[font_id]
+ if not tfmdata then
+ logreport ("log", 0, "aux", "no font with id %d", font_id)
+ return false
+ end
+ local hbface = get_hbface(tfmdata)
+ if hbface then
+ if not hbface:ot_var_has_data() then return false end
+
+ if #asked_axis <= 4 then
+ local tag = harf.Tag.new(asked_axis)
+ local info = hbface:ot_var_find_axis_info(tag)
+ if info then
+ return true -- TODO: More info?
+ end
+ end
+
+ asked_axis = stringlower(asked_axis)
+ local infos = hbface:ot_var_get_axis_infos()
+ for i=1, #infos do
+ local info = infos[i]
+ if hbface:get_name(info.name_id):lower() == asked_axis then
+ return true -- TODO: More info?
+ end
+ end
+ else
+ asked_axis = stringlower(asked_axis)
+ local resources = tfmdata.resources
+ local variabledata = resources and resources.variabledata
+ if not variabledata then return false end
+ local axes = variabledata.axis
+ if not axes then return false end -- Shouldn't happen
+ for i=1, #axes do
+ local axis = axes[i]
+ if axis.tag == asked_axis or axis.name == asked_axis then
+ return true -- TODO: More info?
+ end
+ end
+ end
+ return false
+end
+
+--[[doc--
We strip the syntax elements from feature definitions (shouldn’t
actually be there in the first place, but who cares ...)
--doc]]--
diff --git a/macros/luatex/generic/luaotfload/luaotfload-bcp47.lua b/macros/luatex/generic/luaotfload/luaotfload-bcp47.lua
index 03dc65e5bc..fc90c14363 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-bcp47.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-bcp47.lua
@@ -55,7 +55,7 @@ local normalize_case, language_tag do
+ l.P'sgn-CH-DE' * l.Cc{language = 'sgg'}
local regular =
l.P'art-lojban' * l.Cc{language = 'jbo'}
- + l.P'cel-gaulish' * l.Cc{language = '...'}
+ + l.P'cel-gaulish' * l.Cc{language = 'cel-gaulish'} -- Might be xcg, xga or xtg
+ l.P'no-bok' * l.Cc{language = 'nb'}
+ l.P'no-nyn' * l.Cc{language = 'nn'}
+ l.P'zh-guoyu' * l.Cc{language = 'cmn'}
@@ -69,17 +69,18 @@ local normalize_case, language_tag do
* ('-' * variant)^0
* (#('-' * singleton * '-') * l.Cg(l.Cf(l.Ct'' * ('-' * extension)^0, rawset), 'extension'))^-1
* ('-' * privateuse)^-1
- language_tag = (grandfathered + l.Ct(langtag + privateuse)) * l.Cp()--* -1
+ language_tag = (grandfathered + l.Ct(langtag + privateuse)) * -1
end
local function parse(tag)
tag = normalize_case:match(tag)
if not tag then return end
- local parsed, pos = language_tag:match(tag)
- print(require'inspect'{parsed, pos})
- -- if not parsed then return parsed end
- return tag, parsed
-end
-for l in io.lines() do
- print(parse(l))
- -- io.stdout:write(parse(l), '\n')
+ return language_tag:match(tag), tag
end
+-- for l in io.lines() do
+-- print(parse(l))
+-- -- io.stdout:write(parse(l), '\n')
+-- end
+return {
+ normalize_case = function(n) return normalize_case:match(tag) end,
+ parse = parse,
+}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-case.lua b/macros/luatex/generic/luaotfload/luaotfload-case.lua
index f5a147334d..79fb370ec7 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-case.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-case.lua
@@ -1,4 +1,5 @@
local unicode_data = require'luaotfload-unicode'
+local bcp47 = require'luaotfload-bcp47'
local mapping_tables = unicode_data.casemapping
local soft_dotted = unicode_data.soft_dotted
@@ -26,6 +27,8 @@ local copy = direct.copy
local insert_after = direct.insert_after
local traverse = direct.traverse
+local report = luaotfload.log.report
+
local disc = node.id'disc'
--[[ We make some implicit assumptions about contexts in SpecialCasing.txt here which happened to be true when I wrote the code:
@@ -113,6 +116,15 @@ local function init_greek_data()
for c = 0x2126, 0x2126 do handle_char(c) end
end
+local relevant_languages = {
+ lt = true,
+ tr = true,
+ az = true,
+ hy = {_ = true, yiwn = true},
+ el = {_ = true, iota = true},
+ de = {_ = false, eszett = true},
+}
+
local function font_lang(feature)
return setmetatable({}, {__index = function(t, fid)
local f = font.getfont(fid)
@@ -127,6 +139,35 @@ local function font_lang(feature)
or (lang == 'ell' or lang == 'pgr') and 'el'
or false
end
+ if lang == 'de-alt' then
+ lang = 'de-x-eszett'
+ end
+ local parsed = lang and bcp47.parse(lang)
+ if lang and not parsed then
+ report('luaotfload-case', 0, 'Unable to parse passed language tag')
+ end
+ lang = parsed and parsed.language
+ local subtags = lang and relevant_languages[lang]
+ if subtags then
+ local private = parsed.private
+ if subtags ~= true and private then
+ local first = true
+ for _, ext in ipairs(private) do
+ if subtags[ext] then
+ if first then
+ lang = lang .. '-x'
+ first = nil
+ end
+ lang = lang .. '-' .. ext
+ end
+ end
+ if first then
+ lang = subtags._ and lang
+ end
+ end
+ else
+ lang = false
+ end
t[fid] = lang
return lang
end})
diff --git a/macros/luatex/generic/luaotfload/luaotfload-colors.lua b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
index 075b5210f5..378b0f62b6 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-colors.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-colors",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Dohyun Kim, David Carlisle",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
index ba983ed74c..c735e60a99 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
index 8368425334..9ed614b17e 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
@@ -7,8 +7,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-configuration",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / config file reader",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-database.lua b/macros/luatex/generic/luaotfload/luaotfload-database.lua
index 63f799ca41..e71e923ff6 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-database.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-database.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-database",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
index 25f79419a6..093c171409 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
@@ -7,8 +7,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-diagnostics",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload-tool submodule / diagnostics",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-dvi.lua b/macros/luatex/generic/luaotfload/luaotfload-dvi.lua
index da045d1d34..eeac1c71d0 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-dvi.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-dvi.lua
@@ -6,8 +6,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-dvi",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / DVI",
license = "GPL v2.0",
author = "Marcel Krüger",
@@ -17,11 +17,19 @@ assert(luaotfload_module, "This is a part of luaotfload and should not be loaded
local getfont = font.getfont
local setfont = node.direct.setfont
local getdisc = node.direct.getdisc
+local getlist = node.direct.getlist
+local is_glyph = node.direct.is_glyph
+local todirect = node.direct.todirect
local traverse_glyph = node.direct.traverse_glyph
+local traverse_list = node.direct.traverse_list
local traverse_id = node.direct.traverse_id
+local traverse = node.direct.traverse
local uses_font = node.direct.uses_font
local define_font = font.define
+local hlist_t = node.id'hlist'
+local vlist_t = node.id'vlist'
local disc_t = node.id'disc'
+local glyph_t = node.id'glyph'
-- DVI output support
--
@@ -40,11 +48,67 @@ local disc_t = node.id'disc'
-- mapped_fonts maps fontids from the user to fontids used in the DVI file
local mapped_fonts = setmetatable({}, {__index = function(t, fid)
local font = getfont(fid)
- local mapped = font.backend_font or false
+ print(fid, font and font.fullname)
+ local mapped = font and font.backend_font or false
t[fid] = mapped
return mapped
end})
+local full_hprocess
+local function full_vprocess(head)
+ for _, id, _, list in traverse_list(head) do
+ if id == hlist_t then
+ full_hprocess(list)
+ elseif id == vlist_t then
+ full_vprocess(list)
+ else
+ assert(false)
+ end
+ end
+end
+
+function full_hprocess(head)
+ local last_f, last_mapping, last_mapped_font
+ for n, id in traverse(head) do
+ if id == hlist_t then
+ full_hprocess(getlist(n))
+ elseif id == vlist_t then
+ full_vprocess(getlist(n))
+ elseif id == disc_t then
+ local _, _, rep = getdisc(n)
+ for n, c, f in traverse_glyph(rep) do
+ if f ~= last_f then
+ last_f, last_mapping = f, mapped_fonts[f]
+ last_mapped_font = last_mapping and last_mapping.font
+ end
+ if last_mapping then
+ local mapped = last_mapping[c]
+ if mapped then setfont(n, mapped_font, mapped) end
+ end
+ end
+ elseif id == glyph_t then
+ local c, f = is_glyph(n)
+ if f ~= last_f then
+ last_f, last_mapping = f, mapped_fonts[f]
+ last_mapped_font = last_mapping and last_mapping.font
+ end
+ if last_mapping then
+ local mapped = last_mapping[c]
+ print(c, f, mapped)
+ if mapped then setfont(n, last_mapped_font, mapped) end
+ end
+ end
+ end
+end
+
+local function delayed_register_callback()
+ luatexbase.add_to_callback('pre_shipout_filter', function(list)
+ full_vprocess(todirect(list)) -- list should always be a single list node, so we can treat it as if it were a vlist with one node
+ return true
+ end, 'luaotfload.dvi')
+ delayed_register_callback = function() end
+end
+
local function process(head, font)
local mapping = mapped_fonts[font]
if not mapping then return head end
@@ -77,6 +141,7 @@ local function manipulate(tfmdata, _, dvi_kind)
if 2 ~= (tfmdata.encodingbytes or ((tfmdata.format == 'truetype' or tfmdata.format == 'opentype') and 2 or 1)) then
return
end
+ delayed_register_callback()
local newfont = {}
for k,v in pairs(tfmdata) do
newfont[k] = v
diff --git a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
index 7bc4da5a76..6070b1a9ba 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-embolden",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / embolden",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-fallback.lua b/macros/luatex/generic/luaotfload/luaotfload-fallback.lua
index 253d16051c..2f010c11d0 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-fallback.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-fallback.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-fallback",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / fallback",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-features.lua b/macros/luatex/generic/luaotfload/luaotfload-features.lua
index 6e64020570..4b3c1a0859 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-features.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-features.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-features",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / features",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
@@ -484,6 +484,7 @@ do
local getaxisscale = helpers.getaxisscale
local function search(table, term, key_field, value_field)
if not table then return end
+ term = cleanname(term)
for i=1, #table do
local entry = table[i]
if cleanname(entry[key_field]) == term then
@@ -876,6 +877,7 @@ fonts.constructors.features.otf.register {
end,
},
processors = {
+ position = 1,
node = function(head, f, _, _, _)
return normalize_lookup[f](head)
end,
diff --git a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
index a5dac9e640..c7bfc4e43f 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
@@ -6,8 +6,8 @@
if luaotfload_module then luaotfload_module {
name = "luaotfload-filelist",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
} end
diff --git a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
index f585e298b8..428872e8d3 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
@@ -1,8 +1,8 @@
if luaotfload_module then
luaotfload_module {
name = "luaotfload-glyphlist",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / autogenerated glyphlist",
copyright = "derived from https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt",
original = "Adobe Glyph List, version 2.0, September 20, 2002",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
index c3b0a8509e..a5923b773c 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-harf-define",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / HarfBuzz font loading",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -394,6 +394,7 @@ local function scalefont(data, spec)
local unicodes = data.unicodes
for uni, gid in next, unicodes do
characters[uni] = characters[gid_offset + gid]
+ characters[uni].tounicode = uni
end
-- Select font palette, we support `palette=index` option, and load the first
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
index df0d0cf136..5b93356b6b 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
@@ -4,8 +4,8 @@
-----------------------------------------------------------------------
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-harf-plug",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / HarfBuzz shaping",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -1130,7 +1130,7 @@ local function set_tounicode()
if unicode then
newcharacters[unicode] = character
end
- character.tounicode = glyph.tounicode or "FFFD"
+ character.tounicode = glyph.tounicode or unicode or "FFFD"
character.used = true
end
end
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua
index 2ca928d32a..467faa8893 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua
@@ -5,8 +5,8 @@
do
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-harf-var-cff2",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / CFF2 table processing",
license = "GPL v2.0",
author = "Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua
index 72239343d8..75a3804ea2 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua
@@ -5,8 +5,8 @@
do
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-harf-var-t2-writer",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / Type 2 charstring writer",
license = "GPL v2.0",
author = "Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua
index b39cd753ae..0e9b83cd60 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua
@@ -5,8 +5,8 @@
do
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-harf-var-ttf",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / gvar table processing",
license = "GPL v2.0",
author = "Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-hashing.lua b/macros/luatex/generic/luaotfload/luaotfload-hashing.lua
deleted file mode 100644
index e88eab706c..0000000000
--- a/macros/luatex/generic/luaotfload/luaotfload-hashing.lua
+++ /dev/null
@@ -1,2 +0,0 @@
-local constructors = fonts.constructors
-local original_hashfeatures = constructors.hashfeatures
diff --git a/macros/luatex/generic/luaotfload/luaotfload-init.lua b/macros/luatex/generic/luaotfload/luaotfload-init.lua
index ff959e3502..77cb1c54de 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-init.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-init.lua
@@ -7,8 +7,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-init",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / initialization",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
index ef2cea7a10..c9fde7abfa 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
index ef19afe384..505e0a8186 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-letterspace",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / letterspacing",
license = "GPL v2.0",
copyright = "PRAGMA ADE / ConTeXt Development Team",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
index eb09443077..2aec2fb15d 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
@@ -8,8 +8,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-loaders",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / callback handling",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-log.lua b/macros/luatex/generic/luaotfload/luaotfload-log.lua
index 74b364e874..03a3d7bbce 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-log.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-log.lua
@@ -6,8 +6,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-log",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / logging",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-main.tex b/macros/luatex/generic/luaotfload/luaotfload-main.tex
index 6d802cbbc2..b9e25919ca 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-main.tex
+++ b/macros/luatex/generic/luaotfload/luaotfload-main.tex
@@ -32,7 +32,7 @@
\beginfrontmatter
\setdocumenttitle {The \identifier{luaotfload} package}
- \setdocumentdate {2022-06-15 v3.22}
+ \setdocumentdate {2022-10-03 v3.23}
\setdocumentauthor {LaTeX3 Project\\
Elie Roux · Khaled Hosny · Philipp Gesang · Ulrike Fischer · Marcel Krüger\\
Home: \hyperlink {https://github.com/latex3/luaotfload}}
@@ -62,6 +62,13 @@ Supported is the \identifier{luatex} versions of a current TeXLive 2019 (and a c
\endsection
\beginsection{Changes}
+\beginsubsection{New in version 3.23}
+\begin{itemize}
+ \item More reliable ToUnicode mappings in Harf mode
+ \item Various bug fixes
+\end{itemize}
+\endsubsection
+
\beginsubsection {New in version 3.22}
\begin{itemize}
\item Tailored case mappings
diff --git a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
index bc3921e203..f7bb18c225 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-multiscript",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / multiscript",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
index 418ea79d57..3923e8392c 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-notdef",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / notdef",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
index b2cc9c30ea..0c91f4775c 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
@@ -7,8 +7,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-parsers",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / parsers",
license = "GPL v2.0"
}
@@ -638,8 +638,8 @@ local features = Cg(feature_list, "features")
local specification = (path_lookup + prefixed + unprefixed)
* maybe_subfont
* modifier_list
-local font_request = Ct(specification * (colon^-1 * features)^-1
- + combo) --> TODO: feature list needed?
+local font_request = Ct(combo --> TODO: feature list needed?
+ + specification * (colon^-1 * features)^-1)
-- lpeg.print(font_request)
--- v2.5 parser: 1065 rules
diff --git a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
index 135a843cf3..d215aad8be 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
@@ -11,8 +11,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-resolvers",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / resolvers",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-scripts.lua b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
index 8d98f7ce37..222e893718 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-script",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / Script helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-status.lua b/macros/luatex/generic/luaotfload/luaotfload-status.lua
index 7ec80b14fb..12efcf4452 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-status.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-status.lua
@@ -1,10 +1,10 @@
return {
["hashes"]={
- { "fontloader-2022-06-15.lua", "1d9c716b5c1d6ff84bee5e4ba3631eac" },
+ { "fontloader-2022-10-03.lua", "f5384fb6e665b4c3af844e55c9890073" },
{ "fontloader-util-fil.lua", "d0accf4180201efd567816a25ad5e037" },
{ "fontloader-util-str.lua", "f4a9dd15c3e40cd3915749ac13837c95" },
{ "fontloader-l-unicode.lua", "f368874f11f3c525de5864fd413e4b24" },
- { "fontloader-l-math.lua", "5a0740b359e2d55d6dca06a23e3c9df6" },
+ { "fontloader-l-math.lua", "e19c80b7e700a69df942d4df2e14aa28" },
{ "fontloader-l-boolean.lua", "abe28515dd33e8f6c416c09bca351cf8" },
{ "fontloader-l-file.lua", "5839d88d4de96b9e9c7e7f8f8eb885b3" },
{ "fontloader-l-io.lua", "3396a8644bae37e49b2cfc0c388c78f8" },
@@ -33,7 +33,7 @@ return {
{ "fontloader-font-one.lua", "bd39d42055a44ca2002f8ddbbbbf27c3" },
{ "fontloader-font-onr.lua", "6d161533f3437435e12a0ad64866df44" },
{ "fontloader-font-ocl.lua", "2a377351ae23c339764ec8ce2e8e9164" },
- { "fontloader-font-osd.lua", "9b5337b0051b8e42b6c8329127c59794" },
+ { "fontloader-font-osd.lua", "1716513d8fe5f28e0e88daad2be0e05b" },
{ "fontloader-font-otc.lua", "57f5270b894e40efa93149c7d3fb0209" },
{ "fontloader-font-ots.lua", "55316a605d11a1d07d38795224c90a63" },
{ "fontloader-font-ota.lua", "2bb12d708e35bc05443eba791e2554e7" },
@@ -43,9 +43,9 @@ return {
{ "fontloader-font-otl.lua", "308b1aab04bc131da7eb8e8c3b0471d4" },
{ "fontloader-font-ott.lua", "3f67b1b1d40bbc222681d8db4aff0f42" },
{ "fontloader-font-oti.lua", "309a75f9c14b77d87e94eba827dc4e71" },
- { "fontloader-font-dsp.lua", "4935e6605ffd7bf57e66f0b6c132f883" },
+ { "fontloader-font-dsp.lua", "23a82ec8fdb9f226427e78904402e48a" },
{ "fontloader-font-ttf.lua", "a3ff07150b3535fd32f68748d53fcd36" },
- { "fontloader-font-cff.lua", "e38c1a40e1d1d577cdf7920fa50d0654" },
+ { "fontloader-font-cff.lua", "651c74e4804fbb85d31267210298f466" },
{ "fontloader-font-otr.lua", "1896ac990a961f6d6fec551ca9b52a83" },
{ "fontloader-font-vfc.lua", "a81c29eda98cd62cbebdb6c93544b50d" },
{ "fontloader-font-map.lua", "27ee748150e56f5f0e5f0fefc864f35e" },
@@ -53,47 +53,47 @@ return {
{ "fontloader-font-con.lua", "724e5dd14aec2d4d189f8619898004cf" },
{ "fontloader-font-ini.lua", "5343de60613adb24cdd7a8d2ee1d153c" },
{ "fontloader-data-con.lua", "23a0f5386d46a1c157ae82a373e35fa0" },
- { "fontloader-reference.lua", "c256fdcc4661bf9c868002fe0f996d73" },
+ { "fontloader-reference.lua", "e4b70de7191ba92ba3b859427eeca91c" },
{ "fontloader-basics-gen.lua", "4bc43036e9796fccb0b8869f4b05bf2e" },
{ "mktests", "918cb50be9ee8bd645ac1a27dc501e8c" },
- { "mkstatus", "8bffa407d2323b24683f726fc6c1a634" },
+ { "mkstatus", "45611be8d0396d0e048e45fdb318fea0" },
{ "mkcharacters", "bfca0e96e1e351afe7077502f9595af9" },
{ "mkglyphlist", "7a8a8fdc0eac7fac2f13ec8f4e8e7aa9" },
{ "mkimport", "7d62f1042e548f8b9368f26b9ba4be5c" },
- { "luaotfload-glyphlist.lua", "a1eda1d4588777f77459f86bbe1f7500" },
+ { "luaotfload-glyphlist.lua", "76f7660436e588112a74e2bbdd4a813c" },
{ "luaotfload-characters.lua", "76415ca3ede312cad6e09038323489ae" },
- { "luaotfload-dvi.lua", "be1944354d7a1d6d4098966c9cc276b2" },
- { "luaotfload-tounicode.lua", "20fa6d02bae4274d7fbe18ff8683ca76" },
- { "luaotfload-unicode.lua", "69d17d1de56d8c0abdfb77ef7c11dfd6" },
- { "luaotfload-resolvers.lua", "490ba5d0a7b5164f9908f690507e5569" },
- { "luaotfload-parsers.lua", "daf4e973fb452f6a24d90c9a12508445" },
- { "luaotfload-fallback.lua", "56b58f94896f842ef46f25cad0be39bb" },
- { "luaotfload-szss.lua", "5512c588c3e53528f430d3dcd5342c61" },
- { "luaotfload-scripts.lua", "85cd3d5a0df9a0faaf8888fca2352d91" },
- { "luaotfload-multiscript.lua", "e84b33ced34f4ede4549e64831ba2e14" },
- { "luaotfload-loaders.lua", "4b5f6a7ba70f6cbe4eb10c98cc54e39e" },
- { "luaotfload-harf-plug.lua", "061fac6736fbe443c13fa66b1780366d" },
- { "luaotfload-harf-define.lua", "ff5743a2e17370ec42e2715e7dcd3efa" },
- { "luaotfload-notdef.lua", "a00724307cd32649101537414600da85" },
- { "luaotfload-embolden.lua", "2050240a6c33c2cfbb4573f2c3f25507" },
- { "luaotfload-letterspace.lua", "da30005de64912955267159c4310e215" },
- { "luaotfload-features.lua", "cba1c85ff9f4bb3d1af3d3e40db30536" },
- { "luaotfload-database.lua", "306e312f8d5cdebbfc8256bad91197ad" },
- { "luaotfload-configuration.lua", "b9f0b1bebfc3cb0e79688c101b428ba5" },
- { "luaotfload-colors.lua", "ceca08c762415386b78bbe6621ca2ba8" },
- { "luaotfload-auxiliary.lua", "ef7e3f0b64c4dbfc1a498ce4078195aa" },
- { "luaotfload-filelist.lua", "fb3ab92adb3e379822ed4568429b746c" },
- { "luaotfload-tool.lua", "e2f826b49e3baff8d46f2454b985cf39" },
- { "luaotfload-diagnostics.lua", "d7d7005692d1499e9685ab08f6152bf2" },
- { "luaotfload-log.lua", "20d82599e760f75a4c080d2b08dfe084" },
- { "luaotfload-init.lua", "0cf48cf4dbb22324a4b3e449830f21c5" },
+ { "luaotfload-dvi.lua", "34c763f62499f1bad2ae3883ef52e126" },
+ { "luaotfload-tounicode.lua", "9bc62ed441ed23b5222925b019479f78" },
+ { "luaotfload-unicode.lua", "30f5b1073daa0c6e85ca1db843fbd9cd" },
+ { "luaotfload-resolvers.lua", "2b21b7b0f08aa03ca0d527331718dc13" },
+ { "luaotfload-parsers.lua", "0dc623da7513746ee0e0d354505187b3" },
+ { "luaotfload-fallback.lua", "34996c5eb80691e8e9969145a1c63fa8" },
+ { "luaotfload-szss.lua", "87ac61c8fad7650fa6866518212f3a38" },
+ { "luaotfload-scripts.lua", "857b55175273a8277bab059b1bbfa6a4" },
+ { "luaotfload-multiscript.lua", "3436f18db0d08ee567e5051995a3165f" },
+ { "luaotfload-loaders.lua", "7298c7dd711f8480f4bca2aef5df90af" },
+ { "luaotfload-harf-plug.lua", "8b3b69f4c5e573212951c54336b6c75b" },
+ { "luaotfload-harf-define.lua", "ed98bd38d43fbc67e6140c343475d8dd" },
+ { "luaotfload-notdef.lua", "256afb391eb4010d3b69e5af1abebb7a" },
+ { "luaotfload-embolden.lua", "2abe4a85a428d79cae1260908a492477" },
+ { "luaotfload-letterspace.lua", "e950c4f3d6e466b7e59fd8d1d2598fa6" },
+ { "luaotfload-features.lua", "edaf61a299497abb089f9f160acaf5ba" },
+ { "luaotfload-database.lua", "6da3d95f9011b8320dab5c5a32a28978" },
+ { "luaotfload-configuration.lua", "18bbb7350d32b6409b7c331542a886e6" },
+ { "luaotfload-colors.lua", "4ad76dd049092806e62e93437674f003" },
+ { "luaotfload-auxiliary.lua", "c869a8e7d2242a02b0e10928c0cdc59c" },
+ { "luaotfload-filelist.lua", "105e78993704062bf12fd6773a3ed001" },
+ { "luaotfload-tool.lua", "4ba963522c4182e127396e0daa1dd314" },
+ { "luaotfload-diagnostics.lua", "fe454a8415defdce72fc7dbf8af92f39" },
+ { "luaotfload-log.lua", "dee4da9bd54f1a5f7453826b8ecd70ea" },
+ { "luaotfload-init.lua", "fdca1ee9ddbc4324dace4d89043ee1ff" },
{ "luaotfload-main.lua", "b19c9cc34cf1d676c39f872cfb41aef6" },
},
["notes"]={
["committer"]="Marcel Fabian Krüger <tex@2krueger.de>",
- ["description"]="v3.22/2022-06-15",
- ["loader"]="fontloader-2022-06-15.lua",
- ["revision"]="deb1cfef038a70ebd5a5762394adcbc0889c5cbf",
- ["timestamp"]="2022-06-15 19:23:05 +0200",
+ ["description"]="v3.23/2022-10-03",
+ ["loader"]="fontloader-2022-10-03.lua",
+ ["revision"]="a36774ba186e3bacab9398e50d0069a0372d3c12",
+ ["timestamp"]="2022-10-03 20:33:45 +0200",
},
} \ No newline at end of file
diff --git a/macros/luatex/generic/luaotfload/luaotfload-suppress.lua b/macros/luatex/generic/luaotfload/luaotfload-suppress.lua
index 6b105effbb..0e67e4eada 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-suppress.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-suppress.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-suppress",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / suppress",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-szss.lua b/macros/luatex/generic/luaotfload/luaotfload-szss.lua
index 760e5c29b8..f8aca2bd64 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-szss.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-szss.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-szss",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / Special feature handling",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-t3.lua b/macros/luatex/generic/luaotfload/luaotfload-t3.lua
deleted file mode 100644
index 215ba4b918..0000000000
--- a/macros/luatex/generic/luaotfload/luaotfload-t3.lua
+++ /dev/null
@@ -1,142 +0,0 @@
------------------------------------------------------------------------
--- FILE: luaotfload-t3.lua
--- DESCRIPTION: part of luaotfload / Type 3
------------------------------------------------------------------------
-do -- block to avoid to many local variables error
- assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
- name = "luaotfload-t3",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
- description = "luaotfload submodule / Type 3 font handling",
- license = "GPL v2.0",
- author = "Marcel Krüger",
- copyright = "Luaotfload Development Team",
- }
-end
-
---[[
-local function u8_to_utf16be(s)
- local d = {}
- local i = 0
- for _, cp, cp2 in utf8.codes(s) do
- i = i + 1
- if cp > 0x10000 then
- cp = cp - 0x10000
- local high = (cp>>10) | 0xD800
- local low = (cp&0x3FF) | 0xDC00
- d[i] = string.format('%04X%04X', high, low)
- else
- d[i] = string.format('%04X', cp)
- end
- end
- return table.concat(d, '', 1, i)
-end
-]]
-
-local function t3factory(basename, designsize, callback)
- local count = 0
- local gid_to_t3 = {}
- local t3_to_gid = {}
- return function(size)
- local fids = {}
- return function(gid, width, unicode)
- local t3id = gid_to_t3[gid]
- if not t3id then
- t3id = count
- count = count + 1
- gid_to_t3[gid] = t3id
- t3_to_gid[t3id] = gid
- end
- local t3fid, t3cid = t3id >> 8, ~(t3id & 0xFF)
- local fid = fids[t3fid + 1]
- local fontdir = fid and font.getfont(fid)
- local characters = fontdir and fontdir.characters
- if not (characters and characters[t3cid]) then
- characters = characters or {}
- -- First create the character
- local char = {
- width = width,
- height = 0, -- We never look at these two anyway
- depth = 0,
- tounicode = unicode,
- }
- characters[t3cid] = char
- if fid then -- Font already exists
- font.addcharacters(fid, {
- characters = {
- [t3cid] = char,
- },
- })
- else
- fontdir = {
- name = basename .. '_' .. basesize .. '_' .. t3fid,
- format = 'type3',
- psname = 'none',
- filename = 'not_a_real_filename', -- Can't be null to ensure reuse
- fullname = basename .. basesize .. '_' .. t3fid,
- characters = characters,
- designsize = basesize,
- size = size,
- cidinfo = {}, -- Can't be null to ensure reuse
- attributes = '/FontDescriptor<<\z
- /Type/FontDescriptor\z
- /FontName/VirtualLuaFont\z
- /Flags 4\z
- /ItalicAngle 0\z
- >>', -- TODO: Needs work
- t3_handler = function(stage, _, cid)
- cid = cid and assert(t3_to_gid[(t3fid << 8) | ~cid])
- return callback(stage, cid)
- end
- }
- fid = font.define(fontdir)
- fids[t3fid + 1] = fid
- end
- end
- vf.font(fid)
- vf.char(t3cid)
- end
- end
-end
-
-luatexbase.add_to_callback('provide_charproc_data', function(stage, fid, ...)
- local fontdir = font.getfont(fid)
- if not fontdir then error'Unknown font' end
- local handler = fontdir.t3_handler
- if not handler then error'Missing t3handler in Type 3 font' end
- return handler(stage, fid, ...)
-end, 'luaotfload.t3')
-
-return t3factory
---[===[
- function callback(stage, cid)
- if stage == 1 then
- local char = assert(characters[cid])
- local head = assert(char.head)
- local resource = tex.saveboxresource(head, nil--[[attributes]], nil--[[resources]], true--[[immediate]], 0--[[mode]], nil--[[margin]])
- local name = string.format('/F%i', pdf.getxformname(resource))
- local resources = characters.resources
- if resources then
- characters.resources = string.format('%s %s %i 0 R', resources, name, resource)
- else
- characters.resources = string.format('%s %i 0 R', name, resource)
- end
- char.resource = name
- elseif stage == 2 then
- local char = assert(characters[cid])
- width = char.width/65781
- return pdf.obj{
- type = 'stream',
- immediate = true,
- -- objnum =
- -- attr =
- -- compresslevel =
- string = string.format('%g 0 d0 %s Do', width, char.resource)
- }, width
- elseif stage == 3 then
- return 65781/655360, string.format('/XObject<<%s>>', characters.resources)
- end
- print(stage, fid, cid)
- end,
- }
-]===]
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.1 b/macros/luatex/generic/luaotfload/luaotfload-tool.1
index 8967467c46..bd0617503a 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.1
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.1
@@ -1,5 +1,8 @@
.\" Man page generated from reStructuredText.
.
+.TH LUAOTFLOAD-TOOL 1 "2022-10-03" "3.23" "text processing"
+.SH NAME
+luaotfload-tool \- generate and query the Luaotfload font names database
.
.nr rst2man-indent-level 0
.
@@ -27,9 +30,6 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LUAOTFLOAD-TOOL" 1 "2022-06-15" "3.22" "text processing"
-.SH NAME
-luaotfload-tool \- generate and query the Luaotfload font names database
.SH SYNOPSIS
.sp
\fBluaotfload\-tool\fP [ \-bcDfFiIlLnpqRSuvVhw ]
@@ -77,14 +77,14 @@ the \fILuaotfload\fP package. There are two general modes: \fBupdate\fP and
.SS update mode
.INDENT 0.0
.TP
-.B \-\-update\fP,\fB \-u
+.B \-\-update\fP,\fB \-u
Update the database; indexes new fonts.
.TP
-.B \-\-force\fP,\fB \-f
+.B \-\-force\fP,\fB \-f
Force rebuilding of the database; re\-indexes
all fonts.
.TP
-.B \-\-local\fP,\fB \-L
+.B \-\-local\fP,\fB \-L
Include font files in \fB$PWD\fP\&. This option
will cause large parts of the database to be
rebuilt. Thus it is quite inefficient.
@@ -93,16 +93,16 @@ the database is prevented from being saved
to disk, so the local fonts need to be parsed
with every invocation of \fBluaotfload\-tool\fP\&.
.TP
-.B \-\-no\-reload\fP,\fB \-n
+.B \-\-no\-reload\fP,\fB \-n
Suppress auto\-updates to the database (e.g.
when \fB\-\-find\fP is passed an unknown name).
.TP
-.B \-\-no\-compress\fP,\fB \-c
+.B \-\-no\-compress\fP,\fB \-c
Do not filter the plain text version of the
font index through gzip. Useful for debugging
if your editor is built without zlib.
.TP
-.B \-\-prefer\-texmf\fP,\fB \-p
+.B \-\-prefer\-texmf\fP,\fB \-p
Organize the file name database in a way so
that it prefer fonts in the \fITEXMF\fP tree over
system fonts if they are installed in both.
@@ -139,16 +139,16 @@ mapped to.
i.e. \fB\-\-find=file:foo.otf\fP checks whether
\fBfoo.otf\fP is indexed.
.TP
-.B \-\-fuzzy\fP,\fB \-F
+.B \-\-fuzzy\fP,\fB \-F
Show approximate matches to the file name if
the lookup was unsuccessful (requires
\fB\-\-find\fP).
.TP
-.B \-\-info\fP,\fB \-i
+.B \-\-info\fP,\fB \-i
Display basic information to a resolved font
file (requires \fB\-\-find\fP).
.TP
-.B \-\-inspect\fP,\fB \-I
+.B \-\-inspect\fP,\fB \-I
Display detailed information by loading the
font and analyzing the font table; very slow!
For the meaning of the returned fields see
@@ -189,7 +189,7 @@ format:
.sp
.nf
.ft C
-\&./luaotfload\-tool.lua \-\-list=\(dqformat\(dq \-\-fields=\(dqfile\->base,version\(dq
+\&./luaotfload\-tool.lua \-\-list="format" \-\-fields="file\->base,version"
.ft P
.fi
.UNINDENT
@@ -230,7 +230,7 @@ The default is plainname,version*.
.SS font and lookup caches
.INDENT 0.0
.TP
-.B \-\-flush\-lookups
+.B \-\-flush\-lookups
Clear font name lookup cache (experimental).
.TP
.BI \-\-cache\fB= DIRECTIVE
@@ -249,15 +249,15 @@ cache;
.SS debugging methods
.INDENT 0.0
.TP
-.B \-\-show\-blacklist\fP,\fB \-b
+.B \-\-show\-blacklist\fP,\fB \-b
Show blacklisted files (not directories).
.TP
-.B \-\-dry\-run\fP,\fB \-D
+.B \-\-dry\-run\fP,\fB \-D
Don’t load fonts when updating the database;
scan directories only.
(For debugging file system related issues.)
.TP
-.B \-\-no\-strip
+.B \-\-no\-strip
Do not strip redundant information after
building the database. Warning: this will
inflate the index to about two to three times
@@ -331,7 +331,7 @@ state.
Set verbosity level to \fIn\fP or the number of
repetitions of \fB\-v\fP\&.
.TP
-.B \-\-quiet
+.B \-\-quiet
No verbose output (log level set to zero).
.TP
.BI \-\-log\fB= CHANNEL
@@ -347,11 +347,11 @@ directory (the name will be chosen
automatically.
.UNINDENT
.TP
-.B \-\-version\fP,\fB \-V
+.B \-\-version\fP,\fB \-V
Show version numbers of components as well as
some basic information and exit.
.TP
-.B \-\-help\fP,\fB \-h
+.B \-\-help\fP,\fB \-h
Show help message and exit.
.TP
.BI \-\-diagnose\fB= CHECK
@@ -387,12 +387,12 @@ Read the configuration from \fIFILE\fP\&. See
\fBluaotfload.conf\fP(%) for documentation
concerning the format and available options.
.TP
-.B \-\-dumpconf
+.B \-\-dumpconf
Print the currently active configuration; the
output can be saved to a file and used for
bootstrapping a custom configuration files.
.TP
-.B \-\-aliases
+.B \-\-aliases
Dump the font name database as a kpathsea
aliases file. This option is experimental and
might go away.
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.lua b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
index 56b433bf2b..dc9dec543e 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
@@ -9,8 +9,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tool",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload-tool / database functionality",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
index cb4c8141e0..640a657ea3 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.rst b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
index 25d90cd33a..68f761bdb0 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
@@ -6,9 +6,9 @@
generate and query the Luaotfload font names database
-----------------------------------------------------------------------
-:Date: 2022-06-15
+:Date: 2022-10-03
:Copyright: GPL v2.0
-:Version: 3.22
+:Version: 3.23
:Manual section: 1
:Manual group: text processing
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
index 96ffd562b0..cb34d12aeb 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-tounicode",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / tounicode",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
index e504f892e2..64a1eed448 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
@@ -5,8 +5,8 @@
assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") {
name = "luaotfload-unicode",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "luaotfload submodule / Unicode helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.5 b/macros/luatex/generic/luaotfload/luaotfload.conf.5
index dc5b1d3e50..7617508bc3 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.5
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.5
@@ -1,5 +1,8 @@
.\" Man page generated from reStructuredText.
.
+.TH LUAOTFLOAD.CONF 5 "2022-10-03" "3.23" "text processing"
+.SH NAME
+luaotfload.conf \- Luaotfload configuration file
.
.nr rst2man-indent-level 0
.
@@ -27,9 +30,6 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LUAOTFLOAD.CONF" 5 "2022-06-15" "3.22" "text processing"
-.SH NAME
-luaotfload.conf \- Luaotfload configuration file
.SH SYNOPSIS
.INDENT 0.0
.IP \(bu 2
@@ -212,7 +212,7 @@ formats
T} T{
s
T} T{
-\fB\(dqotf,ttf,ttc\(dq\fP
+\fB"otf,ttf,ttc"\fP
T}
_
T{
@@ -285,7 +285,7 @@ containing one or more of these elements:
It corresponds loosely to the \fB\-\-formats\fP option to
\fBluaotfload\-tool\fP\&. Invalid or duplicate members are ignored; if the
list does not contain any useful identifiers, the default list
-\fB\(dqotf,ttf,ttc\(dq\fP will be used.
+\fB"otf,ttf,ttc"\fP will be used.
.sp
The variable \fBmax\-fonts\fP determines after processing how many font
files the font scanner will terminate the search. This is useful for
@@ -416,7 +416,7 @@ cache\-dir
T} T{
s
T} T{
-\fB\(dqfonts\(dq\fP
+\fB"fonts"\fP
T}
_
T{
@@ -424,7 +424,7 @@ names\-dir
T} T{
s
T} T{
-\fB\(dqnames\(dq\fP
+\fB"names"\fP
T}
_
T{
@@ -432,7 +432,7 @@ index\-file
T} T{
s
T} T{
-\fB\(dqluaotfload\-names.lua\(dq\fP
+\fB"luaotfload\-names.lua"\fP
T}
_
T{
@@ -440,7 +440,7 @@ lookups\-file
T} T{
s
T} T{
-\fB\(dqluaotfload\-lookup\-cache.lua\(dq\fP
+\fB"luaotfload\-lookup\-cache.lua"\fP
T}
_
.TE
@@ -472,7 +472,7 @@ anon\-sequence
T} T{
s
T} T{
-\fB\(dqtex,path,name\(dq\fP
+\fB"tex,path,name"\fP
T}
_
T{
@@ -480,7 +480,7 @@ color\-callback
T} T{
s
T} T{
-\fB\(dqpost_linebreak_filter\(dq\fP
+\fB"post_linebreak_filter"\fP
T}
_
T{
@@ -488,7 +488,7 @@ definer
T} T{
s
T} T{
-\fB\(dqpatch\(dq\fP
+\fB"patch"\fP
T}
_
T{
@@ -504,7 +504,7 @@ resolver
T} T{
s
T} T{
-\fB\(dqcached\(dq\fP
+\fB"cached"\fP
T}
_
T{
@@ -512,7 +512,7 @@ fontloader
T} T{
s
T} T{
-\fB\(dqdefault\(dq\fP
+\fB"default"\fP
T}
_
.TE
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.rst b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
index e7fa382899..2f2bee0fa1 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
@@ -6,9 +6,9 @@
Luaotfload configuration file
-----------------------------------------------------------------------
-:Date: 2022-06-15
+:Date: 2022-10-03
:Copyright: GPL v2.0
-:Version: 3.22
+:Version: 3.23
:Manual section: 5
:Manual group: text processing
diff --git a/macros/luatex/generic/luaotfload/luaotfload.lua b/macros/luatex/generic/luaotfload/luaotfload.lua
index 34181d0af7..a22880e736 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload.lua
@@ -20,8 +20,8 @@ local authors = "\z
-- version number is used below!
local ProvidesLuaModule = {
name = "luaotfload",
- version = "3.22", --TAGVERSION
- date = "2022-06-15", --TAGDATE
+ version = "3.23", --TAGVERSION
+ date = "2022-10-03", --TAGDATE
description = "Lua based OpenType font support",
author = authors,
copyright = authors,
diff --git a/macros/luatex/generic/luaotfload/luaotfload.sty b/macros/luatex/generic/luaotfload/luaotfload.sty
index 6c9ceb1f43..aafcfb6930 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.sty
+++ b/macros/luatex/generic/luaotfload/luaotfload.sty
@@ -39,7 +39,7 @@
\fi
\ifdefined\ProvidesPackage
\ProvidesPackage{luaotfload}%
- [2022/06/15 v3.22 OpenType layout system]
+ [2022/10/03 v3.23 OpenType layout system]
\fi
\directlua{
if xpcall(function ()%
diff --git a/macros/luatex/generic/luaotfload/scripts-demo.pdf b/macros/luatex/generic/luaotfload/scripts-demo.pdf
index 13825f2f01..4207a5fd7f 100644
--- a/macros/luatex/generic/luaotfload/scripts-demo.pdf
+++ b/macros/luatex/generic/luaotfload/scripts-demo.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
index 7bd624fc2e..1a8b1c182a 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/shaper-demo.pdf b/macros/luatex/generic/luaotfload/shaper-demo.pdf
index f9b07141b5..f4fe93315d 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo.pdf
Binary files differ