diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-04-18 20:21:47 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-04-18 20:21:47 +0200 |
commit | 076e1efee0b805673fba71584edbb2b786a01c03 (patch) | |
tree | 24fe52b6d6418093e25509f8baf1ce1068360f95 /tex/context/base/mkiv/node-fnt.lua | |
parent | 0835bc2af23d2631e986caef886337d9694b730f (diff) | |
download | context-076e1efee0b805673fba71584edbb2b786a01c03.tar.gz |
2016-04-18 18:58:00
Diffstat (limited to 'tex/context/base/mkiv/node-fnt.lua')
-rw-r--r-- | tex/context/base/mkiv/node-fnt.lua | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/tex/context/base/mkiv/node-fnt.lua b/tex/context/base/mkiv/node-fnt.lua index c726cdb4c..7f0d23997 100644 --- a/tex/context/base/mkiv/node-fnt.lua +++ b/tex/context/base/mkiv/node-fnt.lua @@ -48,11 +48,13 @@ local getchar = nuts.getchar local getdisc = nuts.getdisc local getnext = nuts.getnext local getprev = nuts.getprev +local getboth = nuts.getboth local getfield = nuts.getfield ----- getdisc = nuts.getdisc local setchar = nuts.setchar local setlink = nuts.setlink local setfield = nuts.setfield +local setprev = nuts.setprev local isglyph = nuts.isglyph -- unchecked local ischar = nuts.ischar -- checked @@ -61,6 +63,7 @@ local traverse_id = nuts.traverse_id local traverse_char = nuts.traverse_char local remove_node = nuts.remove local protect_glyph = nuts.protect_glyph +local free_node = nuts.free local glyph_code = nodecodes.glyph local disc_code = nodecodes.disc @@ -292,12 +295,27 @@ function handlers.characters(head) end if redundant then - local front = nuthead == redundant[1] for i=1,#redundant do - nuthead = remove_node(nuthead,redundant[i],true) - end - if front then - head = tonode(nuthead) + local r = redundant[i] + local p, n = getboth(r) + if r == nuthead then + nuthead = n + setprev(n) + else + setlink(p,n) + end + if b > 0 then + for i=1,b do + local bi = basefonts[i] + if r == bi[1] then + bi[1] = n + end + if r == bi[2] then + bi[2] = n + end + end + end + free_node(r) end end |