summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontspec/fontspec.lua')
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec.lua137
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>