From c3f5cbf28f671d888a561aa1dfce1aaa629de12f Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 9 Apr 2013 13:45:13 +0200 Subject: truly add deferred --- luaotfload-deferred.lua | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 luaotfload-deferred.lua diff --git a/luaotfload-deferred.lua b/luaotfload-deferred.lua new file mode 100644 index 0000000..2a5880b --- /dev/null +++ b/luaotfload-deferred.lua @@ -0,0 +1,116 @@ +--- TODO integrate into luaotfload.dtx +--- this part is loaded after luatexbase +luaotfload.loadmodule("lib-dir.lua") -- required by font-nms; will change with lualibs update +luaotfload.loadmodule("font-nms.lua") +luaotfload.loadmodule("font-clr.lua") + +luatexbase.create_callback("luaotfload.patch_font", "simple", function() end) + +local function def_font(...) + local fontdata = fonts.define.read(...) + if type(fontdata) == "table" and fontdata.shared then + local otfdata = fontdata.shared.otfdata + if otfdata.metadata.math then + local mc = { } + for k,v in next, otfdata.metadata.math do + if k:find("Percent") then + -- keep percent values as is + mc[k] = v + else + mc[k] = v / fontdata.units * fontdata.size + end + end + -- for \overwithdelims + mc.FractionDelimiterSize = 1.01 * fontdata.size + mc.FractionDelimiterDisplayStyleSize = 2.39 * fontdata.size + + fontdata.MathConstants = mc + end + luatexbase.call_callback("luaotfload.patch_font", fontdata) + end + return fontdata +end +fonts.mode = "node" + +function attributes.private(name) + local attr = "otfl@" .. name + local number = luatexbase.attributes[attr] + if not number then + number = luatexbase.new_attribute(attr) + end + return number +end + +--luaotfload.loadmodule("font-otc.lua") -- broken + +--luatexbase.create_callback("luaotfload.patch_font", "simple", function() end) + +--local function def_font(...) + --local fontdata = fonts.define.read(...) + --if type(fontdata) == "table" and fontdata.shared then + --local otfdata = fontdata.shared.otfdata + --if otfdata.metadata.math then + --local mc = { } + --for k,v in next, otfdata.metadata.math do + --if k:find("Percent") then + ---- keep percent values as is + --mc[k] = v + --else + --mc[k] = v / fontdata.units * fontdata.size + --end + --end + ---- for \overwithdelims + --mc.FractionDelimiterSize = 1.01 * fontdata.size + --mc.FractionDelimiterDisplayStyleSize = 2.39 * fontdata.size + + --fontdata.MathConstants = mc + --end + --luatexbase.call_callback("luaotfload.patch_font", fontdata) + --end + --return fontdata +--end +--fonts.mode = "node" + +--local register_base_sub = fonts.otf.features.register_base_substitution +--local gsubs = { + --"ss01", "ss02", "ss03", "ss04", "ss05", + --"ss06", "ss07", "ss08", "ss09", "ss10", + --"ss11", "ss12", "ss13", "ss14", "ss15", + --"ss16", "ss17", "ss18", "ss19", "ss20", +--} + +--for _,v in next, gsubs do + --register_base_sub(v) +--end +--luatexbase.add_to_callback("pre_linebreak_filter", + --nodes.simple_font_handler, + --"luaotfload.pre_linebreak_filter") +--luatexbase.add_to_callback("hpack_filter", + --nodes.simple_font_handler, + --"luaotfload.hpack_filter") +--luatexbase.reset_callback("define_font") +--luatexbase.add_to_callback("define_font", + --def_font, + --"luaotfload.define_font", 1) +--luatexbase.add_to_callback("find_vf_file", + --fonts.vf.find, + --"luaotfload.find_vf_file") +--local function set_sscale_diments(fontdata) + --local mc = fontdata.MathConstants + --if mc then + --if mc["ScriptPercentScaleDown"] then + --fontdata.parameters[10] = mc.ScriptPercentScaleDown + --else -- resort to plain TeX default + --fontdata.parameters[10] = 70 + --end + --if mc["ScriptScriptPercentScaleDown"] then + --fontdata.parameters[11] = mc.ScriptScriptPercentScaleDown + --else -- resort to plain TeX default + --fontdata.parameters[11] = 50 + --end + --end +--end + +--luatexbase.add_to_callback("luaotfload.patch_font", set_sscale_diments, "unicodemath.set_sscale_diments") +-- +-- End of File `luaotfload.lua'. -- cgit v1.2.3