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
|
\input luaotfload.sty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% script, features, and language
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\font\minionregular=file:MinionPro_Regular.otf at 9pt
\font\biolinum=file:LinBiolinum_R.otf at 9pt
\font\cmuregular=file:cmunrm.otf at 9pt
%% (1) luaotfload.aux.provides_script(font_id, script)
%% #1 defined font; #2 OT script tag
\def\providesscript[#1][#2]{%
\bgroup#1%
let’s see whether \detokenize{#1} has script #2:
\directlua{
local aux = luaotfload.aux
local succ = aux.provides_script(font.current(), [[#2]])
if succ then tex.sprint"true" else tex.sprint"false" end
}%
\egroup
\endgraf%
}
\providesscript [\minionregular][latn]%% Latin
\providesscript [\biolinum][latn]
\providesscript [\cmuregular][latn]
\providesscript [\minionregular][cyrl]%% Cyrillic
\providesscript [\biolinum][cyrl]
\providesscript [\cmuregular][cyrl]
\providesscript [\minionregular][tibt]%% Tibetan
\providesscript [\biolinum][tibt]
\providesscript [\cmuregular][tibt]
\hrule % --------------------------------------------------------------
%% (2) luaotfload.aux.provides_language(font_id, script, language)
%% #1 defined font; #2 OT script tag; #3 OT language tag
\def\provideslanguage[#1][#2][#3]{%
\bgroup#1%
let’s see whether \detokenize{#1} supports language #3 for script #2:
\directlua{
local aux = luaotfload.aux
local succ = aux.provides_language(font.current(), [[#2]], [[#3]])
if succ then tex.sprint"true" else tex.sprint"false" end
}%
\egroup
\endgraf%
}
\provideslanguage [\minionregular][latn][nld]%% Latin/Dutch
\provideslanguage [\biolinum][latn][nld]
\provideslanguage [\cmuregular][latn][nld]
\provideslanguage [\minionregular][latn][deu]%% Latin/German
\provideslanguage [\biolinum][latn][deu]
\provideslanguage [\cmuregular][latn][deu]
\provideslanguage [\minionregular][cyrl][rus]%% Cyrillic/Russian
\provideslanguage [\biolinum][cyrl][rus]
\provideslanguage [\cmuregular][cyrl][rus]
\provideslanguage [\minionregular][cyrl][klm]%% Cyrillic/Kalmyk
\provideslanguage [\biolinum][cyrl][klm]
\provideslanguage [\cmuregular][cyrl][klm]
\provideslanguage [\minionregular][cyrl][srb]%% Cyrillic/Serbian
\provideslanguage [\biolinum][cyrl][srb]
\provideslanguage [\cmuregular][cyrl][srb]
\provideslanguage [\minionregular][tibt][tib]%% Tibetan
\provideslanguage [\biolinum][tibt][tib]
\provideslanguage [\cmuregular][tibt][tib]
\hrule % --------------------------------------------------------------
%% (3) luaotfload.aux.provides_feature(
%% font_id, script, language, feature)
%% #1 defined font; #2 OT script tag;
%% #3 OT language tag; #4 OT feature
\def\providesfeature[#1][#2][#3][#4]{%this is getting ridiculous
\bgroup#1%
let’s see whether \detokenize{#1} supports feature #4 for the
combination of script #2 with language #3:
\directlua{
local aux = luaotfload.aux
local succ = aux.provides_feature(
font.current(), [[#2]], [[#3]], [[#4]])
if succ then tex.sprint"true" else tex.sprint"false" end
}%
\egroup
\endgraf%
}
\providesfeature [\minionregular][latn][nld][liga]%% Latin/Dutch
\providesfeature [\biolinum][latn][nld][liga]
\providesfeature [\cmuregular][latn][nld][liga]
\providesfeature [\minionregular][latn][deu][liga]%% Latin/German
\providesfeature [\biolinum][latn][deu][liga]
\providesfeature [\cmuregular][latn][deu][liga]
\providesfeature [\minionregular][cyrl][srb][liga]%% Cyrillic/Serbian
\providesfeature [\biolinum][cyrl][srb][liga]
\providesfeature [\cmuregular][cyrl][srb][liga]
\providesfeature [\minionregular][tibt][tib][liga]%% Tibetan
\providesfeature [\biolinum][tibt][tib][liga]
\providesfeature [\cmuregular][tibt][tib][liga]
\bye
|