summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-02-11 22:19:18 +0000
committerKarl Berry <karl@freefriends.org>2017-02-11 22:19:18 +0000
commit74f95931c89af275557641ead7b61d4e19832039 (patch)
tree98932e4775263d99936da3d19fd297abc30c464a
parentf16eb639b142db3f3e97f8df8907882e3120c9ea (diff)
luaotfload (11feb17)
git-svn-id: svn://tug.org/texlive/trunk@43194 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdfbin224533 -> 225981 bytes
-rw-r--r--Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdfbin20805 -> 20805 bytes
-rw-r--r--Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdfbin24386 -> 24386 bytes
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex61
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-11.lua (renamed from Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-04.lua)137
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-gbn.lua19
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua58
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua5
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua50
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua18
10 files changed, 214 insertions, 134 deletions
diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf
index de6a6ef5f7e..64fd5d8416a 100644
--- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf
+++ b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf b/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf
index b5791b007cf..cc18e2d1972 100644
--- a/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf
+++ b/Master/texmf-dist/doc/man/man1/luaotfload-tool.man1.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf b/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf
index 6a869673345..2d85ebd2f16 100644
--- a/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf
+++ b/Master/texmf-dist/doc/man/man5/luaotfload.conf.man5.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
index c26235e479d..21e001b2e29 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
+++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
@@ -183,7 +183,7 @@ for a more formal description see figure \ref{font-syntax}.
\alt <unquoted font request> ;
<unquoted font request> ::= <specification>, [`:', <feature list> ]
- \alt `[', <path lookup> `]', [ [`:'], <feature list> ] ;
+ \alt <path lookup>, [ [`:'], <feature list> ] ;
<specification> ::= <prefixed spec>, [ <subfont no> ], \{ <modifier> \}
\alt <anon lookup>, \{ <modifier> \} ;
@@ -218,7 +218,13 @@ for a more formal description see figure \ref{font-syntax}.
<anon lookup> ::= {\sc tfmname} | <name lookup> ;
- <path lookup> ::= \{ {\sc all_characters} - `]' \} ;
+ <path lookup> ::= `[', \{ <path content> \}, `]', [ <subfont no> ] ;
+
+ <path content> ::= <path balanced>
+ \alt `\\', {\sc all_characters}
+ \alt {\sc all_characters} - `]'
+
+ <path balanced> ::= `[', [ <path content> ], `]'
<modifier> ::= `/', (`I' | `B' | `BI' | `IB' | `S=', \{ {\sc digit} \} ) ;
@@ -234,6 +240,7 @@ for a more formal description see figure \ref{font-syntax}.
<name character> ::= {\sc all_characters} - ( `(' | `/' | `:' ) ;
\endsyntaxfloat
+%% Below guarded space gets borked in index; why‽
\beginsubsection{Prefix -- the \identifier{luaotfload}{ }Way}
In \identifier{luaotfload}, the canonical syntax for font requests
@@ -329,13 +336,12 @@ The file names corresponding to the example font names above are
\endsubsection
-\beginsubsection {Compatibility Layer}
-
-In addition to the regular prefixed requests, \identifier{luaotfload}
-accepts loading fonts the \XETEX way.
+\beginsubsection {Bracketed Lookups}
+\label{sec:conf}
+Bracketed lookups allow for arbitrary character content to be used in a
+definition.
%
-There are again two modes: bracketed and unbracketed.
-A bracketed request looks as follows.
+A simple bracketed request looks follows the scheme
\beginnarrower
\nonproportional{\string\font\string\fontname\space = [}%
@@ -344,21 +350,41 @@ A bracketed request looks as follows.
\endnarrower
\noindent
-Inside the square brackets, every character except for a closing
-bracket is permitted, allowing for specifying paths to a font file.
+Inside the square brackets, every character except for a closing bracket is
+permitted, allowing for arbitrary paths to a font file -- including Windows
+style paths with UNC or drive letter prepended -- to be specified.
%
+The \identifier{Luaotfload} syntax differs from \XETEX in that the subfont
+selector goes \emphasis{after} the closing bracket:
+
+\beginnarrower
+ \nonproportional{\string\font\string\fontname\space = [}%
+ \meta{/path/to/file}%
+ \nonproportional{]}
+ \nonproportional{(}n\nonproportional{)}
+\endnarrower
+
Naturally, path-less file names are equally valid and processed the
same way as an ordinary \inlinecode {file:} lookup.
+\beginsubsection {Compatibility}
+
+In addition to the regular prefixed requests, \identifier{luaotfload}
+accepts loading fonts the \XETEX way.
+%
+There are again two modes: bracketed and unbracketed.
+For the bracketed variety, see above, \ref{sec:conf}.
+
+Unbracketed (or, for lack of a better word: \emphasis{anonymous})
+font requests resemble the conventional \TEX syntax.
+
\beginnarrower
\nonproportional{\string\font\string\fontname\space= }%
\meta{font name}
\dots
\endnarrower
+\endsubsection
-Unbracketed (or, for lack of a better word: \emphasis{anonymous})
-font requests resemble the conventional \TEX syntax.
-%
However, they have a broader spectrum of possible interpretations:
before anything else, \identifier{luaotfload} attempts to load a
traditional \TEX Font Metric (\abbrev{tfm} or \abbrev{ofm}).
@@ -437,6 +463,13 @@ name.\footnote{%
\font \cambriamath = "file:cambria.ttc(1)" at 10pt
\endlisting
+and likewise, requesting subfont inside a TTC container by path:
+
+\beginlisting
+ \font \asanamain = "[/home/typesetter/.fonts/math/asana.ttc](0):mode=node;+tlig" at 10pt
+ \font \asanamath = "[/home/typesetter/.fonts/math/asana.ttc](1):mode=base" at 10pt
+\endlisting
+
\endsubsubsection
\beginsubsubsection{Loading by Font Name}
@@ -608,7 +641,7 @@ obviously, \inlinecode{random}.
For scripts derived from the Latin alphabet the value
\inlinecode{latn} is good choice.
}
- the default value is \inlinecode{dlft}.
+ the default value is \inlinecode{dflt}.
%
Some fonts, including very popular ones by foundries like Adobe,
do not assign features to the \inlinecode{dflt} script, in
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-04.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-11.lua
index c1b90e1c280..f8f6f0658a2 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-04.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-2017-02-11.lua
@@ -1,6 +1,6 @@
--[[info-----------------------------------------------------------------------
Luaotfload fontloader package
- build 2017-02-04 13:41:18 by phg@phlegethon
+ build 2017-02-11 18:16:05 by phg@phlegethon
-------------------------------------------------------------------------------
© 2017 PRAGMA ADE / ConTeXt Development Team
@@ -52,7 +52,7 @@
--info]]-----------------------------------------------------------------------
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “data-con” d8982c834ed9acc6193eee23067b9d5d] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “data-con” d8982c834ed9acc6193eee23067b9d5d] ---
if not modules then modules={} end modules ['data-con']={
version=1.100,
@@ -164,10 +164,10 @@ function containers.cleanname(name)
return (gsub(lower(name),"[^%w\128-\255]+","-"))
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “data-con”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “data-con”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “basics-nod” 9288471b8395bfb683aba0ff3964d950] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “basics-nod” 9288471b8395bfb683aba0ff3964d950] ---
if not modules then modules={} end modules ['luatex-fonts-nod']={
version=1.001,
@@ -421,10 +421,10 @@ end
nodes.setprop=nodes.setproperty
nodes.getprop=nodes.getproperty
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “basics-nod”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “basics-nod”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ini” 10cb9a563a98e06ff79c35a8751e13dc] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ini” 10cb9a563a98e06ff79c35a8751e13dc] ---
if not modules then modules={} end modules ['font-ini']={
version=1.001,
@@ -447,10 +447,10 @@ fonts.definers={ methods={} }
fonts.loggers={ register=function() end }
fontloader.totable=fontloader.to_table
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ini”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ini”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-con” 7575a7b4e6d04816072945e27d7d0b33] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-con” 7575a7b4e6d04816072945e27d7d0b33] ---
if not modules then modules={} end modules ['font-con']={
version=1.001,
@@ -1660,10 +1660,10 @@ function constructors.addcoreunicodes(unicodes)
return unicodes
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-con”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-con”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “fonts-enc” a7ace7c1969cd64a5ca9888838f3edb6] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “fonts-enc” a7ace7c1969cd64a5ca9888838f3edb6] ---
if not modules then modules={} end modules ['luatex-font-enc']={
version=1.001,
@@ -1733,10 +1733,10 @@ function encodings.load(filename)
return containers.write(encodings.cache,name,data)
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “fonts-enc”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “fonts-enc”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-cid” 52421d1fdaa07ec4b1d936c6ff5079be] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-cid” 52421d1fdaa07ec4b1d936c6ff5079be] ---
if not modules then modules={} end modules ['font-cid']={
version=1.001,
@@ -1887,10 +1887,10 @@ function cid.getmap(specification)
return found
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-cid”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-cid”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-map” 8708bde7467785c4d3b7afdaf2f9333a] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-map” 8708bde7467785c4d3b7afdaf2f9333a] ---
if not modules then modules={} end modules ['font-map']={
version=1.001,
@@ -2253,10 +2253,10 @@ function mappings.addtounicode(data,filename,checklookups)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-map”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-map”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oti” 8f48c06a1d632febd7231ad5dfadfc53] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oti” 8f48c06a1d632febd7231ad5dfadfc53] ---
if not modules then modules={} end modules ['font-oti']={
version=1.001,
@@ -2399,10 +2399,10 @@ function otffeatures.checkeddefaultlanguage(featuretype,autolanguage,languages)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oti”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oti”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otr” 2bd0085b78027f261218d63034f43474] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otr” 2bd0085b78027f261218d63034f43474] ---
if not modules then modules={} end modules ['font-otr']={
version=1.001,
@@ -4040,10 +4040,10 @@ function readers.extend(fontdata)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otr”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otr”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-cff” f3fc74e8629f7a2825c34a34550c790d] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-cff” f3fc74e8629f7a2825c34a34550c790d] ---
if not modules then modules={} end modules ['font-cff']={
version=1.001,
@@ -5524,10 +5524,10 @@ function readers.cff(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-cff”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-cff”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ttf” e0893de6d0f3f421ee4386fa90429db8] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ttf” e0893de6d0f3f421ee4386fa90429db8] ---
if not modules then modules={} end modules ['font-ttf']={
version=1.001,
@@ -5939,10 +5939,10 @@ function readers.glyf(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ttf”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ttf”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-dsp” 4a5266ada979d5c2d48867dc3ffaefea] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-dsp” 4a5266ada979d5c2d48867dc3ffaefea] ---
if not modules then modules={} end modules ['font-dsp']={
version=1.001,
@@ -8078,10 +8078,10 @@ function readers.svg(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-dsp”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-dsp”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oup” f7237130b648a4c2b477dabedc7f90e8] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oup” f7237130b648a4c2b477dabedc7f90e8] ---
if not modules then modules={} end modules ['font-oup']={
version=1.001,
@@ -10124,10 +10124,10 @@ function readers.expand(data)
expandlookups(sublookups)
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oup”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oup”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otl” 2e7c8d9a331c46826211bd507f8e488a] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otl” 2e7c8d9a331c46826211bd507f8e488a] ---
if not modules then modules={} end modules ['font-otl']={
version=1.001,
@@ -10772,10 +10772,10 @@ otf.coverup={
end
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otl”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otl”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oto” 5fbdd899624d4eef639f81b580afe9aa] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oto” 5fbdd899624d4eef639f81b580afe9aa] ---
if not modules then modules={} end modules ['font-oto']={
version=1.001,
@@ -11149,10 +11149,10 @@ registerotffeature {
}
otf.basemodeinitializer=featuresinitializer
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-oto”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-oto”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otj” 5ea70db9f1990dc1459425853c79f663] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otj” 5ea70db9f1990dc1459425853c79f663] ---
if not modules then modules={} end modules ['font-otj']={
version=1.001,
@@ -12496,10 +12496,10 @@ function injections.handler(head,where)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otj”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otj”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ota” c281d18dfc89a8ca18af64f55e9fa92b] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ota” c281d18dfc89a8ca18af64f55e9fa92b] ---
if not modules then modules={} end modules ['font-ota']={
version=1.001,
@@ -12879,10 +12879,10 @@ directives.register("otf.analyze.useunicodemarks",function(v)
analyzers.useunicodemarks=v
end)
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ota”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ota”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ots” 7e1e55f9f728474372665e4a64a43f5a] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ots” 7e1e55f9f728474372665e4a64a43f5a] ---
if not modules then modules={} end modules ['font-ots']={
version=1.001,
@@ -16106,10 +16106,10 @@ registerotffeature {
},
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ots”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ots”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-osd” 10ecd4b375680b011e7c6a25e5ad74f7] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-osd” 10ecd4b375680b011e7c6a25e5ad74f7] ---
if not modules then modules={} end modules ['font-osd']={
version=1.001,
@@ -18072,10 +18072,10 @@ end
methods.mlym=methods.deva
methods.mlm2=methods.dev2
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-osd”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-osd”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ocl” fbc00782e4efb24a7569f99cd1574ffb] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ocl” fbc00782e4efb24a7569f99cd1574ffb] ---
if not modules then modules={} end modules ['font-ocl']={
version=1.001,
@@ -18379,10 +18379,10 @@ fonts.handlers.otf.features.register {
}
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-ocl”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-ocl”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otc” 85d63e257c748c624768aa7c8ec7f0bc] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otc” 85d63e257c748c624768aa7c8ec7f0bc] ---
if not modules then modules={} end modules ['font-otc']={
version=1.001,
@@ -19151,10 +19151,10 @@ registerotffeature {
description='arabic digits',
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-otc”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-otc”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-onr” 205c8bc640715aecf3538a33b842f450] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-onr” 205c8bc640715aecf3538a33b842f450] ---
if not modules then modules={} end modules ['font-onr']={
version=1.001,
@@ -19497,10 +19497,10 @@ function readers.getinfo(filename)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-onr”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-onr”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-one” 6fbf6b9e219a944cd1ad5933d77cc488] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-one” 6fbf6b9e219a944cd1ad5933d77cc488] ---
if not modules then modules={} end modules ['font-one']={
version=1.001,
@@ -20198,10 +20198,10 @@ registerafmenhancer("normalize features",enhance_normalize_features)
registerafmenhancer("check extra features",otfenhancers.enhance)
registerafmenhancer("fix names",enhance_fix_names)
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-one”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-one”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-afk” b36a76ceb835f41f8c05b471000ddc14] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-afk” b36a76ceb835f41f8c05b471000ddc14] ---
if not modules then modules={} end modules ['font-afk']={
version=1.001,
@@ -20368,10 +20368,10 @@ fonts.handlers.afm.helpdata={
}
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-afk”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-afk”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-tfm” 3d813578dbf6c447e4b859c2bf0618f7] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-tfm” 3d813578dbf6c447e4b859c2bf0618f7] ---
if not modules then modules={} end modules ['font-tfm']={
version=1.001,
@@ -20877,10 +20877,10 @@ registertfmfeature {
}
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-tfm”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-tfm”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-lua” 1fbfdf7b689b2bdfd0e3bb9bf74ce136] ---
if not modules then modules={} end modules ['font-lua']={
version=1.001,
@@ -20920,10 +20920,10 @@ function readers.lua(specification)
return check_lua(specification,fullname)
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-lua”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-lua”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-def” 49fa2b50d8d2a1bb70b08b72f858ecd0] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-def” 49fa2b50d8d2a1bb70b08b72f858ecd0] ---
if not modules then modules={} end modules ['font-def']={
version=1.001,
@@ -21255,10 +21255,10 @@ function font.getfont(id)
end
callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-def”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-def”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “fonts-ext” aff3846f4c1f15de0a9f4fd7081e0c68] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “fonts-ext” aff3846f4c1f15de0a9f4fd7081e0c68] ---
if not modules then modules={} end modules ['luatex-fonts-ext']={
version=1.001,
@@ -21488,10 +21488,10 @@ otffeatures.register {
}
}
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “fonts-ext”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “fonts-ext”] ---
-do --- [luaotfload, fontloader-2017-02-04.lua scope for “font-gbn” b65b8a0b19cc1b870e4c0569a94d8825] ---
+do --- [luaotfload, fontloader-2017-02-11.lua scope for “font-gbn” 850f31ba73ff8de96371d0aed2b2b4cb] ---
if not modules then modules={} end modules ['font-gbn']={
version=1.001,
@@ -21523,6 +21523,7 @@ local getdisc=nuts.getdisc
local setchar=nuts.setchar
local setlink=nuts.setlink
local setprev=nuts.setprev
+local nodetail=nuts.tail
local n_ligaturing=node.ligaturing
local n_kerning=node.kerning
local ligaturing=nuts.ligaturing
@@ -21673,21 +21674,15 @@ function nodes.handlers.nodepass(head)
local stop=range[2]
if start then
local front=nuthead==start
- local prev,next
+ if not stop then
+ stop=nodetail(start)
+ end
if stop then
- next=getnext(stop)
start,stop=ligaturing(start,stop)
start,stop=kerning(start,stop)
- else
- prev=getprev(start)
- start=ligaturing(start)
- start=kerning(start)
- end
- if prev then
- setlink(prev,start)
- end
- if next then
- setlink(stop,next)
+ elseif start then
+ start,stop=ligaturing(start,stop)
+ start,stop=kerning(start,stop)
end
if front and nuthead~=start then
head=tonode(start)
@@ -21725,7 +21720,7 @@ function nodes.simple_font_handler(head)
end
end
-end --- [luaotfload, fontloader-2017-02-04.lua scope for “font-gbn”] ---
+end --- [luaotfload, fontloader-2017-02-11.lua scope for “font-gbn”] ---
--- vim:ft=lua:sw=2:ts=8:et:tw=79
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-gbn.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-gbn.lua
index 1f8df642ca6..21c6061542d 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-gbn.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-gbn.lua
@@ -37,6 +37,7 @@ local getdisc = nuts.getdisc
local setchar = nuts.setchar
local setlink = nuts.setlink
local setprev = nuts.setprev
+local nodetail = nuts.tail
-- from now on we apply ligaturing and kerning here because it might interfere with complex
-- opentype discretionary handling where the base ligature pass expect some weird extra
@@ -200,21 +201,15 @@ function nodes.handlers.nodepass(head)
local stop = range[2]
if start then
local front = nuthead == start
- local prev, next
+ if not stop then
+ stop = nodetail(start)
+ end
if stop then
- next = getnext(stop)
start, stop = ligaturing(start,stop)
start, stop = kerning(start,stop)
- else
- prev = getprev(start)
- start = ligaturing(start)
- start = kerning(start)
- end
- if prev then
- setlink(prev,start)
- end
- if next then
- setlink(stop,next)
+ elseif start then -- safeguard
+ start, stop = ligaturing(start,stop)
+ start, stop = kerning(start,stop)
end
if front and nuthead ~= start then
head = tonode(start)
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua
index 5c350315f17..f11f05b9b0e 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua
@@ -1274,9 +1274,17 @@ local tlig_specification = {
type = "substitution",
features = everywhere,
data = {
- [0x0022] = 0x201D, -- quotedblright
- [0x0027] = 0x2019, -- quoteleft
- [0x0060] = 0x2018, -- quoteright
+ --- quotedblright:
+ --- " (QUOTATION MARK) → ” (RIGHT DOUBLE QUOTATION MARK)
+ [0x0022] = 0x201D,
+
+ --- quoteleft:
+ --- ' (APOSTROPHE) → ’ (RIGHT SINGLE QUOTATION MARK)
+ [0x0027] = 0x2019,
+
+ --- quoteright:
+ --- ` (GRAVE ACCENT) → ‘ (LEFT SINGLE QUOTATION MARK)
+ [0x0060] = 0x2018,
},
flags = noflags,
order = { "tlig" },
@@ -1286,13 +1294,43 @@ local tlig_specification = {
type = "ligature",
features = everywhere,
data = {
- [0x2013] = {0x002D, 0x002D}, -- endash
- [0x2014] = {0x002D, 0x002D, 0x002D}, -- emdash
- --- next three originate in T1 encoding; Xetex applies
- --- them too
- [0x201E] = {0x002C, 0x002C}, -- quotedblbase
- [0x00AB] = {0x003C, 0x003C}, -- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- [0x00BB] = {0x003E, 0x003E}, -- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+
+ --- endash:
+ --- [--] (HYPHEN-MINUS, HYPHEN-MINUS) → – (EN DASH)
+ [0x2013] = {0x002D, 0x002D},
+
+ --- emdash:
+ --- [---] (HYPHEN-MINUS, HYPHEN-MINUS, HYPHEN-MINUS) → — (EM DASH)
+ [0x2014] = {0x002D, 0x002D, 0x002D},
+
+ --- quotedblleft:
+ --- [''] (GRAVE ACCENT, GRAVE ACCENT) → “ (LEFT DOUBLE QUOTATION MARK)
+ [0x201C] = {0x0060, 0x0060},
+
+ --- quotedblright:
+ --- [``] (APOSTROPHE, APOSTROPHE) → ” (RIGHT DOUBLE QUOTATION MARK)
+ [0x201D] = {0x0027, 0x0027},
+
+ --- exclamdown:
+ --- [!'] (EXCLAMATION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK)
+ [0x00A1] = {0x0021, 0x0060},
+
+ --- questiondown:
+ --- [?'] (QUESTION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK)
+ [0x00BF] = {0x003F, 0x0060},
+
+ --- next three originate in T1 encoding (Xetex applies them too)
+ --- quotedblbase:
+ --- [,,] (COMMA, COMMA) → ¡ (DOUBLE LOW-9 QUOTATION MARK)
+ [0x201E] = {0x002C, 0x002C},
+
+ --- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK:
+ --- [,,] (LESS-THAN SIGN, LESS-THAN SIGN) → ¡ (LEFT-POINTING ANGLE QUOTATION MARK)
+ [0x00AB] = {0x003C, 0x003C},
+
+ --- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK:
+ --- [,,] (GREATER-THAN SIGN, GREATER-THAN SIGN) → ¡ (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)
+ [0x00BB] = {0x003E, 0x003E},
},
flags = noflags,
order = { "tlig" },
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua
index 87275ef2d8e..802776c5be8 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua
@@ -151,6 +151,11 @@ do
logreport ("both", 0, "loaders", " > fontname %q", result.fontname or "<nil>")
logreport ("both", 0, "loaders", " > fullname %q", result.fullname or "<nil>")
logreport ("both", 0, "loaders", " > type %s", result.type or "<nil>")
+ local spec = result.specification
+ if spec then
+ logreport ("both", 0, "loaders", " > file %q", spec.filename or "<nil>")
+ logreport ("both", 0, "loaders", " > subfont %s", spec.sub or "<nil>")
+ end
return result
end
end
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua
index c2b4f2ea7a9..b188bb0d28c 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua
@@ -12,7 +12,8 @@ local traversal_maxdepth = 42 --- prevent stack overflows
local rawset = rawset
local lpeg = require "lpeg"
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
+local patterns = lpeg.patterns
+local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
local lpegmatch = lpeg.match
local C, Cc, Cf = lpeg.C, lpeg.Cc, lpeg.Cf
local Cg, Cmt, Cs, Ct = lpeg.Cg, lpeg.Cmt, lpeg.Cs, lpeg.Ct
@@ -57,6 +58,7 @@ local equals = P"="
local dash = P"-"
local gartenzaun = P"#"
local lbrk, rbrk = P"[", P"]"
+local brackets = lbrk + rbrk
local squote = P"'"
local dquote = P"\""
@@ -602,6 +604,22 @@ local combodef1 = Ct(comboidx * combomapsep * comboid) --> no chars
local combodef = Ct(comboidx * combomapsep * comboidchars)
local combolist = Ct(combodef1 * (comborowsep * combodef)^1)
+--- subfonts ----------------------------------------------------------
+--- This rule is present in the original parser. It sets the “sub”
+--- field of the specification which allows addressing a specific
+--- font inside a TTC container. Neither in Luatex-Fonts nor in
+--- Luaotfload is this documented, so we might as well silently drop
+--- it. However, as backward compatibility is one of our prime goals we
+--- just insert it here and leave it undocumented until someone cares
+--- to ask. (Note: afair subfonts are numbered, but this rule matches a
+--- string; I won’t mess with it though until someone reports a
+--- problem.)
+--- local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim
+--- Note to self: subfonts apparently start at index 0. Tested with
+--- Cambria.ttc that includes “Cambria Math” at 0 and “Cambria” at 1.
+--- Other values cause luatex to segfault.
+local subfont = P"(" * Cg((1 - S"()")^1, "sub") * P")"
+
--- lookups -----------------------------------------------------------
local fontname = C((1-S":(/")^1) --- like luatex-fonts
local unsupported = Cmt((1-S":(")^1, check_garbage)
@@ -618,7 +636,19 @@ local prefixed = P"name:" * ws * Cg(fontname, "name")
+ P"kpse:" * ws * Cg(fontname, "kpse")
+ P"my:" * ws * Cg(fontname, "my")
local unprefixed = Cg(fontname, "anon")
-local path_lookup = lbrk * Cg(C((1-rbrk)^1), "path") * rbrk
+--- Bracketed “path” lookups: These may contain any character except
+--- for unbalanced brackets. A backslash escapes any following
+--- character. Everything inside the outermost brackets is treated as
+--- part of the filename or path to look up. Subfonts may be specified
+--- in parens *after* the closing bracket. Note that this differs from
+--- Xetex whose syntax expects the subfont passed inside the brackets,
+--- separated by a colon.
+local path_escape = backslash / "" * patterns.utf8char
+local path_content = path_escape + (1 - brackets)
+local path_balanced = { (path_content + V(2))^1
+ , lbrk * V(1)^-1 * rbrk }
+local path_lookup = lbrk * Cg(Cs(path_balanced), "path") * rbrk
+ * subfont^-1
--- features ----------------------------------------------------------
local field_char = anum + S"+-.!?" --- sic!
@@ -644,22 +674,6 @@ local feature_list = Cf(Ct""
* (featuresep * option^-1)^0
, rawset)
* featuresep^-1
-
---- other -------------------------------------------------------------
---- This rule is present in the original parser. It sets the “sub”
---- field of the specification which allows addressing a specific
---- font inside a TTC container. Neither in Luatex-Fonts nor in
---- Luaotfload is this documented, so we might as well silently drop
---- it. However, as backward compatibility is one of our prime goals we
---- just insert it here and leave it undocumented until someone cares
---- to ask. (Note: afair subfonts are numbered, but this rule matches a
---- string; I won’t mess with it though until someone reports a
---- problem.)
---- local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim
---- Note to self: subfonts apparently start at index 0. Tested with
---- Cambria.ttc that includes “Cambria Math” at 0 and “Cambria” at 1.
---- Other values cause luatex to segfault.
-local subfont = P"(" * Cg((1 - S"()")^1, "sub") * P")"
--- top-level rules ---------------------------------------------------
--- \font\foo=<specification>:<features>
local features = Cg(feature_list, "features")
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua
index ff0cf30053e..5571e947cf0 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua
@@ -1,6 +1,6 @@
return {
["hashes"]={
- { "fontloader-2017-02-04.lua", "adde1f5085b93d480334f467175acfd2" },
+ { "fontloader-2017-02-11.lua", "c2db29b75e1838c08ff5867778f79cc3" },
{ "fontloader-util-fil.lua", "0573e91847e722ffe0fcdb465ba89e6b" },
{ "fontloader-util-str.lua", "513836cfea6a8027c1451a95bc74649f" },
{ "fontloader-swiglib-test.lua", "2f0b431faf53d3e19bfae22035bdc77e" },
@@ -39,7 +39,7 @@ return {
{ "fontloader-fonts-enc.lua", "a7ace7c1969cd64a5ca9888838f3edb6" },
{ "fontloader-fonts-demo-vf-1.lua", "7a4cb26eda4f1090d195114c10a33a75" },
{ "fontloader-font-def.lua", "49fa2b50d8d2a1bb70b08b72f858ecd0" },
- { "fontloader-font-gbn.lua", "b65b8a0b19cc1b870e4c0569a94d8825" },
+ { "fontloader-font-gbn.lua", "850f31ba73ff8de96371d0aed2b2b4cb" },
{ "fontloader-font-oti.lua", "8f48c06a1d632febd7231ad5dfadfc53" },
{ "fontloader-font-map.lua", "8708bde7467785c4d3b7afdaf2f9333a" },
{ "fontloader-font-ini.lua", "10cb9a563a98e06ff79c35a8751e13dc" },
@@ -62,13 +62,13 @@ return {
{ "luaotfload-characters.lua", "99578c3eff8b68cae3da45a4a7cbfcf2" },
{ "luaotfload-tool.lua", "e6ca512e0620ccaac968ccc17239ee39" },
{ "luaotfload-resolvers.lua", "bcdde7940630c4b563f3884b64ae3c84" },
- { "luaotfload-parsers.lua", "4ba8ee0290d52d298e4cdba66ae02a26" },
+ { "luaotfload-parsers.lua", "0f40bde1938a5cb72b75fccbbaa43d75" },
{ "luaotfload-main.lua", "8411e662c9867c423dc0229b12eb174c" },
{ "luaotfload-log.lua", "cc79197903756cde068d3c197844be99" },
- { "luaotfload-loaders.lua", "09883d592a3fe6327654d28b0d880b00" },
+ { "luaotfload-loaders.lua", "26fef8c4436e02b03deab714716a0948" },
{ "luaotfload-letterspace.lua", "0f4bd9bc0365e96f099e68f4a8114d3e" },
{ "luaotfload-init.lua", "e5c4c96fc7e3bf150229013fb56e77b5" },
- { "luaotfload-features.lua", "5843b8d6f2ae4c3df7d13c7fb8c8867d" },
+ { "luaotfload-features.lua", "dc9dcfb374577b47dafac01e19935050" },
{ "luaotfload-diagnostics.lua", "7b35c9f91e3e73fc5a61dbfe1f0e7ad9" },
{ "luaotfload-database.lua", "62fee5ba6afb4ee38aa1a2b183d59ff8" },
{ "luaotfload-configuration.lua", "64fa81f2f8fe6815f109873fb27f78aa" },
@@ -77,9 +77,9 @@ return {
},
["notes"]={
["committer"]="Philipp Gesang <phg@phi-gamma.net>",
- ["description"]="v2.8-fix-1",
- ["loader"]="fontloader-2017-02-04.lua",
- ["revision"]="0842c371132e76fbe67c357b61207e6d5730f553",
- ["timestamp"]="2017-02-04 13:35:56 +0100",
+ ["description"]="v2.8-fix-2",
+ ["loader"]="fontloader-2017-02-11.lua",
+ ["revision"]="ad480924393fffa2896156e1a32c22f5c61120dd",
+ ["timestamp"]="2017-02-11 00:21:52 +0100",
},
} \ No newline at end of file