LuaTeX 的 new_(node) 检查函数

LuaTeX 的 new_(node) 检查函数

我试图测试派特克斯LuaTeX 上的宏(必需),但base.ptxlua宏文件抱怨找不到神秘的“nodeinspector”模块,需要设置一些法语间距。在标准 LuaTeX 库中找不到它,所以我不知道我遗漏了什么。


显然,这个模块缺失了。因此,我的问题(通过注释掉下面的代码很容易解决)是,这个模块似乎应用了一些字距调整,以实现更好的法语间距,如下所示。

require("nodeinspector")
new_inspection = nodeinspector.new_inspection

local french_highmarks = {
    string.byte("?"),
    string.byte("!"),
    string.byte(":"),
    string.byte(";"),
    }
local french_marks = {
    string.byte("?"),
    string.byte("!"),
    string.byte(":"),
    string.byte(";"),
    string.byte(","),
    string.byte("."),
    string.byte("("),
    string.byte("["),
    string.byte("{"),
    }

local function french_punctuation (head, ...)
    for _, glue in ipairs(arg) do
        if glue.id == 10 then
            head = node.remove(head, glue)
            node.free(glue)
        end
    end
    local kern = node.new(11, 1)
    kern.kern = tex.sp(".15em")
    node.insert_after(head, arg[1], kern)
end

pitex.callback.french_punctuation = new_inspection(
    french_punctuation,
  {{id = 37, _char = french_marks}, {true, id = 37, char = french_highmarks}},
    {{id = 10, subtype = 0}, {id = 11, subtype = 0}})

pitex.callback.register("kerning", "french_punctuation")
pitex.callback.original_kerning = node.kerning
pitex.callback.register("kerning", "original_kerning")

我猜想这个“模块”有些多余,也许可以new_inspection基于标准 LuaTeX 代码重新实现该函数。如能提供任何来源参考,我将不胜感激。

相关内容