diff options
Diffstat (limited to 'otfl-font-ltx.lua')
-rw-r--r-- | otfl-font-ltx.lua | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/otfl-font-ltx.lua b/otfl-font-ltx.lua index 2025db5..4a86593 100644 --- a/otfl-font-ltx.lua +++ b/otfl-font-ltx.lua @@ -5,6 +5,7 @@ if not modules then modules = { } end modules ['font-ltx'] = { copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } +--- where have all the comments gone? local fonts = fonts @@ -21,23 +22,24 @@ end -- the generic name parser (different from context!) -local list = { } +local feature_list = { } +--- ugh TODO use lpeg instead local function isstyle(s) local style = string.lower(s):split("/") for _,v in next, style do if v == "b" then - list.style = "bold" + feature_list.style = "bold" elseif v == "i" then - list.style = "italic" + feature_list.style = "italic" elseif v == "bi" or v == "ib" then - list.style = "bolditalic" + feature_list.style = "bolditalic" elseif v:find("^s=") then - list.optsize = v:split("=")[2] + feature_list.optsize = v:split("=")[2] elseif v == "aat" or v == "icu" or v == "gr" then logs.report("load font", "unsupported font option: %s", v) elseif not v:is_empty() then - list.style = v:gsub("[^%a%d]", "") + feature_list.style = v:gsub("[^%a%d]", "") end end end @@ -103,20 +105,20 @@ local function set_default_features(script) features = defaults["dflt"] end for _,v in next, features do - if list[v] ~= false then - list[v] = true + if feature_list[v] ~= false then + feature_list[v] = true end end end -local function issome () list.lookup = 'name' end -local function isfile () list.lookup = 'file' end -local function isname () list.lookup = 'name' end -local function thename(s) list.name = s end -local function issub (v) list.sub = v end -local function istrue (s) list[s] = true end -local function isfalse(s) list[s] = false end -local function iskey (k,v) list[k] = v end +local function issome () feature_list.lookup = 'name' end +local function isfile () feature_list.lookup = 'file' end +local function isname () feature_list.lookup = 'name' end +local function thename(s) feature_list.name = s end +local function issub (v) feature_list.sub = v end +local function istrue (s) feature_list[s] = true end +local function isfalse(s) feature_list[s] = false end +local function iskey (k,v) feature_list[k] = v end local P, S, R, C = lpeg.P, lpeg.S, lpeg.R, lpeg.C @@ -137,42 +139,42 @@ local options = P(":") * spaces * (P(";")^0 * option)^0 local pattern = (filename + fontname) * subvalue^0 * stylespec^0 * options^0 local function colonized(specification) -- xetex mode - list = { } + feature_list = { } lpeg.match(pattern,specification.specification) - set_default_features(list.script) - if list.style then - specification.style = list.style - list.style = nil + set_default_features(feature_list.script) + if feature_list.style then + specification.style = feature_list.style + feature_list.style = nil end - if list.optsize then - specification.optsize = list.optsize - list.optsize = nil + if feature_list.optsize then + specification.optsize = feature_list.optsize + feature_list.optsize = nil end - if list.name then - if resolvers.findfile(list.name, "tfm") then - list.lookup = "file" - list.name = file.addsuffix(list.name, "tfm") - elseif resolvers.findfile(list.name, "ofm") then - list.lookup = "file" - list.name = file.addsuffix(list.name, "ofm") + if feature_list.name then + if resolvers.findfile(feature_list.name, "tfm") then + feature_list.lookup = "file" + feature_list.name = file.addsuffix(feature_list.name, "tfm") + elseif resolvers.findfile(feature_list.name, "ofm") then + feature_list.lookup = "file" + feature_list.name = file.addsuffix(feature_list.name, "ofm") end - specification.name = list.name - list.name = nil + specification.name = feature_list.name + feature_list.name = nil end - if list.lookup then - specification.lookup = list.lookup - list.lookup = nil + if feature_list.lookup then + specification.lookup = feature_list.lookup + feature_list.lookup = nil end - if list.sub then - specification.sub = list.sub - list.sub = nil + if feature_list.sub then + specification.sub = feature_list.sub + feature_list.sub = nil end - if not list.mode then + if not feature_list.mode then -- if no mode is set, use our default - list.mode = fonts.mode + feature_list.mode = fonts.mode end - specification.features.normal = fonts.handlers.otf.features.normalize(list) + specification.features.normal = fonts.handlers.otf.features.normalize(feature_list) return specification end |