summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/luatex/luaotfload
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-12-11 23:16:34 +0000
committerKarl Berry <karl@freefriends.org>2015-12-11 23:16:34 +0000
commit71945bfdf73e58a09c05155c6d49729528cac3f7 (patch)
treeaa614024e79d15166a1aa500e223c748b1a66c83 /Master/texmf-dist/source/luatex/luaotfload
parentfa3dbdbd11bbc7da0c06e2871472419998e645c9 (diff)
luaotfload (11dec15)
git-svn-id: svn://tug.org/texlive/trunk@39078 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/luatex/luaotfload')
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/Makefile58
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/filegraph.dot176
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/luaotfload-latex.tex96
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex364
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/luaotfload-tool.rst15
-rw-r--r--Master/texmf-dist/source/luatex/luaotfload/luaotfload.conf.rst59
6 files changed, 572 insertions, 196 deletions
diff --git a/Master/texmf-dist/source/luatex/luaotfload/Makefile b/Master/texmf-dist/source/luatex/luaotfload/Makefile
index 4124a1a49b3..f23c6b84c23 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/Makefile
+++ b/Master/texmf-dist/source/luatex/luaotfload/Makefile
@@ -5,10 +5,14 @@ NAME = luaotfload
DOCSRCDIR = ./doc
SCRIPTSRCDIR = ./scripts
SRCSRCDIR = ./src
+FONTLOADERDIR = $(SRCSRCDIR)/fontloader/runtime
+FONTLOADERSRCDIR= $(SRCSRCDIR)/fontloader/misc
+PACKAGEDIR = $(SRCSRCDIR)/fontloader
BUILDDIR = ./build
MISCDIR = ./misc
SRC = $(wildcard $(SRCSRCDIR)/luaotfload-*.lua)
+SRC += $(wildcard $(FONTLOADERDIR)/*.lua)
SRC += $(SRCSRCDIR)/luaotfload.sty
SRC += $(MISCDIR)/luaotfload-blacklist.cnf
@@ -18,10 +22,13 @@ CONFDEMO = $(MISCDIR)/luaotfload.conf.example
GLYPHSCRIPT = $(SCRIPTSRCDIR)/mkglyphlist
CHARSCRIPT = $(SCRIPTSRCDIR)/mkcharacters
STATUSSCRIPT = $(SCRIPTSRCDIR)/mkstatus
+IMPORTSCRIPT = $(SCRIPTSRCDIR)/mkimport
+TESTSCRIPT = $(SCRIPTSRCDIR)/mktests
GLYPHSOURCE = $(BUILDDIR)/glyphlist.txt
RESOURCESCRIPTS = $(GLYPHSCRIPT) $(CHARSCRIPT) $(STATUSSCRIPT)
+RESOURCESCRIPTS+= $(IMPORTSCRIPT) $(TESTSCRIPT)
TOOLNAME = luaotfload-tool
TOOL = $(SRCSRCDIR)/$(TOOLNAME).lua
@@ -30,6 +37,9 @@ CONFNAME = luaotfload.conf
GRAPH = filegraph
DOCSRC = $(addprefix $(DOCSRCDIR)/$(NAME), -main.tex -latex.tex)
+LOADERSRC = $(wildcard $(FONTLOADERSRCDIR)/*.lua)
+LOADERSRC += $(wildcard $(FONTLOADERSRCDIR)/*.tex)
+LOADERSRC += $(PACKAGEDIR)/luaotfload-package.lua
GRAPHSRC = $(DOCSRCDIR)/$(GRAPH).dot
MANSRC = $(DOCSRCDIR)/$(TOOLNAME).rst $(DOCSRCDIR)/$(CONFNAME).rst
@@ -45,8 +55,10 @@ DOCS = $(DOCPDF) $(DOTPDF) $(MANPAGES)
GLYPHS = $(BUILDDIR)/$(NAME)-glyphlist.lua
CHARS = $(BUILDDIR)/$(NAME)-characters.lua
STATUS = $(BUILDDIR)/$(NAME)-status.lua
-RESOURCES = $(GLYPHS) $(CHARS) $(STATUS)
-SOURCE = $(DOCSRC) $(MANSRC) $(SRC) README COPYING Makefile NEWS $(RESOURCESCRIPTS)
+LOADER = $(BUILDDIR)/fontloader-$(shell date +%F).lua
+RESOURCES = $(GLYPHS) $(CHARS) $(LOADER) $(STATUS)
+SOURCE = $(DOCSRC) $(LOADERSRC) $(MANSRC)
+SOURCE += $(SRC) README COPYING Makefile NEWS $(RESOURCESCRIPTS)
# Files grouped by installation location
SCRIPTSTATUS = $(TOOL) $(RESOURCESCRIPTS)
@@ -85,7 +97,10 @@ LUA = texlua
## variables.
DO_GLYPHS = $(LUA) $(GLYPHSCRIPT) > /dev/null
DO_CHARS = $(LUA) $(CHARSCRIPT) > /dev/null
-DO_STATUS = $(LUA) $(STATUSSCRIPT) > /dev/null
+DO_STATUS = $(LUA) $(STATUSSCRIPT) --fontloader=$(LOADER) >/dev/null
+DO_IMPORT = $(LUA) $(IMPORTSCRIPT) import >/dev/null
+DO_PACKAGE = $(LUA) $(IMPORTSCRIPT) package \
+ $(PACKAGEDIR)/luaotfload-package.lua $(LOADER) >/dev/null
define check-lua-files
@echo validating syntax
@@ -109,8 +124,12 @@ builddir: $(BUILDDIR)
resources: $(RESOURCES)
chars: $(CHARS)
status: $(STATUS)
+package: loader
+loader: $(LOADER)
ctan: $(CTAN_ZIP)
tds: $(TDS_ZIP)
+import:
+ $(DO_IMPORT)
graph: $(DOTPDF)
doc: $(DOCS)
@@ -132,9 +151,12 @@ $(GLYPHS): builddir
$(CHARS): builddir
$(DO_CHARS)
-$(STATUS): builddir
+$(STATUS): builddir loader
$(DO_STATUS)
+$(LOADER): builddir
+ $(DO_PACKAGE)
+
$(BUILDDIR): /dev/null
mkdir -p $(BUILDDIR)
@@ -147,7 +169,7 @@ $(CTAN_ZIP): $(DOCS) $(SOURCE) $(TDS_ZIP)
@echo "Making $@ for CTAN upload."
@$(RM) -- $@
$(make-ctandir)
- cd $(BUILDDIR) && zip -r -9 $(CTAN_ZIPFILE) $(TDS_ZIPFILE) $(NAME) >/dev/null
+ @cd $(BUILDDIR) && zip -r -9 $(CTAN_ZIPFILE) $(TDS_ZIPFILE) $(NAME) >/dev/null
$(CTAN_ZIPSIG): $(CTAN_ZIP)
@echo "Signing package $(CTAN_ZIP)"
@@ -155,8 +177,8 @@ $(CTAN_ZIPSIG): $(CTAN_ZIP)
@gpg --batch --armor --detach-sign "$(CTAN_ZIP)"
define run-install-doc
-@mkdir -p $(DOCDIR) && cp -- $(DOCSTATUS) $(VGND) $(CONFDEMO) $(DOCDIR)
-@mkdir -p $(SRCDIR) && cp -- $(SRCSTATUS) $(SRCDIR)
+@mkdir -p $(DOCDIR) && cp -- $(DOCSTATUS) $(VGND) $(CONFDEMO) $(DOCDIR)
+@mkdir -p $(SRCDIR) && cp -- $(SRCSTATUS) $(SRCDIR)
@mkdir -p $(MAN1DIR) && cp -- $(TOOLMAN) $(MAN1DIR)
@mkdir -p $(MAN5DIR) && cp -- $(CONFMAN) $(MAN5DIR)
endef
@@ -164,6 +186,7 @@ endef
define run-install
@mkdir -p $(SCRIPTDIR) && cp -- $(SCRIPTSTATUS) $(SCRIPTDIR)
@mkdir -p $(RUNDIR) && cp -- $(RESOURCES) $(RUNSTATUS) $(RUNDIR)
+@mkdir -p $(RUNDIR) && cp -- $(LOADERSRC) $(RUNDIR)
endef
$(TDS_ZIP): TEXMFROOT=./tmp-texmf
@@ -177,12 +200,16 @@ $(TDS_ZIP): $(DOCS) $(ALL_STATUS) check
sign: $(CTAN_ZIPSIG)
-.PHONY: install manifest clean mrproper show showtargets check
+.PHONY: install manifest clean mrproper show showtargets check import news
-install: $(ALL_STATUS)
- @echo "Installing in '$(TEXMFROOT)'."
- $(run-install-docs)
- $(run-install)
+install:
+ @echo " ××××××××××××××××××××××××××××××××"
+ @echo " There is no “install” target."
+ @echo " ××××××××××××××××××××××××××××××××"
+ @echo " Compile a TDS zipball (make tds)"
+ @echo " and extract that into your local"
+ @echo " TEXMF instead."
+ @echo " ××××××××××××××××××××××××××××××××"
manifest:
@echo "Source files:"
@@ -218,12 +245,19 @@ showtargets:
@echo " luaotfload.conf(5) (requires Docutils)"
@echo " graph generate file graph (requires GraphViz)"
@echo
+ @echo " loader merge fontloader"
@echo " chars import char-def.lua as luaotfload-characters.lua"
@echo " status create repository info (luaotfload-status.lua)"
@echo
+ @echo " import grab files from upstream"
+ @echo " package package fontloader"
+ @echo
@echo " tds package a zipball according to the TDS"
@echo " ctan package a zipball for uploading to CTAN"
@echo " sign sign zipball"
@echo
+ @echo " clean cleanup side-effects"
+ @echo " mrproper cleanup side-effects as well as make targets"
+ @echo
# vim:noexpandtab:tabstop=8:shiftwidth=2
diff --git a/Master/texmf-dist/source/luatex/luaotfload/filegraph.dot b/Master/texmf-dist/source/luatex/luaotfload/filegraph.dot
index 47db9ea3fcc..9773ebd426f 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/filegraph.dot
+++ b/Master/texmf-dist/source/luatex/luaotfload/filegraph.dot
@@ -10,8 +10,8 @@ strict digraph luaotfload_files { //looks weird with circo ...
size = "21cm";
rankdir = LR;
- ranksep = 0.618;
- nodesep = 1.618;
+ ranksep = 0.618;
+ nodesep = 1.618;
edge [
arrowhead = onormal,
@@ -30,37 +30,38 @@ strict digraph luaotfload_files { //looks weird with circo ...
fontdbutil -> font_names [label="--update",
style=dashed]
- luaotfload -> otfl_fonts_merged [label="merged"]
- luaotfload -> merged_lua_libs [label="unmerged", style=solid]
- luaotfload -> merged_luatex_fonts [label="unmerged", style=solid]
- luaotfload -> merged_context_libs [label="unmerged", style=solid]
+ luaotfload -> merged_lua_libs [style=solid]
+ luaotfload -> luaotfload_init [label="main()", style=solid]
+ luaotfload -> luaotfload_libs [label="main()", style=solid]
- luaotfload -> luaotfload_libs
- luaotfload -> otfl_blacklist_cnf
-
- otfl_fonts_merged -> merged_lua_libs [label="merged",
- style=dotted,
- lhead=cluster_merged]
- otfl_fonts_merged -> merged_luatex_fonts [label="merged",
+ fontloader -> merged_luatex_fonts [label="merged",
style=dotted,
lhead=cluster_merged]
- otfl_fonts_merged -> merged_context_libs [label="merged",
+ fontloader -> merged_context_libs [label="merged",
style=dotted,
lhead=cluster_merged]
+ luaotfload_init -> luaotfload_log [label="init_early()", style=solid]
+ luaotfload_init -> luaotfload_basics_gen [label="init_early()", style=solid]
+ luaotfload_init -> fontloader [label="init_main()", style=solid]
+
+ luaotfload_init -> merged_luatex_fonts [label="unmerged", style=solid]
+ luaotfload_init -> merged_context_libs [label="unmerged", style=solid]
+
merged_luatex_fonts -> font_age [label="luatex-fonts-enc.lua",
ltail=cluster_merged]
fontdbutil -> fontdbutil_diagnostics [label="--diagnose"]
-
fontdbutil -> status [label="version information"]
- fontdbutil_diagnostics -> status [constraint=no, label="hash files"]
+ luaotfload_package -> fontloader [label="merges", style=dashed]
merged_luatex_fonts -> characters [label="luaotfload-auxiliary.lua",
ltail=cluster_merged]
- luaotfload_libs -> font_names [label="luaotfload-database.lua"]
+ luaotfload_libs -> font_names [label="luaotfload-database.lua"]
+ luaotfload_libs -> otfl_blacklist_cnf [label="luaotfload-database.lua"]
+
mkstatus -> status [label="generates from distribution files",
style=dashed]
@@ -71,13 +72,30 @@ strict digraph luaotfload_files { //looks weird with circo ...
mkcharacters -> characters [label="generates from Context’s char-def.lua",
style=dashed]
+ fontdbutil_diagnostics -> status [label="hash files"]
+
+ mkimport -> merged_luatex_fonts [label="pulls", style=dashed, constraint=no];
+ mkimport -> merged_context_libs [label="pulls", style=dashed, constraint=no];
+
subgraph { rank = same;
- mkcharacters;
- mkglyphlist;
- mkstatus;
fontdbutil;
luaotfload }
+ subgraph cluster_scripts {
+ node [style=filled, color=white];
+ style = "filled,rounded";
+ color = "#44000011:#CCCCCC77";
+ //nodesep = "3.0";
+ rank = same;
+ label = "Standalone scripts";
+ gradientangle=90;
+ mkcharacters;
+ mkglyphlist;
+ mkimport;
+ mktest;
+ mkstatus;
+ }
+
/* ····································································
* main files
* ································································· */
@@ -90,6 +108,14 @@ strict digraph luaotfload_files { //looks weird with circo ...
style = "filled,rounded",
penwidth=2]
+ luaotfload_package [label = "luaotfload-package.lua",
+ shape = rect,
+ width = "3.2cm",
+ height = "1.2cm",
+ color = "#01012222",
+ style = "filled,rounded",
+ penwidth=2]
+
fontdbutil_diagnostics [label = "luaotfload-diagnostics.lua",
shape = rect,
width = "3.2cm",
@@ -98,27 +124,43 @@ strict digraph luaotfload_files { //looks weird with circo ...
style = "filled,rounded",
penwidth=2]
+ mktest [label = "mktest",
+ shape = rect,
+ width = "3.2cm",
+ height = "0.618cm",
+ color = "#FFFFFF66",
+ style = "filled,rounded",
+ penwidth=2]
+
+ mkimport [label = "mkimport",
+ shape = rect,
+ width = "3.2cm",
+ height = "0.618cm",
+ color = "#FFFFFF66",
+ style = "filled,rounded",
+ penwidth=2]
+
mkstatus [label = "mkstatus",
shape = rect,
width = "3.2cm",
- height = "1.2cm",
- color = "#01012222",
+ height = "0.618cm",
+ color = "#FFFFFF66",
style = "filled,rounded",
penwidth=2]
mkglyphlist [label = "mkglyphlist",
shape = rect,
width = "3.2cm",
- height = "1.2cm",
- color = "#01012222",
+ height = "0.618cm",
+ color = "#FFFFFF66",
style = "filled,rounded",
penwidth=2]
mkcharacters [label = "mkcharacters",
shape = rect,
width = "3.2cm",
- height = "1.2cm",
- color = "#01012222",
+ height = "0.618cm",
+ color = "#FFFFFF66",
style = "filled,rounded",
penwidth=2]
@@ -138,13 +180,37 @@ strict digraph luaotfload_files { //looks weird with circo ...
* style = "filled,rounded",
* penwidth=2]
*/
- otfl_fonts_merged [label = "luaotfload-fontloader.lua",
- shape = rect,
- width = "3.2cm",
- height = "1.2cm",
- color = "#01012222",
- style = "filled,rounded",
- penwidth=2]
+ luaotfload_init [label = "luaotfload-init.lua",
+ shape = rect,
+ width = "3.2cm",
+ height = "1.2cm",
+ color = "#44440122",
+ style = "filled,rounded",
+ penwidth=2]
+
+ luaotfload_log [label = "luaotfload-log.lua",
+ shape = rect,
+ width = "3.2cm",
+ height = "1.2cm",
+ color = "#44440122",
+ style = "filled,rounded",
+ penwidth=2]
+
+ luaotfload_basics_gen [label = "fontloader-basics-gen.lua",
+ shape = rect,
+ width = "3.2cm",
+ height = "1.2cm",
+ color = "#FFFFFF66",
+ style = "filled,rounded",
+ penwidth=2]
+
+ fontloader [label = "fontloader-YY-MM-DD.lua",
+ shape = rect,
+ width = "3.2cm",
+ height = "1.2cm",
+ color = "#FFFFFF66",
+ style = "filled,rounded",
+ penwidth=2]
/* ····································································
* luaotfload files
@@ -193,16 +259,16 @@ strict digraph luaotfload_files { //looks weird with circo ...
luaotfload_libs [
shape = box,
style = "filled,rounded",
- color = "grey90:goldenrod4",
+ color = "grey90",
fontsize = 10,
label = <
<table cellborder="0" bgcolor="#FFFFFFAA">
<th> <td colspan="2"> <font point-size="12" face="Iwona Italic">Luaotfload Libraries</font> </td> </th>
- <tr> <td>luaotfload-auxiliary.lua</td> <td>luaotfload-features.lua</td> </tr>
- <tr> <td>luaotfload-override.lua</td> <td>luaotfload-loaders.lua</td> </tr>
- <tr> <td>luaotfload-log.lua</td> <td>luaotfload-letterspace.lua</td> </tr>
- <tr> <td>luaotfload-parsers.lua</td> <td>luaotfload-database.lua</td> </tr>
- <tr> <td>luaotfload-color.lua</td> </tr>
+ <tr> <td>luaotfload-auxiliary.lua</td> <td>luaotfload-features.lua</td> </tr>
+ <tr> <td>luaotfload-loaders.lua</td> <td>luaotfload-colors.lua</td> </tr>
+ <tr> <td>luaotfload-resolvers.lua</td> <td>luaotfload-letterspace.lua</td> </tr>
+ <tr> <td>luaotfload-parsers.lua</td> <td>luaotfload-database.lua</td> </tr>
+ <tr> <td>luaotfload-configuration.lua</td><td></td> </tr>
</table>
>,
]
@@ -214,28 +280,40 @@ strict digraph luaotfload_files { //looks weird with circo ...
subgraph cluster_merged {
node [style=filled, color=white];
style = "filled,rounded";
- color = "grey90:dodgerblue4";
+ color = "#912CEE33";
//nodesep = "3.0";
rank = same;
label = "Merged Libraries";
gradientangle=0;
- merged_lua_libs;
merged_luatex_fonts;
merged_context_libs;
}
- otfl_fonts_merged -> merged_lua_libs
- otfl_fonts_merged -> merged_luatex_fonts
- otfl_fonts_merged -> merged_context_libs
+ fontloader -> merged_luatex_fonts
+ fontloader -> merged_context_libs
+
+ subgraph cluster_fontloader {
+ node [style=filled, color=white];
+ style = "filled,rounded";
+ color = "bisque";
+ //nodesep = "3.0";
+ rank = same;
+ label = "Fontloader";
+ gradientangle=0;
+ luaotfload_basics_gen;
+ fontloader;
+ }
merged_lua_libs [
shape = box,
style = "filled,rounded",
- color = "#FFFFFFAA",
+ color = "#CCCC1166",
+ fontsize = 10,
fontsize = 10,
label = <
<table border="0">
- <th> <td colspan="3"> <font point-size="12" face="Iwona Italic">Lua Libraries from Context</font> </td> </th>
+ <th> <td colspan="3"> <font point-size="12" face="Iwona Italic">
+ Lualibs &ndash; Lua Libraries from Context</font> </td> </th>
<tr> <td>l-lua.lua</td> <td>l-lpeg.lua</td> <td>l-function.lua</td> </tr>
<tr> <td>l-string.lua</td> <td>l-table.lua</td> <td>l-io.lua</td> </tr>
<tr> <td>l-file.lua</td> <td>l-boolean.lua</td> <td>l-math.lua</td> </tr>
@@ -252,17 +330,13 @@ strict digraph luaotfload_files { //looks weird with circo ...
label = <
<table border="0">
<th> <td colspan="2"> <font point-size="12" face="Iwona Italic">Font Loader (LuaTeX-Fonts)</font> </td> </th>
- <tr> <td>luatex-basics-gen.lua</td> <td>luatex-basics-nod.lua</td> </tr>
+ <tr> <td>luatex-fonts-cbk.lua</td> <td>luatex-basics-nod.lua</td> </tr>
<tr> <td>luatex-fonts-enc.lua</td> <td>luatex-fonts-syn.lua</td> </tr>
<tr> <td>luatex-font-tfm.lua</td> <td>luatex-font-afm.lua</td> </tr>
<tr> <td>luatex-font-afk.lua</td> <td>luatex-fonts-tfm.lua</td> </tr>
<tr> <td>luatex-fonts-chr.lua</td> <td>luatex-fonts-lua.lua</td> </tr>
<tr> <td>luatex-fonts-inj.lua</td> <td>luatex-fonts-otn.lua</td> </tr>
<tr> <td>luatex-fonts-def.lua</td> <td>luatex-fonts-ext.lua</td> </tr>
- <tr> <td>luatex-fonts-cbk.lua</td> </tr>
-
-
-
</table>
>,
]
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-latex.tex b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-latex.tex
index 34c494d58f7..bdcf45f0929 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-latex.tex
+++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-latex.tex
@@ -1,5 +1,5 @@
-\luatexsuppresslongerror1%% sigh ...
-%% Copyright (C) 2009-2014
+\suppresslongerror1%% sigh ...
+%% Copyright (C) 2009-2015
%%
%% by Elie Roux <elie.roux@telecom-bretagne.eu>
%% and Khaled Hosny <khaledhosny@eglug.org>
@@ -129,7 +129,7 @@
\definehighlight [fileent][\ttfamily\restoreunderscore] %% files, dirs
\definehighlight [texmacro][\sffamily\itshape\textbackslash] %% cs
-\definehighlight [luafunction][\sffamily\itshape\restoreunderscore] %% lua identifiers
+\definehighlight [luaident][\sffamily\itshape\restoreunderscore] %% lua identifiers
\definehighlight [identifier][\sffamily] %% names
\definehighlight [abbrev][\rmfamily\scshape] %% acronyms
\definehighlight [emphasis][\rmfamily\slshape] %% level 1 emph
@@ -206,6 +206,7 @@
%% one that we could map directly onto Latex’s \verb|…|.
\usepackage {listings}
+\usepackage {luatexbase}
\lstset {
basicstyle=\ttfamily,
}
@@ -220,9 +221,9 @@
\newcount \othercatcode \othercatcode 12
\newcount \activecatcode \othercatcode 13
-\newluatexcatcodetable \vrbcatcodes
-\setluatexcatcodetable \vrbcatcodes {%
- \luatexcatcodetable \CatcodeTableIniTeX
+\newcatcodetable \vrbcatcodes
+\setcatcodetable \vrbcatcodes {%
+ \catcodetable \CatcodeTableIniTeX
\catcode 9 \othercatcode %% \tabasciicode
\catcode 13 \othercatcode %% \endoflineasciicode
\catcode 12 \othercatcode %% \formfeedasciicode
@@ -230,48 +231,85 @@
\catcode 32 \othercatcode %% \spaceasciicode
}
-\newluatexcatcodetable \literalcatcodes
-\setluatexcatcodetable \literalcatcodes {%
- \luatexcatcodetable \CatcodeTableString
+\directlua {
+ document = document or { }
+ document.vrbcatcodesidx = tonumber (\the \vrbcatcodes)
+}
+
+\newcatcodetable \literalcatcodes
+\setcatcodetable \literalcatcodes {%
+ \catcodetable \CatcodeTableString
\catcode 32 \activecatcode %% \spaceasciicode
}
+\def \listingsurroundskip {\vskip \baselineskip}
+
\def \beginlisting {%
+ \noindent
\begingroup
- \luatexcatcodetable \vrbcatcodes
+ \catcodetable \vrbcatcodes
\beginlistingindeed%
}
\directlua {
- local texprint = tex.print
- local stringsub = string.sub
- local backslash = string.byte (0x5c)
- document = document or { }
+ local texsprint = tex.sprint
+ local stringis_empty = string.is_empty
+ local stringsub = string.sub
+ local stringgsub = string.gsub
+ %local backslash = unicode.utf8.char (0x200c)
+ local backslash = unicode.utf8.char (0x5c)
+ local escaped = [[\string\string\string\]]
document.printlines = function (buffer)
- for _, line in next, string.explode (buffer, "\noexpand\n") do
- if stringsub (line, 1, 1) == " " then
- line = backslash .. line
+ local lines = string.explode (buffer, "\noexpand\n")
+ print ""
+ for i, line in next, lines do
+ local line = stringgsub (line, backslash, escaped)
+ if stringis_empty (line) then
+ print (i, "listing: <empty line />")
+ texsprint [[\string\listingpar]]
+ else
+ local line = [[\string\beginlistingline]]
+ .. line
+ .. [[\string\endlistingline]]
+ .. [[\string\listingpar]]
+ print (i, "listing: «" .. line .. "»")
+ texsprint (document.vrbcatcodesidx, line)
end
- texprint (-1, line)
- texprint (-1, "")
end
end
}
+\def \listingpar {\endgraf}
+
+\let \endlistingline \relax
+\let \endlisting \relax
+
+\protected \def \beginlistingline{%
+ \leavevmode
+ \begingroup
+ \beginlistinglineindeed%
+}
+
+\def \beginlistinglineindeed #1\endlistingline{%
+ \endgroup
+ \hbox{%
+ \addfontfeature {RawFeature=-tlig;-liga}%% So one can’t just turn them all off at once using the ``Ligatures`` key?
+ \obeyspaces
+ #1}%
+}
+
\def \beginlistingindeed#1\endlisting{%
\endgroup
\begingroup
+ \endgraf
+ \listingsurroundskip
\ttfamily
\small
- \begin {quote}
- \bgroup
- \addfontfeature {RawFeature=-tlig;-liga}%% So one can’t just turn them all off at once using the ``Ligatures`` key?
- \luatexcatcodetable \literalcatcodes
- \obeyspaces
- \obeylines
- \directlua{document.printlines ([==[\detokenize {#1}]==])}
- \egroup
- \end {quote}
+ \parindent = 0em
+ \leftskip = 2em
+ \hangindent = 2em
+ \directlua{document.printlines ([==[\detokenize {#1}]==])}%
+ \listingsurroundskip
\endgroup
}
@@ -301,7 +339,7 @@
\definelist [descriptions]{\normalitem {\textbf \first}\hfill\break}
\definelist [definitions]{\normalitem {\fileent {\first}}}
\definelist [filelist]{\normalitem {\fileent {\first}}\space--\hskip 1em}
-\definelist [functionlist]{\normalitem {\luafunction {\first}}\hfill\break}
+\definelist [functionlist]{\normalitem {\luaident {\first}}\hfill\break}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% columns
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
index 2e89ff000e8..967f5a2b346 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
+++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-main.tex
@@ -1,4 +1,4 @@
-%% Copyright (C) 2009-2014
+%% Copyright (C) 2009-2015
%%
%% by Elie Roux <elie.roux@telecom-bretagne.eu>
%% and Khaled Hosny <khaledhosny@eglug.org>
@@ -32,7 +32,7 @@
\beginfrontmatter
\setdocumenttitle {The \identifier{luaotfload} package}
- \setdocumentdate {2014/07/13 v2.5}
+ \setdocumentdate {2015/12/09 v2.6}
\setdocumentauthor {Elie Roux · Khaled Hosny · Philipp Gesang\\
Home: \hyperlink {https://github.com/lualatex/luaotfload}\\
Support: \email {lualatex-dev@tug.org}}
@@ -43,6 +43,11 @@
This package is an adaptation of the \CONTEXT font loading system.
It allows for loading \OpenType fonts with an extended syntax and adds
support for a variety of font features.
+
+ After discussion of the font loading API, this manual gives an
+ overview of the core components of \identifier{Luaotfload}: The
+ packaged font loader code, the names database, configuration, and
+ helper functions on the \LUA\ end.
\endabstractcontent
\endfrontmatter
@@ -233,7 +238,7 @@ where \meta{prefix} is either \inlinecode{file:} or \inlinecode {name:}.\footnot
needed, for instance when supplying a customized tex distribution.
The \inlinecode {my} lookup takes this a step further: it lets you define
- a custom resolver function and hook it into the \luafunction{resolve_font}
+ a custom resolver function and hook it into the \luaident{resolve_font}
callback.
%
This ensures full control over how a file is located.
@@ -606,7 +611,9 @@ obviously, \inlinecode{random}.
the file \inlinecode{tkrn.fea} that is part of \identifier{luaotfload}.
It can be read and applied as follows:
- \inlinecode{\\font \\test = Latin Modern Roman:featurefile=tkrn.fea;+tkrn}
+ \beginlisting
+ \font \test = Latin Modern Roman:featurefile=tkrn.fea;+tkrn
+ \endlisting
\endaltitem
\beginaltitem {color}
@@ -619,7 +626,7 @@ obviously, \inlinecode{random}.
For example, in order to set text in semitransparent red:
\beginlisting
-\font \test = "Latin Modern Roman:color=FF0000BB"
+ \font \test = "Latin Modern Roman:color=FF0000BB"
\endlisting
\endaltitem
@@ -658,13 +665,13 @@ obviously, \inlinecode{random}.
letterspacing width:
\beginlisting
-\font \iwonakernedA = "file:Iwona-Regular.otf:kernfactor=0.125"
-\font \iwonakernedB = "file:Iwona-Regular.otf:letterspace=12.5"
+ \font \iwonakernedA = "file:Iwona-Regular.otf:kernfactor=0.125"
+ \font \iwonakernedB = "file:Iwona-Regular.otf:letterspace=12.5"
\endlisting
Specific pairs of letters and ligatures may be exempt from
letterspacing by defining the \LUA functions
- \luafunction{keeptogether} and \luafunction{keepligature},
+ \luaident{keeptogether} and \luaident{keepligature},
respectively, inside the namespace \inlinecode {luaotfload.letterspace}.
%
Both functions are called whenever the letterspacing callback
@@ -673,10 +680,10 @@ obviously, \inlinecode{random}.
If they return a true-ish value, no extra kern is inserted at
the current position.
%
- \luafunction{keeptogether} receives a pair of consecutive
+ \luaident{keeptogether} receives a pair of consecutive
glyph nodes in order of their appearance in the node list.
%
- \luafunction{keepligature} receives a single node which can be
+ \luaident{keepligature} receives a single node which can be
analyzed into components.
%
(For details refer to the \emphasis{glyph nodes} section in the
@@ -686,7 +693,7 @@ obviously, \inlinecode{random}.
user.
\endaltitem
-\ifcontextmkiv
+\iffalse
\startbuffer [printvectors]
\directlua{inspect(fonts.protrusions.setups.default)
inspect(fonts.expansions.setups.default)}
@@ -706,7 +713,7 @@ obviously, \inlinecode{random}.
%
Alternatively and with loss of information, you can dump
those tables into your terminal by issuing
- \unless \ifcontextmkiv
+ \unless \iffalse
\beginlisting
\directlua{inspect(fonts.protrusions.setups.default)
inspect(fonts.expansions.setups.default)}
@@ -731,7 +738,7 @@ obviously, \inlinecode{random}.
}:
\beginlisting
-\font \test = LatinModernRoman:protrusion=default
+ \font \test = LatinModernRoman:protrusion=default
\endlisting
\endaltitem
\enddescriptions
@@ -763,7 +770,7 @@ Currently (2014) there are three of them:
remapping feature.
}:
- \unless \ifcontextmkiv
+ \unless \iffalse
%% Using braced arg syntax with inline code appears to be
%% impossible within Latex tables -- just ignore the weird
%% exclamation points below.
@@ -905,7 +912,7 @@ directories.
\tablefloat {table-searchpaths}
{List of paths searched for each supported operating system.}
{%
- \unless \ifcontextmkiv
+ \unless \iffalse
\begincentered
\begintabulate [lp{.5\textwidth}]
\beginrow
@@ -1056,27 +1063,28 @@ An example with explicit paths:
\endsection
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\beginsection {Files from \CONTEXT and \LUATEX-Fonts}
+\beginsection {The Fontloader}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\identifier{luaotfload} relies on code originally written by Hans
-Hagen for the \hyperlink[\identifier{\CONTEXT}]{http://wiki.contextgarden.net}
+\beginsubsection {Overview}
+
+To a large extent, \identifier{luaotfload} relies on code originally
+written by Hans Hagen for the
+\hyperlink[\identifier{\CONTEXT}]{http://wiki.contextgarden.net}
format.
%
-It integrates the font loader as distributed in
-the \identifier{\LUATEX-Fonts} package.
+It integrates the font loader, written entirely in \LUA, as distributed
+in the \identifier{\LUATEX-Fonts} package.
%
The original \LUA source files have been combined using the
-\fileent{mtx-package} script into a single, self-contained blob.
-In this form the font loader has no further dependencies\footnote{%
- It covers, however, to some extent the functionality of the
- \identifier{lualibs} package.
-}
-and requires only minor adaptions to integrate into
+\fileent{mtx-package} script into a single, self-contained blob. In
+this form the font loader depends only on the \identifier{lualibs}
+package and requires only minor adaptions to integrate into
\identifier{luaotfload}.
-%
-The guiding principle is to let \CONTEXT/\LUATEX-Fonts take care of
-the implementation, and update the imported code from time to time.
+
+The guiding principle is to let \CONTEXT/\LUATEX-Fonts take care of the
+implementation, and update the imported code as frequently as
+necessary.
%
As maintainers, we aim at importing files from upstream essentially
\emphasis{unmodified}, except for renaming them to prevent name
@@ -1087,19 +1095,24 @@ This job has been greatly alleviated since the advent of
manually spotted and extracted from the \CONTEXT source code in a
complicated and error-prone fashion.
+\endsubsection
+
+\beginsubsection {Contents and Dependencies}
+
Below is a commented list of the files distributed with
\identifier{luaotfload} in one way or the other.
%
See figure \ref{file-graph} on page \pageref{file-graph} for a
graphical representation of the dependencies.
%
-From \LUATEX-Fonts, only the file \fileent{luatex-fonts-merged.lua}
-has been imported as \fileent{luaotfload-fontloader.lua}.
-%
-It is generated by \fileent{mtx-package}, a \LUA source code merging
-too developed by Hans Hagen.\footnote{%
- \fileent{mtx-package} is
- \hyperlink [part of \CONTEXT]{http://repo.or.cz/w/context.git/blob_plain/refs/heads/origin:/scripts/context/lua/mtx-package.lua}
+\label{package}%
+Through the script \fileent{luaotfload-package.lua} the \CONTEXT
+utility \fileent{mtx-package} is invoked to create the
+\identifier{luaotfload} fontloader as a merged (amalgamated) source
+file.\footnote{%
+ \fileent{mtx-package}, a \LUA source code merging tool developed by
+ Hans Hagen, is
+ \hyperlink [part of \CONTEXT]{https://bitbucket.org/phg/context-mirror/src/726a663be481042003566d4614266b940b5a0c91/scripts/context/lua/mtx-package.lua?at=beta}
and requires \fileent{mtxrun}.
Run
\inlinecode {mtxrun --script package --help}
@@ -1107,31 +1120,56 @@ too developed by Hans Hagen.\footnote{%
For the actual merging code see the file
\fileent{util-mrg.lua} that is part of \CONTEXT.
}
-It houses several \LUA files that can be classed in three
-categories.
+%
+This file constitutes the “default fontloader” and is part of the
+\identifier{luaotfload} package as \fileent{fontloader-YY-MM-DD.lua},
+where the uppercase letters are placeholders for the build date.
+%
+A companion to it, \fileent{luatex-basics-gen.lua} must be loaded
+beforehand to set up parts of the environment required by the \CONTEXT
+libraries.
+%
+During a \TEX\ run, the fontloader initialization and injection happens
+in the module \fileent{luaotfload-init.lua}.
+%
+Additionally, the “reference fontloader” as imported from \LUATEX-Fonts
+is provided as the file \fileent{fontloader-reference.lua}.
+%
+This file is self-contained in that it packages all the auxiliary \LUA
+libraries too, as Luaotfload did up to the 2.5 series; since that job
+has been offloaded to the \identifier{Lualibs} package, loading this
+fontloader introduces a certain code duplication.
+
+A number of \emphasis{\LUA utility libraries} are not part of the
+\identifier{luaotfload} fontloader, contrary to its equivalent in
+\LUATEX-Fonts. These are already provided by the \identifier{lualibs}
+and have thus been omitted from the merge.\footnote{%
+ Faithful listeners will remember the pre-2.6 era when the fontloader
+ used to be integrated as-is which caused all kinds of code
+ duplication with the pervasive \identifier{lualibs} package.
+ This conceptual glitch has since been amended by tightening the
+ coupling with the excellent \CONTEXT\ toolchain.
+}
-\begindefinitions
- \beginnormalitem
- \emphasis{\LUA utility libraries}, a subset
- of what is provided by the \identifier{lualibs}
- package.
-
- \begindoublecolumns
- \begindefinitions
- \beginaltitem {l-lua.lua} \endaltitem
- \beginaltitem {l-lpeg.lua} \endaltitem
- \beginaltitem {l-function.lua} \endaltitem
- \beginaltitem {l-string.lua} \endaltitem
- \beginaltitem {l-table.lua} \endaltitem
- \beginaltitem {l-io.lua} \endaltitem
- \beginaltitem {l-file.lua} \endaltitem
- \beginaltitem {l-boolean.lua} \endaltitem
- \beginaltitem {l-math.lua} \endaltitem
- \beginaltitem {util-str.lua} \endaltitem
- \enddefinitions
- \enddoublecolumns
- \endnormalitem
+\begindoublecolumns
+ \begindefinitions
+ \beginaltitem {l-lua.lua} \endaltitem
+ \beginaltitem {l-lpeg.lua} \endaltitem
+ \beginaltitem {l-function.lua} \endaltitem
+ \beginaltitem {l-string.lua} \endaltitem
+ \beginaltitem {l-table.lua} \endaltitem
+ \beginaltitem {l-io.lua} \endaltitem
+ \beginaltitem {l-file.lua} \endaltitem
+ \beginaltitem {l-boolean.lua} \endaltitem
+ \beginaltitem {l-math.lua} \endaltitem
+ \beginaltitem {util-str.lua} \endaltitem
+ \enddefinitions
+\enddoublecolumns
+
+The reference fontloader is home to several \LUA files that can be
+grouped twofold as below:
+\begindefinitions
\beginnormalitem
The \emphasis{font loader} itself.
These files have been written for
@@ -1139,7 +1177,6 @@ categories.
with \identifier{luaotfload}.
\begindoublecolumns
\begindefinitions
- \beginaltitem{luatex-basics-gen.lua} \endaltitem
\beginaltitem{luatex-basics-nod.lua} \endaltitem
\beginaltitem{luatex-fonts-enc.lua} \endaltitem
\beginaltitem{luatex-fonts-syn.lua} \endaltitem
@@ -1177,16 +1214,13 @@ categories.
\endnormalitem
\enddefinitions
-Note that if \identifier{luaotfload} cannot locate the
-merged file, it will load the individual \LUA libraries
-instead.
+As an alternative to the merged file, \identifier {Luaotfload} may load
+individual unpackaged \LUA libraries that come with the source, or even
+use the files from Context directly.
%
-Their names remain the same as in \CONTEXT (without the
-\inlinecode {otfl}-prefix) since we imported the relevant section of
-\fileent{luatex-fonts.lua} unmodified into \fileent{luaotfload-main.lua}.
-Thus if you prefer running bleeding edge code from the
-\CONTEXT beta, all you have to do is remove
-\fileent{luaotfload-merged.lua} from the search path.
+Thus if you prefer running bleeding edge code from the \CONTEXT beta,
+choose the \inlinecode {context} fontloader via the configuration file
+(see sections \ref{sec:conf} and \ref{sec:pkg} below).
Also, the merged file at some point loads the Adobe Glyph List from a
\LUA table that is contained in \fileent{luaotfload-glyphlist.lua},
@@ -1194,8 +1228,9 @@ which is automatically generated by the script
\fileent{mkglyphlist}.\footnote{%
See \fileent{luaotfload-font-enc.lua}.
The hard-coded file name is why we have to replace the procedure
- that loads the file in \fileent{luaotfload-override.lua}.
+ that loads the file in \fileent{luaotfload-init.lua}.
}
+%
There is a make target \identifier{glyphs} that will create a fresh
glyph list so we don’t need to import it from \CONTEXT any longer.
@@ -1209,7 +1244,10 @@ files not contained in the merge. Some of these have no equivalent in
font feature handling; incorporates some of the code from
\fileent{font-otc} from \CONTEXT;
\endaltitem
- \beginaltitem {luaotfload-override.lua}
+ \beginaltitem {luaotfload-configuration.lua}
+ handling of \fileent{luaotfload.conf(5)}.
+ \endaltitem
+ \beginaltitem {luaotfload-log.lua}
overrides the \CONTEXT logging functionality.
\endaltitem
\beginaltitem {luaotfload-loaders.lua}
@@ -1222,6 +1260,9 @@ files not contained in the merge. Some of these have no equivalent in
\beginaltitem {luaotfload-database.lua}
font names database.
\endaltitem
+ \beginaltitem {luaotfload-resolvers.lua}
+ file name resolvers.
+ \endaltitem
\beginaltitem {luaotfload-colors.lua}
color handling.
\endaltitem
@@ -1239,13 +1280,154 @@ files not contained in the merge. Some of these have no equivalent in
{Schematic of the files in \identifier{Luaotfload}}
{filegraph.pdf}
+\endsubsection
+
+\beginsubsection {Packaging}
+
+\label{sec:pkg}%
+The fontloader code is integrated as an isolated component that can be
+switched out on demand.
+%
+To specify the fontloader you wish to use, the configuration file
+(described in section \ref{sec:conf}) provides the option
+\inlinecode{fontloader}.
+%
+Its value can be one of the identifiers \inlinecode{default} or
+\inlinecode{reference} (see above, section \ref{package}) or the name
+of a file somewhere in the search path of \LUATEX.
+%
+This will make \identifier {Luaotfload} locate the \CONTEXT source by
+means of \identifier{kpathsea} lookups and use those instead of the
+merged package.
+%
+The parameter may be extended with a path to the \CONTEXT
+\fileent{texmf}, separated with a colon:
+
+\beginlisting
+[run]
+ fontloader = context:~/context/tex/texmf-context
+\endlisting
+
+\noindent This setting allows accessing an installation -- e. g. the
+standalone distribution or a source repository -- outside the current
+\TEX distribution.
+
+Like the \identifier{Lualibs} package, the fontloader is deployed as a
+\emphasis{merged package} containing a series of \LUA files joined
+together in their expected order and stripped of non-significant parts.
+%
+The \fileent{mkimport} utility assists in pulling the files from a
+\CONTEXT tree and packaging them for use with \identifier{Luaotfload}.%
+%
+The state of the files currently in \identifier{Luaotfload}’s
+repository can be queried:
+\beginlisting
+./scripts/mkimport news
+\endlisting
+%
+The subcommand for importing takes the prefix of the desired \CONTEXT
+\identifier{texmf} as an optional argument:
+\beginlisting
+./scripts/mkimport import ~/context/tex/texmf-context
+\endlisting
+%
+Whereas the command for packaging requires a path to the
+\emphasis{package description file} and the output name to be passed.
+\beginlisting
+./scripts/mkimport package ./src/fontloader/luaotfload-package.lua fontloader-custom.lua
+\endlisting
+
+From the toplevel makefile, the targets \inlinecode{import} and
+\inlinecode{package} provide easy access to the commands as invoked during
+the \identifier{Luaotfload} build process.\footnote{%
+ \emphasis{Hint for those interested in the packaging process}: issue
+ \inlinecode{make show} for a list of available build routines.
+}
+These will call \inlinecode{mkimport} script with the correct
+parameters to generate a datestamped package.
+%
+Whether files have been updated in the upstream distribution can be
+queried by \inlinecode{./scripts/mkimport news}.
+%
+This will compare the imported files with their counterparts in the
+\CONTEXT distribution and report changes.
+
+\endsubsection
+
\endsection
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\beginsection {Configuration Files}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\beginnarrower
+ \emphasis{Caution}: For the authoritative documentation, consult the
+ manpage for \fileent{luaotfload.conf(5)}.
+\endnarrower
+
+\label{sec:conf}
+The runtime behavior of \identifier{Luaotfload} can be customized by
+means of a configuration file.
+% location
+At startup, it attempts to locate a file called \fileent
+{luaotfload.conf} or \fileent {luaotfloadrc} at a number of candidate
+locations:
+
+\begincentered
+ \begindefinitions
+ \beginnormalitem \fileent{./luaotfload.conf} \endnormalitem
+ \beginnormalitem \fileent{./luaotfloadrc} \endnormalitem
+ \beginnormalitem \fileent{\$XDG_CONFIG_HOME/luaotfload/luaotfload.conf} \endnormalitem
+ \beginnormalitem \fileent{\$XDG_CONFIG_HOME/luaotfload/luaotfload.rc} \endnormalitem
+ \beginnormalitem \fileent{~/.luaotfloadrc} \endnormalitem
+ \enddefinitions
+\endcentered
+
+\beginnarrower
+ \emphasis{Caution}: The configuration potentially modifies the final
+ document. A project-local file belongs under version control along
+ with the rest of the document. This is to ensure that everybody who
+ builds the project also receives the same customizations as the
+ author.
+\endnarrower
+
+% syntax
+The syntax is fairly close to the format used by
+\fileent{git-config(1)} which in turn was derived from the popular
+\identifier{.INI} format: Lines of key-value pairs are grouped under
+different configuration “sections”.\footnote{%
+ The configuration parser in \fileent {luoatfload-parsers.lua} might
+ be employed by other packages for similar purposes.
+}
+% example settings
+An example for customization via \fileent {luaotfload.conf} might look
+as below:
+
+\beginlisting
+; Example luaotfload.conf containing a rudimentary configuration
+[db]
+ update-live = false
+[run]
+ color-callback = pre_linebreak_filter
+ definer = info_patch
+ log-level = 5
+[default-features]
+ global = mode=base
+\endlisting
+
+This specifies that for the given project, \identifier{Luaotfload}
+shall not attempt to automatically scan for fonts if it can’t resolve a
+request. The font-based colorization will happen during \LUATEX’s
+pre-linebreak filter. The fontloader will output verbose information
+about the fonts at definition time along with globally increased
+verbosity. Lastly, the fontloader defaults to the less expensive
+\luaident{base} mode like it does in \CONTEXT.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\beginsection {Auxiliary Functions}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-With release version 2.2, \identifier{luaotfload} received
+With release version 2.2, \identifier{Luaotfload} received
additional functions for package authors to call from outside
(see the file \fileent{luaotfload-auxiliary.lua} for details).
%
@@ -1254,7 +1436,7 @@ The purpose of this addition twofold.
Firstly, \identifier{luaotfload} failed to provide a stable interface
to internals in the past which resulted in an unmanageable situation
of different packages abusing the raw access to font objects by means
-of the \luafunction{patch_font} callback.
+of the \luaident{patch_font} callback.
%
When the structure of the font object changed due to an update, all
of these imploded and several packages had to be fixed while
@@ -1275,7 +1457,7 @@ additions.
\beginsubsection {Callback Functions}
-The \luafunction{patch_font} callback is inserted in the wrapper
+The \luaident{patch_font} callback is inserted in the wrapper
\identifier{luaotfload} provides for the font definition callback.
%
At this place it allows manipulating the font object immediately after
@@ -1367,8 +1549,8 @@ are defined for which scripts.
\beginfunctionlist
\beginaltitem {aux.font_has_glyph (id : int, index : int)}
- Predicate that returns true if the font \luafunction{id}
- has glyph \luafunction{index}.
+ Predicate that returns true if the font \luaident{id}
+ has glyph \luaident{index}.
\endaltitem
\beginaltitem {aux.slot_of_name(name : string)}
@@ -1377,33 +1559,33 @@ are defined for which scripts.
\endaltitem
\beginaltitem {aux.name_of_slot(slot : int)}
- The inverse of \luafunction{slot_of_name}; note that this
+ The inverse of \luaident{slot_of_name}; note that this
might be incomplete as multiple glyph names may map to the
same codepoint, only one of which is returned by
- \luafunction{name_of_slot}.
+ \luaident{name_of_slot}.
\endaltitem
\beginaltitem {aux.provides_script(id : int, script : string)}
- Test if a font supports \luafunction{script}.
+ Test if a font supports \luaident{script}.
\endaltitem
\beginaltitem {aux.provides_language(id : int, script : string, language : string)}
- Test if a font defines \luafunction{language} for a given
- \luafunction{script}.
+ Test if a font defines \luaident{language} for a given
+ \luaident{script}.
\endaltitem
\beginaltitem {aux.provides_feature(id : int, script : string,
language : string, feature : string)}
- Test if a font defines \luafunction{feature} for
- \luafunction{language} for a given \luafunction{script}.
+ Test if a font defines \luaident{feature} for
+ \luaident{language} for a given \luaident{script}.
\endaltitem
\beginaltitem {aux.get_math_dimension(id : int, dimension : string)}
- Get the dimension \luafunction{dimension} of font \luafunction{id}.
+ Get the dimension \luaident{dimension} of font \luaident{id}.
\endaltitem
\beginaltitem {aux.sprint_math_dimension(id : int, dimension : string)}
- Same as \luafunction{get_math_dimension()}, but output the value
+ Same as \luaident{get_math_dimension()}, but output the value
in scaled points at the \TEX end.
\endaltitem
@@ -1416,7 +1598,7 @@ are defined for which scripts.
%% not implemented, may come back later
\beginfunctionlist
% \beginaltitem {aux.scan_external_dir(dir : string)}
-% Include fonts in directory \luafunction{dir} in font lookups without
+% Include fonts in directory \luaident{dir} in font lookups without
% adding them to the database.
%
\beginaltitem {aux.read_font_index (void)}
@@ -1527,9 +1709,9 @@ Another strategy that helps avoiding problems is to not access raw
Some of them, even though they are dangerous to access, have not been
overridden or disabled.
%
-Thus, whenever possible prefer the functions in the \luafunction{aux}
+Thus, whenever possible prefer the functions in the \luaident{aux}
namespace over direct manipulation of font objects. For example, raw
-access to the \luafunction{font.fonts} table like:
+access to the \luaident{font.fonts} table like:
\beginlisting
local somefont = font.fonts[2]
@@ -1537,16 +1719,16 @@ access to the \luafunction{font.fonts} table like:
\noindent can render already defined fonts unusable.
%
-Instead, the function \luafunction{font.getfont()} should be used
+Instead, the function \luaident{font.getfont()} should be used
because it has been replaced by a safe variant.
-However, \luafunction{font.getfont()} only covers fonts handled by the
+However, \luaident{font.getfont()} only covers fonts handled by the
font loader, e.~g. \identifier{OpenType} and \identifier{TrueType}
fonts, but not \abbrev{tfm} or \abbrev{ofm}.
%
Should you absolutely require access to all fonts known to \LUATEX,
including the virtual and autogenerated ones, then you need to query
-both \luafunction{font.getfont()} and \luafunction{font.fonts}.
+both \luaident{font.getfont()} and \luaident{font.fonts}.
%
In this case, best define you own accessor:
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-tool.rst b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-tool.rst
index 4b1a93456f3..4c05c44a812 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload-tool.rst
+++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload-tool.rst
@@ -6,9 +6,9 @@
generate and query the Luaotfload font names database
-----------------------------------------------------------------------
-:Date: 2014-03-30
+:Date: 2015-12-09
:Copyright: GPL v2.0
-:Version: 2.5
+:Version: 2.6
:Manual section: 1
:Manual group: text processing
@@ -42,6 +42,8 @@ SYNOPSIS
**luaotfload-tool** --diagnose=CHECK
+**luaotfload-tool** --conf=FILE --dumpconf
+
DESCRIPTION
=======================================================================
@@ -277,6 +279,13 @@ miscellaneous
commas, e.g. ``--diagnose=files,permissions``.
Specify ``thorough`` to run all checks.
+--conf=FILE Read the configuration from *FILE*. See
+ **luaotfload.conf**\(%) for documentation
+ concerning the format and available options.
+--dumpconf Print the currently active configuration; the
+ output can be saved to a file and used for
+ bootstrapping a custom configuration files.
+
FILES
=======================================================================
@@ -297,7 +306,7 @@ them with the next run of *LuaTeX*.
SEE ALSO
=======================================================================
-**luatex** (1), **lua** (1)
+**luaotfload.conf**\(5), **luatex**\(1), **lua**\(1)
* ``texdoc luaotfload`` to display the manual for the *Luaotfload*
package
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload.conf.rst b/Master/texmf-dist/source/luatex/luaotfload/luaotfload.conf.rst
index 774095b5dec..d624e00f729 100644
--- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload.conf.rst
+++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload.conf.rst
@@ -6,9 +6,9 @@
Luaotfload configuration file
-----------------------------------------------------------------------
-:Date: 2014-06-09
+:Date: 2015-12-09
:Copyright: GPL v2.0
-:Version: 2.5
+:Version: 2.6
:Manual section: 5
:Manual group: text processing
@@ -55,7 +55,14 @@ along with lots of other information.
To observe the difference in behavior, save above snippet to
``./luaotfload.conf`` and update the font index: ::
- luaotfload --update --force
+ luaotfload-tool --update --force
+
+The current configuration can be written to disk using
+**luaotfload-tool**: ::
+
+ luaotfload-tool --dumpconf > luaotfload.conf
+
+The result can itself be used as a configuration file.
SYNTAX
@@ -91,8 +98,9 @@ VARIABLES
Variables in belong into a configuration section and their values must
be of a certain type. Some of them have further constraints. For
example, the “color callback” must be a string of one of the values
-``pre_linebreak_filter`` or ``pre_output_filter``, defined in the
-section *run*.
+``post_linebreak_filter``, ``pre_linebreak_filter``, or
+``pre_output_filter``, defined in the section *run* of the
+configuration file.
Currently, the configuration is organized into four sections:
@@ -260,7 +268,7 @@ Section ``run``
+------------------+--------+------------------------------+
| variable | type | default |
+------------------+--------+------------------------------+
-| color-callback | s | ``"pre_linebreak_filter"`` |
+| color-callback | s | ``"post_linebreak_filter"`` |
+------------------+--------+------------------------------+
| definer | s | ``"patch"`` |
+------------------+--------+------------------------------+
@@ -268,13 +276,19 @@ Section ``run``
+------------------+--------+------------------------------+
| resolver | s | ``"cached"`` |
+------------------+--------+------------------------------+
+| fontloader | s | ``"default"`` |
++------------------+--------+------------------------------+
The ``color-callback`` option determines the stage at which fonts that
defined with a ``color=xxyyzz`` feature will be colorized. By default
-this happens in a ``pre_linebreak_filter`` but alternatively the
-``pre_output_filter`` may be chosen, which is faster but might produce
-inconsistent output. The latter also was the default in the 1.x series
-of Luaotfload.
+this happens in a ``post_linebreak_filter`` but alternatively the
+``pre_linebreak_filter`` or ``pre_output_filter`` may be chosen, which
+is faster but might produce inconsistent output. The
+``pre_output_filter`` used to be the default in the 1.x series of
+Luaotfload, whilst later versions up to and including 2.5 hooked into
+the ``pre_linebreak_filter`` which naturally didn’t affect any glyphs
+inserting during hyphenation. Both are kept around as options to
+restore the previous behavior if necessary.
The ``definer`` allows for switching the ``define_font`` callback.
Apart from the default ``patch`` one may also choose the ``generic``
@@ -282,6 +296,31 @@ one that comes with the vanilla fontloader. Beware that this might
break tools like Fontspect that rely on the ``patch_font`` callback
provided by Luaotfload to perform important corrections on font data.
+The fontloader backend can be selected by setting the value of
+``fontloader``. The most important choices are ``default``, which will
+load the dedicated Luaotfload fontloader, and ``reference``, the
+upstream package as shipped with Luaotfload. Other than those, a file
+name accessible via kpathsea can be specified.
+
+Alternatively, the individual files that constitute the fontloader can
+be loaded directly. While less efficient, this greatly aids debugging
+since error messages will reference the actual line numbers of the
+source files and explanatory comments are not stripped. Currently,
+three distinct loading strategies are available: ``unpackaged`` will
+load the batch that is part of Luaotfload. These contain the identical
+source code that the reference fontloader has been compiled from.
+Another option, ``context`` will attempt to load the same files by
+their names in the Context format from the search path. Consequently
+this option allows to use the version of Context that comes with the
+TeX distribution. Distros tend to prefer the stable version (“current”
+in Context jargon) of those files so certain bugs encountered in the
+more bleeding edge Luaotfload can be avoided this way. A third option
+is to use ``context`` with a colon to specify a directory prefix where
+the *TEXMF* is located that the files should be loaded from, e. g.
+``context:~/context/tex/texmf-context``. This can be used when
+referencing another distribution like the Context minimals that is
+installed under a different path not indexed by kpathsea.
+
The value of ``log-level`` sets the default verbosity of messages
printed by Luaotfload. Only messages defined with a verbosity of less
than or equal to the supplied value will be output on the terminal.