diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-05-12 01:19:03 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-05-12 01:19:03 +0200 |
commit | 77e216e323271fb85d508b7206b13c980540b74b (patch) | |
tree | 5b4053c2bbe5190e28c0dce89653c7b13aea0642 /tex/context/base/mkiv/font-otj.lua | |
parent | d817aef76ab8b606c02bd0636661b634b43a68a6 (diff) | |
download | context-77e216e323271fb85d508b7206b13c980540b74b.tar.gz |
2018-05-12 00:16:00
Diffstat (limited to 'tex/context/base/mkiv/font-otj.lua')
-rw-r--r-- | tex/context/base/mkiv/font-otj.lua | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/tex/context/base/mkiv/font-otj.lua b/tex/context/base/mkiv/font-otj.lua index a728163ce..8d1b540be 100644 --- a/tex/context/base/mkiv/font-otj.lua +++ b/tex/context/base/mkiv/font-otj.lua @@ -97,8 +97,11 @@ local setlink = nuts.setlink local setwidth = nuts.setwidth local getwidth = nuts.getwidth -local traverse_id = nuts.traverse_id -local traverse_char = nuts.traverse_char +----- traverse_id = nuts.traverse_id +----- traverse_char = nuts.traverse_char +local nextchar = nuts.traversers.char +local nextglue = nuts.traversers.glue + local insert_node_before = nuts.insert_before local insert_node_after = nuts.insert_after @@ -562,7 +565,7 @@ end local function showsub(n,what,where) report_injections("begin subrun: %s",where) - for n in traverse_char(n) do + for n in nextchar, n do showchar(n,where) show(n,what,where," ") end @@ -632,7 +635,6 @@ end -- +D-replace +D-replace local function inject_kerns_only(head,where) - head = tonut(head) if trace_injections then trace(head,"kerns") end @@ -708,7 +710,7 @@ local function inject_kerns_only(head,where) local done = false if pre then -- left|pre glyphs|right - for n in traverse_char(pre) do + for n in nextchar, pre do local p = rawget(properties,n) if p then local i = p.injections or p.preinjections @@ -724,7 +726,7 @@ local function inject_kerns_only(head,where) end if post then -- left|post glyphs|right - for n in traverse_char(post) do + for n in nextchar, post do local p = rawget(properties,n) if p then local i = p.injections or p.postinjections @@ -740,7 +742,7 @@ local function inject_kerns_only(head,where) end if replace then -- left|replace glyphs|right - for n in traverse_char(replace) do + for n in nextchar, replace do local p = rawget(properties,n) if p then local i = p.injections or p.replaceinjections @@ -775,11 +777,10 @@ local function inject_kerns_only(head,where) if trace_injections then show_result(head) end - return tonode(head), true + return head end local function inject_positions_only(head,where) - head = tonut(head) if trace_injections then trace(head,"positions") end @@ -882,7 +883,7 @@ local function inject_positions_only(head,where) local done = false if pre then -- left|pre glyphs|right - for n in traverse_char(pre) do + for n in nextchar, pre do local p = rawget(properties,n) if p then local i = p.injections or p.preinjections @@ -907,7 +908,7 @@ local function inject_positions_only(head,where) end if post then -- left|post glyphs|right - for n in traverse_char(post) do + for n in nextchar, post do local p = rawget(properties,n) if p then local i = p.injections or p.postinjections @@ -932,7 +933,7 @@ local function inject_positions_only(head,where) end if replace then -- left|replace glyphs|right - for n in traverse_char(replace) do + for n in nextchar, replace do local p = rawget(properties,n) if p then local i = p.injections or p.replaceinjections @@ -1006,7 +1007,7 @@ local function inject_positions_only(head,where) if trace_injections then show_result(head) end - return tonode(head), true + return head end local function showoffset(n,flag) @@ -1017,7 +1018,6 @@ local function showoffset(n,flag) end local function inject_everything(head,where) - head = tonut(head) if trace_injections then trace(head,"everything") end @@ -1348,7 +1348,7 @@ local function inject_everything(head,where) local done = false if pre then -- left|pre glyphs|right - for n in traverse_char(pre) do + for n in nextchar, pre do local p = rawget(properties,n) if p then local i = p.injections or p.preinjections @@ -1379,7 +1379,7 @@ local function inject_everything(head,where) end if post then -- left|post glyphs|right - for n in traverse_char(post) do + for n in nextchar, post do local p = rawget(properties,n) if p then local i = p.injections or p.postinjections @@ -1410,7 +1410,7 @@ local function inject_everything(head,where) end if replace then -- left|replace glyphs|right - for n in traverse_char(replace) do + for n in nextchar, replace do local p = rawget(properties,n) if p then local i = p.injections or p.replaceinjections @@ -1518,7 +1518,7 @@ local function inject_everything(head,where) if trace_injections then show_result(head) end - return tonode(head), true + return head end -- space triggers @@ -1607,7 +1607,7 @@ end local function injectspaces(head) if not triggers then - return head, false + return head end local lastfont = nil local spacekerns = nil @@ -1617,7 +1617,6 @@ local function injectspaces(head) local threshold = 0 local leftkern = false local rightkern = false - local nuthead = tonut(head) local function updatefont(font,trig) leftkerns = trig.left @@ -1627,7 +1626,7 @@ local function injectspaces(head) factor = getthreshold(font) end - for n in traverse_id(glue_code,nuthead) do + for n in nextglue, head do local prev, next = getspaceboth(n) local prevchar = prev and ischar(prev) local nextchar = next and ischar(next) @@ -1665,12 +1664,8 @@ local function injectspaces(head) if trace_spaces then report_spaces("%C [%p + %p + %p] %C",prevchar,lnew,old,rnew,nextchar) end - local h = insert_node_before(nuthead,n,italickern(lnew)) - if h == nuthead then - head = tonode(h) - nuthead = h - end - insert_node_after(nuthead,n,italickern(rnew)) + head = insert_node_before(head,n,italickern(lnew)) + insert_node_after(head,n,italickern(rnew)) else local new = old + (leftkern + rightkern) * factor if trace_spaces then @@ -1685,7 +1680,7 @@ local function injectspaces(head) if trace_spaces then report_spaces("%C [%p + %p]",prevchar,old,new) end - insert_node_after(nuthead,n,italickern(new)) -- tricky with traverse but ok + insert_node_after(head,n,italickern(new)) -- tricky with traverse but ok else local new = old + leftkern * factor if trace_spaces then @@ -1704,7 +1699,7 @@ local function injectspaces(head) if trace_spaces then report_spaces("%C [%p + %p]",nextchar,old,new) end - insert_node_after(nuthead,n,italickern(new)) + insert_node_after(head,n,italickern(new)) else local new = old + rightkern * factor if trace_spaces then @@ -1718,7 +1713,8 @@ local function injectspaces(head) end triggers = false - return head, true + + return head end -- @@ -1744,6 +1740,6 @@ function injections.handler(head,where) end return inject_kerns_only(head,where) else - return head, false + return head end end |