diff options
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx | 214 |
1 files changed, 100 insertions, 114 deletions
diff --git a/Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx b/Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx index 30898f61087..e19e8dc4cbc 100644 --- a/Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx +++ b/Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx @@ -2,6 +2,7 @@ % % Copyright (C) 2009-2010 by Elie Roux <elie.roux@telecom-bretagne.eu> % and Khaled Hosny <khaledhosny@eglug.org> +% (Support: <lualatex-dev@tug.org>.) % % This work is under the CC0 license. % @@ -35,7 +36,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: luaotfload 2010/11/11 v1.21 OpenType layout system} +\Msg{* Package: luaotfload v1.22 OpenType layout system} \Msg{************************************************************************} \keepsilent @@ -48,6 +49,7 @@ This is a generated file. Copyright (C) 2009-2010 by by Elie Roux <elie.roux@telecom-bretagne.eu> and Khaled Hosny <khaledhosny@eglug.org> + (Support: <lualatex-dev@tug.org>.) This work is under the CC0 license. @@ -102,9 +104,9 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{luaotfload.drv}% - [2010/11/11 v1.21 OpenType layout system]% + [2011/01/25 v1.22 OpenType layout system]% \documentclass{ltxdoc} -\usepackage{metalogo,multicol,mdwlist,fancyvrb,xcolor} +\usepackage{metalogo,multicol,mdwlist,fancyvrb,xcolor,xspace} \usepackage{charter} \usepackage[ bookmarks=true, @@ -120,8 +122,14 @@ and the derived files \definecolor{niceblue}{rgb}{0.4,0.6,1.000} -\def\LuaTeX{Lua\TeX} -\def\ConTeXt{Con\TeX t} +\newcommand\tex {\TeX\xspace} +\newcommand\pdftex {PDF\TeX\xspace} +\newcommand\luatex {Lua\TeX\xspace} +\newcommand\xetex {\XeTeX\xspace} +\newcommand\latex {\LaTeX\xspace} +\newcommand\context{Con\TeX t\xspace} + +\newcommand*\email[1]{\href{mailto:#1}{#1}} \EnableCrossrefs \CodelineIndex @@ -153,14 +161,14 @@ and the derived files % \GetFileInfo{luaotfload.drv} % % \title{The \textsf{luaotfload} package} -% \date{2010/11/11 v1.21} -% \author{ Elie Roux\footnote{\texttt{elie.roux@telecom-bretagne.eu}} -% \and Khaled Hosny\footnote{\texttt{khaledhosny@eglug.org}}} +% \date{2011/01/25 v1.22} +% \author{Elie Roux and Khaled Hosny\\ +% Support: \email{lualatex-dev@tug.org}} % % \maketitle % % \begin{abstract} -% This package is an adaptation of the \ConTeXt\ font loading system, +% This package is an adaptation of the \context font loading system, % providing the ability to load \textsf{OpenType} fonts with extended font % loading syntax supporting a large selection of OpenType font features. % \end{abstract} @@ -169,10 +177,10 @@ and the derived files % % \section{Introduction} % -% Font management and installation has always been painful with \TeX. +% Font management and installation has always been painful with \tex. % A lot of files are needed for one font (tfm, pfb, map, fd, vf), and as -% \TeX\ is 8-bit each font is limited to 256 characters. -% But the font world has evolved since \TeX, and new font technologies have +% \tex is 8-bit each font is limited to 256 characters. +% But the font world has evolved since \tex, and new font technologies have % appeared, most notably the so called \emph{smart font} technologies like % \textsf{OpenType} fonts. These fonts can contain a lot of characters, and % additional functionalities like ligatures, old-style numbers, small capitals, @@ -181,12 +189,12 @@ and the derived files % scripts right now} scripts. % They are widely deployed and available for all modern operating systems and % are becoming the de facto standard fonts for advanced text layout. -% Until now the only way to use them directly in the \TeX\ world was by using -% them with \XeTeX. +% Until now the only way to use them directly in the \tex world was by using +% them with \xetex. % -% Unlike \XeTeX, \LuaTeX\ does not provide direct support for using these fonts +% Unlike \xetex, \luatex does not provide direct support for using these fonts % by default, but it provides a way to hook Lua code in some points of the -% \TeX\ processing; for instance, we can improve the font loading system, and +% \tex processing; for instance, we can improve the font loading system, and % text procession, which what this package is about. % % \section{Loading fonts} @@ -195,7 +203,7 @@ and the derived files % 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} % % \noindent @@ -208,7 +216,7 @@ and the derived files % whether to use a select the font from its filename or font name, % respectively. If no prefix is specified, then \texttt{file:} is assumed. % -% For compatibility with \XeTeX, surrounding the \meta{font name} +% For compatibility with \xetex, surrounding the \meta{font name} % with square brackets is synonymous to using the \texttt{file:} prefix. % % Accessing fonts by fontname allows loading system installed fonts as well as @@ -249,7 +257,7 @@ and the derived files % \texttt{base} or \texttt{node}. % Using \texttt{mode=base} % only supports a subset of OpenType features and works by mapping those -% features to traditional \TeX\ ligature and kerning mechanisms and is a bit +% features to traditional \tex ligature and kerning mechanisms and is a bit % faster % Using \texttt{mode=node} hopefully supports OpenType fully and % works by direct processing of the node list with Lua; it is slower and @@ -272,9 +280,8 @@ and the derived files % 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}. +% other feature. The syntax is documented in Adobe's +% \href{http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html}{OpenType Feature File Specification}. % % For example, to set a |tkrn| feature from |mykern.fea| file: % @@ -298,7 +305,7 @@ and the derived files % % For example, to enable default protrusion\footnote{You also need to set % |\pdfprotrudechars2 \pdfadjustspacing2| to activate protrusion and expansion, -% respectively. See PDF\TeX\ manual for details}: +% respectively. See \pdftex manual for details}: % % |\font\lmr=Latin Modern Roman:protrusion=default| % @@ -311,19 +318,19 @@ and the derived files % \begin{itemize*} % \item \texttt{anum}: replaces European numbers with eastern Arabic numbers or % Persian numbers, depending on the value of |language|. -% \item \texttt{tlig}: applies legacy \TeX\ ligatures (|``''-- -- !` ?` <<>>|). -% \item \texttt{trep}: applies legacy \TeX\ replacements (|`'"|). +% \item \texttt{tlig}: applies legacy \tex ligatures (|``''-- -- !` ?` <<>>|). +% \item \texttt{trep}: applies legacy \tex replacements (|`'"|). % \end{itemize*} % -% (For \XeTeX\ users: these last two are the equivalent of writing -% \texttt{mapping=text-tex} using \XeTeX's input remapping feature.) +% (For \xetex users: these last two are the equivalent of writing +% \texttt{mapping=text-tex} using \xetex's input remapping feature.) % % % \section{Font names database} % \label{sec:fontdb} % % As introduced in the previous section, \textsf{luaotfload} uses a database -% to keep track of fonts available to \LuaTeX. Using this database, fonts can +% to keep track of fonts available to \luatex. Using this database, fonts can % be loaded by font name as well as filename. % % When \textsf{luaotfload} is asked to load a font by font name, it will check @@ -363,7 +370,7 @@ and the derived files % % \subsection{Blacklisting fonts} % -% Some fonts are problematic in \LuaTeX, if you found that your document takes +% Some fonts are problematic in \luatex, if you found that your document takes % too long to compile, or eats all the free memory, you can find the culprit % file by running |mkluatexfontdb| utility with |-v| option to see which font % file it is stuck with. You can then instruct \textsf{luaotfload} to ignore @@ -374,17 +381,15 @@ and the derived files % can find. You can either use the base name or the full path. Any thing after % a |%| sign is ignored. % -% \section{Required \ConTeXt\ files} +% \section{Required \context files} % -% 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 (theoretically) changing the \texttt{.sty} -% file nor the main \texttt{.lua} file. +% 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. So we try not to modify the files +% taken from \context as far as possible, but we changed their names to +% prevent name clashes. % -% 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{multicols}{3} @@ -450,8 +455,8 @@ module('luaotfload', package.seeall) luaotfload.module = { name = "luaotfload", - version = 1.21, - date = "2010/11/11", + version = 1.22, + date = "2011/01/25", description = "OpenType layout system.", author = "Elie Roux & Hans Hagen", copyright = "Elie Roux", @@ -471,7 +476,7 @@ local error, warning, info, log = luatexbase.provides_module(luaotfload.module) kpse.init_prog('', 600, '/') % \end{macrocode} % -% The minimal required \LuaTeX\ version. +% The minimal required \luatex version. % % \begin{macrocode} local luatex_version = 60 @@ -485,8 +490,8 @@ end % % \subsection{Module loading} % -% 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} @@ -503,8 +508,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} luaotfload.loadmodule('luat-dum.lua') -- not used in context at all @@ -512,7 +517,7 @@ luaotfload.loadmodule('luat-ovr.lua') -- override some luat-dum functions luaotfload.loadmodule('data-con.lua') -- maybe some day we don't need this one % \end{macrocode} % -% A hack to remove a warning from \texttt{node-dum.lua} as it is \ConTeXt\ +% A hack to remove a warning from \texttt{node-dum.lua} as it is \context % specific. % % \begin{macrocode} @@ -527,7 +532,7 @@ luaotfload.loadmodule('node-dum.lua') luaotfload.loadmodule('node-inj.lua') % \end{macrocode} % -% By default \ConTeXt\ takes some private attributes for internal use. To +% By default \context takes some private attributes for internal use. To % avoide attribute clashes with other packages, we override the function % that allocates new attributes, making it a wraper around % |luatexbase.new_attribute()|. We also prefix attributes with |otfl@| to @@ -565,8 +570,7 @@ luaotfload.loadmodule('font-dum.lua') % % This is a patch for |otfl-font-def.lua|, that defines a reader for ofm % fonts, this is necessary if we set the forced field of the specification -% to |ofm|, we use it only when using \textsf{luaotfload}, not -% |mkluatexfontdb|. +% to |ofm|. % % \begin{macrocode} if fonts and fonts.tfm and fonts.tfm.readers then @@ -584,7 +588,15 @@ luaotfload.loadmodule('font-clr.lua') % \subsection{Post-processing TFM table} % % Here we do some final touches to the loaded TFM table before passing it -% to the \TeX\ end. +% to the \tex end. +% +% First we create a callback for patching fonts on the fly, to be used by +% other packages. +% \begin{macrocode} +luatexbase.create_callback("luaotfload.patch_font", "simple", function() end) +% \end{macrocode} +% +% then define a function where font manipulation will take place. % % \begin{macrocode} local function def_font(...) @@ -592,7 +604,7 @@ local function def_font(...) if type(fontdata) == "table" and fontdata.shared then % \end{macrocode} % -% First, we add some code to emulate \XeTeX's \cs{fontdimen8}, +% Here we add some code to emulate \xetex's \cs{fontdimen8}, % which stores the caps-height of the font. (Cf.\ \cs{fontdimen5} which % stores the x-height.) % @@ -600,6 +612,8 @@ local function def_font(...) % necessary information. % This needs to be extended for fonts that don't contain an `X'. % +% XXX: move to \texttt{fontspec}. +% % \begin{macrocode} local capheight local units = fontdata.units @@ -633,37 +647,44 @@ local function def_font(...) end end -- for \overwithdelims - mc["FractionDelimiterSize"] = 1.01 * size - mc["FractionDelimiterDisplayStyleSize"] = 2.39 * size + mc.FractionDelimiterSize = 1.01 * size + mc.FractionDelimiterDisplayStyleSize = 2.39 * size fontdata.MathConstants = mc % \end{macrocode} % -% \LuaTeX\ does not provide interface to accessing -% \texttt{(Script)ScriptPercentScaleDown} math constants, so we emulate -% \XeTeX\ behaviour by setting \cs{fontdimen10} and \cs{fontdimen11}. +% \luatex does not provide interface to accessing +% \texttt{(Script)ScriptPercentScaleDown} math constants, so we emulate +% \xetex behaviour by setting \cs{fontdimen10} and \cs{fontdimen11}. +% +% XXX: move to \texttt{unicode-math}. % % \begin{macrocode} if mc["ScriptPercentScaleDown"] then - fontdata.parameters[10] = mc["ScriptPercentScaleDown"] + fontdata.parameters[10] = mc.ScriptPercentScaleDown else -- resort to plain TeX default fontdata.parameters[10] = 70 end if mc["ScriptScriptPercentScaleDown"] then - fontdata.parameters[11] = mc["ScriptScriptPercentScaleDown"] + fontdata.parameters[11] = mc.ScriptScriptPercentScaleDown else -- resort to plain TeX default fontdata.parameters[11] = 50 end end - +% \end{macrocode} +% +% Execute any registered font patching callbacks. +% +% \begin{macrocode} + luatexbase.call_callback("luaotfload.patch_font", fontdata) end return fontdata end % \end{macrocode} % -% \subsection{\ConTeXt\ override} +% \subsection{\context override} % -% Here we override some defaults set in \ConTeXt\ code. +% Here we override some defaults set in \context code. % % \begin{macrocode} fonts.mode = "node" @@ -686,35 +707,22 @@ for _,v in next, gsubs do end % \end{macrocode} % -% Finally two functions +% Finally we register the callbacks % % \begin{macrocode} -function luaotfload.register_callbacks() - luatexbase.add_to_callback('pre_linebreak_filter', - nodes.simple_font_handler, - 'luaotfload.pre_linebreak_filter') - luatexbase.add_to_callback('hpack_filter', - nodes.simple_font_handler, - 'luaotfload.hpack_filter') - luatexbase.reset_callback('define_font') - luatexbase.add_to_callback('define_font', - def_font, - 'luaotfload.define_font', 1) - luatexbase.add_to_callback('find_vf_file', - fonts.vf.find, - 'luaotfload.find_vf_file') -end - -function luaotfload.unregister_callbacks() - luatexbase.remove_from_callback('pre_linebreak_filter', - 'luaotfload.pre_linebreak_filter') - luatexbase.remove_from_callback('hpack_filter', - 'luaotfload.hpack_filter') - luatexbase.remove_from_callback('define_font', - 'luaotfload.define_font') - luatexbase.remove_from_callback('find_vf_file', - 'luaotfload.find_vf_file') -end +luatexbase.add_to_callback('pre_linebreak_filter', + nodes.simple_font_handler, + 'luaotfload.pre_linebreak_filter') +luatexbase.add_to_callback('hpack_filter', + nodes.simple_font_handler, + 'luaotfload.hpack_filter') +luatexbase.reset_callback('define_font') +luatexbase.add_to_callback('define_font', + def_font, + 'luaotfload.define_font', 1) +luatexbase.add_to_callback('find_vf_file', + fonts.vf.find, + 'luaotfload.find_vf_file') % \end{macrocode} % % \iffalse @@ -727,7 +735,7 @@ end %<*package> % \fi % -% Classical Plain+\LaTeX\ package initialization. +% Classical Plain+\latex package initialization. % % \begin{macrocode} \csname ifluaotfloadloaded\endcsname @@ -739,39 +747,17 @@ end \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luaotfload}% - [2010/11/11 v1.21 OpenType layout system] + [2011/01/25 v1.22 OpenType layout system] \RequirePackage{luatexbase} \fi -\RequireLuaModule{lualibs} - -\expandafter\edef\csname otfl@AtEnd\endcsname{% - \catcode64 \the\catcode64\relax -} - -\catcode64 11 -% \end{macrocode} -% -% Two small macros to register or unregister the callbacks. Without the -% callbacks this package is totally turned off. -% -% \begin{macrocode} -\def\otfl@off{ -\directlua{luaotfload.unregister_callbacks()} -} -\def\otfl@on{ -\directlua{luaotfload.register_callbacks()} -} +\RequireLuaModule{lualibs} % \end{macrocode} % -% We load the |lua| file, and we turn the package on. +% Finally we load the |lua| module. % % \begin{macrocode} \RequireLuaModule{luaotfload} - -\otfl@on - -\otfl@AtEnd % \end{macrocode} % \iffalse %</package> |