summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--otfl-font-ltx.lua86
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