diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontspec/fontspec.lua')
-rw-r--r-- | Master/texmf-dist/tex/latex/fontspec/fontspec.lua | 137 |
1 files changed, 6 insertions, 131 deletions
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua index 9bbb1c78260..94a9479d4e7 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua @@ -19,8 +19,8 @@ fontspec = fontspec or {} local fontspec = fontspec fontspec.module = { name = "fontspec", - version = 2.4, - date = "2013/05/12", + version = "2.3c", + date = "2013/05/20", description = "Advanced font selection for LuaLaTeX.", author = "Khaled Hosny, Philipp Gesang", copyright = "Khaled Hosny, Philipp Gesang", @@ -36,79 +36,9 @@ fontspec.error = err function fontspec.sprint (...) tex.sprint(luatexbase.catcodetables['latex-package'], ...) end -local luaotfload_aux -if luaotfload and luaotfload.aux and luaotfload.aux.slot_of_name then - luaotfload_aux = true -else - luaotfload_aux = false -end - -local check_script, check_language, check_feature, ids - -if luaotfload_aux then - check_script = luaotfload.aux.provides_script - check_language = luaotfload.aux.provides_language - check_feature = luaotfload.aux.provides_feature -else - ids = fonts.identifiers or fonts.ids or fonts.hashes.identifiers -- first two are for backward compatibility - function check_script(id, script) - local s = string.lower(script) - if id and id > 0 then - local otfdata = ids[id].shared.rawdata - if otfdata then - local features = otfdata.resources.features - for i,_ in pairs(features) do - for j,_ in pairs(features[i]) do - if features[i][j][s] then - fontspec.log("script '%s' exists in font '%s'", - script, ids[id].fullname) - return true - end - end - end - end - end - end - function check_language(id, script, language) - local s = string.lower(script) - local l = string.lower(language) - if id and id > 0 then - local otfdata = ids[id].shared.rawdata - if otfdata then - local features = otfdata.resources.features - for i,_ in pairs(features) do - for j,_ in pairs(features[i]) do - if features[i][j][s] and features[i][j][s][l] then - fontspec.log("language '%s' for script '%s' exists in font '%s'", - language, script, ids[id].fullname) - return true - end - end - end - end - end - end - function check_feature(id, script, language, feature) - local s = string.lower(script) - local l = string.lower(language) - local f = string.lower(feature:gsub("^[+-]", ""):gsub("=.*$", "")) - if id and id > 0 then - local otfdata = ids[id].shared.rawdata - if otfdata then - local features = otfdata.resources.features - for i,_ in pairs(features) do - if features[i][f] and features[i][f][s] then - if features[i][f][s][l] == true then - fontspec.log("feature '%s' for language '%s' and script '%s' exists in font '%s'", - feature, language, script, ids[id].fullname) - return true - end - end - end - end - end - end -end +local check_script = luaotfload.aux.provides_script +local check_language = luaotfload.aux.provides_language +local check_feature = luaotfload.aux.provides_feature local function tempswatrue() fontspec.sprint([[\@tempswatrue]]) end local function tempswafalse() fontspec.sprint([[\@tempswafalse]]) end function fontspec.check_ot_script(fnt, script) @@ -138,19 +68,7 @@ function fontspec.check_ot_feat(fnt, feat, lang, script) tempswafalse() end end -local get_math_dimension -if luaotfload_aux then - get_math_dimension = luaotfload.aux.get_math_dimension -else - get_math_dimension = function(fnt, str) - local mathdimens = ids[font.id(fnt)].MathConstants - if mathdimens then - return mathdimens[str] - else - return nil - end - end -end +local get_math_dimension = luaotfload.aux.get_math_dimension function fontspec.mathfontdimen(fnt, str) local mathdimens = get_math_dimension(fnt, str) if mathdimens then @@ -160,49 +78,6 @@ function fontspec.mathfontdimen(fnt, str) fontspec.sprint("0pt") end end -if not luaotfload_aux then - local function set_capheight(fontdata) - local capheight - local shared = fontdata.shared - if shared then - local metadata - local units_per_em - local os2_capheight - local size = fontdata.size or fontdata.parameters.size - - if shared.rawdata then --- new otfl - metadata = shared.rawdata.metadata - units_per_em = shared.rawdata.metadata.units_per_em - os2_capheight = metadata.pfminfo.os2_capheight - else --- legacy - metadata = shared.otfdata.metadata - units_per_em = fontdata.units_per_em or fontdata.units - or fontdata.parameters.units - os2_capheight = shared.otfdata.pfminfo.os2_capheight - end - - if os2_capheight > 0 then - capheight = os2_capheight / units_per_em * size - else - local X8 = string.byte"X" - if fontdata.characters[X8] then - capheight = fontdata.characters[X8].height - else - capheight = metadata.ascent / units_per_em * size - end - end - else - local X8 = string.byte"X" - if fontdata.characters[X8] then - capheight = fontdata.characters[X8].height - end - end - if capheight then - fontdata.parameters[8] = capheight - end - end - luatexbase.add_to_callback("luaotfload.patch_font", set_capheight, "fontspec.set_capheight") -end -- -- Copyright 2004--2013 Will Robertson <wspr81@gmail.com> -- Copyright 2009--2013 Khaled Hosny <khaledhosny@eglug.org> |