summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg@phi-gamma.net>2016-04-28 21:57:55 +0200
committerPhilipp Gesang <phg@phi-gamma.net>2016-04-28 21:57:59 +0200
commit2db9e17e57e306bde452c5d97f976b47b0bf9d78 (patch)
treedcdc407fdbf635da72bc3d4e7d783deb29312b23
parent2727f911e924b77af85c60aacff82517cf70ca84 (diff)
downloadluaotfload-2db9e17e57e306bde452c5d97f976b47b0bf9d78.tar.gz
[tool,resolvers,conf] switch --find lookups to the actual resolvers
The arguments to “--find” on the command line avoided calling the real index API functions and used crude approximations instead. In order to make “--find” obey the new “anon-sequence” configuration item, it needs to access the normal resolvers instead. This requires certain adaptations to allow for a fallback on the “file:” lookup.
-rw-r--r--src/luaotfload-configuration.lua6
-rw-r--r--src/luaotfload-resolvers.lua22
-rwxr-xr-xsrc/luaotfload-tool.lua19
3 files changed, 30 insertions, 17 deletions
diff --git a/src/luaotfload-configuration.lua b/src/luaotfload-configuration.lua
index abc2657..17aee85 100644
--- a/src/luaotfload-configuration.lua
+++ b/src/luaotfload-configuration.lua
@@ -93,10 +93,12 @@ local valid_formats = tabletohash {
}
local default_anon_sequence = {
- "tex", "path", "name",
+ "tex", "path", "name"
}
-local valid_resolvers = tabletohash (default_anon_sequence)
+local valid_resolvers = tabletohash {
+ "tex", "path", "name", "file"
+}
local feature_presets = {
arab = tabletohash {
diff --git a/src/luaotfload-resolvers.lua b/src/luaotfload-resolvers.lua
index f911101..6fc6ffe 100644
--- a/src/luaotfload-resolvers.lua
+++ b/src/luaotfload-resolvers.lua
@@ -200,20 +200,26 @@ local resolve_methods = {
tex = resolve_tex_format,
path = resolve_path_if_exists,
name = resolve_name,
+ file = resolve_file,
}
local resolve_sequence = function (seq, specification)
for i = 1, #seq do
local id = seq [i]
local mth = resolve_methods [id]
- logreport ("both", 3, "resolve", "step %d: apply method %q (%s)", i, id, mth)
- if mth (specification) == true then
- logreport ("both", 3, "resolve",
- "%d: method %q resolved %q -> %s (%s).",
- i, id, specification.specification,
- specification.name,
- specification.forcedname)
- return true
+ if not mth then
+ logreport ("both", 0, "resolve",
+ "step %d: invalid lookup method %q", i, id)
+ else
+ logreport ("both", 3, "resolve", "step %d: apply method %q (%s)", i, id, mth)
+ if mth (specification) == true then
+ logreport ("both", 3, "resolve",
+ "%d: method %q resolved %q -> %s (%s).",
+ i, id, specification.specification,
+ specification.name,
+ specification.forcedname)
+ return true
+ end
end
end
logreport ("both", 0, "resolve",
diff --git a/src/luaotfload-tool.lua b/src/luaotfload-tool.lua
index 4b4dc50..376aa39 100755
--- a/src/luaotfload-tool.lua
+++ b/src/luaotfload-tool.lua
@@ -1160,16 +1160,21 @@ actions.query = function (job)
tmpspec.size = 655360 --- assume 10pt
end
- local foundname, subfont, success
+ local foundname, subfont, success, needle
- if tmpspec.lookup == "name"
- or tmpspec.lookup == "anon" --- not *exactly* as resolvers.anon
- then
- foundname, _, success = fonts.names.lookup_font_name (tmpspec)
- if foundname then
- foundname, _, success = fonts.names.lookup_font_file (foundname)
+ if tmpspec.lookup == "name" then
+ if fonts.definers.resolvers.name (tmpspec) then
+ needle = tmpspec.resolved
+ end
+ elseif tmpspec.lookup == "anon" then
+ if fonts.definers.resolvers.anon (tmpspec) then
+ needle = tmpspec.resolved or tmpspec.name
end
elseif tmpspec.lookup == "file" then
+ needle = tmpspec.name
+ end
+
+ if needle then
foundname, _, success = fonts.names.lookup_font_file (tmpspec.name)
end