diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
commit | 8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch) | |
tree | 94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/node-acc.lua | |
parent | f5aed2e51223c36c84c5f25a6cad238b2af59087 (diff) | |
download | context-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz |
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/node-acc.lua')
-rw-r--r-- | tex/context/base/node-acc.lua | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/tex/context/base/node-acc.lua b/tex/context/base/node-acc.lua deleted file mode 100644 index 407e808cd..000000000 --- a/tex/context/base/node-acc.lua +++ /dev/null @@ -1,179 +0,0 @@ -if not modules then modules = { } end modules ['node-acc'] = { - version = 1.001, - comment = "companion to node-ini.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - -local nodes, node = nodes, node - -local nodecodes = nodes.nodecodes -local tasks = nodes.tasks - -local nuts = nodes.nuts -local tonut = nodes.tonut -local tonode = nodes.tonode - -local getid = nuts.getid -local getfield = nuts.getfield -local getattr = nuts.getattr -local getlist = nuts.getlist -local getchar = nuts.getchar -local getnext = nuts.getnext - -local setfield = nuts.setfield -local setattr = nuts.setattr -local setlink = nuts.setlink -local setchar = nuts.setchar -local setsubtype = nuts.setsubtype - -local traverse_nodes = nuts.traverse -local traverse_id = nuts.traverse_id -local copy_node = nuts.copy -local free_nodelist = nuts.flush_list -local insert_after = nuts.insert_after - -local new_gluespec = nuts.pool.gluespec -- temp hack - -local glue_code = nodecodes.glue -local kern_code = nodecodes.kern -local glyph_code = nodecodes.glyph -local hlist_code = nodecodes.hlist -local vlist_code = nodecodes.vlist - -local a_characters = attributes.private("characters") - -local threshold = 65536 -- not used -local nofreplaced = 0 - --- todo: nbsp etc --- todo: collapse kerns - --- p_id - -local function injectspaces(head) - local p, p_id - local n = head - while n do - local id = getid(n) - if id == glue_code then -- todo: check for subtype related to spacing (13/14 but most seems to be 0) - -- if getfield(n,."width") > 0 then -- threshold - -- if p and p_id == glyph_code then - if p and getid(p) == glyph_code then - local g = copy_node(p) - local c = getfield(g,"components") - if c then -- it happens that we copied a ligature - free_nodelist(c) - setfield(g,"components",nil) - setsubtype(g,256) - end - local a = getattr(n,a_characters) - setchar(g,32) - setlink(p,g) - setlink(g,n) - setfield(n,"width",getfield(n,"width") - getfield(g,"width")) - if a then - setattr(g,a_characters,a) - end - setattr(n,a_characters,0) - nofreplaced = nofreplaced + 1 - end - -- end - elseif id == hlist_code or id == vlist_code then - injectspaces(getlist(n),attribute) - -- elseif id == kern_code then -- the backend already collapses - -- local first = n - -- while true do - -- local nn = getnext(n) - -- if nn and getid(nn) == kern_code then - -- -- maybe we should delete kerns but who cares at this stage - -- setfield(first,"kern",getfield(first,"kern") + getfield(nn,"kern") - -- setfield(nn,"kern",0) - -- n = nn - -- else - -- break - -- end - -- end - end - p_id = id - p = n - n = getnext(n) - end - return head, true -- always done anyway -end - -nodes.handlers.accessibility = function(head) - local head, done = injectspaces(tonut(head)) - return tonode(head), done -end - -statistics.register("inserted spaces in output",function() - if nofreplaced > 0 then - return nofreplaced - end -end) - --- todo: - --- local a_hyphenated = attributes.private('hyphenated') --- --- local hyphenated, codes = { }, { } --- --- local function compact(n) --- local t = { } --- for n in traverse_id(glyph_code,n) do --- t[#t+1] = utfchar(getchar(n)) -- check for unicode --- end --- return concat(t,"") --- end --- --- local function injectspans(head) --- local done = false --- for n in traverse_nodes(tonuts(head)) do --- local id = getid(n) --- if id == disc then --- local r = getfield(n,"replace") --- local p = getfield(n,"pre") --- if r and p then --- local str = compact(r) --- local hsh = hyphenated[str] --- if not hsh then --- hsh = #codes + 1 --- hyphenated[str] = hsh --- codes[hsh] = str --- end --- setattr(n,a_hyphenated,hsh) --- done = true --- end --- elseif id == hlist_code or id == vlist_code then --- injectspans(getlist(n)) --- end --- end --- return tonodes(head), done --- end --- --- nodes.injectspans = injectspans --- --- tasks.appendaction("processors", "words", "nodes.injectspans") --- --- local function injectspans(head) --- local done = false --- for n in traverse_nodes(tonut(head)) do --- local id = getid(n) --- if id == disc then --- local a = getattr(n,a_hyphenated) --- if a then --- local str = codes[a] --- local b = new_pdfliteral(format("/Span << /ActualText %s >> BDC", lpdf.tosixteen(str))) --- local e = new_pdfliteral("EMC") --- insert_before(head,n,b) --- insert_after(head,n,e) --- done = true --- end --- elseif id == hlist_code or id == vlist_code then --- injectspans(getlist(n)) --- end --- end --- return tonodes(head), done --- end |