From 19bc52023e3c345855c41ba36911143ed094bf1a Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Thu, 12 May 2016 22:57:50 +0200 Subject: [features,loaders] tidy up loading of afm --- src/luaotfload-features.lua | 18 ++++++++++++++---- src/luaotfload-loaders.lua | 16 ++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/luaotfload-features.lua b/src/luaotfload-features.lua index 5152fab..8263b51 100644 --- a/src/luaotfload-features.lua +++ b/src/luaotfload-features.lua @@ -1221,8 +1221,12 @@ local handle_request = function (specification) request.features = apply_default_features(request.features) if name then - specification.name = name - specification.lookup = lookup or specification.lookup + if lookup == "file" then + specification.filename = name + name = file.removesuffix (name) + end + specification.name = name + specification.lookup = lookup or specification.lookup end if request.modifiers then @@ -1245,7 +1249,12 @@ local handle_request = function (specification) --- The next line sets the “rand” feature to “random”; I haven’t --- investigated it any further (luatex-fonts-ext), so it will --- just stay here. - specification.features.normal = normalize (request.features) + local features = specification.features + if not features then + features = { } + specification.features = features + end + features.normal = normalize (request.features) local subfont = tonumber (specification.sub) if subfont and subfont >= 0 then specification.sub = subfont + 1 @@ -1253,8 +1262,9 @@ local handle_request = function (specification) return specification end +fonts.names.handle_request = handle_request + if as_script == true then --- skip the remainder of the file - fonts.names.handle_request = handle_request report ("log", 5, "features", "Exiting early from luaotfload-features.lua.") return diff --git a/src/luaotfload-loaders.lua b/src/luaotfload-loaders.lua index f6cb272..0a0185b 100644 --- a/src/luaotfload-loaders.lua +++ b/src/luaotfload-loaders.lua @@ -49,12 +49,19 @@ local unsupported_reader = function (format) end end -local afm_compat_message = function (specification, method) +local afm_reader = fonts.readers.afm + +local afm_compat_message = function (specification) + local name = specification.name + local filename = specification.filename logreport ("both", 4, "loaders", "PFB format only supported with matching \z - AFM; redirecting (“%s”, “%s”).", - tostring (specification.name), tostring (method)) - return fonts.readers.afm (specification, method) + AFM; redirecting (“%s”, “afm”).", + tostring (specification.name)) + specification.forced = "afm" + specification.forcedname = filename + specification.filename = file.replacesuffix (filename, "afm") + return afm_reader (specification, "afm") end local install_formats = function () @@ -89,6 +96,7 @@ local install_formats = function () return aux ("evl", eval_reader) and aux ("lua", lua_reader) and aux ("pfa", unsupported_reader "pfa") + and aux ("afm", function (spec) return afm_reader (spec, "afm") end) and aux ("pfb", afm_compat_message) --- pfb loader is incomplete and aux ("ofm", readers.tfm) and aux ("dfont", unsupported_reader "dfont") -- cgit v1.2.3