texlive[52120] trunk: luaotfload (18sep19)
commits+karl at tug.org
commits+karl at tug.org
Wed Sep 18 23:58:28 CEST 2019
Revision: 52120
http://tug.org/svn/texlive?view=revision&revision=52120
Author: karl
Date: 2019-09-18 23:58:28 +0200 (Wed, 18 Sep 2019)
Log Message:
-----------
luaotfload (18sep19)
Modified Paths:
--------------
trunk/Build/source/texk/texlive/linked_scripts/luaotfload/luaotfload-tool.lua
trunk/Master/texmf-dist/doc/luatex/luaotfload/NEWS
trunk/Master/texmf-dist/doc/luatex/luaotfload/README.md
trunk/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst
trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst
trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.1
trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf
trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.5
trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf
trunk/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty
Added Paths:
-----------
trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua
Modified: trunk/Build/source/texk/texlive/linked_scripts/luaotfload/luaotfload-tool.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/luaotfload/luaotfload-tool.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Build/source/texk/texlive/linked_scripts/luaotfload/luaotfload-tool.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -9,8 +9,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tool",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload-tool / database functionality",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/NEWS
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luaotfload/NEWS 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/luatex/luaotfload/NEWS 2019-09-18 21:58:28 UTC (rev 52120)
@@ -1,7 +1,8 @@
Change History
--------------
-2019-08-11 luaotfload v2.991
- * fix issue #88
+2019-09-13 luaotfload v3.0
+ * invisible option to avoid that some glyph are shown (issue #63)
+ * correct small bug in xheight calculation
2019-08-11 luaotfload v2.99
* some clean up
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luaotfload/README.md 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/luatex/luaotfload/README.md 2019-09-18 21:58:28 UTC (rev 52120)
@@ -1,8 +1,8 @@
# The Luaotfload Package
-VERSION: 2.991
+VERSION: 3.00
-DATE: 2019-08-11
+DATE: 2019-09-13
## Description
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/filegraph.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-conf.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-latex.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-main.tex 2019-09-18 21:58:28 UTC (rev 52120)
@@ -32,7 +32,7 @@
\beginfrontmatter
\setdocumenttitle {The \identifier{luaotfload} package}
- \setdocumentdate {2019-08-11 v2.991}
+ \setdocumentdate {2019-09-13 v3.00}
\setdocumentauthor {Elie Roux · Khaled Hosny · Philipp Gesang · Ulrike Fischer\\
Home: \hyperlink {https://github.com/lualatex/luaotfload}\\
New Home: \hyperlink {https://github.com/u-fischer/luaotfload}\\
@@ -55,6 +55,12 @@
\pdfbookmark[1]{\contentsname}{table}
\typesetcontent
+\beginsection {New in version 3.00 (by Ulrike Fischer/Marcel Krüger)}
+\begin{itemize}
+\item Default Ignorable characters are now invisible by default (issue 63). This can be deactivated with the option \texttt{invisible}.
+\end{itemize}
+\endsection
+
\beginsection {New in version 2.99 (by Ulrike Fischer)}
\begin{itemize}
\item Code cleanup.
@@ -942,6 +948,28 @@
\font \test = LatinModernRoman:protrusion=default
\endlisting
\endaltitem
+
+ \beginaltitem {invisible}
+ Default Ignorable characters are control characters that should be invisible by default even if the font has glyphs for them. Since version 3.0 luaotfload makes them invisible, this can be switch on and off with the \texttt{invisible}. By default it is on.
+
+ For example
+
+ \beginlisting
+ \font\amiri={file:amiri-regular.ttf} at 20pt \amiri
+ \char"200Dي\char"200D
+ \endlisting
+
+ {\font\amiri={file:amiri-regular.ttf} at 20pt \amiri \char"200Dي\char"200D}
+
+ \beginlisting
+ \font\amiri={file:amiri-regular.ttf:-invisible;} at 20pt \amiri
+ \char"200Dي\char"200D
+ \endlisting
+
+ {\font\amiri={file:amiri-regular.ttf:-invisible;} at 20pt \amiri \char"200Dي\char"200D}
+
+
+ \endaltitem
\enddescriptions
\endsubsection
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload-tool.rst 2019-09-18 21:58:28 UTC (rev 52120)
@@ -6,9 +6,9 @@
generate and query the Luaotfload font names database
-----------------------------------------------------------------------
-:Date: 2019-08-11
+:Date: 2019-09-13
:Copyright: GPL v2.0
-:Version: 2.991
+:Version: 3.00
:Manual section: 1
:Manual group: text processing
Modified: trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.conf.rst 2019-09-18 21:58:28 UTC (rev 52120)
@@ -6,9 +6,9 @@
Luaotfload configuration file
-----------------------------------------------------------------------
-:Date: 2019-08-11
+:Date: 2019-09-13
:Copyright: GPL v2.0
-:Version: 2.991
+:Version: 3.00
:Manual section: 5
:Manual group: text processing
Modified: trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.1 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.1 2019-09-18 21:58:28 UTC (rev 52120)
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD-TOOL 1 "2019-08-11" "2.991" "text processing"
+.TH LUAOTFLOAD-TOOL 1 "2019-09-13" "3.00" "text processing"
.SH NAME
luaotfload-tool \- generate and query the Luaotfload font names database
.
Modified: trunk/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.5
===================================================================
--- trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.5 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.5 2019-09-18 21:58:28 UTC (rev 52120)
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD.CONF 5 "2019-08-11" "2.991" "text processing"
+.TH LUAOTFLOAD.CONF 5 "2019-09-13" "3.00" "text processing"
.SH NAME
luaotfload.conf \- Luaotfload configuration file
.
Modified: trunk/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/scripts/luaotfload/luaotfload-tool.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -9,8 +9,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tool",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload-tool / database functionality",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-auxiliary",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / auxiliary functions",
license = "GPL v2.0"
}
@@ -285,7 +285,7 @@
local function set_xheight(tfmdata)
local parameters = tfmdata.parameters
if not parameters then return end
- if not (parameters.x_height or parameters[5] or 0) == 0 then return end
+ if not ((parameters.x_height or parameters[5] or 0) == 0) then return end
if tfmdata.characters and tfmdata.characters[120] then
parameters.x_height = tfmdata.characters[120].height
else
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-colors",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Dohyun Kim, David Carlisle",
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-configuration",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / config file reader",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-database",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
@@ -239,15 +239,53 @@
--- string -> string
-local invalidchars = "[^%a%d]"
-
+local macroman2utf8 do
+ local mapping = {
+ [0x80] = 0x00C4, [0x81] = 0x00C5, [0x82] = 0x00C7, [0x83] = 0x00C9,
+ [0x84] = 0x00D1, [0x85] = 0x00D6, [0x86] = 0x00DC, [0x87] = 0x00E1,
+ [0x88] = 0x00E0, [0x89] = 0x00E2, [0x8A] = 0x00E4, [0x8B] = 0x00E3,
+ [0x8C] = 0x00E5, [0x8D] = 0x00E7, [0x8E] = 0x00E9, [0x8F] = 0x00E8,
+ [0x90] = 0x00EA, [0x91] = 0x00EB, [0x92] = 0x00ED, [0x93] = 0x00EC,
+ [0x94] = 0x00EE, [0x95] = 0x00EF, [0x96] = 0x00F1, [0x97] = 0x00F3,
+ [0x98] = 0x00F2, [0x99] = 0x00F4, [0x9A] = 0x00F6, [0x9B] = 0x00F5,
+ [0x9C] = 0x00FA, [0x9D] = 0x00F9, [0x9E] = 0x00FB, [0x9F] = 0x00FC,
+ [0xA0] = 0x2020, [0xA1] = 0x00B0, [0xA2] = 0x00A2, [0xA3] = 0x00A3,
+ [0xA4] = 0x00A7, [0xA5] = 0x2022, [0xA6] = 0x00B6, [0xA7] = 0x00DF,
+ [0xA8] = 0x00AE, [0xA9] = 0x00A9, [0xAA] = 0x2122, [0xAB] = 0x00B4,
+ [0xAC] = 0x00A8, [0xAD] = 0x2260, [0xAE] = 0x00C6, [0xAF] = 0x00D8,
+ [0xB0] = 0x221E, [0xB1] = 0x00B1, [0xB2] = 0x2264, [0xB3] = 0x2265,
+ [0xB4] = 0x00A5, [0xB5] = 0x00B5, [0xB6] = 0x2202, [0xB7] = 0x2211,
+ [0xB8] = 0x220F, [0xB9] = 0x03C0, [0xBA] = 0x222B, [0xBB] = 0x00AA,
+ [0xBC] = 0x00BA, [0xBD] = 0x03A9, [0xBE] = 0x00E6, [0xBF] = 0x00F8,
+ [0xC0] = 0x00BF, [0xC1] = 0x00A1, [0xC2] = 0x00AC, [0xC3] = 0x221A,
+ [0xC4] = 0x0192, [0xC5] = 0x2248, [0xC6] = 0x2206, [0xC7] = 0x00AB,
+ [0xC8] = 0x00BB, [0xC9] = 0x2026, [0xCA] = 0x00A0, [0xCB] = 0x00C0,
+ [0xCC] = 0x00C3, [0xCD] = 0x00D5, [0xCE] = 0x0152, [0xCF] = 0x0153,
+ [0xD0] = 0x2013, [0xD1] = 0x2014, [0xD2] = 0x201C, [0xD3] = 0x201D,
+ [0xD4] = 0x2018, [0xD5] = 0x2019, [0xD6] = 0x00F7, [0xD7] = 0x25CA,
+ [0xD8] = 0x00FF, [0xD9] = 0x0178, [0xDA] = 0x2044, [0xDB] = 0x20AC,
+ [0xDC] = 0x2039, [0xDD] = 0x203A, [0xDE] = 0xFB01, [0xDF] = 0xFB02,
+ [0xE0] = 0x2021, [0xE1] = 0x00B7, [0xE2] = 0x201A, [0xE3] = 0x201E,
+ [0xE4] = 0x2030, [0xE5] = 0x00C2, [0xE6] = 0x00CA, [0xE7] = 0x00C1,
+ [0xE8] = 0x00CB, [0xE9] = 0x00C8, [0xEA] = 0x00CD, [0xEB] = 0x00CE,
+ [0xEC] = 0x00CF, [0xED] = 0x00CC, [0xEE] = 0x00D3, [0xEF] = 0x00D4,
+ [0xF0] = 0xF8FF, [0xF1] = 0x00D2, [0xF2] = 0x00DA, [0xF3] = 0x00DB,
+ [0xF4] = 0x00D9, [0xF5] = 0x0131, [0xF6] = 0x02C6, [0xF7] = 0x02DC,
+ [0xF8] = 0x00AF, [0xF9] = 0x02D8, [0xFA] = 0x02D9, [0xFB] = 0x02DA,
+ [0xFC] = 0x00B8, [0xFD] = 0x02DD, [0xFE] = 0x02DB, [0xFF] = 0x02C7,
+ }
+ function macroman2utf8(s)
+ local bytes = {string.byte(s, 1, -1)}
+ for i=1,#bytes do
+ bytes[i] = mapping[bytes[i]] or bytes[i]
+ end
+ return utf8.char(table.unpack(bytes))
+ end
+end
local sanitize_fontname = function (str)
if str ~= nil then
- if utf8len(str) then
- str = alphnum_only(casefold(str, true))
- else
- str = stringgsub(stringlower(str), invalidchars, "")
- end
+ str = utf8len(str) and str or macroman2utf8(str)
+ str = alphnum_only(casefold(str, true))
return str
end
return nil
@@ -258,19 +296,13 @@
for category, namedata in next, rawnames do
if type (namedata) == "string" then
- if utf8len(namedata) then
- result [category] = alphnum_only(casefold(namedata, true))
- else
- result [category] = stringgsub(stringlower(namedata), invalidchars, "")
- end
+ namedata = utf8len(namedata) and namedata or macroman2utf8(namedata)
+ result [category] = alphnum_only(casefold(namedata, true))
else
local target = { }
for field, name in next, namedata do
- if utf8len(name) then
- target [field] = alphnum_only(casefold(name, true))
- else
- target [field] = stringgsub(stringlower(name), invalidchars, "")
- end
+ name = utf8len(name) and name or macroman2utf8(name)
+ target [field] = alphnum_only(casefold(name, true))
end
result [category] = target
end
@@ -2520,7 +2552,6 @@
local files = collect_font_filenames_dir (pwd, "local")
local nfiles = #files
if nfiles > 0 then
- targetnames.meta["local"] = true --- prevent saving to disk
logreport ("term", 1, "db", "Found %d files.", pwd)
else
logreport ("term", 1, "db",
@@ -2527,7 +2558,7 @@
"Couldn’t find a thing here. What a waste.", pwd)
end
logreport ("term", 3, "db", "Collected %d files.", #files)
- return files
+ return files, nfiles > 0
end
--- fontentry list -> filemap
@@ -3083,8 +3114,14 @@
tableappend (filenames, collect_font_filenames_texmf ())
tableappend (filenames, collect_font_filenames_system ())
- if config.luaotfload.db.scan_local == true then
- tableappend (filenames, collect_font_filenames_local ())
+ local scan_local = config.luaotfload.db.scan_local == true
+ if scan_local then
+ local localfonts, found = collect_font_filenames_local()
+ if found then
+ tableappend (filenames, localfonts)
+ else
+ scan_local = false
+ end
end
--- Now drop everything above max_fonts.
if max_fonts < #filenames then
@@ -3094,7 +3131,7 @@
if bisect then
return { unpack (filenames, bisect[1], bisect[2]) }
end
- return filenames
+ return filenames, scan_local
end
--[[doc--
@@ -3365,7 +3402,10 @@
read_blacklist ()
--- pass 1: Collect the names of all fonts we are going to process.
- local font_filenames = collect_font_filenames ()
+ local font_filenames, local_fonts = collect_font_filenames ()
+ if local_fonts then
+ targetnames.meta['local'] = true
+ end
--- pass 2: read font files (normal case) or reuse information
--- present in index
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-diagnostics.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-diagnostics",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload-tool submodule / diagnostics",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-embolden",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-features",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / features",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-filelist.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-filelist",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
@@ -249,6 +249,7 @@
{ name = "embolden" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "notdef" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "loaders" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
+ { name = "multiscript" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "parsers" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "resolvers" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "unicode" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-glyphlist.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -1,7 +1,7 @@
local ProvidesLuaModule = {
name = "luaotfload-glyphlist",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --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",
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-init",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / initialization",
license = "GPL v2.0"
}
@@ -462,6 +462,14 @@
local init_main = function ()
+ --[[doc--
+
+ First save a copy of font.each in order to also catch old-style fonts
+
+ --doc]]--
+
+ font.originaleach = font.each
+
local load_fontloader_module = luaotfload.loaders.fontloader
local ignore_module = luaotfload.loaders.ignore
@@ -648,7 +656,11 @@
-- MK Pass current text direction to simple_font_handler
local handler = nodes.simple_font_handler
local callback = function(head, groupcode, _, _, direction)
- return handler(head, groupcode, nil, nil, direction or tex.get'textdir')
+ if not direction then
+ direction = tex.get'textdir'
+ end
+ domultiscript(head, nil, nil, nil, direction)
+ return handler(head, groupcode, nil, nil, direction)
end
luatexbase.add_to_callback("pre_linebreak_filter",
callback,
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-letterspace",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
copyright = "PRAGMA ADE / ConTeXt Development Team",
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -8,8 +8,8 @@
local ProvidesLuaModule = {
name = "luaotfload-loaders",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / callback handling",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-log",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / logging",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang",
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -20,8 +20,8 @@
-- version number is used below!
local ProvidesLuaModule = {
name = "luaotfload-main",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload entry point",
author = authors,
copyright = authors,
@@ -301,6 +301,7 @@
loadmodule "embolden" --- fake bold
loadmodule "notdef" --- missing glyph handling
initialize "auxiliary" --- additional high-level functionality
+ loadmodule "multiscript" --- ...
luaotfload.aux.start_rewrite_fontname () --- to be migrated to fontspec
Added: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -0,0 +1,208 @@
+-----------------------------------------------------------------------
+-- FILE: luaotfload-multiscript.lua
+-- DESCRIPTION: part of luaotfload / multiscript
+-----------------------------------------------------------------------
+
+local ProvidesLuaModule = {
+ name = "luaotfload-multiscript",
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
+ description = "luaotfload submodule / multiscript",
+ license = "GPL v2.0",
+ author = "Marcel Krüger"
+}
+
+if luatexbase and luatexbase.provides_module then
+ luatexbase.provides_module (ProvidesLuaModule)
+end
+
+local nodenew = node.direct.new
+local getfont = font.getfont
+local setfont = node.direct.setfont
+local getwhd = node.direct.getwhd
+local insert_after = node.direct.insert_after
+local traverse_char = node.direct.traverse_char
+local protect_glyph = node.direct.protect_glyph
+local otffeatures = fonts.constructors.newfeatures "otf"
+
+local sep = lpeg.P' '^0 * ';' * lpeg.P' '^0
+local codepoint = lpeg.S'0123456789ABCDEF'^4/function(c)return tonumber(c, 16)end
+local codepoint_range = codepoint * ('..' * codepoint + lpeg.Cc(false))
+local function multirawset(table, key1, key2, value)
+ for key = key1,(key2 or key1) do
+ rawset(table, key, value)
+ end
+ return table
+end
+local script_extensions do
+ local entry = lpeg.Cg(codepoint_range * sep * lpeg.Ct((lpeg.C(lpeg.R'AZ' * lpeg.R'az'^1))^1 * ' ') * '#')^-1 * (1-lpeg.P'\n')^0 * '\n'
+ local file = lpeg.Cf(
+ lpeg.Ct''
+ * entry^0
+ , multirawset)
+
+ local f = io.open(kpse.find_file"ScriptExtensions.txt")
+ script_extensions = file:match(f:read'*a')
+ f:close()
+ for cp,t in next, script_extensions do
+ for i=1,#t do
+ t[t[i]] = true
+ end
+ end
+end
+local script_mapping do
+ -- We could extract these from PropertyValueAliases.txt...
+ local script_aliases = {
+ Adlam = "Adlm", Caucasian_Albanian = "Aghb", Ahom = "Ahom", Arabic = "Arab",
+ Imperial_Aramaic = "Armi", Armenian = "Armn", Avestan = "Avst",
+ Balinese = "Bali", Bamum = "Bamu", Bassa_Vah = "Bass", Batak = "Batk",
+ Bengali = "Beng", Bhaiksuki = "Bhks", Bopomofo = "Bopo", Brahmi = "Brah",
+ Braille = "Brai", Buginese = "Bugi", Buhid = "Buhd", Chakma = "Cakm",
+ Canadian_Aboriginal = "Cans", Carian = "Cari", Cham = "Cham",
+ Cherokee = "Cher", Coptic = "Copt", Cypriot = "Cprt", Cyrillic = "Cyrl",
+ Devanagari = "Deva", Dogra = "Dogr", Deseret = "Dsrt", Duployan = "Dupl",
+ Egyptian_Hieroglyphs = "Egyp", Elbasan = "Elba", Elymaic = "Elym",
+ Ethiopic = "Ethi", Georgian = "Geor", Glagolitic = "Glag",
+ Gunjala_Gondi = "Gong", Masaram_Gondi = "Gonm", Gothic = "Goth",
+ Grantha = "Gran", Greek = "Grek", Gujarati = "Gujr", Gurmukhi = "Guru",
+ Hangul = "Hang", Han = "Hani", Hanunoo = "Hano", Hatran = "Hatr",
+ Hebrew = "Hebr", Hiragana = "Hira", Anatolian_Hieroglyphs = "Hluw",
+ Pahawh_Hmong = "Hmng", Nyiakeng_Puachue_Hmong = "Hmnp",
+ Katakana_Or_Hiragana = "Hrkt", Old_Hungarian = "Hung", Old_Italic = "Ital",
+ Javanese = "Java", Kayah_Li = "Kali", Katakana = "Kana",
+ Kharoshthi = "Khar", Khmer = "Khmr", Khojki = "Khoj", Kannada = "Knda",
+ Kaithi = "Kthi", Tai_Tham = "Lana", Lao = "Laoo", Latin = "Latn",
+ Lepcha = "Lepc", Limbu = "Limb", Linear_A = "Lina", Linear_B = "Linb",
+ Lisu = "Lisu", Lycian = "Lyci", Lydian = "Lydi", Mahajani = "Mahj",
+ Makasar = "Maka", Mandaic = "Mand", Manichaean = "Mani", Marchen = "Marc",
+ Medefaidrin = "Medf", Mende_Kikakui = "Mend", Meroitic_Cursive = "Merc",
+ Meroitic_Hieroglyphs = "Mero", Malayalam = "Mlym", Modi = "Modi",
+ Mongolian = "Mong", Mro = "Mroo", Meetei_Mayek = "Mtei", Multani = "Mult",
+ Myanmar = "Mymr", Nandinagari = "Nand", Old_North_Arabian = "Narb",
+ Nabataean = "Nbat", Newa = "Newa", Nko = "Nkoo", Nushu = "Nshu",
+ Ogham = "Ogam", Ol_Chiki = "Olck", Old_Turkic = "Orkh", Oriya = "Orya",
+ Osage = "Osge", Osmanya = "Osma", Palmyrene = "Palm", Pau_Cin_Hau = "Pauc",
+ Old_Permic = "Perm", Phags_Pa = "Phag", Inscriptional_Pahlavi = "Phli",
+ Psalter_Pahlavi = "Phlp", Phoenician = "Phnx", Miao = "Plrd",
+ Inscriptional_Parthian = "Prti", Rejang = "Rjng", Hanifi_Rohingya = "Rohg",
+ Runic = "Runr", Samaritan = "Samr", Old_South_Arabian = "Sarb",
+ Saurashtra = "Saur", SignWriting = "Sgnw", Shavian = "Shaw",
+ Sharada = "Shrd", Siddham = "Sidd", Khudawadi = "Sind", Sinhala = "Sinh",
+ Sogdian = "Sogd", Old_Sogdian = "Sogo", Sora_Sompeng = "Sora",
+ Soyombo = "Soyo", Sundanese = "Sund", Syloti_Nagri = "Sylo",
+ Syriac = "Syrc", Tagbanwa = "Tagb", Takri = "Takr", Tai_Le = "Tale",
+ New_Tai_Lue = "Talu", Tamil = "Taml", Tangut = "Tang", Tai_Viet = "Tavt",
+ Telugu = "Telu", Tifinagh = "Tfng", Tagalog = "Tglg", Thaana = "Thaa",
+ Thai = "Thai", Tibetan = "Tibt", Tirhuta = "Tirh", Ugaritic = "Ugar",
+ Vai = "Vaii", Warang_Citi = "Wara", Wancho = "Wcho", Old_Persian = "Xpeo",
+ Cuneiform = "Xsux", Yi = "Yiii", Zanabazar_Square = "Zanb",
+ Inherited = "Zinh", Common = "Zyyy", Unknown = "Zzzz",
+ }
+ local entry = lpeg.Cg(codepoint_range * sep * ((lpeg.R'AZ' + lpeg.R'az' + '_')^1/script_aliases))^-1 * (1-lpeg.P'\n')^0 * '\n'
+ -- local entry = lpeg.Cg(codepoint_range * sep * lpeg.Cc(true))^-1 * (1-lpeg.P'\n')^0 * '\n'
+ local file = lpeg.Cf(
+ lpeg.Ct''
+ * entry^0
+ , multirawset)
+
+ local f = io.open(kpse.find_file"Scripts.txt")
+ script_mapping = file:match(f:read'*a')
+ f:close()
+end
+
+local additional_scripts_tables = { }
+
+local additional_scripts_fonts = setmetatable({}, {
+ __index = function(t, fid)
+ local f = font.getfont(fid)
+ -- table.tofile('myfont2', f)
+ local res = f and f.additional_scripts or false
+ t[fid] = res
+ return res
+ end,
+})
+
+local function makecombifont(tfmdata, _, additional_scripts)
+ local basescript = tfmdata.properties.script
+ local scripts = {basescript = false}
+ additional_scripts = additional_scripts_tables[additional_scripts]
+ for script, fontname in pairs(additional_scripts) do
+ if script ~= basescript then
+ local f = fonts.definers.read(fontname, tfmdata.size)
+ local fid
+ if type(f) == 'table' then
+ fid = font.define(f)
+ else
+ error[[FIXME???]]
+ end
+ scripts[script] = {
+ fid = fid,
+ font = f,
+ characters = f.characters,
+ }
+ end
+ end
+ tfmdata.additional_scripts = scripts
+end
+
+local glyph_id = node.id'glyph'
+-- TODO: unset last_script, matching parentheses etc
+function domultiscript(head, _, _, _, direction)
+ head = node.direct.todirect(head)
+ local last_fid, last_fonts, last_script
+ for cur, cid, fid in traverse_char(head) do
+ if fid ~= last_fid then
+ last_fid, last_fonts, last_script = fid, additional_scripts_fonts[fid]
+ end
+ if last_fonts then
+ local mapped_scr = script_mapping[cid]
+ if mapped_scr == "Zinh" then
+ mapped_scr = last_script
+ else
+ local additional_scr = script_extensions[cid]
+ if additional_scripts then
+ if additional_scripts[last_script] then
+ mapped_scr = last_script
+ elseif not last_fonts[mapped_scr] then
+ for i = 1, #additional_scripts do
+ if last_fonts[additional_scripts[i]] then
+ mapped_scr = additional_scripts[i]
+ break
+ end
+ end
+ end
+ elseif mapped_scr == "Zyyy" then
+ mapped_scr = last_script
+ end
+ end
+ last_script = mapped_scr
+ local mapped_font = last_fonts[mapped_scr]
+ if mapped_font then
+ setfont(cur, mapped_font.fid)
+ end
+ end
+ end
+end
+
+function luaotfload.add_multiscript(name, fonts)
+ if fonts == nil then
+ fonts = name
+ name = #additional_scripts_fonts + 1
+ end
+ additional_scripts_tables[name] = fonts
+ return name
+end
+
+otffeatures.register {
+ name = "multiscript",
+ description = "Combine fonts for multiple scripts",
+ manipulators = {
+ node = makecombifont,
+ },
+ -- processors = { -- processors would be nice, but they are applied
+ -- -- too late for our purposes
+ -- node = donotdef,
+ -- }
+}
+
+--- vim:sw=2:ts=2:expandtab:tw=71
Property changes on: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-notdef",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
@@ -16,15 +16,70 @@
luatexbase.provides_module (ProvidesLuaModule)
end
-local nodenew = node.direct.new
+local flush_node = node.direct.flush_node
local getfont = font.getfont
-local setfont = node.direct.setfont
+local getnext = node.direct.getnext
local getwhd = node.direct.getwhd
+local insert = table.insert
local insert_after = node.direct.insert_after
+local kern_id = node.id'kern'
+local nodenew = node.direct.new
+local otfregister = fonts.constructors.features.otf.register
+local protect_glyph = node.direct.protect_glyph
+local remove = node.direct.remove
+local setfont = node.direct.setfont
local traverse_char = node.direct.traverse_char
-local protect_glyph = node.direct.protect_glyph
-local otffeatures = fonts.constructors.newfeatures "otf"
+-- According to DerivedCoreProperties.txt, Default_Ignorable_Code_Point
+-- is generated from:
+-- Other_Default_Ignorable_Code_Point
+-- + Cf (Format characters)
+-- + Variation_Selector
+-- - White_Space
+-- - FFF9..FFFB (Interlinear annotation format characters)
+-- - 13430..13438 (Egyptian hieroglyph format characters)
+-- - Prepended_Concatenation_Mark (Exceptional format characters that should be visible)
+-- Based on HarfBuzz, we add the exclusion
+-- - Lo (Letter, Other)
+-- This affects Hangul fillers.
+local ignorable_codepoints do
+ local sep = lpeg.P' '^0 * ';' * lpeg.P' '^0
+ local codepoint = lpeg.S'0123456789ABCDEF'^4/function(c)return tonumber(c, 16)end
+ local codepoint_range = codepoint * ('..' * codepoint + lpeg.Cc(false))
+ local function multirawset(table, key1, key2, value)
+ for key = key1,(key2 or key1) do
+ rawset(table, key, value)
+ end
+ return table
+ end
+ local entry = lpeg.Cg(codepoint * ';' * (1-lpeg.P';')^0 * ';Cf;' * lpeg.Cc(true))^-1 * (1-lpeg.P'\n')^0 * '\n'
+ local file = lpeg.Cf(
+ lpeg.Ct''
+ * entry^0
+ , rawset)
+ local f = io.open(kpse.find_file"UnicodeData.txt")
+ ignorable_codepoints = file:match(f:read'*a')
+ f:close()
+ entry = lpeg.Cg(codepoint_range * sep * ('Other_Default_Ignorable_Code_Point' * lpeg.Cc(true)
+ + 'Variation_Selector' * lpeg.Cc(true)
+ + 'White_Space' * lpeg.Cc(nil)
+ + 'Prepended_Concatenation_Mark' * lpeg.Cc(nil)
+ ) * ' # ' * (1-lpeg.P'Lo'))^-1 * (1-lpeg.P'\n')^0 * '\n'
+ file = lpeg.Cf(
+ lpeg.Carg(1)
+ * entry^0
+ , multirawset)
+ f = io.open(kpse.find_file"PropList.txt")
+ ignorable_codepoints = file:match(f:read'*a', 1, ignorable_codepoints)
+ f:close()
+ for i = 0xFFF9,0xFFFB do
+ ignorable_codepoints[i] = nil
+ end
+ for i = 0x13430,0x13438 do
+ ignorable_codepoints[i] = nil
+ end
+end
+
local function setnotdef(tfmdata, factor)
local desc = tfmdata.shared.rawdata.descriptions
-- So we have to find the .notdef glyph. We only know that it has GID
@@ -35,7 +90,6 @@
tfmdata.notdefcode = 0xF0000
return
end
- print')'
-- If this didn't happen, it might be mapped to one of the
-- replacement characters:
for code = 0xFFFC,0xFFFF do
@@ -45,7 +99,6 @@
return
end
end
- print')))'
-- Oh no, we couldn't find it. Maybe we can find it by name?
local code = tfmdata.resources.unicodes[".notdef"]
-- Better safe than sorry
@@ -54,7 +107,6 @@
tfmdata.notdefcode = code
return
end
- print'))))'
-- So the font didn't do the obvious things and then it lied to us.
-- At this point we should think about sending an automated complain
-- to the font author, but we probably can't trust the contact
@@ -81,7 +133,7 @@
if not notdef then return end
for cur, cid, fid in traverse_char(head) do if fid == font then
local w, h, d = getwhd(cur)
- if w == 0 and h == 0 and d == 0 and not chars[cid] then
+ if w == 0 and h == 0 and d == 0 and not chars[cid] and not ignorable_codepoints[cid] then
local notdefnode = nodenew(glyph_id, 256)
setfont(notdefnode, font, notdef)
insert_after(cur, cur, notdefnode)
@@ -90,7 +142,7 @@
end end
end
-otffeatures.register {
+otfregister {
name = "notdef",
description = "Add notdef glyphs",
default = 1,
@@ -102,4 +154,43 @@
}
}
+function fonts.handlers.otf.handlers.gsub_remove(head,char,dataset,sequence,replacement)
+ local next
+ head, next = remove(head, char)
+ flush_node(char)
+ if not head and not next then -- Avoid a double free if we were alone
+ head = nodenew(kern_id)
+ end
+ return head, next, true, true
+end
+
+local sequence = {
+ features = {invisible = {["*"] = {["*"] = true}}},
+ flags = {false, false, false, false},
+ name = "invisible",
+ order = {"invisible"},
+ nofsteps = 1,
+ steps = {{
+ coverage = ignorable_codepoints,
+ index = 1,
+ }},
+ type = "gsub_remove",
+}
+local function invisibleinitialiser(tfmdata, value)
+ local resources = tfmdata.resources
+ local sequences = resources and resources.sequences
+ if sequences then
+ -- Now we get to the interesting part: At which point should our new sequence be inserted? Let's do it at the end, then they are still seen by all features.
+ insert(sequences, sequence)
+ end
+end
+otfregister {
+ name = 'invisible',
+ description = 'Remove invisible control characters',
+ default = true,
+ initializers = {
+ node = invisibleinitialiser,
+ },
+}
+
--- vim:sw=2:ts=2:expandtab:tw=71
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-parsers",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -11,8 +11,8 @@
local ProvidesLuaModule = {
name = "luaotfload-resolvers",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / resolvers",
license = "GPL v2.0"
}
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -55,36 +55,37 @@
{ "fontloader-reference.lua", "759787e7ee75437382c0a2c4f8fe3b81" },
{ "fontloader-basics-gen.lua", "b21e91bbd534f77e368f0ec13f865aed" },
{ "mktests", "c7cff7025962922944376acc1ffa9c47" },
- { "mkstatus", "d84c8b2ae4c2335c5dbd9fba4846f0e9" },
+ { "mkstatus", "64b9a6b302168fced414830a53fdcce1" },
{ "mkcharacters", "92c24bb582fc84c0365634f29eb89863" },
{ "mkglyphlist", "557836886d4f0e6d656eac3ded4456a2" },
{ "mkimport", "60e0b11a1a68719033e86a3e0f4d5e86" },
- { "luaotfload-glyphlist.lua", "8a1cbf89f48a8ebe05a13345352a3435" },
+ { "luaotfload-glyphlist.lua", "df822678061548ce6b510a0c1c7fc103" },
{ "luaotfload-characters.lua", "593ce9dccf6ddc4f7d4be0514f581102" },
- { "luaotfload-unicode.lua", "aac378708c062d4de18132ae7600526f" },
- { "luaotfload-resolvers.lua", "7e777d41afc10c928cd26dccfed6ba09" },
- { "luaotfload-parsers.lua", "c69570b5f57d26abff8304f3a8eade58" },
- { "luaotfload-loaders.lua", "920578f2f66758755c20fbf3539b3542" },
- { "luaotfload-notdef.lua", "a4a40c92368510dcd81f6e95124bb2d3" },
- { "luaotfload-embolden.lua", "4b6a0240b0f696d63cf2b343603fc742" },
- { "luaotfload-letterspace.lua", "29453f635acb72ef76ec19942ce0449b" },
- { "luaotfload-features.lua", "1c837c95c485d54204157fd3840e177e" },
- { "luaotfload-database.lua", "3a3d0cbb02b0c9ff53b0dab969c7a879" },
- { "luaotfload-configuration.lua", "37ffbef314b79ca2ae9bfaf4e4552207" },
- { "luaotfload-colors.lua", "9b1ffa13d20cc4d1f2016e8d5b0939f1" },
- { "luaotfload-auxiliary.lua", "99ff2ebee659717c2d1f9999e3ab4448" },
- { "luaotfload-filelist.lua", "9de0e08f4b15acd7c56602ef362967e1" },
- { "luaotfload-tool.lua", "4a1be51390301a48480681e66d9be64f" },
- { "luaotfload-diagnostics.lua", "8c50e2459731ca15a511e4bd0b0d7685" },
- { "luaotfload-log.lua", "981ccf90bb3a970b056dbfa87046b36d" },
- { "luaotfload-init.lua", "acfe693817999d5c09272f3b33fe1aad" },
- { "luaotfload-main.lua", "80b07ab0301a7b8fb5d03acec1b5c5dc" },
+ { "luaotfload-unicode.lua", "d9ce2f2a07e951be6310e85fdfcc785d" },
+ { "luaotfload-resolvers.lua", "0b0d407501e68537971484ac2256af20" },
+ { "luaotfload-parsers.lua", "9b199d5157d9972c415aee7f9350df5b" },
+ { "luaotfload-multiscript.lua", "3a4cfa1687c9d1694cbf728183bb066e" },
+ { "luaotfload-loaders.lua", "007be1e29cf23779f4d9d0097b56cc4a" },
+ { "luaotfload-notdef.lua", "982810e9197d2261ffdc3acd5d8dcecf" },
+ { "luaotfload-embolden.lua", "92dfba7dbf10484c85f7e3c971691f8e" },
+ { "luaotfload-letterspace.lua", "bb123f78712cc0342419f3c2a5f6a940" },
+ { "luaotfload-features.lua", "45ab2c6405c678f8834339fe0d9fb47a" },
+ { "luaotfload-database.lua", "da3c5b55a086a2213ee825ecc2bf7e0f" },
+ { "luaotfload-configuration.lua", "015022f5b9597254afafff26f9f0f98c" },
+ { "luaotfload-colors.lua", "81a23496c5f5c855674b05180869b8cf" },
+ { "luaotfload-auxiliary.lua", "81432ebaebfce3df73b5949e1001d13c" },
+ { "luaotfload-filelist.lua", "aa3c9fa695042573d6f6c2e5d0c23558" },
+ { "luaotfload-tool.lua", "1833a47868c3e5958d492bb947d39dec" },
+ { "luaotfload-diagnostics.lua", "53dbf51623658f1e325d2e6279a2ee15" },
+ { "luaotfload-log.lua", "30491ef5890898d5ae3af44f72e82b1f" },
+ { "luaotfload-init.lua", "479854a620629b1934d16723aa4cae0c" },
+ { "luaotfload-main.lua", "95c7d3ce348ac83e0659f7332e98eacc" },
},
["notes"]={
- ["committer"]="Ulrike Fischer <fischer at troubleshooting-tex.de>",
- ["description"]="v2.991/2019-08-11",
+ ["committer"]="Marcel Fabian Krüger <tex at 2krueger.de>",
+ ["description"]="v3.00/2019-09-13",
["loader"]="fontloader-2019-08-11.lua",
- ["revision"]="a86a6798c324c745af7b04f33fa188298d749a2a",
- ["timestamp"]="2019-08-19 19:38:30 +0200",
+ ["revision"]="e758f5d39e3d416e4bc1e2a23918abed744563ae",
+ ["timestamp"]="2019-09-13 00:43:25 +0200",
},
}
\ No newline at end of file
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua 2019-09-18 21:58:28 UTC (rev 52120)
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-unicode",
- version = "2.991", --TAGVERSION
- date = "2019-08-11", --TAGDATE
+ version = "3.00", --TAGVERSION
+ date = "2019-09-13", --TAGDATE
description = "luaotfload submodule / Unicode helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
Modified: trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty 2019-09-18 21:57:54 UTC (rev 52119)
+++ trunk/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty 2019-09-18 21:58:28 UTC (rev 52120)
@@ -40,7 +40,7 @@
\fi
\ifdefined\ProvidesPackage
\ProvidesPackage{luaotfload}%
- [2019/08/11 v2.991 OpenType layout system]
+ [2019/09/13 v3.00 OpenType layout system]
\fi
\directlua{
if xpcall(function ()%
More information about the tex-live-commits
mailing list