diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-cbk.lua')
-rw-r--r-- | Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-cbk.lua | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-cbk.lua b/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-cbk.lua deleted file mode 100644 index ce19c8811e9..00000000000 --- a/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-cbk.lua +++ /dev/null @@ -1,159 +0,0 @@ -if not modules then modules = { } end modules ['luatex-fonts-cbk'] = { - version = 1.001, - comment = "companion to luatex-*.tex", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - -if context then - texio.write_nl("fatal error: this module is not for context") - os.exit() -end - -local fonts = fonts -local nodes = nodes - --- Fonts: (might move to node-gef.lua) - -local traverse_id = node.traverse_id -local glyph_code = nodes.nodecodes.glyph -local disc_code = nodes.nodecodes.disc - --- from now on we apply ligaturing and kerning here because it might interfere with complex --- opentype discretionary handling where the base ligature pass expect some weird extra --- pointers (which then confuse the tail slider that has some checking built in) - -local ligaturing = node.ligaturing -local kerning = node.kerning - -local basepass = true - -local function l_warning() texio.write_nl("warning: node.ligaturing called directly") l_warning = nil end -local function k_warning() texio.write_nl("warning: node.kerning called directly") k_warning = nil end - -function node.ligaturing(...) - if basepass and l_warning then - l_warning() - end - return ligaturing(...) -end - -function node.kerning(...) - if basepass and k_warning then - k_warning() - end - return kerning(...) -end - -function nodes.handlers.setbasepass(v) - basepass = v -end - -function nodes.handlers.nodepass(head) - local fontdata = fonts.hashes.identifiers - if fontdata then - local usedfonts = { } - local basefonts = { } - local prevfont = nil - local basefont = nil - for n in traverse_id(glyph_code,head) do - local font = n.font - if font ~= prevfont then - if basefont then - basefont[2] = n.prev - end - prevfont = font - local used = usedfonts[font] - if not used then - local tfmdata = fontdata[font] -- - if tfmdata then - local shared = tfmdata.shared -- we need to check shared, only when same features - if shared then - local processors = shared.processes - if processors and #processors > 0 then - usedfonts[font] = processors - elseif basepass then - basefont = { n, nil } - basefonts[#basefonts+1] = basefont - end - end - end - end - end - end - for d in traverse_id(disc_code,head) do - local r = d.replace - if r then - for n in traverse_id(glyph_code,r) do - local font = n.font - if font ~= prevfont then - prevfont = font - local used = usedfonts[font] - if not used then - local tfmdata = fontdata[font] -- - if tfmdata then - local shared = tfmdata.shared -- we need to check shared, only when same features - if shared then - local processors = shared.processes - if processors and #processors > 0 then - usedfonts[font] = processors - end - end - end - end - end - end - end - end - if next(usedfonts) then - for font, processors in next, usedfonts do - for i=1,#processors do - head = processors[i](head,font,0) or head - end - end - end - if basepass and #basefonts > 0 then - for i=1,#basefonts do - local range = basefonts[i] - local start = range[1] - local stop = range[2] - if stop then - start, stop = ligaturing(start,stop) - start, stop = kerning(start,stop) - elseif start then - start = ligaturing(start) - start = kerning(start) - end - end - end - return head, true - else - return head, false - end -end - -function nodes.handlers.basepass(head) - if not basepass then - head = ligaturing(head) - head = kerning(head) - end - return head, true -end - -local nodepass = nodes.handlers.nodepass -local basepass = nodes.handlers.basepass -local injectpass = nodes.injections.handler -local protectpass = nodes.handlers.protectglyphs - -function nodes.simple_font_handler(head) - if head then - head = nodepass(head) - head = injectpass(head) - head = basepass(head) - protectpass(head) - return head, true - else - return head, false - end -end |