summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2014-03-07 07:58:23 +0100
committerPhilipp Gesang <phg42.2a@gmail.com>2014-03-07 07:58:23 +0100
commit2e78a8e0594fc066cbca25459dc76e79f1c3f375 (patch)
treeedbd68543fed649f684000d35155796ebafb2f2c
parent2d4c42e2f033d767fa4d6065e6cc7cff36cfc4b7 (diff)
parent3ac343c10c8a02f7758eb75034e513d5509b584c (diff)
downloadluaotfload-2e78a8e0594fc066cbca25459dc76e79f1c3f375.tar.gz
Merge pull request #203 from phi-gamma/texlive2014
update docs
-rw-r--r--COPYING350
-rw-r--r--Makefile18
-rw-r--r--doc/luaotfload-latex.tex176
-rw-r--r--doc/luaotfload-main.tex1259
-rw-r--r--misc/valgrind-kpse-suppression.sup131
-rw-r--r--src/luaotfload-database.lua13
-rw-r--r--src/luaotfload-main.lua2
7 files changed, 1068 insertions, 881 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d769b3f
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,350 @@
+Context, where the fontloader Luaotfload is built around originates, is
+licensed under the GPL version 2.0 (exactly). As a derived work, anything
+Luaotflaod adds to that is also subject to the same license at the same
+version. The “any later version” clause as used by the FSF in the license text
+*does not apply* to either Context or Luaotfload, despite being kept around in
+the license text given below.
+
+-------------------------------------------------------------------------------
+ LICENSE TEXT BELOW
+-------------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Makefile b/Makefile
index a4b3fe7..2dc68bd 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,8 @@ SRC = $(wildcard $(SRCSRCDIR)/luaotfload-*.lua)
SRC += $(SRCSRCDIR)/luaotfload.sty
SRC += $(MISCDIR)/luaotfload-blacklist.cnf
+VGND = $(MISCDIR)/valgrind-kpse-suppression.sup
+
GLYPHSCRIPT = $(SCRIPTSRCDIR)/mkglyphlist
CHARSCRIPT = $(SCRIPTSRCDIR)/mkcharacters
STATUSSCRIPT = $(SCRIPTSRCDIR)/mkstatus
@@ -39,12 +41,12 @@ GLYPHS = $(BUILDDIR)/$(NAME)-glyphlist.lua
CHARS = $(BUILDDIR)/$(NAME)-characters.lua
STATUS = $(BUILDDIR)/$(NAME)-status.lua
RESOURCES = $(GLYPHS) $(CHARS) $(STATUS)
-SOURCE = $(DOCSRC) $(MANSRC) $(SRC) README Makefile NEWS $(RESOURCESCRIPTS)
+SOURCE = $(DOCSRC) $(MANSRC) $(SRC) README COPYING Makefile NEWS $(RESOURCESCRIPTS)
# Files grouped by installation location
SCRIPTSTATUS = $(TOOL) $(RESOURCESCRIPTS)
RUNSTATUS = $(filter-out $(SCRIPTSTATUS),$(SRC))
-DOCSTATUS = $(DOCPDF) $(DOTPDF) README NEWS
+DOCSTATUS = $(DOCPDF) $(DOTPDF) README NEWS COPYING
MANSTATUS = $(MANPAGE)
SRCSTATUS = $(DOCSRC) $(MANSRC) $(GRAPHSRC) Makefile
@@ -64,8 +66,10 @@ TEXMFROOT = $(shell kpsewhich --var-value TEXMFHOME)
# CTAN-friendly subdirectory for packaging
DISTDIR = $(BUILDDIR)/$(NAME)
-CTAN_ZIP = $(BUILDDIR)/$(NAME).zip
-TDS_ZIP = $(BUILDDIR)/$(NAME).tds.zip
+CTAN_ZIPFILE = $(NAME).zip
+TDS_ZIPFILE = $(NAME).tds.zip
+CTAN_ZIP = $(BUILDDIR)/$(CTAN_ZIPFILE)
+TDS_ZIP = $(BUILDDIR)/$(TDS_ZIPFILE)
ZIPS = $(CTAN_ZIP) $(TDS_ZIP)
LUA = texlua
@@ -116,17 +120,17 @@ $(BUILDDIR): /dev/null
define make-ctandir
@$(RM) -rf $(DISTDIR)
-@mkdir -p $(DISTDIR) && cp $(SOURCE) $(COMPILED) $(DISTDIR)
+@mkdir -p $(DISTDIR) && cp $(VGND) $(SOURCE) $(COMPILED) $(DISTDIR)
endef
$(CTAN_ZIP): $(DOCS) $(SOURCE) $(COMPILED) $(TDS_ZIP)
@echo "Making $@ for CTAN upload."
@$(RM) -- $@
$(make-ctandir)
- @zip -r -9 $@ $(TDS_ZIP) $(DISTDIR) >/dev/null
+ cd $(BUILDDIR) && zip -r -9 $(CTAN_ZIPFILE) $(TDS_ZIPFILE) $(NAME) >/dev/null
define run-install-doc
-@mkdir -p $(DOCDIR) && cp -- $(DOCSTATUS) $(DOCDIR)
+@mkdir -p $(DOCDIR) && cp -- $(DOCSTATUS) $(VGND) $(DOCDIR)
@mkdir -p $(SRCDIR) && cp -- $(SRCSTATUS) $(SRCDIR)
@mkdir -p $(MANDIR) && cp -- $(MANSTATUS) $(MANDIR)
endef
diff --git a/doc/luaotfload-latex.tex b/doc/luaotfload-latex.tex
index d00a617..42799bf 100644
--- a/doc/luaotfload-latex.tex
+++ b/doc/luaotfload-latex.tex
@@ -34,11 +34,11 @@
\makeatletter
-\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
-\usepackage[x11names]{xcolor}
+\usepackage {metalogo,multicol,mdwlist,fancyvrb,xspace}
+\usepackage [x11names] {xcolor}
-\def\primarycolor{DodgerBlue4} %%-> rgb 16 78 139 | #104e8b
-\def\secondarycolor{Goldenrod4} %%-> rgb 139 105 200 | #8b6914
+\def \primarycolor {DodgerBlue4} %%-> rgb 16 78 139 | #104e8b
+\def \secondarycolor {Goldenrod4} %%-> rgb 139 105 200 | #8b6914
\usepackage[
bookmarks=true,
@@ -46,14 +46,14 @@
linkcolor=\primarycolor,
urlcolor=\secondarycolor,
citecolor=\primarycolor,
- pdftitle={The luaotfload package},
+ pdftitle={The Luaotfload package},
pdfsubject={OpenType layout system for Plain TeX and LaTeX},
pdfauthor={Elie Roux & Khaled Hosny & Philipp Gesang},
pdfkeywords={luatex, lualatex, unicode, opentype}
]{hyperref}
-\usepackage{fontspec}
-\usepackage{unicode-math}
+\usepackage {fontspec}
+\usepackage {unicode-math}
\setmainfont[
% Numbers = OldStyle, %% buggy with font cache
@@ -89,12 +89,16 @@
\def\restoreunderscore{\catcode`\_=12\relax}
-\definehighlight [fileent][\ttfamily\restoreunderscore] %% files, dirs
-\definehighlight [texmacro][\sffamily\itshape\textbackslash] %% cs
-\definehighlight[luafunction][\sffamily\itshape\restoreunderscore] %% lua identifiers
-\definehighlight [identifier][\sffamily] %% names
-\definehighlight [abbrev][\rmfamily\scshape] %% acronyms
-\definehighlight [emphasis][\rmfamily\slshape] %% level 1 emph
+\definehighlight [fileent][\ttfamily\restoreunderscore] %% files, dirs
+\definehighlight [texmacro][\sffamily\itshape\textbackslash] %% cs
+\definehighlight [luafunction][\sffamily\itshape\restoreunderscore] %% lua identifiers
+\definehighlight [identifier][\sffamily] %% names
+\definehighlight [abbrev][\rmfamily\scshape] %% acronyms
+\definehighlight [emphasis][\rmfamily\slshape] %% level 1 emph
+
+\definehighlight [Largefont][\Large] %% font size
+\definehighlight [smallcaps][\sc] %% font feature
+\definehighlight [proportional][\tt] %% font switch
\newcommand*\email[1]{\href{mailto:#1}{#1}}
@@ -157,6 +161,22 @@
\def \fakesection #1{\section*{#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% inline verbatim
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Context offers both \type{…} and \type<<…>>, but not an unbalanced
+%% one that we could map directly onto Latex’s \verb|…|.
+
+\usepackage {listings}
+\lstset {
+ basicstyle=\ttfamily,
+}
+
+\def \inlinecode #1{%
+ \lstinline {#1}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% codelistings; this sucks hard since we lack access to buffers
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -203,6 +223,7 @@
\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
@@ -231,12 +252,10 @@
}
}
-\definelist [definitions]{\normalitem {\fileent {\first}}}
-\definelist [filelist]{\normalitem {\fileent {\first}}\space--\hskip 1em}
-\definelist [functionlist]{\normalitem {\luafunction {\first}}\hfill\break}
-
-\def \beginenumeration {\begin {enumerate}}
-\def \endenumeration {\end {enumerate}}
+\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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% columns
@@ -245,16 +264,12 @@
\def \begindoublecolumns {\begin {multicols} {2}}
\def \enddoublecolumns {\end {multicols}}
-\def \begintriplecolumns {\begin {multicols} {3}}
-\def \endtriplecolumns {\end {multicols}}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% alignment
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def \begincentered {\begin {center}}
\def \endcentered {\end {center}}
-\makeatother
\def \beginnarrower {\begin {quote}}
\def \endnarrower {\end {quote}}
@@ -266,10 +281,125 @@
\def \beginabstractcontent {\begin {abstract}}
\def \endabstractcontent {\end {abstract}}
+\let \setdocumenttitle \title
+\let \setdocumentdate \date
+\let \setdocumentauthor \author
+\let \typesetdocumenttitle \maketitle
+
+\let \typesetcontent \tableofcontent
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% floats
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% syntax definition
+\def \beginsyntaxfloat #1#2{%% #1:label #2:caption
+ \begin {figure} [b]
+ \edef \syntaxlabel {#1}%
+ \def \syntaxcaption {#2}%
+ \setlength\grammarparsep{12pt plus 2pt minus 2pt}%
+ \setlength\grammarindent{5cm}%
+ \begingroup
+ \small
+ \begin {grammar}
+}
+
+\def \endsyntaxfloat {%
+ \end {grammar}
+ \endgroup
+ \caption \syntaxcaption
+ \label \syntaxlabel
+ \end {figure}
+}
+
+%% figures, e.g. the file graph
+\def \beginfigurefloat #1#2{%% #1:label #2:caption
+ \begingroup
+ \begin {figure} [b]
+ \edef \figurelabel {#1}%
+ \caption {#2}%
+}
+
+\def \endfigurefloat {%
+ \label \figurelabel
+ \end {figure}
+ \endgroup
+}
+
+%% tables
+
+\def \begintablefloat #1#2{%% #1:label #2:caption
+ \begingroup
+ \begin {table} [t]
+ \hrule
+ \edef \floatlabel {#1}%
+ \caption {#2}%
+}
+
+\def \endtablefloat {%
+ \label \floatlabel
+ \hrule
+ \end {table}
+ \endgroup
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% hyperlinks
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\protected \def \hyperlink{%
+ \@ifnextchar[{\hyperlinkindeed}%
+ {\hyperlinkindeed[]}%
+}
+
+\def \hyperlinkindeed [#1]#2{%
+ \def \first {#1}%
+ \ifx \first \empty
+ \url {#2}%
+ \else
+ \href {#2}{#1}%
+ \fi%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% tables
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Our tables aren’t anything special so we stick with “tabular” on the
+%% Latex end.
+%%
+%% This is going to be largely incompatible with Context since format
+%% specifications work quite differently (even between different
+%% Context table variants).
+
+\def \begintabulate [#1]#2\endtabulate{%
+ \begingroup
+ \let \beginrow = \relax %% -> \NC in Context
+ \let \newcell = & %% -> \NC
+ \let \endrow = \cr %% -> \NC \NR
+ \begin {tabular}{#1}%
+ #2
+ \end {tabular}
+ \endgroup
+}
+
+\let \endtabulate \relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% escaped characters
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \charpercent \textpercent
+\let \charbackslash \textbackslash
+\let \chartilde \textasciitilde
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% main
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatother
+
\begin {document}
\input {luaotfload-main.tex}
\end {document}
diff --git a/doc/luaotfload-main.tex b/doc/luaotfload-main.tex
index f5a068d..0098405 100644
--- a/doc/luaotfload-main.tex
+++ b/doc/luaotfload-main.tex
@@ -29,21 +29,20 @@
%% ----------------------------------------------------------------------------
%%
-\title{The \identifier{luaotfload} package}
-\date{2014/**/** v2.5}
-\author{Elie Roux · Khaled Hosny · Philipp Gesang\\
- Home: \url {https://github.com/lualatex/luaotfload}\\
- Support: \email {lualatex-dev@tug.org}}
+\setdocumenttitle {The \identifier{luaotfload} package}
+\setdocumentdate {2014/**/** v2.5}
+\setdocumentauthor {Elie Roux · Khaled Hosny · Philipp Gesang\\
+ Home: \hyperlink {https://github.com/lualatex/luaotfload}\\
+ Support: \email {lualatex-dev@tug.org}}
-\maketitle
+\typesetdocumenttitle
\beginabstractcontent
- 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.
+ 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.
\endabstractcontent
-
\tableofcontents
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -63,10 +62,10 @@ These fonts can contain many more characters than \TEX fonts, as well
as additional functionality like ligatures, old-style numbers, small
capitals, etc., and support more complex writing systems like Arabic
and Indic\footnote{%
- Unfortunately, \identifier{luaotfload} doesn‘t support many Indic
- scripts right now.
- Assistance in implementing the prerequisites is greatly
- appreciated.
+ Unfortunately, \identifier{luaotfload} doesn‘t support many Indic
+ scripts right now.
+ Assistance in implementing the prerequisites is greatly
+ appreciated.
}
scripts.
@@ -128,11 +127,11 @@ in the task and willingness to respond to our suggestions.
\identifier{luaotfload} supports an extended font request syntax:
\beginnarrower
- |\font\foo={|%
- \meta{prefix}|:|%
- \meta{font name}|:|%
- \meta{font features}|}|%
- \meta{\TEX font features}
+ \inlinecode{\\font\\foo=\{}%
+ \meta{prefix}\inlinecode{:}%
+ \meta{font name}\inlinecode{:}%
+ \meta{font features}\inlinecode{\}}%
+ \meta{\TEX font features}
\endnarrower
\noindent
@@ -144,12 +143,28 @@ Alternatively, double quotes serve the same purpose.
A selection of individual parts of the syntax are discussed below;
for a more formal description see figure \ref{font-syntax}.
-\begin {figure} [b]
- \setlength\grammarparsep{12pt plus 2pt minus 2pt}
- \setlength\grammarindent{5cm}
- \begingroup
- \small
- \begin{grammar}
+\beginsyntaxfloat
+ {font-syntax}
+ {Font request syntax.
+ Braces or double quotes around the
+ \emphasis{specification} rule will
+ preserve whitespace in file names.
+ In addition to the font style modifiers
+ (\emphasis{slash-notation}) given above, there
+ are others that are recognized but will be silently
+ ignored: {\ttfamily aat},
+ {\ttfamily icu}, and
+ {\ttfamily gr}.
+ The special terminals are:
+ {\sc feature\textunderscore id} for a valid font
+ feature name and
+ {\sc feature\textunderscore value} for the corresponding
+ value.
+ {\sc tfmname} is the name of a \abbrev{tfm} file.
+ {\sc digit} again refers to bytes 48--57, and
+ {\sc all\textunderscore characters} to all byte values.
+ {\sc csname} and {\sc dimension} are the \TEX concepts.}
+%
<definition> ::= `\\font', {\sc csname}, `=', <font request>, [ <size> ] ;
<size> ::= `at', {\sc dimension} ;
@@ -187,29 +202,7 @@ for a more formal description see figure \ref{font-syntax}.
<feature switch> ::= `+' | `-' ;
<name character> ::= {\sc all_characters} - ( `(' | `/' | `:' ) ;
- \end{grammar}
- \endgroup
- \caption{Font request syntax.
- Braces or double quotes around the
- \emphasis{specification} rule will
- preserve whitespace in file names.
- In addition to the font style modifiers
- (\emphasis{slash-notation}) given above, there
- are others that are recognized but will be silently
- ignored: {\ttfamily aat},
- {\ttfamily icu}, and
- {\ttfamily gr}.
- The special terminals are:
- {\sc feature\textunderscore id} for a valid font
- feature name and
- {\sc feature\textunderscore value} for the corresponding
- value.
- {\sc tfmname} is the name of a \abbrev{tfm} file.
- {\sc digit} again refers to bytes 48--57, and
- {\sc all\textunderscore characters} to all byte values.
- {\sc csname} and {\sc dimension} are the \TEX concepts.}
- \label{font-syntax}
-\end {figure}
+\endsyntaxfloat
\beginsubsection{Prefix -- the \identifier{luaotfload}{ }Way}
@@ -217,29 +210,28 @@ In \identifier{luaotfload}, the canonical syntax for font requests
requires a \emphasis{prefix}:
%
\beginnarrower
- |\font\fontname=|\meta{prefix}|:|\meta{fontname}\dots
+ \inlinecode{\\font\\fontname=}\meta{prefix}\inlinecode{:}\meta{fontname}\dots
\endnarrower
%
-where \meta{prefix} is either \verb|file:| or \verb|name:|.\footnote{%
+where \meta{prefix} is either \inlinecode{file:} or \inlinecode {name:}.\footnote{%
The development version also knows two further prefixes,
- \verb|kpse:| and \verb|my:|.
- %
- A \verb|kpse| lookup is restricted to files that can be found by
+ \inlinecode {kpse:} and \inlinecode {my:}.
+ %
+ A \inlinecode {kpse} lookup is restricted to files that can be found by
\identifier{kpathsea} and
will not attempt to locate system fonts.
- %
+ %
This behavior can be of value when an extra degree of encapsulation is
needed, for instance when supplying a customized tex distribution.
- The \verb|my| lookup takes this a step further: it lets you define
+ 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}
callback.
- %
+ %
This ensures full control over how a file is located.
- %
+ %
For a working example see the
- \href{https://bitbucket.org/phg/lua-la-tex-tests/src/5f6a535d/pln-lookup-callback-1.tex}
- {test repo}.
+ \hyperlink [test repo]{https://bitbucket.org/phg/lua-la-tex-tests/src/5f6a535d/pln-lookup-callback-1.tex}.
}
%
It determines whether the font loader should interpret the request as
@@ -256,25 +248,24 @@ usually listed in drop-down menus and the like.\footnote{%
Font names may appear like a great choice at first because they
offer seemingly more intuitive identifiers in comparison to arguably
cryptic file names:
- %
+ %
“PT Sans Bold” is a lot more descriptive than \fileent{PTS75F.ttf}.
On the other hand, font names are quite arbitrary and there is no
universal method to determine their meaning.
- %
+ %
While \identifier{luaotfload} provides fairly sophisticated heuristic
to figure out a matching font style, weight, and optical size, it
cannot be relied upon to work satisfactorily for all font files.
- %
+ %
For an in-depth analysis of the situation and how broken font names
are, please refer to
- \href{http://www.ntg.nl/pipermail/ntg-context/2013/073889.html}
- {this post}
+ \hyperlink [this post]{http://www.ntg.nl/pipermail/ntg-context/2013/073889.html}
by Hans Hagen, the author of the font loader.
- %
+ %
If in doubt, use filenames.
- %
+ %
\fileent{luaotfload-tool} can perform the matching for you with the
- option \verb|--find=<name>|, and you can use the file name it returns
+ option \inlinecode {--find=<name>}, and you can use the file name it returns
in your font definition.
}
%
@@ -287,11 +278,11 @@ create the database.
File names are whatever your file system allows them to be, except
that that they may not contain the characters
- \verb|(|,
- \verb|:|, and
- \verb|/|.
+ \inlinecode {(},
+ \inlinecode {:}, and
+ \inlinecode {/}.
%
-As is obvious from the last exception, the \verb|file:| lookup will
+As is obvious from the last exception, the \inlinecode {file:} lookup will
not process paths to the font location -- only those
files found when generating the database are addressable this way.
%
@@ -299,9 +290,9 @@ Continue below in the \XETEX section if you need to load your fonts
by path.
%
The file names corresponding to the example font names above are
- \fileent{lmroman12-italic.otf},
- \fileent{GFSBodoni.otf}, and
- \fileent{PTZ56F.ttf}.
+ \fileent{lmroman12-italic.otf},
+ \fileent{GFSBodoni.otf}, and
+ \fileent{PTZ56F.ttf}.
\endsubsection
@@ -314,7 +305,7 @@ There are again two modes: bracketed and unbracketed.
A bracketed request looks as follows.
\beginnarrower
- |\font\fontname=[|\meta{path to file}|]|
+ \inlinecode{\\font\\fontname=[}\meta{path to file}\inlinecode{]}
\endnarrower
\noindent
@@ -322,10 +313,10 @@ Inside the square brackets, every character except for a closing
bracket is permitted, allowing for specifying paths to a font file.
%
Naturally, path-less file names are equally valid and processed the
-same way as an ordinary \verb|file:| lookup.
+same way as an ordinary \inlinecode {file:} lookup.
\beginnarrower
- |\font\fontname=|\meta{font name} \dots
+ \inlinecode{\\font\\fontname=}\meta{font name} \dots
\endnarrower
Unbracketed (or, for lack of a better word: \emphasis{anonymous})
@@ -335,22 +326,22 @@ 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}).
%
-If this fails, it performs a \verb|name:| lookup, which itself will
-fall back to a \verb|file:| lookup if no database entry matches
+If this fails, it performs a \inlinecode {name:} lookup, which itself will
+fall back to a \inlinecode {file:} lookup if no database entry matches
\meta{font name}.
Furthermore, \identifier{luaotfload} supports the slashed (shorthand)
font style notation from \XETEX.
\beginnarrower
- |\font\fontname=|\meta{font name}|/|\meta{modifier}\dots
+ \inlinecode{\\font\\fontname=}\meta{font name}\inlinecode{/}\meta{modifier}\dots
\endnarrower
\noindent
Currently, four style modifiers are supported:
- \verb|I| for italic shape,
- \verb|B| for bold weight,
- \verb|BI| or \verb|IB| for the combination of both.
+ \inlinecode {I} for italic shape,
+ \inlinecode {B} for bold weight,
+ \inlinecode {BI} or \inlinecode {IB} for the combination of both.
%
Other “slashed” modifiers are too specific to the \XETEX engine and
have no meaning in \LUATEX.
@@ -361,8 +352,8 @@ have no meaning in \LUATEX.
\beginsubsubsection{Loading by File Name}
-For example, conventional \abbrev{type1} font can be loaded with a \verb|file:|
-request like so:
+For example, conventional \abbrev{type1} font can be loaded with a
+\inlinecode {file:} request like so:
\beginlisting
\font \lmromanten = {file:ec-lmr10} at 10pt
@@ -370,7 +361,7 @@ request like so:
The \OpenType version of Janusz Nowacki’s font \emphasis{Antykwa
Półtawskiego}\footnote{%
- \url{http://jmn.pl/antykwa-poltawskiego/}, also available in
+ \hyperlink {http://jmn.pl/antykwa-poltawskiego/}, also available in
in \TEX Live.
}
in its condensed variant can be loaded as follows:
@@ -391,7 +382,7 @@ non-standard directory:
\beginsubsubsection{Loading by Font Name}
-The \verb|name:| lookup does not depend on cryptic filenames:
+The \inlinecode {name:} lookup does not depend on cryptic filenames:
\beginlisting
\font \pagellaregular = {name:TeX Gyre Pagella} at 9pt
@@ -425,14 +416,14 @@ Which fits nicely with the whole set:
\beginsubsubsection{Modifiers}
If the entire \emphasis{Iwona} family\footnote{%
- \url{http://jmn.pl/kurier-i-iwona/},
+ \hyperlink {http://jmn.pl/kurier-i-iwona/},
also in \TEX Live.
}
is installed in some location accessible by \identifier{luaotfload},
the regular shape can be loaded as follows:
\beginlisting
- \font\iwona=Iwona at 20pt
+ \font \iwona = Iwona at 20pt
\endlisting
\noindent
@@ -440,18 +431,18 @@ To load the most common of the other styles, the slash notation can
be employed as shorthand:
\beginlisting
- \font\iwonaitalic =Iwona/I at 20pt
- \font\iwonabold =Iwona/B at 20pt
- \font\iwonabolditalic=Iwona/BI at 20pt
+ \font \iwonaitalic = Iwona/I at 20pt
+ \font \iwonabold = Iwona/B at 20pt
+ \font \iwonabolditalic = Iwona/BI at 20pt
\endlisting
\noindent
which is equivalent to these full names:
\beginlisting
- \font\iwonaitalic ="Iwona Italic" at 20pt
- \font\iwonabold ="Iwona Bold" at 20pt
- \font\iwonabolditalic="Iwona BoldItalic" at 20pt
+ \font \iwonaitalic = "Iwona Italic" at 20pt
+ \font \iwonabold = "Iwona Bold" at 20pt
+ \font \iwonabolditalic = "Iwona BoldItalic" at 20pt
\endlisting
\endsubsubsection
@@ -466,10 +457,10 @@ which is equivalent to these full names:
general scheme for font requests:
\beginnarrower
- |\font\foo={|%
- \meta{prefix}|:|%
- \meta{font name}|:|%
- \meta{font features}|}|%
+ \inlinecode{\\font\\foo=\{}%
+ \meta{prefix}\inlinecode{:}%
+ \meta{font name}\inlinecode{:}%
+ \meta{font features}\inlinecode{\}}%
\meta{\TEX font features}
\endnarrower
@@ -479,277 +470,278 @@ If style modifiers are present (\XETEX style), they must precede
The element \meta{font features} is a semicolon-separated list of feature
tags\footnote{%
- Cf. \url{http://www.microsoft.com/typography/otspec/featurelist.htm}.
+ Cf. \hyperlink {http://www.microsoft.com/typography/otspec/featurelist.htm}.
}
and font options.
%
-Prepending a font feature with a |+| (plus sign) enables it, whereas
-a |-| (minus) disables it. For instance, the request
+Prepending a font feature with a \inlinecode{+} (plus sign) enables it,
+whereas a \inlinecode{-} (minus) disables it. For instance, the request
\beginlisting
- \font\test=LatinModernRoman:+clig;-kern
+ \font \test = LatinModernRoman:+clig;-kern
\endlisting
-\noindent activates contextual ligatures (|clig|) and disables
-kerning (|kern|).
+\noindent activates contextual ligatures (\inlinecode{clig}) and
+disables kerning (\inlinecode{kern}).
%
-Alternatively the options |true| or |false| can be passed to
-the feature in a key/value expression.
+Alternatively the options \inlinecode{true} or \inlinecode{false} can
+be passed to the feature in a key/value expression.
%
The following request has the same meaning as the last one:
\beginlisting
- \font\test=LatinModernRoman:clig=true;kern=false
+ \font \test = LatinModernRoman:clig=true;kern=false
\endlisting
\noindent
Furthermore, this second syntax is required should a font feature
accept other options besides a true/false switch.
%
-For example, \emphasis{stylistic alternates} (|salt|) are variants of
-given glyphs.
+For example, \emphasis{stylistic alternates} (\inlinecode{salt}) are
+variants of given glyphs.
%
They can be selected either explicitly by supplying the variant
index (starting from one), or randomly by setting the value to,
-obviously, |random|.
+obviously, \inlinecode{random}.
-%% TODO verify that this actually works with a font that supports
-%% the salt/random feature!\fi
+%% TODO verify that this actually works with a font that supports
+%% the salt/random feature!\fi
\beginlisting
- \font\librmsaltfirst=LatinModernRoman:salt=1
+ \font \librmsaltfirst = LatinModernRoman:salt=1
\endlisting
-\noindent Other font options include:
-
-\begin{description}
-
-\item [mode] \hfill \\
- \identifier{luaotfload} has two \OpenType processing
- \emphasis{modes}:
- \identifier{base} and \identifier{node}.
-
- \identifier{base} mode works by mapping \OpenType
- features to traditional \TEX ligature and kerning mechanisms.
- %
- Supporting only non-contextual substitutions and kerning
- pairs, it is the slightly faster, albeit somewhat limited, variant.
- %
- \identifier{node} mode works by processing \TeX’s internal
- node list directly at the \LUA end and supports
- a wider range of \OpenType features.
- %
- The downside is that the intricate operations required for
- \identifier{node} mode may slow down typesetting especially
- with complex fonts and it does not work in math mode.
-
- By default \identifier{luaotfload} is in \identifier{node}
- mode, and \identifier{base} mode has to be requested where needed,
- e.~g. for math fonts.
-
-\item [script] \label{script-tag} \hfill \\
- An \OpenType script tag;\footnote{%
- See \url{http://www.microsoft.com/typography/otspec/scripttags.htm}
- for a list of valid values.
- %
- For scripts derived from the Latin alphabet the value
- |latn| is good choice.
- }
- the default value is |dlft|.
- %
- Some fonts, including very popular ones by foundries like Adobe,
- do not assign features to the |dflt| script, in
- which case the script needs to be set explicitly.
-
-\item [language] \hfill \\
- An \OpenType language system identifier,\footnote{%
- Cf. \url{http://www.microsoft.com/typography/otspec/languagetags.htm}.
- }
- defaulting to |dflt|.
-
-\item [featurefile] \hfill \\
- A comma-separated list of feature files to be applied to the
- font.
- %
- Feature files contain a textual representation of
- \OpenType tables and extend the features of a font
- on fly.
- %
- After they are applied to a font, features defined in a
- feature file can be enabled or disabled just like any
- other font feature.
- %
- The syntax is documented in \identifier{Adobe}’s
- \OpenType Feature File Specification.\footnote{%
- Cf. \url{http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html}.
- Feature file support is part of the engine which at the
- time of this writing (2014) implements the spec only
- partially.
- See the
- \href{http://tracker.luatex.org/view.php?id=231}
- {\LUATEX tracker}
- for details.
- }
-
- For a demonstration of how to set a |tkrn| feature consult
- the file |tkrn.fea| that is part of \identifier{luaotfload}.
- It can be read and applied as follows:
-
- |\font\test=Latin Modern Roman:featurefile=tkrn.fea;+tkrn|
-
-\item [color] \hfill \\
- A font color, defined as a triplet of two-digit hexadecimal
- \abbrev{rgb} values, with an optional fourth value for
- transparency
- (where |00| is completely transparent and |FF| is opaque).
-
- For example, in order to set text in semitransparent red:
-
- \beginlisting
- \font\test={Latin Modern Roman}:color=FF0000BB
- \endlisting
-
-\item [kernfactor \& letterspace] \hfill \\
- Define a font with letterspacing (tracking) enabled.
- %
- In \identifier{luaotfload}, letterspacing is implemented by
- inserting additional kerning between glyphs.
-
- This approach is derived from and still quite similar to the
- \emphasis{character kerning} (\texmacro{setcharacterkerning} /
- \texmacro{definecharacterkerning} \& al.) functionality of
- Context, see the file \fileent{typo-krn.lua} there.
- %
- The main difference is that \identifier{luaotfload} does not
- use \LUATEX attributes to assign letterspacing to regions,
- but defines virtual letterspaced versions of a font.
-
- The option \identifier{kernfactor} accepts a numeric value that
- determines the letterspacing factor to be applied to the font
- size.
- %
- E.~g. a kern factor of $0.42$ applied to a $10$ pt font
- results in $4.2$ pt of additional kerning applied to each
- pair of glyphs.
- %
- Ligatures are split into their component glyphs unless
- explicitly ignored (see below).
-
- For compatibility with \XETEX an alternative
- \identifier{letterspace} option is supplied that interprets the
- supplied value as a \emphasis{percentage} of the font size but
- is otherwise identical to \identifier{kernfactor}.
- %
- Consequently, both definitions in below snippet yield the same
- letterspacing width:
-
- \beginlisting
- \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},
- respectively, inside the namespace \verb|luaotfload.letterspace|.
- %
- Both functions are called whenever the letterspacing callback
- encounters an appropriate node or set of nodes.
- %
- If they return a true-ish value, no extra kern is inserted at
- the current position.
- %
- \luafunction{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
- analyzed into components.
- %
- (For details refer to the \emphasis{glyph nodes} section in the
- \LUATEX reference manual.)
- %
- The implementation of both functions is left entirely to the
- user.
-
-
-\item [protrusion \& expansion] \hfill \\
- These keys control microtypographic features of the font,
- namely \emphasis{character protrusion} and \emphasis{font
- expansion}.
- %
- Their arguments are names of \LUA tables that contain
- values for the respective features.\footnote{%
- For examples of the table layout please refer to the
- section of the file \fileent{luaotfload-fonts-ext.lua} where the
- default values are defined.
- %
- Alternatively and with loss of information, you can dump
- those tables into your terminal by issuing
- \beginlisting
- \directlua{inspect(fonts.protrusions.setups.default)
- inspect(fonts.expansions.setups.default)}
- \endlisting
- at some point after loading \fileent{luaotfload.sty}.
- }
- %
- For both, only the set \identifier{default} is predefined.
-
- For example, to define a font with the default
- protrusion vector applied\footnote{%
- You also need to set
- \verb|pdfprotrudechars=2| and
- \verb|pdfadjustspacing=2|
- to activate protrusion and expansion, respectively.
- See the
- \href{http://mirrors.ctan.org/systems/pdftex/manual/pdftex-a.pdf}%
- {\PDFTEX manual}
- for details.
- }:
-
- \beginlisting
- \font\test=LatinModernRoman:protrusion=default
- \endlisting
-\end{description}
-
-\paragraph{Non-standard font features}
+\beginsubsection {Basic font features}
+
+\begindescriptions
+
+ \altitem {mode}
+ \identifier{luaotfload} has two \OpenType processing
+ \emphasis{modes}:
+ \identifier{base} and \identifier{node}.
+
+ \identifier{base} mode works by mapping \OpenType
+ features to traditional \TEX ligature and kerning mechanisms.
+ %
+ Supporting only non-contextual substitutions and kerning
+ pairs, it is the slightly faster, albeit somewhat limited, variant.
+ %
+ \identifier{node} mode works by processing \TeX’s internal
+ node list directly at the \LUA end and supports
+ a wider range of \OpenType features.
+ %
+ The downside is that the intricate operations required for
+ \identifier{node} mode may slow down typesetting especially
+ with complex fonts and it does not work in math mode.
+
+ By default \identifier{luaotfload} is in \identifier{node}
+ mode, and \identifier{base} mode has to be requested where needed,
+ e.~g. for math fonts.
+
+ \altitem {script} \label{script-tag}
+ An \OpenType script tag;\footnote{%
+ See \hyperlink {http://www.microsoft.com/typography/otspec/scripttags.htm}
+ for a list of valid values.
+ %
+ For scripts derived from the Latin alphabet the value
+ \inlinecode{latn} is good choice.
+ }
+ the default value is \inlinecode{dlft}.
+ %
+ Some fonts, including very popular ones by foundries like Adobe,
+ do not assign features to the \inlinecode{dflt} script, in
+ which case the script needs to be set explicitly.
+
+ \altitem {language}
+ An \OpenType language system identifier,\footnote{%
+ Cf. \hyperlink {http://www.microsoft.com/typography/otspec/languagetags.htm}.
+ }
+ defaulting to \inlinecode{dflt}.
+
+ \altitem {featurefile}
+ A comma-separated list of feature files to be applied to the
+ font.
+ %
+ Feature files contain a textual representation of
+ \OpenType tables and extend the features of a font
+ on fly.
+ %
+ After they are applied to a font, features defined in a
+ feature file can be enabled or disabled just like any
+ other font feature.
+ %
+ The syntax is documented in \identifier{Adobe}’s
+ \OpenType Feature File Specification.\footnote{%
+ Cf. \hyperlink {http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html}.
+ Feature file support is part of the engine which at the
+ time of this writing (2014) implements the spec only
+ partially.
+ See the
+ \hyperlink [\LUATEX tracker]{http://tracker.luatex.org/view.php?id=231}
+ for details.
+ }
+
+ For a demonstration of how to set a \inlinecode{tkrn} feature consult
+ 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}
+
+ \altitem {color}
+ A font color, defined as a triplet of two-digit hexadecimal
+ \abbrev{rgb} values, with an optional fourth value for
+ transparency
+ (where \inlinecode{00} is completely transparent and
+ \inlinecode{FF} is opaque).
+
+ For example, in order to set text in semitransparent red:
+
+ \beginlisting
+\font \test = "Latin Modern Roman:color=FF0000BB"
+ \endlisting
+
+ \altitem {kernfactor \& letterspace}
+ Define a font with letterspacing (tracking) enabled.
+ %
+ In \identifier{luaotfload}, letterspacing is implemented by
+ inserting additional kerning between glyphs.
+
+ This approach is derived from and still quite similar to the
+ \emphasis{character kerning} (\texmacro{setcharacterkerning} /
+ \texmacro{definecharacterkerning} \& al.) functionality of
+ Context, see the file \fileent{typo-krn.lua} there.
+ %
+ The main difference is that \identifier{luaotfload} does not
+ use \LUATEX attributes to assign letterspacing to regions,
+ but defines virtual letterspaced versions of a font.
+
+ The option \identifier{kernfactor} accepts a numeric value that
+ determines the letterspacing factor to be applied to the font
+ size.
+ %
+ E.~g. a kern factor of $0.42$ applied to a $10$ pt font
+ results in $4.2$ pt of additional kerning applied to each
+ pair of glyphs.
+ %
+ Ligatures are split into their component glyphs unless
+ explicitly ignored (see below).
+
+ For compatibility with \XETEX an alternative
+ \identifier{letterspace} option is supplied that interprets the
+ supplied value as a \emphasis{percentage} of the font size but
+ is otherwise identical to \identifier{kernfactor}.
+ %
+ Consequently, both definitions in below snippet yield the same
+ letterspacing width:
+
+ \beginlisting
+\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},
+ respectively, inside the namespace \inlinecode {luaotfload.letterspace}.
+ %
+ Both functions are called whenever the letterspacing callback
+ encounters an appropriate node or set of nodes.
+ %
+ If they return a true-ish value, no extra kern is inserted at
+ the current position.
+ %
+ \luafunction{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
+ analyzed into components.
+ %
+ (For details refer to the \emphasis{glyph nodes} section in the
+ \LUATEX reference manual.)
+ %
+ The implementation of both functions is left entirely to the
+ user.
+
+
+ \altitem {protrusion \& expansion}
+ These keys control microtypographic features of the font,
+ namely \emphasis{character protrusion} and \emphasis{font
+ expansion}.
+ %
+ Their arguments are names of \LUA tables that contain
+ values for the respective features.\footnote{%
+ For examples of the table layout please refer to the
+ section of the file \fileent{luaotfload-fonts-ext.lua} where the
+ default values are defined.
+ %
+ Alternatively and with loss of information, you can dump
+ those tables into your terminal by issuing
+ \beginlisting
+\directlua{inspect(fonts.protrusions.setups.default)
+ inspect(fonts.expansions.setups.default)}
+ \endlisting
+ at some point after loading \fileent{luaotfload.sty}.
+ }
+ %
+ For both, only the set \identifier{default} is predefined.
+
+ For example, to define a font with the default
+ protrusion vector applied\footnote{%
+ You also need to set
+ \inlinecode {pdfprotrudechars=2} and
+ \inlinecode {pdfadjustspacing=2}
+ to activate protrusion and expansion, respectively.
+ See the
+ \hyperlink [\PDFTEX manual]{http://mirrors.ctan.org/systems/pdftex/manual/pdftex-a.pdf}%
+ for details.
+ }:
+
+ \beginlisting
+\font \test = LatinModernRoman:protrusion=default
+ \endlisting
+\enddescriptions
+
+\endsubsection
+
+\beginsubsection {Non-standard font features}
\identifier{luaotfload} adds a number of features that are not defined
in the original \OpenType specification, most of them
aiming at emulating the behavior familiar from other \TEX engines.
%
Currently (2014) there are three of them:
-\begin{description}
+\begindescriptions
- \item [anum]
+ \altitem {anum}
Substitutes the glyphs in the \abbrev{ascii} number range
with their counterparts from eastern Arabic or Persian,
depending on the value of \identifier{language}.
- \item [tlig]
+ \altitem {tlig}
Applies legacy \TEX ligatures:
- \begin{tabular}{rlrl}
- `` & \verb|``| & '' & \verb|''| \\
- ` & \verb|`| & ' & \verb|'| \\
- " & \verb|"| & -- & \verb|--| \\
- --- & \verb|---| & !` & \verb|!`| \\
- ?` & \verb|?`| & & \\
- \end{tabular}
+ \begintabulate [rlrl]
+ \beginrow `` \newcell \inlinecode {``} \newcell '' \newcell \inlinecode {''} \endrow
+ \beginrow ` \newcell \inlinecode {`} \newcell ' \newcell \inlinecode {'} \endrow
+ \beginrow " \newcell \inlinecode {"} \newcell -- \newcell \inlinecode {--} \endrow
+ \beginrow --- \newcell \inlinecode {---} \newcell !` \newcell \inlinecode {!`} \endrow
+ \beginrow ?` \newcell \inlinecode {?`} \newcell \newcell \endrow
+ \endtabulate
\footnote{%
- These contain the feature set \verb|trep| of earlier
+ These contain the feature set \inlinecode {trep} of earlier
versions of \identifier{luaotfload}.
Note to \XETEX users: this is the equivalent of the
- assignment \verb|mapping=text-tex| using \XETEX's input
+ assignment \inlinecode {mapping=text-tex} using \XETEX's input
remapping feature.
}
- \item [itlc]
+ \altitem {itlc}
Computes italic correction values (active by default).
-\end{description}
-
+\enddescriptions
+\endsubsection
\endsection
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -764,9 +756,10 @@ fonts are available to \LUATEX by means of a \emphasis{database}.
This allows referring to fonts not only by explicit filenames but
also by the proper names contained in the metadata which is often
more accessible to humans.\footnote{%
- The tool \href{http://www.lcdf.org/type/}{\fileent{otfinfo}} (comes
- with \TEX Live), when invoked on a font file with the \verb|-i|
- option, lists the variety of name fields defined for it.
+ The tool \hyperlink[\fileent{otfinfo}]{http://www.lcdf.org/type/}
+ (comes with \TEX Live), when invoked on a font file with the
+ \inlinecode {-i} option, lists the variety of name fields defined for
+ it.
}
When \identifier{luaotfload} is asked to load a font by a font name,
@@ -791,7 +784,7 @@ This is particularly noticeable if it occurs during a typesetting run.
In any case, subsequent updates to the database will be quite fast.
\beginsubsection[luaotfload-tool]
- {\fileent{luaotfload-tool}}
+ {\fileent{luaotfload-tool}}
It can still be desirable at times to do some of these steps
manually, and without having to compile a document.
@@ -801,12 +794,11 @@ To this end, \identifier{luaotfload} comes with the utility
functionality.
%
Being a \LUA script, there are two ways to run it:
-either make it executable (\verb|chmod +x| on unixoid systems) or
+either make it executable (\inlinecode {chmod +x} on unixoid systems) or
pass it as an argument to \fileent{texlua}.\footnote{%
Tests by the maintainer show only marginal performance gain by
running with Luigi Scarso’s
- \href{https://foundry.supelec.fr/projects/luajittex/}%
- {\identifier{Luajit\kern-.25ex\TEX}},
+ \hyperlink [\identifier{Luajit\kern-.25ex\TEX}]{https://foundry.supelec.fr/projects/luajittex/},
which is probably due to the fact that most of the time is spent
on file system operations.
@@ -814,21 +806,21 @@ pass it as an argument to \fileent{texlua}.\footnote{%
On \abbrev{MS} \identifier{Windows} systems, the script can be run
either by calling the wrapper application
\fileent{luaotfload-tool.exe} or as
- \verb|texlua.exe luaotfload-tool.lua|.
+ \inlinecode {texlua.exe luaotfload-tool.lua}.
}
%
-Invoked with the argument \verb|--update| it will perform a database
+Invoked with the argument \inlinecode {--update} it will perform a database
update, scanning for fonts not indexed.
\beginlisting
- luaotfload-tool --update
+ luaotfload-tool --update
\endlisting
-Adding the \verb|--force| switch will initiate a complete
+Adding the \inlinecode {--force} switch will initiate a complete
rebuild of the database.
\beginlisting
- luaotfload-tool --update --force
+ luaotfload-tool --update --force
\endlisting
Whenever it is run under this name, it will update the database
first, mimicking the behavior of earlier versions of
@@ -843,43 +835,41 @@ expected to be located on a given system.
%
On a Linux machine it follows the paths listed in the
\identifier{Fontconfig} configuration files;
-consult \verb|man 5 fonts.conf| for further information.
+consult \inlinecode {man 5 fonts.conf} for further information.
%
On \identifier{Windows} systems, the standard location is
-\verb|Windows\Fonts|,
+\inlinecode {Windows\\Fonts},
%
while \identifier{Mac OS~X} requires a multitude of paths to
be examined.
%
The complete list is is given in table \ref{table-searchpaths}.
Other paths can be specified by setting the environment variable
-\verb+OSFONTDIR+.
+\inlinecode {OSFONTDIR}.
%
If it is non-empty, then search will be extended to the included
directories.
-\begin{table}[t]
- \hrule
- \caption{List of paths searched for each supported operating
- system.}
- \renewcommand{\arraystretch}{1.2}
- \begincentered
- \begin{tabular}{lp{.5\textwidth}}
- Windows & \verb|%WINDIR%\Fonts|
- \\
- Linux & \fileent{/usr/local/etc/fonts/fonts.conf} and\hfill\break
- \fileent{/etc/fonts/fonts.conf}
- \\
- Mac & \fileent{\textasciitilde/Library/Fonts},\break
- \fileent{/Library/Fonts},\break
- \fileent{/System/Library/Fonts}, and\hfill\break
- \fileent{/Network/Library/Fonts}
- \\
- \end{tabular}
- \endcentered
- \label{table-searchpaths}
- \hrule
-\end{table}
+\begintablefloat {table-searchpaths}
+ {List of paths searched for each supported operating system.}
+ \begincentered
+ \begintabulate [lp{.5\textwidth}]
+ \beginrow
+ Windows \newcell \inlinecode {\% WINDIR\%\\ Fonts}
+ \endrow
+ \beginrow
+ Linux \newcell \fileent{/usr/local/etc/fonts/fonts.conf} and\hfill\break
+ \fileent{/etc/fonts/fonts.conf}
+ \endrow
+ \beginrow
+ Mac \newcell \fileent{\textasciitilde/Library/Fonts},\break
+ \fileent{/Library/Fonts},\break
+ \fileent{/System/Library/Fonts}, and\hfill\break
+ \fileent{/Network/Library/Fonts}
+ \endrow
+ \endtabulate
+ \endcentered
+\endtablefloat
\endsubsection
@@ -888,14 +878,14 @@ directories.
\fileent{luaotfload-tool} also provides rudimentary means of
accessing the information collected in the font database.
%
-If the option \verb|--find=|\emphasis{name} is given, the script will
+If the option \inlinecode {--find=}\emphasis{name} is given, the script will
try and search the fonts indexed by \identifier{luaotfload} for a
matching name.
%
For instance, the invocation
\beginlisting
- luaotfload-tool --find="Iwona Regular"
+ luaotfload-tool --find="Iwona Regular"
\endlisting
\noindent
@@ -903,7 +893,7 @@ will verify if “Iwona Regular” is found in the database and can be
readily requested in a document.
If you are unsure about the actual font name, then add the
-\verb|-F| (or \verb|--fuzzy|) switch to the command line to enable
+\inlinecode {-F} (or \inlinecode {--fuzzy}) switch to the command line to enable
approximate matching.
%
Suppose you cannot precisely remember if the variant of
@@ -911,17 +901,17 @@ Suppose you cannot precisely remember if the variant of
The query
\beginlisting
- luaotfload-tool -F --find="Iwona Bright"
+ luaotfload-tool -F --find="Iwona Bright"
\endlisting
\noindent
will tell you that indeed the latter name is correct.
Basic information about fonts in the database can be displayed
-using the \verb|-i| option (\verb|--info|).
+using the \inlinecode {-i} option (\inlinecode {--info}).
%
\beginlisting
- luaotfload-tool -i --find="Iwona Light Italic"
+ luaotfload-tool -i --find="Iwona Light Italic"
\endlisting
%
\noindent
@@ -930,19 +920,19 @@ The meaning of the printed values is described in section 4.4 of the
In \TEX Live: \fileent{texmf-dist/doc/luatex/base/luatexref-t.pdf}.
}
-For a much more detailed report about a given font try the \verb|-I| option
-instead (\verb|--inspect|).
+For a much more detailed report about a given font try the
+\inlinecode {-I} option instead (\inlinecode {--inspect}).
\beginlisting
- luaotfload-tool -I --find="Iwona Light Italic"
+ luaotfload-tool -I --find="Iwona Light Italic"
\endlisting
-\verb|luaotfload-tool --help| will list the available command line
+\inlinecode {luaotfload-tool --help} will list the available command line
switches, including some not discussed in detail here.
%
For a full documentation of \identifier{luaotfload-tool} and its
capabilities refer to the manpage
-(\verb|man 1 luaotfload-tool|).\footnote{%
- Or see \verb|luaotfload-tool.rst| in the source directory.
+(\inlinecode {man 1 luaotfload-tool}).\footnote{%
+ Or see \inlinecode {luaotfload-tool.rst} in the source directory.
}
\endsubsection
@@ -954,7 +944,7 @@ Some fonts are problematic in general, or just in \LUATEX.
%
If you find that compiling your document takes far too long or eats
away all your system’s memory, you can track down the culprit by
-running \verb|luaotfload-tool -v| to increase verbosity.
+running \inlinecode {luaotfload-tool -v} to increase verbosity.
%
Take a note of the \emphasis{filename} of the font that database
creation fails with and append it to the file
@@ -966,14 +956,14 @@ plain filename should suffice.
%
File extensions (\fileent{.otf}, \fileent{.ttf}, etc.) may be omitted.
%
-Anything after a percent (|%|) character until the end of the line
+Anything after a percent (\inlinecode {\%}) character until the end of the line
is ignored, so use this to add comments.
%
Place this file to some location where the \identifier{kpse}
library can find it, e.~g.
\fileent{texmf-local/tex/luatex/luaotfload} if you are running
\identifier{\TEX Live},\footnote{%
- You may have to run \verb|mktexlsr| if you created a new file in
+ You may have to run \inlinecode {mktexlsr} if you created a new file in
your \fileent{texmf} tree.
}
or just leave it in the working directory of your document.
@@ -982,7 +972,7 @@ or just leave it in the working directory of your document.
\fileent{luaotfload-blacklist.cnf} it finds, so the fonts in
\fileent{./luaotfload-blacklist.cnf} extend the global blacklist.
-Furthermore, a filename prepended with a dash character (|-|) is
+Furthermore, a filename prepended with a dash character (\inlinecode{-}) is
removed from the blacklist, causing it to be temporarily whitelisted
without modifying the global file.
%
@@ -1003,11 +993,8 @@ An example with explicit paths:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\identifier{luaotfload} relies on code originally written by Hans
-Hagen\footnote{%
- The creator of the \href{http://wiki.contextgarden.net}{\CONTEXT}
- format.
-}
-for and tested with \CONTEXT.
+Hagen for the \hyperlink[\identifier\CONTEXT]{http://wiki.contextgarden.net}
+format.
%
It integrates the font loader as distributed in
the \identifier{\LUATEX-Fonts} package.
@@ -1045,12 +1032,10 @@ 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
- \href
- {http://repo.or.cz/w/context.git/blob_plain/refs/heads/origin:/scripts/context/lua/mtx-package.lua}
- {part of \CONTEXT}
+ \hyperlink [part of \CONTEXT]{http://repo.or.cz/w/context.git/blob_plain/refs/heads/origin:/scripts/context/lua/mtx-package.lua}
and requires \fileent{mtxrun}.
Run
- \verb|mtxrun --script package --help|
+ \inlinecode {mtxrun --script package --help}
to display further information.
For the actual merging code see the file
\fileent{util-mrg.lua} that is part of \CONTEXT.
@@ -1063,22 +1048,22 @@ categories.
of what is provided by the \identifier{lualibs}
package.
- \begindoublecolumns
- \begindefinitions
- \altitem{l-lua.lua} \altitem{l-lpeg.lua}
- \altitem{l-function.lua} \altitem{l-string.lua}
- \altitem{l-table.lua} \altitem{l-io.lua}
- \altitem{l-file.lua} \altitem{l-boolean.lua}
- \altitem{l-math.lua} \altitem{util-str.lua}
- \enddefinitions
- \enddoublecolumns
+ \begindoublecolumns
+ \begindefinitions
+ \altitem{l-lua.lua} \altitem{l-lpeg.lua}
+ \altitem{l-function.lua} \altitem{l-string.lua}
+ \altitem{l-table.lua} \altitem{l-io.lua}
+ \altitem{l-file.lua} \altitem{l-boolean.lua}
+ \altitem{l-math.lua} \altitem{util-str.lua}
+ \enddefinitions
+ \enddoublecolumns
\normalitem The \emphasis{font loader} itself.
These files have been written for
\LUATEX-Fonts and they are distributed along
with \identifier{luaotfload}.
- \begindoublecolumns
- \begindefinitions
+ \begindoublecolumns
+ \begindefinitions
\altitem{luatex-basics-gen.lua}
\altitem{luatex-basics-nod.lua}
\altitem{luatex-fonts-enc.lua}
@@ -1091,22 +1076,22 @@ categories.
\altitem{luatex-fonts-def.lua}
\altitem{luatex-fonts-ext.lua}
\altitem{luatex-fonts-cbk.lua}
- \enddefinitions
- \enddoublecolumns
+ \enddefinitions
+ \enddoublecolumns
\normalitem Code related to \emphasis{font handling and
node processing}, taken directly from
\CONTEXT.
- \begindoublecolumns
- \begindefinitions
+ \begindoublecolumns
+ \begindefinitions
\altitem{data-con.lua} \altitem{font-ini.lua}
\altitem{font-con.lua} \altitem{font-cid.lua}
\altitem{font-map.lua} \altitem{font-oti.lua}
\altitem{font-otf.lua} \altitem{font-otb.lua}
\altitem{font-ota.lua} \altitem{font-def.lua}
\altitem{font-otp.lua}
- \enddefinitions
- \enddoublecolumns
+ \enddefinitions
+ \enddoublecolumns
\enddefinitions
Note that if \identifier{luaotfload} cannot locate the
@@ -1114,7 +1099,7 @@ merged file, it will load the individual \LUA libraries
instead.
%
Their names remain the same as in \CONTEXT (without the
-\verb|otfl|-prefix) since we imported the relevant section of
+\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
@@ -1155,11 +1140,11 @@ files not contained in the merge. Some of these have no equivalent in
\altitem {luaotfload-letterspace.lua} font-based letterspacing.
\endfilelist
-\begin{figure}[b]
- \caption{Schematic of the files in \identifier{Luaotfload}}
+\beginfigurefloat
+ {file-graph}
+ {Schematic of the files in \identifier{Luaotfload}}
\includegraphics[width=\textwidth]{filegraph.pdf}
- \label{file-graph}
-\end{figure}
+\endfigurefloat
\endsection
@@ -1222,7 +1207,7 @@ writes an entire font object to the file \fileent{fontdump.lua}:
"my_private_callbacks.dump_font"
)
}
- \font\dumpme=name:Iwona
+ \font \dumpme = name:Iwona
\bye
\endlisting
@@ -1325,14 +1310,14 @@ are defined for which scripts.
%% not implemented, may come back later
% \beginsubsubsection{Database}
-%
+%
% \beginfunctionlist
% \altitem {aux.scan_external_dir(dir : string)}
% Include fonts in directory \luafunction{dir} in font lookups without
% adding them to the database.
-%
+%
% \endfunctionlist
-%
+%
% \endsubsubsection
\endsubsection
@@ -1350,7 +1335,7 @@ latest version of this package before reporting a bug, as
target.
%
The development takes place on \identifier{github} at
-\url{https://github.com/lualatex/luaotfload} where there is an issue
+\hyperlink {https://github.com/lualatex/luaotfload} where there is an issue
tracker for submitting bug reports, feature requests and the likes
requests and the likes.
@@ -1376,7 +1361,7 @@ verbosity level and redirecting log output to \fileent{stdout}:
luaotfload-tool -fuvvv --log=file
\endlisting
-\noindent In the latter case, invoke the \verb|tail(1)| utility on the
+\noindent In the latter case, invoke the \inlinecode {tail(1)} utility on the
file for live monitoring of the progress.
If database generation fails, the font last printed to the terminal or
@@ -1393,16 +1378,16 @@ A common problem is the lack of features for some
\OpenType fonts even when specified.
%
This can be related to the fact that some fonts do not provide features
-for the \verb|dflt| script (see above on page \pageref{script-tag}),
+for the \inlinecode {dflt} script (see above on page \pageref{script-tag}),
which is the default one in this package.
%
If this happens, assigning a noth script when the font is defined should
fix it.
%
-For example with \verb|latn|:
+For example with \inlinecode {latn}:
\beginlisting
- \font\test=file:MyFont.otf:script=latn;+liga;
+ \font \test = file:MyFont.otf:script=latn;+liga;
\endlisting
You can get a list of features that a font defines for scripts and
@@ -1461,435 +1446,23 @@ In this case, best define you own accessor:
\endsubsection
\endsection
-\clearpage
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\beginsection {The GNU GPL License v2}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-The GPL requires the complete license text to be distributed along
-with the code. I recommend the canonical source, instead:
-\url{http://www.gnu.org/licenses/old-licenses/gpl-2.0.html}.
-But if you insist on an included copy, here it is.
-You might want to zoom in.
-
-\newsavebox{\gpl}
-\begin{lrbox}{\gpl}
-\begin{minipage}{3\textwidth}
-\columnsep=3\columnsep
-\begintriplecolumns
-\begincentered
- {\Large GNU GENERAL PUBLIC LICENSE\par}
- \bigskip
- {Version 2, June 1991}
-
- {\parindent 0in
-
- Copyright \textcopyright\ 1989, 1991 Free Software Foundation, Inc.
-
- \bigskip
-
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
- \bigskip
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
- }
-
- {\bf\large Preamble}
-\endcentered
-
-
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software---to
-make sure the software is free for all its users. This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it. (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have. You
-must make sure that they, too, receive or can get the source code. And
-you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary. To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-\begincentered
- {\Large \sc Terms and Conditions For Copying, Distribution and
- Modification}
-\endcentered
-
-\beginenumeration
-\item
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License. The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-\item You may copy and distribute verbatim copies of the Program's source
- code as you receive it, in any medium, provided that you conspicuously
- and appropriately publish on each copy an appropriate copyright notice
- and disclaimer of warranty; keep intact all the notices that refer to
- this License and to the absence of any warranty; and give any other
- recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-\item
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-\beginenumeration
-
-\item
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-\item
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-\item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License. (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-\endenumeration
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-\item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-\beginenumeration
-
-\item
-
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-\item
-
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-\item
-
-Accompany it with the information you received as to the offer
-to distribute corresponding source code. (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-\endenumeration
-
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-\item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-\item
-You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-\item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-\item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-\item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-\item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-\item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-\begincentered
- {\Large\sc No Warranty}
-\endcentered
-
-\item
-{\sc Because the program is licensed free of charge, there is no warranty
-for the program, to the extent permitted by applicable law. Except when
-otherwise stated in writing the copyright holders and/or other parties
-provide the program ``as is'' without warranty of any kind, either expressed
-or implied, including, but not limited to, the implied warranties of
-merchantability and fitness for a particular purpose. The entire risk as
-to the quality and performance of the program is with you. Should the
-program prove defective, you assume the cost of all necessary servicing,
-repair or correction.}
-
-\item
-{\sc In no event unless required by applicable law or agreed to in writing
-will any copyright holder, or any other party who may modify and/or
-redistribute the program as permitted above, be liable to you for damages,
-including any general, special, incidental or consequential damages arising
-out of the use or inability to use the program (including but not limited
-to loss of data or data being rendered inaccurate or losses sustained by
-you or third parties or a failure of the program to operate with any other
-programs), even if such holder or other party has been advised of the
-possibility of such damages.}
-
-\endenumeration
-
-
-\begincentered
- {\Large\sc End of Terms and Conditions}
-\endcentered
-
-
-\pagebreak[2]
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\fakesection {Appendix: How to Apply These Terms to Your New Programs}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is safest to
- attach them to the start of each source file to most effectively convey
- the exclusion of warranty; and each file should have at least the
- ``copyright'' line and a pointer to where the full notice is found.
-
-\beginnarrower
- one line to give the program's name and a brief idea of what it does. \\
- Copyright (C) yyyy name of author \\
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-\endnarrower
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-\beginnarrower
- Gnomovision version 69, Copyright (C) yyyy name of author \\
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. \\
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-\endnarrower
-
-
-The hypothetical commands {\tt show w} and {\tt show c} should show the
-appropriate parts of the General Public License. Of course, the commands
-you use may be called something other than {\tt show w} and {\tt show c};
-they could even be mouse-clicks or menu items---whatever suits your
-program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary. Here is a sample; alter the names:
-
-\beginnarrower
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program \\
-`Gnomovision' (which makes passes at compilers) written by James Hacker. \\
-
-signature of Ty Coon, 1 April 1989 \\
-Ty Coon, President of Vice
-\endnarrower
-
-
-This General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications
-with the library. If this is what you want to do, use the GNU Library
-General Public License instead of this License.
-
-\endtriplecolumns
-\end{minipage}
-\end{lrbox}
-
-\begincentered
- \scalebox{0.33}{\usebox{\gpl}}
-\endcentered
+\beginsection {License}
+
+\identifier {luaotfload} is licensed under the terms of the
+\hyperlink [GNU General Public License version 2.0]%
+ {https://www.gnu.org/licenses/old-licenses/gpl-2.0.html}.
+Following the underlying fontloader code \identifier {luaotfload}
+recognizes only that exact version as its license.
+The „any later version” clause of the original license text as
+copyrighted by the \hyperlink [Free Software Foundation]{http://www.fsf.org/}
+\emphasis {does not apply} to either \identifier {luaotfload} or the
+code imported from \CONTEXT.
+
+The complete text of the license is given as a separate file \fileent
+{COPYING} in the toplevel directory of the
+\hyperlink [\fileent {Luaotfload} Git repository]{https://github.com/lualatex/luaotfload/blob/master/COPYING}.
+Distributions probably package it as \fileent
+{doc/luatex/luaotfload/COPYING} in the relevant \fileent {texmf} tree.
\endsection
diff --git a/misc/valgrind-kpse-suppression.sup b/misc/valgrind-kpse-suppression.sup
new file mode 100644
index 0000000..e1cc5f5
--- /dev/null
+++ b/misc/valgrind-kpse-suppression.sup
@@ -0,0 +1,131 @@
+{
+ kpathsea-garbage-1
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpathsea_cnf_get
+}
+
+{
+ kpathsea-garbage-2
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpse_program_basename
+}
+
+
+{
+ kpathsea-garbage-3
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpse_find_file
+}
+
+
+{
+ kpathsea-garbage-4
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:find_file
+}
+
+{
+ kpathsea-garbage-5
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:lua_kpse_lookup
+}
+
+{
+ kpathsea-garbage-6
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:find_file
+}
+
+
+{
+ kpathsea-garbage-7
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:expand_path
+}
+
+{
+ kpathsea-garbage-8
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:do_lua_kpathsea_lookup
+}
+
+
+{
+ kpathsea-garbage-9
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpathsea_find_file
+}
+
+
+{
+ kpathsea-garbage-10
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpathsea_init_db
+}
+
+
+{
+ kpathsea-garbage-11
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpathsea_find_file_generic
+}
+
+
+{
+ kpathsea-garbage-12
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:expand_var
+}
+
+
+{
+ kpathsea-garbage-13
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:init_path
+}
+
+
+{
+ kpathsea-garbage-14
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpse_in_name_ok
+}
+
+
+{
+ kpathsea-garbage-15
+ Memcheck:Leak
+ match-leak-kinds: definite
+ ...
+ fun:kpathsea_var_value
+}
+
+
diff --git a/src/luaotfload-database.lua b/src/luaotfload-database.lua
index 923f7c5..54738df 100644
--- a/src/luaotfload-database.lua
+++ b/src/luaotfload-database.lua
@@ -1346,6 +1346,7 @@ end --- find_closest()
local load_font_file = function (filename, subfont)
local rawfont, _msg = fontloaderopen (filename, subfont)
+ --local rawfont, _msg = fontloaderinfo (filename, subfont)
if not rawfont then
report ("log", 1, "db", "ERROR: failed to open %s.", filename)
return
@@ -1406,12 +1407,13 @@ end
--]]--
local get_raw_info = function (metadata, basename)
local fullname
- local fontname
+ local fontname = metadata.fontname
+ local fullname = metadata.fullname
local psname
local validation_state = metadata.validation_state
- if validation_state
- and tablecontains (validation_state, "bad_ps_fontname")
+ if (validation_state and tablecontains (validation_state, "bad_ps_fontname"))
+ or not fontname
then
--- Broken names table, e.g. avkv.ttf with UTF-16 strings;
--- we put some dummies in place like the fontloader
@@ -1421,9 +1423,6 @@ local get_raw_info = function (metadata, basename)
basename)
fontname = "bad-fontname-" .. basename
fullname = "bad-fullname-" .. basename
- else
- fontname = metadata.fontname
- fullname = metadata.fullname
end
return {
@@ -1541,7 +1540,7 @@ local organize_styledata = function (fontname,
metadata,
english_names,
info)
- local pfminfo = metadata.pfminfo
+ local pfminfo = metadata.pfminfo or { }
local names = metadata.names
return {
diff --git a/src/luaotfload-main.lua b/src/luaotfload-main.lua
index ed7fdd3..3c4c770 100644
--- a/src/luaotfload-main.lua
+++ b/src/luaotfload-main.lua
@@ -61,7 +61,7 @@ config.luaotfload.index_file = config.luaotfload.index_file or "luaot
config.luaotfload.formats = config.luaotfload.formats or "otf,ttf,ttc,dfont"
config.luaotfload.scan_local = config.luaotfload.scan_local == true
-if not config.luaotfload.strip then
+if config.luaotfload.strip == nil then
config.luaotfload.strip = true
end