diff options
-rw-r--r-- | src/luaotfload-configuration.lua | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/luaotfload-configuration.lua b/src/luaotfload-configuration.lua index a15474c..abc2657 100644 --- a/src/luaotfload-configuration.lua +++ b/src/luaotfload-configuration.lua @@ -96,6 +96,8 @@ local default_anon_sequence = { "tex", "path", "name", } +local valid_resolvers = tabletohash (default_anon_sequence) + local feature_presets = { arab = tabletohash { "ccmp", "locl", "isol", "fina", "fin2", @@ -514,10 +516,33 @@ local option_spec = { if s ~= "default" then local bits = { lpegmatch (commasplitter, s) } if next (bits) then - logreport ("both", 2, "conf", - "overriding anon lookup sequence %s.", - tableconcat (bits, ",")) - return bits + local seq = { } + local done = { } + for i = 1, #bits do + local bit = bits [i] + if valid_resolvers [bit] then + if not done [bit] then + done [bit] = true + seq [#seq + 1] = bit + else + logreport ("both", 0, "conf", + "ignoring duplicate resolver %s at position %d \z + in lookup sequence", + bit, i) + end + else + logreport ("both", 0, "conf", + "lookup sequence contains invalid item %s \z + at position %d.", + bit, i) + end + end + if next (seq) then + logreport ("both", 2, "conf", + "overriding anon lookup sequence %s.", + tableconcat (seq, ",")) + return seq + end end end return default_anon_sequence |