diff options
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua')
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua | 129 |
1 files changed, 61 insertions, 68 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua index 58b55e235b1..b70e6628665 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/luaotfload.lua @@ -17,12 +17,12 @@ -- and the derived files -- luaotfload.sty, luaotfload.lua -- -module('luaotfload', package.seeall) +module("luaotfload", package.seeall) luaotfload.module = { name = "luaotfload", - version = 1.24, - date = "2011/02/16", + version = 1.25, + date = "2011/04/21", description = "OpenType layout system.", author = "Elie Roux & Hans Hagen", copyright = "Elie Roux", @@ -30,77 +30,63 @@ luaotfload.module = { } local error, warning, info, log = luatexbase.provides_module(luaotfload.module) -kpse.init_prog('', 600, '/') +kpse.init_prog("", 600, "/") local luatex_version = 60 if tex.luatexversion < luatex_version then - warning('LuaTeX v%.2f is old, v%.2f is recommended.', + warning("LuaTeX v%.2f is old, v%.2f is recommended.", tex.luatexversion/100, luatex_version /100) end function luaotfload.loadmodule(name) - local tofind = 'otfl-'..name + local tofind = "otfl-"..name local found = kpse.find_file(tofind,"tex") if found then - log('loading file %s.', found) + log("loading file %s.", found) dofile(found) else - error('file %s not found.', tofind) + error("file %s not found.", tofind) end end -luaotfload.loadmodule('luat-dum.lua') -- not used in context at all -luaotfload.loadmodule('luat-ovr.lua') -- override some luat-dum functions -luaotfload.loadmodule('data-con.lua') -- maybe some day we don't need this one +luaotfload.loadmodule("luat-dum.lua") -- not used in context at all +luaotfload.loadmodule("luat-ovr.lua") -- override some luat-dum functions +luaotfload.loadmodule("data-con.lua") -- maybe some day we don't need this one tex.attribute[0] = 0 -luaotfload.loadmodule('font-ini.lua') -luaotfload.loadmodule('node-dum.lua') -luaotfload.loadmodule('node-inj.lua') +luaotfload.loadmodule("font-ini.lua") +luaotfload.loadmodule("node-dum.lua") +luaotfload.loadmodule("node-inj.lua") function attributes.private(name) - local attr = 'otfl@' .. 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-tfm.lua') -luaotfload.loadmodule('font-cid.lua') -luaotfload.loadmodule('font-ott.lua') -luaotfload.loadmodule('font-map.lua') -luaotfload.loadmodule('font-otf.lua') -luaotfload.loadmodule('font-otd.lua') -luaotfload.loadmodule('font-oti.lua') -luaotfload.loadmodule('font-otb.lua') -luaotfload.loadmodule('font-otn.lua') -luaotfload.loadmodule('font-ota.lua') -luaotfload.loadmodule('font-otc.lua') -luaotfload.loadmodule('font-def.lua') -luaotfload.loadmodule('font-xtx.lua') -luaotfload.loadmodule('font-dum.lua') +luaotfload.loadmodule("font-tfm.lua") +luaotfload.loadmodule("font-cid.lua") +luaotfload.loadmodule("font-ott.lua") +luaotfload.loadmodule("font-map.lua") +luaotfload.loadmodule("font-otf.lua") +luaotfload.loadmodule("font-otd.lua") +luaotfload.loadmodule("font-oti.lua") +luaotfload.loadmodule("font-otb.lua") +luaotfload.loadmodule("font-otn.lua") +luaotfload.loadmodule("font-ota.lua") +luaotfload.loadmodule("font-otc.lua") +luaotfload.loadmodule("font-def.lua") +luaotfload.loadmodule("font-xtx.lua") +luaotfload.loadmodule("font-dum.lua") if fonts and fonts.tfm and fonts.tfm.readers then fonts.tfm.readers.ofm = fonts.tfm.readers.tfm end -luaotfload.loadmodule('font-nms.lua') -luaotfload.loadmodule('font-clr.lua') +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 capheight - local units = fontdata.units - local size = fontdata.size - local otfdata = fontdata.shared.otfdata - - if otfdata.pfminfo.os2_capheight > 0 then - capheight = otfdata.pfminfo.os2_capheight / units * size - else - if fontdata.characters[string.byte("X")] then - capheight = fontdata.characters[string.byte("X")].height - else - capheight = otfdata.metadata.ascent / units * size - end - end - fontdata.parameters[8] = capheight + local otfdata = fontdata.shared.otfdata if otfdata.metadata.math then local mc = { } for k,v in next, otfdata.metadata.math do @@ -108,24 +94,14 @@ local function def_font(...) -- keep percent values as is mc[k] = v else - mc[k] = v / units * size + mc[k] = v / fontdata.units * fontdata.size end end -- for \overwithdelims - mc.FractionDelimiterSize = 1.01 * size - mc.FractionDelimiterDisplayStyleSize = 2.39 * size + mc.FractionDelimiterSize = 1.01 * fontdata.size + mc.FractionDelimiterDisplayStyleSize = 2.39 * fontdata.size fontdata.MathConstants = mc - 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 luatexbase.call_callback("luaotfload.patch_font", fontdata) end @@ -143,18 +119,35 @@ local gsubs = { for _,v in next, gsubs do register_base_sub(v) end -luatexbase.add_to_callback('pre_linebreak_filter', +luatexbase.add_to_callback("pre_linebreak_filter", nodes.simple_font_handler, - 'luaotfload.pre_linebreak_filter') -luatexbase.add_to_callback('hpack_filter', + "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', + "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', + "luaotfload.define_font", 1) +luatexbase.add_to_callback("find_vf_file", fonts.vf.find, - 'luaotfload.find_vf_file') + "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'. |