diff options
author | Marius <mariausol@gmail.com> | 2011-03-27 15:20:14 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2011-03-27 15:20:14 +0300 |
commit | 7343ad49feb683f1e82569cad484b9de40694b28 (patch) | |
tree | a3beef6dd6a74a51547c49828f96ae0b4b7ee023 /tex/context/base/font-enh.lua | |
parent | bc20cf026cb0d2a175c116c5840d167f341d885e (diff) | |
download | context-7343ad49feb683f1e82569cad484b9de40694b28.tar.gz |
beta 2011.03.27 14:17
Diffstat (limited to 'tex/context/base/font-enh.lua')
-rw-r--r-- | tex/context/base/font-enh.lua | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/tex/context/base/font-enh.lua b/tex/context/base/font-enh.lua index 54e5e242a..d19424384 100644 --- a/tex/context/base/font-enh.lua +++ b/tex/context/base/font-enh.lua @@ -20,6 +20,9 @@ local registertfmfeature = tfmfeatures.register local afmfeatures = fonts.constructors.newfeatures("afm") local registerafmfeature = afmfeatures.register +local otffeatures = fonts.constructors.newfeatures("otf") +local registerotffeature = otffeatures.register + -- -- these will become goodies (when needed at all) -- -- local fontencodings = fonts.encodings @@ -41,7 +44,7 @@ local registerafmfeature = afmfeatures.register -- for newcode, oldcode in next, data.unicodes do -- if newcode ~= oldcode then -- if trace_defining then --- report_defining("reencoding U+%04X to U+%04X",newcode,oldcode) +-- report_defining("reencoding U+%05X to U+%05X",oldcode,newcode) -- end -- characters[newcode] = original[oldcode] -- end @@ -69,7 +72,7 @@ local registerafmfeature = afmfeatures.register -- for k,v in next, vector do -- if k ~= v then -- if trace_defining then --- report_defining("remapping U+%04X to U+%04X",k,v) +-- report_defining("remapping U+%05X to U+%05X",k,v) -- end -- local c = original[k] -- characters[v] = c @@ -100,6 +103,7 @@ local registerafmfeature = afmfeatures.register -- we only add and don't replace -- we could also add kerns but we asssume symbols +-- todo: complain if not basemode local function initializeunicoding(tfmdata) local goodies = tfmdata.goodies @@ -114,10 +118,26 @@ local function initializeunicoding(tfmdata) local characters = tfmdata.characters local descriptions = tfmdata.descriptions local oldcoding = tfmdata.resources.unicodes + local originals = { } for name, newcode in next, newcoding do local oldcode = oldcoding[name] - characters [newcode] = characters [oldcode] - descriptions[newcode] = descriptions[oldcode] + if characters[newcode] and not originals[newcode] then + originals[newcode] = { + character = characters [newcode], + description = descriptions[newcode], + } + end + local original = originals[oldcode] + if original then + characters [newcode] = original.character + descriptions[newcode] = original.description + else + characters [newcode] = characters [oldcode] + descriptions[newcode] = descriptions[oldcode] + end + if trace_defining then + report_defining("aliasing glyph '%s' from U+%05X to U+%05X",name,oldcode,newcode) + end end end end @@ -131,3 +151,11 @@ registerafmfeature { } } +registerotffeature { + name = "unicoding", + description = "adapt unicode table", + initializers = { + base = initializeunicoding, + node = initializeunicoding, + } +} |