diff options
author | Elie Roux <elie.roux@telecom-bretagne.eu> | 2013-04-18 18:09:20 +0200 |
---|---|---|
committer | Elie Roux <elie.roux@telecom-bretagne.eu> | 2013-04-18 18:09:20 +0200 |
commit | a9510469b60edeceedf72811e7737ea0f3c56dc5 (patch) | |
tree | 5c7a80ce3a0c2f1d22c12bff36f84355df554c46 /otfl-font-ltx.lua | |
parent | e67643a60422ed265dc5ad8955a83140598385f1 (diff) | |
parent | b0c22678d1f776f991ffef67694451b8bb5f9e20 (diff) | |
download | luaotfload-a9510469b60edeceedf72811e7737ea0f3c56dc5.tar.gz |
Merge branch 'experimental' of phi-gamma/luaotfload into phi-gamma-experimental
Conflicts:
mkluatexfontdb.lua
otfl-basics-gen.lua
Diffstat (limited to 'otfl-font-ltx.lua')
-rw-r--r-- | otfl-font-ltx.lua | 96 |
1 files changed, 52 insertions, 44 deletions
diff --git a/otfl-font-ltx.lua b/otfl-font-ltx.lua index 2025db5..d1799d7 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,27 @@ end -- the generic name parser (different from context!) -local list = { } +local feature_list = { } +local report = logs.names_report + +--- 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) + report("log", 0, + "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 @@ -96,27 +101,29 @@ defaults.lao = defaults.thai local function set_default_features(script) local features local script = script or "dflt" - logs.report("load font", "auto-selecting default features for script: %s", script) + report("log", 0, "load font", + "auto-selecting default features for script: %s", + script) if defaults[script] then features = defaults[script] else 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 +144,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 @@ -193,3 +200,4 @@ function fonts.definers.applypostprocessors(tfmdata) end return tfmdata end +-- vim:tw=71:sw=4:ts=4:expandtab |