diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2010-10-28 19:38:16 +0200 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2010-10-28 21:01:07 +0200 |
commit | 808e70bd7ccff7c25c4e1979bf9eec204ed8cb3c (patch) | |
tree | a05c80b7ee54f0c2e5829f6b88daa9bb49de3c50 /otfl-node-dum.lua | |
parent | e730ef56664f9394270348cad7176f72cc411e48 (diff) | |
download | luaotfload-808e70bd7ccff7c25c4e1979bf9eec204ed8cb3c.tar.gz |
Sync with context 2010.10.22
This is a big sync and things might be seriously broken.
Diffstat (limited to 'otfl-node-dum.lua')
-rw-r--r-- | otfl-node-dum.lua | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/otfl-node-dum.lua b/otfl-node-dum.lua index 9483e51..b042047 100644 --- a/otfl-node-dum.lua +++ b/otfl-node-dum.lua @@ -10,12 +10,24 @@ nodes = nodes or { } fonts = fonts or { } attributes = attributes or { } +nodes.pool = nodes.pool or { } +nodes.handlers = nodes.handlers or { } + +local nodecodes = { } for k,v in next, node.types () do nodecodes[string.gsub(v,"_","")] = k end +local whatcodes = { } for k,v in next, node.whatsits() do whatcodes[string.gsub(v,"_","")] = k end +local glyphcodes = { [0] = "character", "glyph", "ligature", "ghost", "left", "right" } + +nodes.nodecodes = nodecodes +nodes.whatcodes = whatcodes +nodes.whatsitcodes = whatcodes +nodes.glyphcodes = glyphcodes + local traverse_id = node.traverse_id local free_node = node.free local remove_node = node.remove local new_node = node.new -local glyph = node.id('glyph') +local glyph_code = nodecodes.glyph -- fonts @@ -23,9 +35,9 @@ local fontdata = fonts.ids or { } function nodes.simple_font_handler(head) -- lang.hyphenate(head) - head = nodes.process_characters(head) - nodes.inject_kerns(head) - nodes.protect_glyphs(head) + head = nodes.handlers.characters(head) + nodes.injections.handler(head) + nodes.handlers.protectglyphs(head) head = node.ligaturing(head) head = node.kerning(head) return head @@ -43,12 +55,12 @@ if tex.attribute[0] ~= 0 then end -nodes.protect_glyphs = node.protect_glyphs -nodes.unprotect_glyphs = node.unprotect_glyphs +nodes.handlers.protectglyphs = node.protect_glyphs +nodes.handlers.unprotectglyphs = node.unprotect_glyphs -function nodes.process_characters(head) +function nodes.handlers.characters(head) local usedfonts, done, prevfont = { }, false, nil - for n in traverse_id(glyph,head) do + for n in traverse_id(glyph_code,head) do local font = n.font if font ~= prevfont then prevfont = font @@ -81,7 +93,7 @@ end -- helper -function nodes.kern(k) +function nodes.pool.kern(k) local n = new_node("kern",1) n.kern = k return n |