diff options
Diffstat (limited to 'Master/texmf-dist')
59 files changed, 739 insertions, 483 deletions
diff --git a/Master/texmf-dist/doc/luatex/luaotfload/NEWS b/Master/texmf-dist/doc/luatex/luaotfload/NEWS index 289861f917c..ab31f8c84cd 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/NEWS +++ b/Master/texmf-dist/doc/luatex/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/Master/texmf-dist/doc/luatex/luaotfload/README.md b/Master/texmf-dist/doc/luatex/luaotfload/README.md index 4a1fa3a3b04..c325c4171e6 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/README.md +++ b/Master/texmf-dist/doc/luatex/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/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf b/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf Binary files differindex 07ccf2b9862..79a370e2b1b 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf Binary files differindex ba983ed74cc..c735e60a994 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf Binary files differindex ef2cea7a100..c9fde7abfa8 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex index 6d802cbbc2c..b9e25919ca8 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex +++ b/Master/texmf-dist/doc/luatex/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/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf Binary files differindex cb4c8141e06..640a657ea3b 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst index 25d90cd33a8..68f761bdb00 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst +++ b/Master/texmf-dist/doc/luatex/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/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst index e7fa3828993..2f2bee0fa1c 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst +++ b/Master/texmf-dist/doc/luatex/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/Master/texmf-dist/doc/luatex/luaotfload/scripts-demo.pdf b/Master/texmf-dist/doc/luatex/luaotfload/scripts-demo.pdf Binary files differindex 13825f2f015..4207a5fd7fb 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/scripts-demo.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/scripts-demo.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo-graphite.pdf b/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo-graphite.pdf Binary files differindex 7bd624fc2ec..1a8b1c182a0 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo-graphite.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo-graphite.pdf diff --git a/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo.pdf b/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo.pdf Binary files differindex f9b07141b5a..f4fe93315d1 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/shaper-demo.pdf diff --git a/Master/texmf-dist/doc/man/man1/luaotfload-tool.1 b/Master/texmf-dist/doc/man/man1/luaotfload-tool.1 index 8967467c463..bd0617503a9 100644 --- a/Master/texmf-dist/doc/man/man1/luaotfload-tool.1 +++ b/Master/texmf-dist/doc/man/man1/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/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf b/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf Binary files differindex 3777d254dde..1d905d931f8 100644 --- a/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf diff --git a/Master/texmf-dist/doc/man/man5/luaotfload.conf.5 b/Master/texmf-dist/doc/man/man5/luaotfload.conf.5 index dc5b1d3e501..7617508bc32 100644 --- a/Master/texmf-dist/doc/man/man5/luaotfload.conf.5 +++ b/Master/texmf-dist/doc/man/man5/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/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf b/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf Binary files differindex 9745dca96af..bb90c17a3a7 100644 --- a/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf +++ b/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf diff --git a/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua b/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua index 56b433bf2b7..dc9dec543e5 100755 --- a/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua +++ b/Master/texmf-dist/scripts/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2022-06-15.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2022-10-03.lua index 5e0af8e4846..4df88ec41d7 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2022-06-15.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-cff.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-cff.lua index 4258991c674..114d7dd0790 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-cff.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-dsp.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-dsp.lua index d0367832846..8f65ed9d945 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-dsp.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-osd.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-osd.lua index d169faf64dd..ecf8009f91d 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-osd.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-l-math.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-l-math.lua index 69f0a19e980..6105bc3c2d7 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-l-math.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/fontloader-reference.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-reference.lua index 13389b292ad..c539d886cc8 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-reference.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua index eb211809020..bcbdd74b2a4 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-bcp47.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-bcp47.lua index 03dc65e5bc9..fc90c143633 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-bcp47.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-case.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-case.lua index f5a147334d1..79fb370ec7e 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-case.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua index 075b5210f5a..378b0f62b63 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua index 8368425334b..9ed614b17e6 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua index 63f799ca41e..e71e923ff6c 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua index 25f79419a61..093c171409f 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-dvi.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-dvi.lua index da045d1d340..eeac1c71d00 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-dvi.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua index 7bc4da5a763..6070b1a9ba0 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua index 253d16051ca..2f010c11d00 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua index 6e64020570e..4b3c1a0859d 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua index a5dac9e640f..c7bfc4e43f3 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua index f585e298b8c..428872e8d32 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-define.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-define.lua index c3b0a8509e0..a5923b773cc 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-define.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-plug.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-plug.lua index df0d0cf136c..5b93356b6b2 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-plug.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-cff2.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-cff2.lua index 2ca928d32a1..467faa8893b 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-cff2.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-t2-writer.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-t2-writer.lua index 72239343d89..75a3804ea2d 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-t2-writer.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-ttf.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-ttf.lua index b39cd753ae4..0e9b83cd60e 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-var-ttf.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-hashing.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-hashing.lua deleted file mode 100644 index e88eab706c1..00000000000 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-hashing.lua +++ /dev/null @@ -1,2 +0,0 @@ -local constructors = fonts.constructors -local original_hashfeatures = constructors.hashfeatures diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua index ff959e35023..77cb1c54de1 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua index ef19afe3842..505e0a8186e 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua index eb094430772..2aec2fb15d9 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua index 74b364e874c..03a3d7bbcef 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua index bc3921e203c..f7bb18c2255 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua index 418ea79d57b..3923e8392cd 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua index b2cc9c30ead..0c91f4775c6 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua index 135a843cf3d..d215aad8be3 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-scripts.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-scripts.lua index 8d98f7ce37b..222e893718a 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-scripts.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua index 7ec80b14fb5..12efcf4452e 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-suppress.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-suppress.lua index 6b105effbb8..0e67e4eada5 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-suppress.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-szss.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-szss.lua index 760e5c29b83..f8aca2bd64c 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-szss.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-t3.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-t3.lua deleted file mode 100644 index 215ba4b918b..00000000000 --- a/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-tounicode.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-tounicode.lua index 96ffd562b0a..cb34d12aeb9 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-tounicode.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua index e504f892e25..64a1eed4487 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua index 34181d0af77..a22880e7365 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua +++ b/Master/texmf-dist/tex/luatex/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/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty index 6c9ceb1f436..aafcfb69302 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty +++ b/Master/texmf-dist/tex/luatex/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 ()% |