\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