summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua28
1 files changed, 14 insertions, 14 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua
index d5397da3aa3..0fa2d696ab0 100644
--- a/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua
+++ b/Master/texmf-dist/tex/luatex/luaotfload/otfl-font-xtx.lua
@@ -74,7 +74,7 @@ local function isstyle(s)
elseif v:find("^s=") then
list.optsize = v:split("=")[2]
elseif v == "aat" or v == "icu" or v == "gr" then
- logs.report("define font", "unsupported font option: %s", v)
+ logs.report("load font", "unsupported font option: %s", v)
elseif not v:is_empty() then
list.style = v:gsub("[^%a%d]", "")
end
@@ -143,13 +143,17 @@ local function parse_script(script)
if otf.tables.scripts[script] then
local dflt
if otf.tables.defaults[script] then
+ logs.report("load font", "auto-selecting default features for script: %s", script)
dflt = otf.tables.defaults[script]
else
+ logs.report("load font", "auto-selecting default features for script: dflt (was %s)", script)
dflt = otf.tables.defaults["dflt"]
end
for _,v in next, dflt do
list[v] = "yes"
end
+ else
+ logs.report("load font", "unknown script: %s", script)
end
end
@@ -158,9 +162,6 @@ 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] = 'yes' end
---KH local function isfalse(s) list[s] = 'no' end
-local function isfalse(s) list[s] = nil end -- see mpg/luaotfload#4
local function iskey (k,v)
if k == "script" then
parse_script(v)
@@ -168,6 +169,9 @@ local function iskey (k,v)
list[k] = v
end
+local function istrue (s) list[s] = true end
+local function isfalse(s) list[s] = false end
+
local spaces = lpeg.P(" ")^0
-- ER: now accepting names like C:/program files/texlive/2009/...
local namespec = (lpeg.R("az", "AZ") * lpeg.P(":"))^-1 * (1-lpeg.S("/:("))^1 -- was: (1-lpeg.S("/: ("))^0
@@ -175,26 +179,21 @@ local crapspec = spaces * lpeg.P("/") * (((1-lpeg.P(":"))^0)/isstyle) * spaces
-- ER: can't understand why the 'file:' thing doesn't work with fontnames starting by c:...
local filename = (lpeg.P("file:")/isfile * (namespec/thename)) + (lpeg.P("[") * lpeg.P(true)/isname * (((1-lpeg.P("]"))^0)/thename) * lpeg.P("]"))
local fontname = (lpeg.P("name:")/isname * (namespec/thename)) + lpeg.P(true)/issome * (namespec/thename)
-local sometext = (lpeg.R("az") + lpeg.R("AZ") + lpeg.R("09"))^1
+local sometext = (lpeg.R("az","AZ","09") + lpeg.S("+-."))^1
local truevalue = lpeg.P("+") * spaces * (sometext/istrue)
local falsevalue = lpeg.P("-") * spaces * (sometext/isfalse)
-local someval = (lpeg.S("+-.") + sometext)^1
-local keyvalue = (lpeg.C(sometext) * spaces * lpeg.P("=") * spaces * lpeg.C(someval))/iskey
+local keyvalue = (lpeg.C(sometext) * spaces * lpeg.P("=") * spaces * lpeg.C(sometext))/iskey
local somevalue = sometext/istrue
local subvalue = lpeg.P("(") * (lpeg.C(lpeg.P(1-lpeg.S("()"))^1)/issub) * lpeg.P(")") -- for Kim
local option = spaces * (keyvalue + falsevalue + truevalue + somevalue) * spaces
local options = lpeg.P(":") * spaces * (lpeg.P(";")^0 * option)^0
local pattern = (filename + fontname) * subvalue^0 * crapspec^0 * options^0
+local normalize_meanings = fonts.otf.meanings.normalize
+
function fonts.define.specify.colonized(specification) -- xetex mode
list = { }
lpegmatch(pattern,specification.specification)
- for k, v in next, list do
- list[k] = v:is_boolean()
- if type(list[a]) == "nil" then
- list[k] = v
- end
- end
if list.style then
specification.style = list.style
list.style = nil
@@ -215,7 +214,8 @@ function fonts.define.specify.colonized(specification) -- xetex mode
specification.sub = list.sub
list.sub = nil
end
- specification.features.normal = list
+-- specification.features.normal = list
+ specification.features.normal = normalize_meanings(list)
return specification
end