summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/fontspec
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-17 22:26:32 +0000
committerKarl Berry <karl@freefriends.org>2013-05-17 22:26:32 +0000
commitd5dc9e49d4676082f90ee3e0d3170657f72a5b5f (patch)
tree59220ce6a9b67fca504fa5a6c51cfd01a3e8682e /Master/texmf-dist/tex/latex/fontspec
parent80eb7bfc5d988aac41d54fb476da10747288bf1c (diff)
fontspec (17may13)
git-svn-id: svn://tug.org/texlive/trunk@30529 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontspec')
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty4
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec.lua192
-rw-r--r--Master/texmf-dist/tex/latex/fontspec/fontspec.sty4
5 files changed, 128 insertions, 76 deletions
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
index 7ba03b2cf47..8fba89c97e5 100644
--- a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
+++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
@@ -14,7 +14,7 @@
%%
%%
\ProvidesPackage{fontspec-luatex}
- [2013/03/16 v2.3a Font selection for XeLaTeX and LuaLaTeX]
+ [2013/05/12 v2.3b Font selection for XeLaTeX and LuaLaTeX]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty
index fc14aa67365..49c24813be7 100644
--- a/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty
+++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty
@@ -14,11 +14,11 @@
%%
%%
\ProvidesPackage{fontspec-patches}
- [2013/03/16 v2.3a Font selection for XeLaTeX and LuaLaTeX]
+ [2013/05/12 v2.3b Font selection for XeLaTeX and LuaLaTeX]
-\ExplSyntaxOn
\RequirePackage{fixltx2e}[2006/03/24]
+\ExplSyntaxOn
\DeclareRobustCommand \em
{
\@nomath\em
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
index e1f17ad5caa..ea1d1d2a609 100644
--- a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
+++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
@@ -14,7 +14,7 @@
%%
%%
\ProvidesPackage{fontspec-xetex}
- [2013/03/16 v2.3a Font selection for XeLaTeX and LuaLaTeX]
+ [2013/05/12 v2.3b Font selection for XeLaTeX and LuaLaTeX]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
index cb6a24926e5..9bbb1c78260 100644
--- a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
+++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
@@ -15,14 +15,15 @@
--
-fontspec = { }
+fontspec = fontspec or {}
+local fontspec = fontspec
fontspec.module = {
name = "fontspec",
- version = 2.0,
- date = "2009/12/04",
+ version = 2.4,
+ date = "2013/05/12",
description = "Advanced font selection for LuaLaTeX.",
- author = "Khaled Hosny",
- copyright = "Khaled Hosny",
+ author = "Khaled Hosny, Philipp Gesang",
+ copyright = "Khaled Hosny, Philipp Gesang",
license = "LPPL"
}
@@ -32,58 +33,76 @@ fontspec.log = log
fontspec.warning = warn
fontspec.error = err
-function fontspec.sprint (...) tex.sprint(luatexbase.catcodetables['latex-package'], ...) end
-local function check_script(id, script)
- local s = string.lower(script)
- if id and id > 0 then
- local otfdata = fonts.identifiers[id].shared.otfdata
- if otfdata then
- local features = otfdata.luatex.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, fonts.identifiers[id].fullname)
- return true
+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
-end
-local function check_language(id, language, script)
- local s = string.lower(script)
- local l = string.lower(language)
- if id and id > 0 then
- local otfdata = fonts.identifiers[id].shared.otfdata
- if otfdata then
- local features = otfdata.luatex.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, fonts.identifiers[id].fullname)
- return true
+ 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
-end
-local function check_feature(id, feature, language, script)
- 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 = fonts.identifiers[id].shared.otfdata
- if otfdata then
- local features = otfdata.luatex.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, fonts.identifiers[id].fullname)
- return true
+ 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
@@ -100,7 +119,7 @@ function fontspec.check_ot_script(fnt, script)
end
end
function fontspec.check_ot_lang(fnt, lang, script)
- if check_language(font.id(fnt), lang, script) then
+ if check_language(font.id(fnt), script, lang) then
tempswatrue()
else
tempswafalse()
@@ -113,44 +132,77 @@ function fontspec.check_ot_feat(fnt, feat, lang, script)
return
end
end
- if check_feature(font.id(fnt), feat, lang, script) then
+ if check_feature(font.id(fnt), script, lang, feat) then
tempswatrue()
else
tempswafalse()
end
end
-function fontspec.mathfontdimen(fnt, str)
- local mathdimens = fonts.identifiers[font.id(fnt)].MathConstants
- if mathdimens then
- local m = mathdimens[str]
- if m then
- fontspec.sprint(mathdimens[str])
- fontspec.sprint("sp")
+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
- fontspec.sprint("0pt")
+ return nil
end
+ end
+end
+function fontspec.mathfontdimen(fnt, str)
+ local mathdimens = get_math_dimension(fnt, str)
+ if mathdimens then
+ fontspec.sprint(mathdimens)
+ fontspec.sprint("sp")
else
fontspec.sprint("0pt")
end
end
-local function set_capheight(fontdata)
- local capheight
- local units = fontdata.units
- local size = fontdata.size
- local otfdata = fontdata.shared.otfdata
+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 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
+ 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
- capheight = otfdata.metadata.ascent / units * size
+ 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
- fontdata.parameters[8] = capheight
+ luatexbase.add_to_callback("luaotfload.patch_font", set_capheight, "fontspec.set_capheight")
end
-luatexbase.add_to_callback("luaotfload.patch_font", set_capheight, "fontspec.set_capheight")
--
-- Copyright 2004--2013 Will Robertson <wspr81@gmail.com>
-- Copyright 2009--2013 Khaled Hosny <khaledhosny@eglug.org>
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty
index c145b8145e8..88392e43ba9 100644
--- a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty
+++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty
@@ -14,7 +14,7 @@
%%
%%
\ProvidesPackage{fontspec}
- [2013/03/16 v2.3a Font selection for XeLaTeX and LuaLaTeX]
+ [2013/05/12 v2.3b Font selection for XeLaTeX and LuaLaTeX]
\RequirePackage{expl3}[2011/09/05]
@@ -32,7 +32,7 @@
{
\luatex_if_engine:TF
{
- \RequirePackage{luaotfload}
+ \RequirePackage{luaotfload}[2011/10/06]
\RequireLuaModule{fontspec}
}
{