diff options
author | Karl Berry <karl@freefriends.org> | 2011-01-26 23:18:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-01-26 23:18:53 +0000 |
commit | 152d83d510920eb7284a5f3c7bf4ee9d4d30b947 (patch) | |
tree | 65224ab14af0e2b630451afab8bb1294b9f863e1 | |
parent | 0d1a26d0ff0d103cfb7cd990a964a95db1b54292 (diff) |
luaotfload 1.22 (26jan11)
git-svn-id: svn://tug.org/texlive/trunk@21180 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/luatex/luaotfload/NEWS | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf | bin | 184618 -> 168077 bytes | |||
-rwxr-xr-x | Master/texmf-dist/scripts/luaotfload/mkluatexfontdb.lua | 58 | ||||
-rw-r--r-- | Master/texmf-dist/source/luatex/luaotfload/luaotfload.dtx | 214 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua | 55 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty | 21 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua | 24 |
7 files changed, 155 insertions, 222 deletions
diff --git a/Master/texmf-dist/doc/luatex/luaotfload/NEWS b/Master/texmf-dist/doc/luatex/luaotfload/NEWS index 6fda94223c4..955c5fe1205 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/NEWS +++ b/Master/texmf-dist/doc/luatex/luaotfload/NEWS @@ -1,6 +1,11 @@ Change History -------------- +2011/01/25, luaotfload v1.22: + * Remove --database-dir and --sys options from mkluatexfontdb + * Provide a "luaotfload.patch_font" callback for on the fly patching of fonts + * Some documentation improvements + 2010/11/11, luaotfload v1.21: * Adapt to luatexbase v3.0 diff --git a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf Binary files differindex 823f0e848b7..65dfaba73ad 100644 --- a/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf +++ b/Master/texmf-dist/doc/luatex/luaotfload/luaotfload.pdf diff --git a/Master/texmf-dist/scripts/luaotfload/mkluatexfontdb.lua b/Master/texmf-dist/scripts/luaotfload/mkluatexfontdb.lua index 98db09505fc..dc46ac09c22 100755 --- a/Master/texmf-dist/scripts/luaotfload/mkluatexfontdb.lua +++ b/Master/texmf-dist/scripts/luaotfload/mkluatexfontdb.lua @@ -18,11 +18,6 @@ local version = '1.07' -- same version number as luaotfload local names = fonts.names --- the directory in which the database will be saved, can be overwritten -local output_directory = names.path.localdir - -local log = logs.report - local function help_msg() texio.write(string.format([[ Usage: %s [OPTION]... @@ -30,14 +25,11 @@ Usage: %s [OPTION]... Rebuild the LuaTeX font database. Valid options: - -d --database-dir=DIRECTORY install the database in the specified directory -f --force force re-indexing all fonts -q --quiet don't output anything -v --verbose=LEVEL be more verbose (print the searched directories) -vv print the loaded fonts -vvv print all steps of directory searching - --sys install the database system-wide - (default is only for the current user) -V --version print version and exit -h --help print this message @@ -60,9 +52,10 @@ the list. For example (using a bash shell), export OSFONTDIR='/path/to/other/fonts:/Users/will/Library/Fonts:...' -The output database file is named otfl-fonts.lua. By default it is placed -in $TEXMFVAR/luatex-cache/generic/names." -]], name)) +The output database file is named otfl-fonts.lua and is placed under: + + %s" +]], name, names.path.localdir)) end local function version_msg() @@ -76,16 +69,14 @@ Here we fill cmdargs with the good values, and then analyze it. --]] local long_opts = { - ['database-dir'] = "d", force = "f", quiet = "q", help = "h", - sys = 0 , verbose = 1 , version = "V", } -local short_opts = "d:fqpvVh" +local short_opts = "fqpvVh" local force_reload = nil @@ -107,50 +98,19 @@ local function process_cmdline() elseif v == "h" then help_msg() os.exit(0) - elseif v == "d" then - output_directory = optarg [i] elseif v == "f" then force_reload = 1 - elseif v == "sys" then - output_directory = names.path.systemdir end end - if string.match(arg[0], '-sys') then - output_directory = names.path.systemdir - end - output_directory = fonts.path_normalize(output_directory) names.set_log_level(log_level) end -process_cmdline() - local function generate(force) - local savepath = output_directory - if not lfs.isdir(savepath) then - log("creating directory %s", savepath) - dir.mkdirs(savepath) - if not lfs.isdir(savepath) then - texio.write_nl(string.format("Error: cannot create directory '%s', exiting.\n", savepath)) - os.exit(1) - end - end - savepath = file.join(savepath, names.path.basename) - local fh = io.open(savepath, 'a+') - if not fh then - texio.write_nl(string.format("Error: cannot write file '%s', exiting.\n", savepath)) - os.exit(1) - end - fh:close() - local fontnames - if not force_reload and file.isreadable(savepath) then - fontnames = dofile(savepath) - else - fontnames = nil - end + local fontnames, saved fontnames = names.update(fontnames, force) - log("%s fonts in the database", #fontnames.mappings) - table.tofile(savepath, fontnames, true) - log("saved font names database in %s\n", savepath) + logs.report("%s fonts in the database", #fontnames.mappings) + saved = names.save(fontnames) end +process_cmdline() generate(force_reload) 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> diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua index b5e2325041a..e8ddf3fd463 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua @@ -9,6 +9,7 @@ -- -- 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. -- @@ -20,8 +21,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", @@ -81,6 +82,7 @@ if fonts and fonts.tfm and fonts.tfm.readers then end luaotfload.loadmodule('font-nms.lua') luaotfload.loadmodule('font-clr.lua') +luatexbase.create_callback("luaotfload.patch_font", "simple", function() end) local function def_font(...) local fontdata = fonts.define.read(...) if type(fontdata) == "table" and fontdata.shared then @@ -110,22 +112,22 @@ 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 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 - + luatexbase.call_callback("luaotfload.patch_font", fontdata) end return fontdata end @@ -141,31 +143,18 @@ local gsubs = { for _,v in next, gsubs do register_base_sub(v) end -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 of File `luaotfload.lua'. diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty index bbc3aab9f8b..0cb6ef5a31a 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty +++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.sty @@ -9,6 +9,7 @@ %% %% 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. %% @@ -25,28 +26,12 @@ \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 -\def\otfl@off{ -\directlua{luaotfload.unregister_callbacks()} -} -\def\otfl@on{ -\directlua{luaotfload.register_callbacks()} -} +\RequireLuaModule{lualibs} \RequireLuaModule{luaotfload} - -\otfl@on - -\otfl@AtEnd \endinput %% %% End of file `luaotfload.sty'. diff --git a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua index 938b6bd39cb..b565aac0a80 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-nms.lua @@ -47,7 +47,7 @@ local function fontnames_init() } end -function names.load() +local function load_names() local localpath = file.join(names.path.localdir, names.path.basename) local systempath = file.join(names.path.systemdir, names.path.basename) local kpsefound = kpse.find_file(names.path.basename) @@ -238,7 +238,7 @@ end local lastislog = 0 -function log(fmt, ...) +local function log(fmt, ...) lastislog = 1 texio.write_nl(format("luaotfload | %s", format(fmt,...))) io.flush() @@ -248,8 +248,6 @@ logs = logs or { } logs.report = logs.report or log logs.info = logs.info or log -local log = names.log - local function font_fullinfo(filename, subfont, texmf) local t = { } local f = fontloader.open(filename, subfont) @@ -635,9 +633,10 @@ local function update_names(fontnames, force) if force then fontnames = fontnames_init() else - if not fontnames - or not fontnames.version - or fontnames.version ~= names.version then + if not fontnames then + fontnames = names.load() + end + if fontnames.version ~= names.version then fontnames = fontnames_init() if trace_search then logs.report("No font names database or old one found; " @@ -659,7 +658,15 @@ local function save_names(fontnames) if not lfs.isdir(savepath) then dir.mkdirs(savepath) end - table.tofile(file.join(savepath, names.path.basename), fontnames, true) + savepath = file.join(savepath, names.path.basename) + if file.iswritable(savepath) then + table.tofile(savepath, fontnames, true) + logs.info("Font names database saved: %s \n", savepath) + return savepath + else + logs.info("Failed to save names database\n") + return nil + end end local function scan_external_dir(dir) @@ -676,5 +683,6 @@ local function scan_external_dir(dir) end names.scan = scan_external_dir +names.load = load_names names.update = update_names names.save = save_names |