diff options
-rw-r--r-- | luaotfload.dtx | 129 |
1 files changed, 79 insertions, 50 deletions
diff --git a/luaotfload.dtx b/luaotfload.dtx index 3f5d59d..fae456b 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -102,7 +102,7 @@ and the derived files \ProvidesFile{luaotfload.drv}% [2010/04/01 v1.07 ConTeXt font loading system]% \documentclass{ltxdoc} -\usepackage{metalogo} +\usepackage{metalogo,multicol,mdwlist} \usepackage[colorlinks=true]{hyperref} \def\LuaTeX{Lua\TeX} @@ -138,13 +138,14 @@ and the derived files % % \title{The \textsf{luaotfload} package} % \date{2010/04/01 v1.07} -% \author{Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}} +% \author{ Elie Roux \footnote{\texttt{elie.roux@telecom-bretagne.eu}} +% \and Khaled hosny \footnote{\texttt{khaledhosny@eglug.org}}} % % \maketitle % % \begin{abstract} -% \ConTeXt font loading system, providing the possibility to load OTF fonts -% with a lot of features, and the \XeTeX\ font loading syntax. +% \ConTeXt\ font loading system, providing the possibility to load OTF fonts +% with a lot of features, and extended font loading syntax. % \end{abstract} % % \tableofcontents @@ -154,10 +155,10 @@ and the derived files % \subsection{Introduction} % % Font management and installation has always been painful with \TeX\ (and -% even more with \LaTeX ). A lot of files are needed for one font (tfm, pfb, +% even more with \LaTeX). A lot of files are needed for one font (tfm, pfb, % map, fd, vf), and they are limited to 256 characters. But the font world has % evolved since, and new standard types of fonts have appeared, like -% \textsf{truetype} or \textsf{opentype} fonts. These fonts can contain a lot +% \textsf{TrueType} and \textsf{OpenType} fonts. These fonts can contain a lot % of characters, and have some functionalities (ligatures, old-style numbers, % small capitals, etc.). They are everywhere, as the system fonts and most % modern text softwares fonts are of this type. Until now the (almost) only @@ -174,55 +175,81 @@ and the derived files % % \subsection{Loading fonts} % -% \textsf{luaotfload} supports \XeTeX -like font syntax which looks like: +% \textsf{luaotfload} supports an extended font loading syntax which looks like: % % \begin{center} -% |\font\foo="|\meta{prefix}|:|\meta{font name}|:|\meta{font features}|"| \meta{\TeX\ font features} +% |\font\foo={|\meta{prefix}|:|\meta{font name}|:|\meta{font features}|}| \meta{\TeX\ font features} % \end{center} % -% \subsubsection{Prefix} +% The curly brackets are optional and are used for escaping spaces in font names +% (\XeTeX-like double quotes can also used for the same purpose). % -% Prefixes are either |file| or |name|; |file| prefix forces searching font -% based on filename, while a |name| prefix will result in consulting name -% database. Name database can be generated with |mkluatexfontdb.lua| script -% shipped with \textsf{luaotfload}, run |mkluatexfontdb.lua --help| for more -% details. +% \paragraph{Prefix} % -% \subsubsection{Font name} +% Can be either \texttt{file:} or \texttt{name:} and are used to select between filename based +% or font name based search mechanisms. +% Loading fonts based on filename is restricted to files found by \textsf{kpathsea} +% (typically in the \textsc{texmf} tree). Surrounding font name with square +% brackets is synonym to using \texttt{file:} prefix (for compatibility with \XeTeX). +% This is usually used for loading old \textsc{tfm} fonts. +% Accessing fonts by fontname allows loading system installed fonts as well as +% \textsc{texmf} ones, and requires a font names database that can be generated +% using the bundled |mkluatexfontdb.lua| script. +% \footnote{run |mkluatexfontdb.lua --help| for help and usage information} % -% Font name can be either a font filename or actual font name. If no prefix is -% specified; it is assumed to be a filename. \XeTeX-like syntax of using square -% brackets to select fonts from \textsc{texmf} tree is olso supported; -% |\font\foo=[foo.ttf]:+liga|. +% If no prefix is specified, then \texttt{file:} is assumed. % -% \subsubsection{Font features} +% \paragraph{Font name} % -% By default \textsf{luaotfload} doesn't enable any font features, font features -% must be explicitly enabled, |\font\foo=foo.ttf:+liga| will load |foo.ttf| font -% and enable \texttt{liga} feature. In the same way font features can be -% deactivated by prefixing it with minus sign; |\font\foo=foo.ttf:+liga;-liga| -% will load \texttt{foo.ttf} without any features enabled. +% Font name can be either a font filename or actual font name; based on the +% prefix specified. % -% \paragraph{Modes} +% \paragraph{Font features} +% +% Font are a semicolon separated list of items, which are either font parameters +% in the form of |key=value|, or switches to enable/disable certain font +% features, in the form of |+feat|/|-feat|. +% The supported parameters are: +% \begin{description} +% \item [mode] \hfill \\ % \textsf{luaotfload} has two OpenType processing modes; \texttt{base} mode -% which enables only a subset of OpenType features and works by mapping those -% features to traditional TeX ligaturing and kerning mechanisms and is a bit +% which supports only a subset of OpenType features and works by mapping those +% features to traditional \TeX\ ligaturing and kerning mechanisms and is a bit % faster, and \texttt{node} mode which, hopefully, supports OpenType fully and % works by direct processing of node list at lua end and is a bit slower. -% Note that, nside math mode only \texttt{base} is supported. +% Note that \texttt{node} mode doesn't work inside math. By default, +% \texttt{base} mode is used. +% +% \item [script] \hfill \\ OpenType script string, default value is |dflt|. +% +% \item [language] \hfill \\ OpenType language string, default value is |latn|. +% +% \item [featurefile] \hfill \\ +% feature files are textual representation of OpenType tables and can be used to +% extend OpenType features of the font on fly. The file name of the feature file +% is passed, then features defined in the file can be enabled/disabled like any +% other feature. The actual syntax is described at +% \url{http://fontforge.sourceforge.net/featurefile.html} and +% \url{http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html}. +% +% \item [color] \hfill \\ +% font color, defined as a triplet of two-digit Hex RGB values, with optionally +% another value for the transparency (where |00| is completely transparent and +% |FF| is opaque.) % -% Modes can be selected using \texttt{mode} keyword and it must come before any -% other font feature, e.g. |\font\foo=foo.ttf:mode=node;+liga|. +% \item [protrosion] \hfill \\ TODO +% \item [expansion] \hfill \\ TODO +% \end{description} % -% \paragraph{Additional font features} +% \subparagraph{Additional font features} % \textsf{luaotfload} defines some additional font feature not defined in % OpenType, currently three features are defined: % -% \begin{itemize} -% \item[-] \texttt{anum}: Arabic numbers -% \item[-] \texttt{tlig}: \TeX\ ligatures -% \item[-] \texttt{trep}: \TeX\ replacements -% \end{itemize} +% \begin{itemize*} +% \item \texttt{anum}: replaces European numbers with eastern Arabic numbers. +% \item \texttt{tlig}: applies legacy \TeX\ ligatures (|``''-- -- !` ?` <<>>|). +% \item \texttt{trep}: applies legacy \TeX\ replacements (|`'"|). +% \end{itemize*} % % \subsubsection{Examples} % \begin{verbatim} @@ -235,20 +262,21 @@ and the derived files % \font\testf=[lmroman12-regular] at 40pt \testf more text % \end{verbatim} % -% \subsection{\ConTeXt files needed} +% \subsection{\ConTeXt\ files needed} % -% This package is a wrapper for several files taken from the \ConTeXt macro -% package. The philosophy is to let \ConTeXt do all the implementation and +% This package is a wrapper for several files taken from the \ConTeXt\ macro +% package. The philosophy is to let \ConTeXt\ do all the implementation and % update these files from time to time. To do so we did not modify the files % taken from \ConTeXt, we only changed their names to prevent name clashes. % You can thus update the font system of this package simply by updating the -% files taken from \ConTeXt, without (theorically) changing the \texttt{.sty} +% files taken from \ConTeXt, without (theoretically) changing the \texttt{.sty} % file nor the main \texttt{.lua} file. % -% The \ConTeXt files are renamed by adding the prefix \texttt{otfl-} to them +% The \ConTeXt\ files are renamed by adding the prefix \texttt{otfl-} to them % (\texttt{otfl} as \texttt{OTF L}oad).The files are: % -% \begin{itemize} +% \begin{multicols}{3} +% \begin{itemize*} % \item \texttt{luat-dum.lua} % \item \texttt{data-con.lua} % \item \texttt{node-ini.lua} @@ -270,7 +298,8 @@ and the derived files % \item \texttt{font-xtx.lua} % \item \texttt{font-map.lua} % \item \texttt{font-dum.lua} -% \end{itemize} +% \end{itemize*} +% \end{multicols} % % \subsection{Troubleshooting} % @@ -317,8 +346,8 @@ end % \end{macrocode} % -% We load the \ConTeXt files with this function. It automatically adds the -% \texttt{otfl-} prefix to it, so that we call it with the actual \ConTeXt +% We load the \ConTeXt\ files with this function. It automatically adds the +% \texttt{otfl-} prefix to it, so that we call it with the actual \ConTeXt\ % name. % % \begin{macrocode} @@ -336,7 +365,7 @@ end % \end{macrocode} % -% The following functions are made to map \ConTeXt functions to +% The following functions are made to map \ConTeXt\ functions to % \textsf{luaextra} functions. % % \begin{macrocode} @@ -411,8 +440,8 @@ end % \end{macrocode} % % We start loading some lua files. These two are some code not used by -% \ConTeXt at all that allow other modules to be used, it provides some -% low-level \ConTeXt functions. +% \ConTeXt\ at all that allow other modules to be used, it provides some +% low-level \ConTeXt\ functions. % % \begin{macrocode} @@ -430,7 +459,7 @@ luaotfload.loadmodule('node-ini.lua') % \end{macrocode} % -% By default \ConTeXt takes some private attributes for internal use. With +% By default \ConTeXt\ takes some private attributes for internal use. With % Plain and \LaTeX\ we can't do so, we use |\newluaattribute|. This % functions overrides a function defined in the previous module that % returns the number of a private attribute. We allocate new attributes in |