-
Notifications
You must be signed in to change notification settings - Fork 34
/
fontspec-lua.dtx
102 lines (100 loc) · 3.04 KB
/
fontspec-lua.dtx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
%%^^A%% fontspec-lua.dtx -- part of FONTSPEC <latex3.github.io/fontspec>
%
% \section{Lua module}
%
% \begin{macrocode}
%<*lua>
% \end{macrocode}
% \begin{macrocode}
local err, warn, info, log = luatexbase.provides_module(fontspec.module)
% \end{macrocode}
% Some utility functions
% \begin{macrocode}
fontspec.log = log or (function (s) luatexbase.module_info("fontspec", s) end)
fontspec.warning = warn or (function (s) luatexbase.module_warning("fontspec", s) end)
fontspec.error = err or (function (s) luatexbase.module_error("fontspec", s) end)
% \end{macrocode}
%
% We need a catcode table for tex.sprint(). See issue \#230.
% TODO: probably time to get rid of the backwards compatibility here:
% \begin{macrocode}
local latex
if luatexbase.registernumber then
latex = luatexbase.registernumber("catcodetable@latex")
else
latex = luatexbase.catcodetables.CatcodeTableLaTeX
end
% \end{macrocode}
%
% The following are the function that get called from \TeX\ end.
% \begin{macrocode}
local function tempswatrue() tex.sprint(latex,[[\FontspecSetCheckBoolTrue ]]) end
local function tempswafalse() tex.sprint(latex,[[\FontspecSetCheckBoolFalse]]) end
% \end{macrocode}
%
% \begin{macrocode}
function fontspec.check_ot_script(fnt, script)
if luaotfload.aux.provides_script(font.id(fnt), script) then
tempswatrue()
else
tempswafalse()
end
end
% \end{macrocode}
%
% \begin{macrocode}
function fontspec.check_ot_lang(fnt, lang, script)
if luaotfload.aux.provides_language(font.id(fnt), script, lang) then
tempswatrue()
else
tempswafalse()
end
end
% \end{macrocode}
%
% \begin{macrocode}
function fontspec.check_ot_feat(fnt, feat, lang, script)
for _, f in ipairs { "+trep", "+tlig", "+anum" } do
if feat == f then
tempswatrue()
return
end
end
if luaotfload.aux.provides_feature(font.id(fnt), script, lang, feat) then
tempswatrue()
else
tempswafalse()
end
end
% \end{macrocode}
%
% \begin{macrocode}
function fontspec.mathfontdimen(fnt, str)
local mathdimens = luaotfload.aux.get_math_dimension(fnt, str)
if mathdimens then
tex.sprint(-2,mathdimens)
tex.sprint(-2,"sp")
else
tex.sprint(-2,"0pt")
end
end
% \end{macrocode}
%
% \begin{macrocode}
%</lua>
% \end{macrocode}
% /©
% ------------------------------------------------
% The FONTSPEC package <latex3.github.io/fontspec>
% ------------------------------------------------
% Copyright 2022-2024 The LaTeX project, LPPL "maintainer"
% Copyright 2004-2022 Will Robertson
% Copyright 2009-2015 Khaled Hosny
% Copyright 2013 Philipp Gesang
% Copyright 2013-2016 Joseph Wright
% ------------------------------------------------
% This package is free software and may be redistributed and/or modified under
% the conditions of the LaTeX Project Public License, version 1.3c or higher
% (your choice): <http://www.latex-project.org/lppl/>.
% ------------------------------------------------
% ©/