summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/node-fnt.lua
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-04-18 20:21:47 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-04-18 20:21:47 +0200
commit076e1efee0b805673fba71584edbb2b786a01c03 (patch)
tree24fe52b6d6418093e25509f8baf1ce1068360f95 /tex/context/base/mkiv/node-fnt.lua
parent0835bc2af23d2631e986caef886337d9694b730f (diff)
downloadcontext-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.lua28
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