[latex3-commits] [git/LaTeX3-latex3-luaotfload] 3.12-20200126: add temporarly fontspec files for travis tests (dc63d42)
Ulrike Fischer
fischer at troubleshooting-tex.de
Mon Feb 3 14:57:34 CET 2020
Repository : https://github.com/latex3/luaotfload
On branch : 3.12-20200126
Link : https://github.com/latex3/luaotfload/commit/dc63d4273a01b971d4a84699956c40bce5519896
>---------------------------------------------------------------
commit dc63d4273a01b971d4a84699956c40bce5519896
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date: Mon Feb 3 14:57:34 2020 +0100
add temporarly fontspec files for travis tests
>---------------------------------------------------------------
dc63d4273a01b971d4a84699956c40bce5519896
.../{fontspec-xetex.sty => fontspec-luatex.sty} | 511 +++++----------------
supporttexmf/tex/latex/fontspec/fontspec.lua | 83 ++++
supporttexmf/tex/latex/fontspec/fontspec.sty | 45 ++
3 files changed, 254 insertions(+), 385 deletions(-)
diff --git a/supporttexmf/tex/latex/fontspec/fontspec-xetex.sty b/supporttexmf/tex/latex/fontspec/fontspec-luatex.sty
similarity index 88%
copy from supporttexmf/tex/latex/fontspec/fontspec-xetex.sty
copy to supporttexmf/tex/latex/fontspec/fontspec-luatex.sty
index 5e73cd2..a688056 100644
--- a/supporttexmf/tex/latex/fontspec/fontspec-xetex.sty
+++ b/supporttexmf/tex/latex/fontspec/fontspec-luatex.sty
@@ -1,30 +1,30 @@
%%
-%% This is file `fontspec-xetex.sty',
+%% This is file `fontspec-luatex.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% fontspec.dtx (with options: `fontspec,XE')
-%% fontspec-code-load.dtx (with options: `fontspec,XE')
-%% fontspec-code-vars.dtx (with options: `fontspec,XE')
-%% fontspec-code-msg.dtx (with options: `fontspec,XE')
-%% fontspec-code-opening.dtx (with options: `fontspec,XE')
-%% fontspec-code-fontload.dtx (with options: `fontspec,XE')
-%% fontspec-code-interfaces.dtx (with options: `fontspec,XE')
-%% fontspec-code-user.dtx (with options: `fontspec,XE')
-%% fontspec-code-api.dtx (with options: `fontspec,XE')
-%% fontspec-code-internal.dtx (with options: `fontspec,XE')
-%% fontspec-code-opentype.dtx (with options: `fontspec,XE')
-%% fontspec-code-graphite.dtx (with options: `fontspec,XE')
-%% fontspec-code-keyval.dtx (with options: `fontspec,XE')
-%% fontspec-code-feat-opentype.dtx (with options: `fontspec,XE')
-%% fontspec-code-scripts.dtx (with options: `fontspec,XE')
-%% fontspec-code-lang.dtx (with options: `fontspec,XE')
-%% fontspec-code-feat-aat.dtx (with options: `fontspec,XE')
-%% fontspec-code-enc.dtx (with options: `fontspec,XE')
-%% fontspec-code-math.dtx (with options: `fontspec,XE')
-%% fontspec-code-closing.dtx (with options: `fontspec,XE')
-%% fontspec-code-xfss.dtx (with options: `fontspec,XE')
+%% fontspec.dtx (with options: `fontspec,LU')
+%% fontspec-code-load.dtx (with options: `fontspec,LU')
+%% fontspec-code-vars.dtx (with options: `fontspec,LU')
+%% fontspec-code-msg.dtx (with options: `fontspec,LU')
+%% fontspec-code-opening.dtx (with options: `fontspec,LU')
+%% fontspec-code-fontload.dtx (with options: `fontspec,LU')
+%% fontspec-code-interfaces.dtx (with options: `fontspec,LU')
+%% fontspec-code-user.dtx (with options: `fontspec,LU')
+%% fontspec-code-api.dtx (with options: `fontspec,LU')
+%% fontspec-code-internal.dtx (with options: `fontspec,LU')
+%% fontspec-code-opentype.dtx (with options: `fontspec,LU')
+%% fontspec-code-graphite.dtx (with options: `fontspec,LU')
+%% fontspec-code-keyval.dtx (with options: `fontspec,LU')
+%% fontspec-code-feat-opentype.dtx (with options: `fontspec,LU')
+%% fontspec-code-scripts.dtx (with options: `fontspec,LU')
+%% fontspec-code-lang.dtx (with options: `fontspec,LU')
+%% fontspec-code-feat-aat.dtx (with options: `fontspec,LU')
+%% fontspec-code-enc.dtx (with options: `fontspec,LU')
+%% fontspec-code-math.dtx (with options: `fontspec,LU')
+%% fontspec-code-closing.dtx (with options: `fontspec,LU')
+%% fontspec-code-xfss.dtx (with options: `fontspec,LU')
%% ------------------------------------------------
%% The FONTSPEC package <wspr.io/fontspec>
%% ------------------------------------------------
@@ -39,7 +39,7 @@
%%^^A%% Metadata for the package, including files and versioning
\RequirePackage{xparse}
-\ProvidesExplPackage{fontspec-xetex}%
+\ProvidesExplPackage{fontspec-luatex}%
{2020/01/26}{2.7g}{Font selection for XeLaTeX and LuaLaTeX}
%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
@@ -468,7 +468,7 @@
}
\bool_if:NTF \g__fontspec_euenc_bool
{
- \tl_gset:Nn \g_fontspec_encoding_tl {EU1}
+ \tl_gset:Nn \g_fontspec_encoding_tl {EU2}
}
{ \tl_gset:Nn \g_fontspec_encoding_tl { TU } }
\tl_set:Nn \rmdefault {lmr}
@@ -486,7 +486,10 @@
}
\bool_if:NT \g__fontspec_euenc_bool
{
+ \cs_set_eq:NN \fontspec_tmp: \XeTeXpicfile
+ \cs_set:Npn \XeTeXpicfile {}
\RequirePackage{xunicode}
+ \cs_set_eq:NN \XeTeXpicfile \fontspec_tmp:
}
\cs_new:Npn \FontspecSetCheckBoolTrue { \bool_set_true:N \l__fontspec_check_bool }
\cs_new:Npn \FontspecSetCheckBoolFalse { \bool_set_false:N \l__fontspec_check_bool }
@@ -499,6 +502,10 @@
{
\int_set:Nn #1 { \__dim_eval:w #2 #1 \__dim_eval_end: }
}
+\cs_set:Npn \__fontspec_lua_function:ne #1#2 { \lua_now:e { fontspec.#1 ("#2") } }
+\cs_set:Npn \__fontspec_lua_function:nee #1#2#3 { \lua_now:e { fontspec.#1 ("#2","#3") } }
+\cs_set:Npn \__fontspec_lua_function:neee #1#2#3#4 { \lua_now:e { fontspec.#1 ("#2","#3","#4") } }
+\cs_set:Npn \__fontspec_lua_function:neeee #1#2#3#4#5 { \lua_now:e { fontspec.#1 ("#2","#3","#4","#5") } }
\cs_generate_variant:Nn \int_set:Nn {Nv}
\cs_generate_variant:Nn \keys_set:nn {nx}
\cs_generate_variant:Nn \keys_set_known:nnN {nx}
@@ -777,22 +784,22 @@
}
\cs_new:Nn \__fontspec_main_setmathrm:nn
{
- \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
+ \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
\__fontspec_setmathrm_hook:nn {#1} {#2} % for unicode-math only
}
\cs_new:Nn \__fontspec_main_setboldmathrm:nn
{
- \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2}
+ \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2}
\__fontspec_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
}
\cs_new:Nn \__fontspec_main_setmathsf:nn
{
- \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
+ \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
\__fontspec_setmathsf_hook:nn {#1} {#2} % for unicode-math only
}
\cs_new:Nn \__fontspec_main_setmathtt:nn
{
- \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
+ \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
\__fontspec_setmathtt_hook:nn {#1} {#2} % for unicode-math only
}
\cs_set_eq:NN \__fontspec_setmainfont_hook:nn \use_none:nn
@@ -1252,6 +1259,7 @@
\cs_new:Nn \__fontspec_sanitise_fontname:Nn
{
\tl_set:Nx #1 {#2}
+ \tl_remove_all:Nn #1 {~}
\clist_map_inline:Nn \l__fontspec_extensions_clist
{
\tl_if_in:NnT #1 {##1}
@@ -1350,7 +1358,7 @@
}
\cs_new:Nn \__fontspec_construct_font_call:nnnnnn
{
- " \__fontspec_fontname_wrap:n { #1 #2 #3 }
+ " \__fontspec_fontname_wrap:n { #1 #2 } #3
#4 #5
\str_if_eq:eeF {#6}{} {:#6} "
}
@@ -1389,14 +1397,7 @@
\__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_fontfeat_clist,#1}
\l__fontspec_keys_leftover_clist
\__fontspec_keys_set_known:nxN {fontspec} {\l__fontspec_keys_leftover_clist} \l__fontspec_keys_leftover_clist
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \keys_set:nV {fontspec-opentype} \l__fontspec_keys_leftover_clist
- }
- {
- \bool_if:nT { \l__fontspec_atsui_bool || \l__fontspec_graphite_bool }
- { \keys_set:nV {fontspec-aat} \l__fontspec_keys_leftover_clist }
- }
+ \keys_set:nV {fontspec-opentype} \l__fontspec_keys_leftover_clist
\tl_if_empty:NF \l__fontspec_mapping_tl
{ \__fontspec_update_featstr:n { mapping = \l__fontspec_mapping_tl } }
@@ -1505,6 +1506,7 @@
{
\tl_set:Nx #1 {#2}
\tl_replace_all:Nnx #1 {*} {\l__fontspec_basename_tl}
+ \tl_remove_all:Nn #1 {~}
}
\cs_new:Nn \__fontspec_add_nfssfont:nnnn
{
@@ -1522,26 +1524,7 @@
}
\cs_new:Nn \__fontspec_set_font_type:N
{
-\bool_set_false:N \l__fontspec_tfm_bool
-\bool_set_false:N \l__fontspec_atsui_bool
-\bool_set_false:N \l__fontspec_ot_bool
-\bool_set_false:N \l__fontspec_mm_bool
-\bool_set_false:N \l__fontspec_graphite_bool
-\ifcase\XeTeXfonttype #1
-\bool_set_true:N \l__fontspec_tfm_bool
-\or
-\bool_set_true:N \l__fontspec_atsui_bool
-\tl_if_empty:NT \l__fontspec_renderer_tl { \tl_set:Nn \l__fontspec_renderer_tl {/AAT} }
-\ifnum\XeTeXcountvariations #1 > 0\relax
-\bool_set_true:N \l__fontspec_mm_bool
-\fi
-\or
-\bool_set_true:N \l__fontspec_ot_bool
-\tl_if_empty:NT \l__fontspec_renderer_tl { \tl_set:Nn \l__fontspec_renderer_tl {/OT} }
-\or
-\bool_set_true:N \l__fontspec_graphite_bool
-\tl_if_empty:NT \l__fontspec_renderer_tl { \tl_set:Nn \l__fontspec_renderer_tl {/GR} }
-\fi
+ \bool_set_true:N \l__fontspec_ot_bool
}
\cs_new:Nn \__fontspec_set_autofont:Nnn
{
@@ -1738,27 +1721,14 @@
}
\tl_set:Nn \l__fontspec_pre_feat_sclist
{
- \bool_if:NT \l__fontspec_ot_bool
- {
- \tl_if_empty:NF \l__fontspec_script_tl { script = \l__fontspec_script_tl ; }
- \tl_if_empty:NF \l__fontspec_lang_tl { language = \l__fontspec_lang_tl ; }
- }
- }
-\cs_new:Nn \__fontspec_make_ot_smallcaps:TF
- {
- \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2}
+ mode = \l__fontspec_mode_tl ;
+ \tl_if_empty:NF \l__fontspec_shaper_tl { shaper = \l__fontspec_shaper_tl ; }
+ \tl_if_empty:NF \l__fontspec_script_tl { script = \l__fontspec_script_tl ; }
+ \tl_if_empty:NF \l__fontspec_lang_tl { language = \l__fontspec_lang_tl ; }
}
\cs_new:Nn \__fontspec_make_smallcaps:TF
{
- \bool_if:NTF \l__fontspec_ot_bool
- { \__fontspec_make_ot_smallcaps:TF {#1} {#2} }
- {
- \bool_if:NT \l__fontspec_atsui_bool
- {
- \exp_args:No \__fontspec_make_AAT_feature_string:NnnTF
- \l__fontspec_fontface_cs_tl {3} {3} {#1} {#2}
- }
- }
+ \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2}
}
\cs_new:Nn \__fontspec_update_featstr:n
{
@@ -1788,6 +1758,11 @@
\tl_gclear:N \g__fontspec_defined_shapes_tl
\tl_gclear:N \g__fontspec_curr_series_tl
\tl_gset_eq:NN \g__fontspec_nfss_enc_tl \g_fontspec_encoding_tl
+ \tl_set:Nn \l__fontspec_mode_tl {node}
+ \int_set:Nn \prehyphenchar { `\- } % fixme
+ \int_zero:N \posthyphenchar % fixme
+ \int_zero:N \preexhyphenchar % fixme
+ \int_zero:N \postexhyphenchar % fixme
}
\cs_new:Nn \__fontspec_init_fontface:
{
@@ -1799,29 +1774,21 @@
\tl_clear:N \l__fontspec_wordspace_adjust_tl
\tl_clear:N \l__fontspec_punctspace_adjust_tl
}
-\cs_new:Nn \__fontspec_iv_str_to_num:Nn
+\cs_new_protected:Nn \__fontspec_ot_validate_tag:n
{
- \__fontspec_strip_leading_sign:Nw #1#2 \q_nil
+ \__fontspec_ot_validate_tag:w #1 \q_nil
}
-\cs_generate_variant:Nn \__fontspec_iv_str_to_num:Nn {Nx}
-\cs_set:Npn \__fontspec_strip_leading_sign:Nw #1#2#3 \q_nil
+\cs_generate_variant:Nn \__fontspec_ot_validate_tag:n {x}
+\cs_set:Npn \__fontspec_ot_validate_tag:w #1 #2 \q_nil
{
- \bool_if:nTF { \str_if_eq_p:nn {#2} {+} || \str_if_eq_p:nn {#2} {-} }
- { \__fontspec_iv_str_to_num:w #1 \q_nil #3 \c_empty_tl \c_empty_tl \q_nil }
- { \__fontspec_iv_str_to_num:w #1 \q_nil #2#3 \c_empty_tl \c_empty_tl \q_nil }
+ \bool_if:nTF { \str_if_eq_p:nn {#1} {+} || \str_if_eq_p:nn {#1} {-} }
+ { \__fontspec_ot_validate_tag_aux:w #2 \c_empty_tl \c_empty_tl \q_nil }
+ { \__fontspec_ot_validate_tag_aux:w #1#2 \c_empty_tl \c_empty_tl \q_nil }
}
-\cs_set:Npn \__fontspec_iv_str_to_num:w #1 \q_nil #2#3#4#5#6 \q_nil
+\cs_set:Npn \__fontspec_ot_validate_tag_aux:w #1#2#3#4#5 \q_nil
{
- \int_compare:nT { \tl_count:n {#6} > 2 }
- { \__fontspec_error:nx {ot-tag-too-long} {#2#3#4#5#6} }
-
- \int_set:Nn #1
- {
- `#2 * "1000000
- + `#3 * "10000
- + \ifx \c_empty_tl #4 32 \else `#4 \fi * "100
- + \ifx \c_empty_tl #5 32 \else `#5 \fi
- }
+ \int_compare:nT { \tl_count:n {#5} > 2 }
+ { \__fontspec_error:nx {ot-tag-too-long} {#1#2#3#4#5} }
}
%%^^A%% fontspec-code-opentype.dtx -- part of FONTSPEC <wspr.io/fontspec>
@@ -1906,20 +1873,18 @@
\bool_if:nTF { \tl_if_empty_p:e {#2} }
{ \prg_return_false: }
{
- \__fontspec_iv_str_to_num:Nx \l__fontspec_strnum_int {#2}
- \int_set:Nn \l_tmpb_int { \XeTeXOTcountscripts #1 }
- \int_zero:N \l_tmpa_int
- \bool_set_false:N \l__fontspec_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l_tmpa_int = \l_tmpb_int }
+ \__fontspec_ot_validate_tag:x {#2}
+ \cs_if_eq:NNTF #1 \font
+ { \tl_set:Nx \l__fontspec_tmp_tl {\curr at fontshape/\f at size} }
+ { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
+ \lua_now:e { fontspec.check_ot_script("\l__fontspec_tmp_tl", "#2") }
+ \bool_if:NTF \l__fontspec_check_bool
{
- \ifnum \XeTeXOTscripttag #1 \l_tmpa_int = \l__fontspec_strnum_int
- \bool_set_true:N \l__fontspec_check_bool
- \int_set:Nn \l_tmpa_int {\l_tmpb_int}
- \else
- \int_incr:N \l_tmpa_int
- \fi
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
}
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
}
}
}
@@ -1935,26 +1900,12 @@
\bool_if:nTF { \tl_if_empty_p:e {#3} }
{ \prg_return_false: }
{
- \__fontspec_iv_str_to_num:Nx \l__fontspec_strnum_int {#2}
- \__fontspec_iv_str_to_num:Nx \l__fontspec_script_int {#3}
- \int_set:Nn \l__fontspec_tmpb_int
- { \XeTeXOTcountlanguages #1 \l__fontspec_script_int }
- \int_zero:N \l__fontspec_tmpa_int
- \bool_set_false:N \l__fontspec_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l__fontspec_tmpa_int = \l__fontspec_tmpb_int }
- {
- \int_set:Nn \l__fontspec_tmpc_int
- { \XeTeXOTlanguagetag #1 \l__fontspec_script_int \l__fontspec_tmpa_int }
-
- \int_compare:nNnTF \l__fontspec_tmpc_int = \l__fontspec_strnum_int
- {
- \bool_set_true:N \l__fontspec_check_bool
- \int_set:Nn \l__fontspec_tmpa_int {\l__fontspec_tmpb_int}
- }
- {
- \int_incr:N \l__fontspec_tmpa_int
- }
- }
+ \__fontspec_ot_validate_tag:x {#2}
+ \__fontspec_ot_validate_tag:x {#3}
+ \cs_if_eq:NNTF #1 \font
+ { \tl_set:Nx \l__fontspec_tmp_tl {\curr at fontshape/\f at size} }
+ { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
+ \__fontspec_lua_function:neee {check_ot_lang} {\l__fontspec_tmp_tl} {#2} {#3}
\bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
}
}
@@ -1972,28 +1923,13 @@
\bool_if:nTF { \tl_if_empty_p:e {#3} || \tl_if_empty_p:e {#4} }
{ \prg_return_false: }
{
- \__fontspec_iv_str_to_num:Nx \l__fontspec_strnum_int {#2}
-
- \str_if_eq:eeTF {#3} {dflt}
- { \int_zero:N \l__fontspec_language_int }
- { \__fontspec_iv_str_to_num:Nx \l__fontspec_language_int {#3} }
- \__fontspec_iv_str_to_num:Nx \l__fontspec_script_int {#4}
-
- \int_set:Nn \l_tmpb_int
- { \XeTeXOTcountfeatures #1 \l__fontspec_script_int \l__fontspec_language_int }
-
- \int_zero:N \l_tmpa_int
- \bool_set_false:N \l__fontspec_check_bool
- \bool_until_do:nn { \int_compare_p:nNn \l_tmpa_int = \l_tmpb_int }
- {
- \ifnum\XeTeXOTfeaturetag #1 \l__fontspec_script_int \l__fontspec_language_int
- \l_tmpa_int =\l__fontspec_strnum_int
- \bool_set_true:N \l__fontspec_check_bool
- \int_set:Nn \l_tmpa_int {\l_tmpb_int}
- \else
- \int_incr:N \l_tmpa_int
- \fi
- }
+ \__fontspec_ot_validate_tag:x {#2}
+ \__fontspec_ot_validate_tag:x {#3}
+ \__fontspec_ot_validate_tag:x {#4}
+ \cs_if_eq:NNTF #1 \font
+ { \tl_set:Nx \l__fontspec_tmp_tl {\curr at fontshape/\f at size} }
+ { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
+ \__fontspec_lua_function:neeee {check_ot_feat} {\l__fontspec_tmp_tl} {#2} {#3} {#4}
\bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
}
}
@@ -2124,65 +2060,6 @@
%%^^A%% fontspec-code-graphite.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\cs_new:Nn \__fontspec_define_aat_feature_group:n
- {
- \keys_define:nn {fontspec-aat} { #1 .multichoice: }
- }
-\cs_new:Nn \__fontspec_define_aat_feature:nnnn
- {
- \keys_define:nn {fontspec-aat}
- {
- #1/#2 .code:n = { \__fontspec_make_AAT_feature:nn {#3}{#4} }
- }
- }
-
-\cs_new:Nn \__fontspec_make_AAT_feature:nn
- {
- \tl_if_empty:nTF {#1}
- { \__fontspec_warning:n {aat-feature-not-exist} }
- {
- \exp_args:No \__fontspec_make_AAT_feature_string:NnnTF \l__fontspec_fontface_cs_tl {#1} {#2}
- {
- \__fontspec_update_featstr:n {\l_fontspec_feature_string_tl}
- }
- {
- \__fontspec_warning:nx {aat-feature-not-exist-in-font} {#1,#2}
- }
- }
- }
-\prg_new_conditional:Nnn \__fontspec_make_AAT_feature_string:Nnn {TF,T,F}
- {
- \tl_set:Nx \l__fontspec_tmpa_tl { \XeTeXfeaturename #1 #2 }
- \tl_if_empty:NTF \l__fontspec_tmpa_tl
- { \prg_return_false: }
- {
- \int_compare:nTF { \XeTeXisexclusivefeature #1 #2 > 0 }
- {
- \tl_set:Nx \l__fontspec_tmpb_tl {\XeTeXselectorname #1 #2\space #3}
- }
- {
- \int_if_even:nTF {#3}
- {
- \tl_set:Nx \l__fontspec_tmpb_tl {\XeTeXselectorname #1 #2\space #3}
- }
- {
- \tl_set:Nx \l__fontspec_tmpb_tl
- {
- \XeTeXselectorname #1 #2\space \numexpr#3-1\relax
- }
- \tl_if_empty:NF \l__fontspec_tmpb_tl { \tl_put_left:Nn \l__fontspec_tmpb_tl {!} }
- }
- }
-
- \tl_if_empty:NTF \l__fontspec_tmpb_tl
- { \prg_return_false: }
- {
- \tl_set:Nx \l_fontspec_feature_string_tl { \l__fontspec_tmpa_tl = \l__fontspec_tmpb_tl }
- \prg_return_true:
- }
- }
- }
-
%%^^A%% fontspec-code-keyval.dtx -- part of FONTSPEC <wspr.io/fontspec>
\clist_gset:Nn \g__fontspec_all_keyval_modules_clist
@@ -2215,7 +2092,6 @@
\bool_set_true:N \l__fontspec_external_bool
\tl_set:Nn \l__fontspec_font_path_tl {#1}
\__fontspec_font_is_file:
- \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
}
\aliasfontfeature{Path}{ExternalLocation}
\__fontspec_keys_define_code:nnn {fontspec} {Path} {}
@@ -2232,40 +2108,53 @@
\keys_define:nn {fontspec-renderer}
{
Renderer .choices:nn =
- {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,HarfBuzz,Harfbuzz}
+ {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite}
{
- \int_compare:nTF {\l_keys_choice_int <= 4}
+ \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l__fontspec_harfbuzz_bool }
+
+ \tl_set:Nx \l__fontspec_mode_tl
{
- \tl_set:Nx \l__fontspec_renderer_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {/AAT} 2 {/OT} 3 {/OT} 4 {/GR} }
- }
- \tl_gset:Nx \g__fontspec_single_feat_tl { \l__fontspec_renderer_tl }
+ \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}}
}
+
+ \tl_set:Nx \l__fontspec_shaper_tl
{
- \__fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/HarfBuzz}
+ \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} }
}
- }
+
+
+ \tl_gset:Nx \g__fontspec_single_feat_tl
+ {
+ mode=\l__fontspec_mode_tl ;
+ \tl_if_empty:NF \l__fontspec_shaper_tl { shaper=\l__fontspec_shaper_tl}
+ }
+ } ,
+
+ Renderer unknown .code:n =
+ {
+ \bool_set_true:N \l__fontspec_harfbuzz_bool
+ \__fontspec_warning:nx {unknown-renderer} {#1}
+ \tl_set:Nn \l__fontspec_mode_tl {harf}
+ \tl_set:Nn \l__fontspec_shaper_tl {#1}
+ } ,
}
\__fontspec_keys_define_code:nnn {fontspec-preparse} {Script}
{
- \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
\tl_set:Nn \l__fontspec_script_name_tl {#1}
}
\__fontspec_keys_define_code:nnn {fontspec-preparse} {Language}
{
- \keys_set:nn {fontspec-renderer} {Renderer=OpenType}
\tl_set:Nn \l__fontspec_lang_name_tl {#1}
}
\__fontspec_keys_define_code:nnn {fontspec-preparse} {FontIndex}
{
\str_if_eq:eeF { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
{ \__fontspec_warning:n {font-index-needs-ttc} }
- \tl_set:Nn \l__fontspec_ttc_index_tl {:#1}
+ \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)}
}
\__fontspec_keys_define_code:nnn {fontspec} {FontIndex}
{
- \tl_set:Nn \l__fontspec_ttc_index_tl {:#1}
+ \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)}
}
\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {UprightFont}
{
@@ -2541,6 +2430,7 @@
{ \__fontspec_primitive_font_set_hyphenchar:Nn \font {-1} }
}
{
+ \__fontspec_warning:nx {only-xetex-feature} {HyphenChar}
\tl_if_single:nTF {#1}
{ \tl_set:Nn \l__fontspec_hyphenchar_tl {`#1} }
@@ -2601,13 +2491,15 @@
\int_to_hex:n { \l__fontspec_tmp_int }
}
}
-\__fontspec_keys_define_code:nnn {fontspec-aat} {Mapping}
- {
- \tl_set:Nn \l__fontspec_mapping_tl { #1 }
- }
\__fontspec_keys_define_code:nnn {fontspec-opentype} {Mapping}
{
- \tl_set:Nn \l__fontspec_mapping_tl { #1 }
+ \str_if_eq:nnTF {#1} {tex-text}
+ {
+ \__fontspec_warning:n {no-mapping-ligtex}
+ \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none}
+ \keys_set:nn {fontspec-opentype} { Ligatures=TeX }
+ }
+ { \__fontspec_warning:n {no-mapping} }
}
\__fontspec_keys_define_code:nnn {fontspec} {Weight}
{
@@ -2619,21 +2511,7 @@
}
\__fontspec_keys_define_code:nnn {fontspec} {OpticalSize}
{
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \tl_set:Nn \l__fontspec_optical_size_tl {/ S = #1}
- }
- {
- \bool_if:NT \l__fontspec_mm_bool
- {
- \__fontspec_update_featstr:n { optical size = #1 }
- }
- }
- \bool_if:nT { !\l__fontspec_ot_bool && !\l__fontspec_mm_bool }
- {
- \bool_if:NT \l__fontspec_firsttime_bool
- { \__fontspec_warning:nx {no-opticals} {\l_fontspec_fontname_tl} }
- }
+ \tl_set:Nn \l__fontspec_optical_size_tl {/ S = #1}
}
\keys_define:nn {fontspec}
{
@@ -2723,7 +2601,7 @@
\__fontspec_define_opentype_feature:nnnnn {Ligatures} {ResetAll} {} {}
{
+dlig,-dlig,+rlig,-rlig,+liga,-liga,+dlig,-dlig,+clig,-clig,+hlig,-hlig,
- mapping = tex-text
+ +tlig,-tlig
}
\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Required} {rlig} {rlig} {}
\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Common} {liga} {liga} {}
@@ -2731,12 +2609,7 @@
\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Discretionary} {dlig} {dlig} {}
\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Contextual} {clig} {clig} {}
\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Historic} {hlig} {hlig} {}
-\keys_define:nn {fontspec-opentype}
- {
- Ligatures / TeX .code:n = { \tl_set:Nn \l__fontspec_mapping_tl {tex-text} },
- Ligatures / TeXOff .code:n = { \tl_clear:N \l__fontspec_mapping_tl },
- Ligatures / TeXReset .code:n = { \tl_clear:N \l__fontspec_mapping_tl },
- }
+\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {TeX} {} {tlig} {}
\__fontspec_define_opentype_feature_group:n {Letters}
\__fontspec_define_opentype_feature:nnnnn {Letters} {ResetAll} {} {}
{
@@ -2768,6 +2641,7 @@
\aliasfontfeatureoption {Numbers} {Monospaced} {Tabular}
\aliasfontfeatureoption {Numbers} {Lowercase} {OldStyle}
\aliasfontfeatureoption {Numbers} {Uppercase} {Lining}
+ \__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Arabic} {anum} {anum} {}
\__fontspec_define_opentype_feature_group:n {VerticalPosition}
\__fontspec_define_opentype_feature:nnnnn {VerticalPosition} {ResetAll} {} {}
{
@@ -2923,6 +2797,11 @@
{ \__fontspec_make_OT_feature:nnn {salt}{ +salt = ##1 }{} }
}
}
+\keys_define:nn {fontspec-opentype}
+ {
+ Alternate / Random .code:n =
+ { \__fontspec_make_OT_feature:nnn {salt}{ +salt = random }{} } ,
+ }
\aliasfontfeature{Alternate}{StylisticAlternates}
\__fontspec_define_opentype_feature_group:n {Variant}
\keys_define:nn {fontspec-opentype}
@@ -3628,144 +3507,6 @@
%%^^A%% fontspec-code-feat-aat.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\__fontspec_define_aat_feature_group:n {Ligatures}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Required} {1} {0}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoRequired} {1} {1}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Common} {1} {2}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoCommon} {1} {3}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Rare} {1} {4}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoRare} {1} {5}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Discretionary} {1} {4}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoDiscretionary} {1} {5}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Logos} {1} {6}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoLogos} {1} {7}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Rebus} {1} {8}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoRebus} {1} {9}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Diphthong} {1} {10}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoDiphthong} {1} {11}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Squared} {1} {12}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoSquared} {1} {13}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {AbbrevSquared} {1} {14}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoAbbrevSquared} {1} {15}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {Icelandic} {1} {32}
-\__fontspec_define_aat_feature:nnnn {Ligatures} {NoIcelandic} {1} {33}
-\keys_define:nn {fontspec-aat}
- {
- Ligatures / TeX .code:n =
- {
- \tl_set:Nn \l__fontspec_mapping_tl { tex-text }
- }
- }
-\__fontspec_define_aat_feature_group:n {Letters}
-\__fontspec_define_aat_feature:nnnn {Letters} {Normal} {3} {0}
-\__fontspec_define_aat_feature:nnnn {Letters} {Uppercase} {3} {1}
-\__fontspec_define_aat_feature:nnnn {Letters} {Lowercase} {3} {2}
-\__fontspec_define_aat_feature:nnnn {Letters} {SmallCaps} {3} {3}
-\__fontspec_define_aat_feature:nnnn {Letters} {InitialCaps} {3} {4}
-\__fontspec_define_aat_feature_group:n {Numbers}
-\__fontspec_define_aat_feature:nnnn {Numbers} {Monospaced} {6} {0}
-\__fontspec_define_aat_feature:nnnn {Numbers} {Proportional} {6} {1}
-\__fontspec_define_aat_feature:nnnn {Numbers} {Lowercase} {21} {0}
-\__fontspec_define_aat_feature:nnnn {Numbers} {OldStyle} {21} {0}
-\__fontspec_define_aat_feature:nnnn {Numbers} {Uppercase} {21} {1}
-\__fontspec_define_aat_feature:nnnn {Numbers} {Lining} {21} {1}
-\__fontspec_define_aat_feature:nnnn {Numbers} {SlashedZero} {14} {5}
-\__fontspec_define_aat_feature:nnnn {Numbers} {NoSlashedZero} {14} {4}
-\__fontspec_define_aat_feature_group:n {Contextuals}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {WordInitial} {8} {0}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {NoWordInitial} {8} {1}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {WordFinal} {8} {2}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {NoWordFinal} {8} {3}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {LineInitial} {8} {4}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {NoLineInitial} {8} {5}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {LineFinal} {8} {6}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {NoLineFinal} {8} {7}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {Inner} {8} {8}
-\__fontspec_define_aat_feature:nnnn {Contextuals} {NoInner} {8} {9}
-\__fontspec_define_aat_feature_group:n {Diacritics}
-\__fontspec_define_aat_feature:nnnn {Diacritics} {Show} {9} {0}
-\__fontspec_define_aat_feature:nnnn {Diacritics} {Hide} {9} {1}
-\__fontspec_define_aat_feature:nnnn {Diacritics} {Decompose} {9} {2}
-\__fontspec_define_aat_feature_group:n {VerticalPosition}
-\__fontspec_define_aat_feature:nnnn {VerticalPosition} {Normal} {10} {0}
-\__fontspec_define_aat_feature:nnnn {VerticalPosition} {Superior} {10} {1}
-\__fontspec_define_aat_feature:nnnn {VerticalPosition} {Inferior} {10} {2}
-\__fontspec_define_aat_feature:nnnn {VerticalPosition} {Ordinal} {10} {3}
-\__fontspec_define_aat_feature_group:n {Fractions}
-\__fontspec_define_aat_feature:nnnn {Fractions} {On} {11} {1}
-\__fontspec_define_aat_feature:nnnn {Fractions} {Off} {11} {0}
-\__fontspec_define_aat_feature:nnnn {Fractions} {Diagonal} {11} {2}
-\__fontspec_define_aat_feature_group:n { Alternate }
-\keys_define:nn {fontspec-aat}
- {
- Alternate .default:n = {0} ,
- Alternate / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \__fontspec_make_AAT_feature:nn {17}{##1}
- }
- }
- }
-\__fontspec_define_aat_feature_group:n {Variant}
-\keys_define:nn {fontspec-aat}
- {
- Variant .default:n = {0} ,
- Variant / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- { \__fontspec_make_AAT_feature:nn {18}{##1} }
- }
- }
-\aliasfontfeature{Variant}{StylisticSet}
-\__fontspec_define_aat_feature_group:n {Vertical}
-\keys_define:nn {fontspec-aat}
- {
- Vertical .choice: ,
- Vertical / RotatedGlyphs .code:n =
- {
- \__fontspec_update_featstr:n {vertical}
- }
- }
-\__fontspec_define_aat_feature_group:n {Style}
-\__fontspec_define_aat_feature:nnnn {Style} {Italic} {32} {2}
-\__fontspec_define_aat_feature:nnnn {Style} {Ruby} {28} {2}
-\__fontspec_define_aat_feature:nnnn {Style} {Display} {19} {1}
-\__fontspec_define_aat_feature:nnnn {Style} {Engraved} {19} {2}
-\__fontspec_define_aat_feature:nnnn {Style} {Titling} {19} {4}
-\__fontspec_define_aat_feature:nnnn {Style} {TitlingCaps} {19} {4} % backwards compat
-\__fontspec_define_aat_feature:nnnn {Style} {TallCaps} {19} {5}
-\__fontspec_define_aat_feature_group:n {CJKShape}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {Traditional} {20} {0}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {Simplified} {20} {1}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {JIS1978} {20} {2}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {JIS1983} {20} {3}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {JIS1990} {20} {4}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {Expert} {20} {10}
-\__fontspec_define_aat_feature:nnnn {CJKShape} {NLC} {20} {13}
-\__fontspec_define_aat_feature_group:n {CharacterWidth}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Proportional} {22} {0}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Full} {22} {1}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Half} {22} {2}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Third} {22} {3}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Quarter} {22} {4}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {AlternateProportional} {22} {5}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {AlternateHalf} {22} {6}
-\__fontspec_define_aat_feature:nnnn {CharacterWidth} {Default} {22} {7}
-\__fontspec_define_aat_feature_group:n {Annotation}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Off} {24} {0}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Box} {24} {1}
-\__fontspec_define_aat_feature:nnnn {Annotation} {RoundedBox} {24} {2}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Circle} {24} {3}
-\__fontspec_define_aat_feature:nnnn {Annotation} {BlackCircle} {24} {4}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Parenthesis} {24} {5}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Period} {24} {6}
-\__fontspec_define_aat_feature:nnnn {Annotation} {RomanNumerals} {24} {7}
-\__fontspec_define_aat_feature:nnnn {Annotation} {Diamond} {24} {8}
-\__fontspec_define_aat_feature:nnnn {Annotation} {BlackSquare} {24} {9}
-\__fontspec_define_aat_feature:nnnn {Annotation} {BlackRoundSquare} {24} {10}
-\__fontspec_define_aat_feature:nnnn {Annotation} {DoubleCircle} {24} {11}
-
%%^^A%% fontspec-code-enc.dtx -- part of FONTSPEC <wspr.io/fontspec>
\DeclareDocumentCommand \EncodingCommand { m O{} O{} m }
diff --git a/supporttexmf/tex/latex/fontspec/fontspec.lua b/supporttexmf/tex/latex/fontspec/fontspec.lua
new file mode 100644
index 0000000..8579760
--- /dev/null
+++ b/supporttexmf/tex/latex/fontspec/fontspec.lua
@@ -0,0 +1,83 @@
+--
+-- This is file `fontspec.lua',
+-- generated with the docstrip utility.
+--
+-- The original source files were:
+--
+-- fontspec.dtx (with options: `lua')
+-- fontspec-lua.dtx (with options: `lua')
+-- ------------------------------------------------
+-- The FONTSPEC package <wspr.io/fontspec>
+-- ------------------------------------------------
+-- Copyright 2004-2017 Will Robertson, LPPL "maintainer"
+-- Copyright 2009-2013 Khaled Hosny
+-- ------------------------------------------------
+-- 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/>.
+-- ------------------------------------------------
+-- ^^A%% fontspec.dtx -- part of FONTSPEC <wspr.io/fontspec>
+-- ^^A%% Metadata for the package, including files and versioning
+
+fontspec = fontspec or {}
+local fontspec = fontspec
+fontspec.module = {
+ name = "fontspec",
+ version = "2.7g",
+ date = "2020/01/26",
+ description = "Font selection for XeLaTeX and LuaLaTeX",
+ author = "Khaled Hosny, Philipp Gesang, Will Robertson",
+ copyright = "Khaled Hosny, Philipp Gesang, Will Robertson",
+ license = "LPPL v1.3c"
+}
+
+-- ^^A%% fontspec-lua.dtx -- part of FONTSPEC <wspr.io/fontspec>
+local err, warn, info, log = luatexbase.provides_module(fontspec.module)
+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)
+local latex
+if luatexbase.registernumber then
+ latex = luatexbase.registernumber("catcodetable at latex")
+else
+ latex = luatexbase.catcodetables.CatcodeTableLaTeX
+end
+local function tempswatrue() tex.sprint(latex,[[\FontspecSetCheckBoolTrue ]]) end
+local function tempswafalse() tex.sprint(latex,[[\FontspecSetCheckBoolFalse]]) end
+function fontspec.check_ot_script(fnt, script)
+ if luaotfload.aux.provides_script(font.id(fnt), script) then
+ tempswatrue()
+ else
+ tempswafalse()
+ end
+end
+function fontspec.check_ot_lang(fnt, lang, script)
+ if luaotfload.aux.provides_language(font.id(fnt), script, lang) then
+ tempswatrue()
+ else
+ tempswafalse()
+ end
+end
+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
+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
+
diff --git a/supporttexmf/tex/latex/fontspec/fontspec.sty b/supporttexmf/tex/latex/fontspec/fontspec.sty
new file mode 100644
index 0000000..325fdf2
--- /dev/null
+++ b/supporttexmf/tex/latex/fontspec/fontspec.sty
@@ -0,0 +1,45 @@
+%%
+%% This is file `fontspec.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% fontspec.dtx (with options: `fontspec,load')
+%% fontspec-code-load.dtx (with options: `fontspec,load')
+%% ------------------------------------------------
+%% The FONTSPEC package <wspr.io/fontspec>
+%% ------------------------------------------------
+%% Copyright 2004-2017 Will Robertson, LPPL "maintainer"
+%% Copyright 2009-2013 Khaled Hosny
+%% ------------------------------------------------
+%% 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/>.
+%% ------------------------------------------------
+%%^^A%% fontspec.dtx -- part of FONTSPEC <wspr.io/fontspec>
+%%^^A%% Metadata for the package, including files and versioning
+
+\RequirePackage{xparse}
+\ProvidesExplPackage{fontspec}%
+ {2020/01/26}{2.7g}{Font selection for XeLaTeX and LuaLaTeX}
+
+%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
+\sys_if_engine_luatex:T
+ {
+ \RequirePackage{luaotfload}
+ \lua_now:e{require("fontspec")}
+ \RequirePackageWithOptions{fontspec-luatex}
+ \endinput
+ }
+\sys_if_engine_xetex:T
+ {
+ \RequirePackageWithOptions{fontspec-xetex}
+ \endinput
+ }
+\msg_new:nnn {fontspec} {cannot-use-pdftex}
+ {
+ The~ fontspec~ package~ requires~ either~ XeTeX~ or~ LuaTeX.\\\\
+ You~ must~ change~ your~ typesetting~ engine~ to,~ e.g.,~
+ "xelatex"~ or~ "lualatex" instead~ of~ "latex"~ or~ "pdflatex".
+ }
+\msg_fatal:nn {fontspec} {cannot-use-pdftex}
More information about the latex3-commits
mailing list.