summaryrefslogtreecommitdiff
path: root/otfl-font-ltx.lua
diff options
context:
space:
mode:
authorElie Roux <elie.roux@telecom-bretagne.eu>2013-04-18 18:09:20 +0200
committerElie Roux <elie.roux@telecom-bretagne.eu>2013-04-18 18:09:20 +0200
commita9510469b60edeceedf72811e7737ea0f3c56dc5 (patch)
tree5c7a80ce3a0c2f1d22c12bff36f84355df554c46 /otfl-font-ltx.lua
parente67643a60422ed265dc5ad8955a83140598385f1 (diff)
parentb0c22678d1f776f991ffef67694451b8bb5f9e20 (diff)
downloadluaotfload-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.lua96
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