From 189085f9a7212320183d5fed0c4aa31df1602d5f Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Sun, 28 Apr 2013 19:08:11 +0200 Subject: catch tfm/ofm before db update; remove ``kpse.lookup()`` as criterion for resolved font --- luaotfload.dtx | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'luaotfload.dtx') diff --git a/luaotfload.dtx b/luaotfload.dtx index 0584f07..722a8d2 100644 --- a/luaotfload.dtx +++ b/luaotfload.dtx @@ -1378,8 +1378,9 @@ loadmodule"colors.lua" --- “font-clr” % % \begin{macrocode} -local resolvers = fonts.definers.resolvers -local formats = fonts.formats +local request_resolvers = fonts.definers.resolvers +local formats = fonts.formats +formats.ofm = "type1" % \end{macrocode} % \identifier{luaotfload} promises easy access to system fonts. @@ -1398,15 +1399,13 @@ local formats = fonts.formats % most cases when looking up font files, only when generating the database. % % \begin{macrocode} -resolvers.file = function (specification) - --- how would we go about allowing subfonts (ttc)? - if specification.lookup == "file" then - local found = fonts.names.crude_file_lookup(specification.name) - specification.name = found[1] - end +request_resolvers.file = function (specification) + --local found = fonts.names.crude_file_lookup(specification.name) + local found = fonts.names.crude_file_lookup_verbose(specification.name) + specification.name = found[1] + --if format then specification.forced = format end end ---- TODO rewrite this according to the syntax spec % \end{macrocode} % We classify as \verb|anon:| those requests that have neither a % prefix nor brackets. According to Khaled\footnote{% @@ -1417,7 +1416,35 @@ end % % \begin{macrocode} -resolvers.anon = resolvers.name +--request_resolvers.anon = request_resolvers.name + +% \end{macrocode} +% There is one drawback, though. +% This syntax is also used for requesting fonts in \identifier{Type1} +% (\abbrev{tfm}, \abbrev{ofm}) format. +% These are essentially \verb|file:| lookups and must be caught before +% the \verb|name:| resolver kicks in, lest they cause the database to +% update. +% Even if we were to require the \verb|file:| prefix for all +% \identifier{Type1} requests, tests have shown that certain fonts still +% include further fonts (e.~g. \fileent{omlgcb.ofm} will ask for +% \fileent{omsecob.tfm}) \emphasis{using the old syntax}. +% For this reason, we introduce an extra check with an early return. +% +% \begin{macrocode} +local type1_formats = { "tfm", "ofm", } + +request_resolvers.anon = function (specification) + local name = specification.name + for i=1, #type1_formats do + local format = type1_formats[i] + if resolvers.findfile(name, format) then + specification.name = file.addsuffix(name, format) + return + end + end + request_resolvers.name(specification) +end % \end{macrocode} % Prior to version 2.2, \identifier{luaotfload} did not distinguish @@ -1427,10 +1454,10 @@ resolvers.anon = resolvers.name % system, otherwise we fall back to the \verb|file:| lookup. % % \begin{macrocode} -resolvers.path = function (specification) +request_resolvers.path = function (specification) local exists, _ = lfsisfile(specification.name) if not exists then -- resort to file: lookup - resolvers.file(specification) + request_resolvers.file(specification) end end -- cgit v1.2.3