diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-02-17 12:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-02-17 12:15:07 +0100 |
commit | b13dd166ce8563c60c10affc97ab28940d6a7776 (patch) | |
tree | 6b15f0462d36ae916875ce1fbcdd990660d3f410 /tex/generic | |
parent | a036ac2dd19b592316e1b479360e9e6c6700e935 (diff) | |
download | context-b13dd166ce8563c60c10affc97ab28940d6a7776.tar.gz |
2016-02-17 11:13:00
Diffstat (limited to 'tex/generic')
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-demo-vf-4.lua | 76 | ||||
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 2 |
2 files changed, 77 insertions, 1 deletions
diff --git a/tex/generic/context/luatex/luatex-fonts-demo-vf-4.lua b/tex/generic/context/luatex/luatex-fonts-demo-vf-4.lua new file mode 100644 index 000000000..00fc636a1 --- /dev/null +++ b/tex/generic/context/luatex/luatex-fonts-demo-vf-4.lua @@ -0,0 +1,76 @@ + +return function(specification) + local t = { } + for k, v in pairs(specification.features.normal) do + local n = tonumber(k) + if n then + t[n] = v + end + end + for k, v in ipairs(t) do + local name, rest = string.match(v,"^(.-){(.*)}$") + if rest then + t[k] = { name = name, list = { } } + for s in string.gmatch(rest,"([^%+]+)") do + local b, e = string.match(s,"^(.-)%-(.*)$") + if b and e then + b = tonumber(b) + e = tonumber(e) + else + b = tonumber(s) + e = b + end + if b and e then + table.insert(t[k].list,{ b = b, e = e }) + end + end + else + t[k] = { name = v } + end + end + local ids = { } + for k, v in ipairs(t) do + local f, id + if tonumber(v.name) then + id = tonumber(v.name) + f = fonts.hashes.identifiers[id] + else + f, id = fonts.constructors.readanddefine(v.name,specification.size) + end + v.f = f + ids[k] = { id = id } + end + local one = t[1].f + if one then + one.properties.name = specification.name + one.properties.virtualized = true + one.fonts = ids + local chr = one.characters + for n, v in ipairs(t) do + if n == 1 then + -- use font 1 as base + elseif v.list and #v.list > 0 then + local chrs = v.f.characters + for k, v in ipairs(v.list) do + for u=v.b,v.e do + local c = chrs[u] + if c then + c.commands = { + { 'slot', n, u }, + } + chr[u] = c + end + end + end + else + for u, c in ipairs(v.f.characters) do + c.commands = { + { 'slot', n, u }, + } + chr[u] = c + end + end + end + end + return one +end diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 85d215e19..f10ab239a 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 02/15/16 10:26:35 +-- merge date : 02/17/16 11:11:24 do -- begin closure to overcome local limits and interference |