diff options
author | Karl Berry <karl@freefriends.org> | 2024-05-11 20:36:43 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-05-11 20:36:43 +0000 |
commit | 67a321d98ede4649e46d620bbb9837a7c9fb5fd1 (patch) | |
tree | ba3884fb80109f9224408a71b07653298cecfc28 /Master/texmf-dist/tex/latex/fontspec | |
parent | 6c0edfd9f3be4d992a7e31152995de2a2808efe0 (diff) |
fontspec (11may24)
git-svn-id: svn://tug.org/texlive/trunk@71237 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontspec')
4 files changed, 165 insertions, 115 deletions
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty index 4fe9f75c91f..82b0a3591aa 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty @@ -40,7 +40,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec-luatex}% - {2024/05/07}{2.9d}{Font selection for XeLaTeX and LuaLaTeX} + {2024/05/11}{2.9e}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <latex3.github.io/fontspec> %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <latex3.github.io/fontspec> @@ -338,6 +338,12 @@ { '#1' doesn't appear to have an Optical Size axis. } +\__fontspec_msg_new:nn {script-not-exist} + { + Script '#2' not explicitly supported within font '#1'. + Check the typeset output, and if it is okay then ignore this warning. + Otherwise a different font should be chosen. + } \__fontspec_msg_new:nn {language-not-exist} { Language '#1' not explicitly supported @@ -397,12 +403,6 @@ { Adjusting the maths setup (use [no-math] to avoid this). } -\__fontspec_msg_new:nn {no-script} - { - Script '#2' not explicitly supported within font '#1'. - Check the typeset output, and if it is okay then ignore this warning. - Otherwise a different font should be chosen. - } \__fontspec_msg_new:nn {opa-twice} { Opacity set twice, in both Colour and Opacity.\\ @@ -1007,7 +1007,7 @@ \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_lang_tl - \__fontspec_check_ot_feat:NnTF \font {#1} {\prg_return_true:} {\prg_return_false:} + \__fontspec_check_ot_feat:NnnnTF \font {#1} {\l__fontspec_lang_tl} {\l__fontspec_script_tl} {\prg_return_true:} {\prg_return_false:} } { \prg_return_false: @@ -1581,7 +1581,7 @@ % "normal" \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_sizedfont_tl} - \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_tl {#1} {\l__fontspec_sizing_leftover_clist} {} + \__fontspec_setup_nfss:Nn \l__fontspec_nfss_tl { #1 , \l__fontspec_sizing_leftover_clist } % small caps \clist_set_eq:NN \l__fontspec_fontfeat_curr_clist \l__fontspec_fontfeat_sc_clist @@ -1603,14 +1603,15 @@ \bool_if:NF \l__fontspec_nosc_bool { - \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_sc_tl - {#1} {\l__fontspec_sizing_leftover_clist} {\l__fontspec_fontfeat_curr_clist} + \__fontspec_setup_nfss:Nn \l__fontspec_nfss_sc_tl + {#1 , \l__fontspec_sizing_leftover_clist , \l__fontspec_fontfeat_curr_clist} } } -\cs_new:Nn \__fontspec_setup_nfss:Nnnn +\cs_new:Nn \__fontspec_setup_nfss:Nn { - \__fontspec_get_features:n { #2 , #3 , #4 } + \__fontspec_get_features:n { #2 } + \tl_if_empty:NF \l__fontspec_scale_tl { @@ -1720,22 +1721,25 @@ } (#1/#2)~ with~ NFSS~ spec.:~ \l__fontspec_nfss_tl - \exp_not:n { \\ } - -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} } - { - {\mddefault/\scdefault} {'small~ caps'~} - {\bfdefault/\scdefault} {'bold~ small~ caps'~} - {\mddefault/\scitdefault} {'italic~ small~ caps'~} - {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~} - {\mddefault/\scsldefault} {'slanted~ small~ caps'~} - {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~} - }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~ - with~ NFSS~ spec.:~ - \l__fontspec_nfss_sc_tl - \tl_if_empty:fF {\l__fontspec_postadjust_tl} + \tl_if_empty:NF \l__fontspec_nfss_sc_tl { - \exp_not:N \\ and~ font~ adjustment~ code: - \exp_not:N \\ \l__fontspec_postadjust_tl + \exp_not:n { \\ } + -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} } + { + {\mddefault/\scdefault} {'small~ caps'~} + {\bfdefault/\scdefault} {'bold~ small~ caps'~} + {\mddefault/\scitdefault} {'italic~ small~ caps'~} + {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~} + {\mddefault/\scsldefault} {'slanted~ small~ caps'~} + {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~} + }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~ + with~ NFSS~ spec.:~ + \l__fontspec_nfss_sc_tl + \tl_if_empty:fF {\l__fontspec_postadjust_tl} + { + \exp_not:N \\ and~ font~ adjustment~ code: + \exp_not:N \\ \l__fontspec_postadjust_tl + } } } } @@ -1746,9 +1750,33 @@ \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 + { + \bool_set_false:N \l__fontspec_tmpa_bool + \exp_args:Ne \clist_map_inline:nn { \l__fontspec_lang_tl , \g__fontspec_default_langs_clist } + { + \exp_args:Ne \clist_map_inline:nn { \l__fontspec_script_tl , \g__fontspec_default_scripts_clist } + { + \exp_args:No \__fontspec_check_ot_feat:NnnnT \l__fontspec_fontface_cs_tl {smcp} {##1} {####1} + { + \bool_set_true:N \l__fontspec_tmpa_bool + \clist_map_break: + } + } + } + \bool_if:NTF \l__fontspec_tmpa_bool {#1} {#2} + } \cs_new:Nn \__fontspec_make_smallcaps:TF { - \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2} + \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} + } + } } \cs_new:Nn \__fontspec_update_featstr:n { @@ -1946,12 +1974,7 @@ } } } -\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nn {TF,F} - { - \__fontspec_check_ot_feat:NnnnTF #1 {#2} {\l__fontspec_lang_tl} {\l__fontspec_script_tl} - {\prg_return_true:} {\prg_return_false:} - } -\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,F} +\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,T,F} { \bool_if:NTF \l__fontspec_never_check_bool { \prg_return_true: } @@ -2975,7 +2998,7 @@ } \bool_if:NF \l__fontspec_scriptlang_exist_bool { - \__fontspec_warning:nxx {no-script} {\l_fontspec_fontname_tl} {#1} + \__fontspec_info:nxx {script-not-exist} {\l_fontspec_fontname_tl} {#1} \clist_set:Nn \l_tmpa_clist {#2} \clist_get:NN \l_tmpa_clist \l__fontspec_script_tl \exp_args:Noo \__fontspec_check_script:NnF \l__fontspec_fontface_cs_tl \l__fontspec_script_tl @@ -2988,31 +3011,33 @@ } } } -\cs_new:Nn \fontspec_default_script:nn +\clist_new:N \g__fontspec_default_scripts_clist +\cs_new:Nn \fontspec_default_script:n { - \keys_define:nn {fontspec-opentype} { Script / #1 .code:n = + \clist_gset:Nn \g__fontspec_default_scripts_clist {#1} + } +\fontspec_default_script:n {latn,DFLT} +\keys_define:nn {fontspec-opentype} { Script / CustomDefault .code:n = + { + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:Nn \g__fontspec_default_scripts_clist { - \bool_set_false:N \l__fontspec_scriptlang_exist_bool - \clist_map_inline:nn {#2} - { - \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {####1} - { - \tl_set:Nn \l__fontspec_script_name_tl {#1} - \tl_set:Nn \l__fontspec_script_tl {####1} - \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} - \bool_set_true:N \l__fontspec_scriptlang_exist_bool - \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 } - \clist_map_break: - } - } - \bool_if:NF \l__fontspec_scriptlang_exist_bool + \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {##1} { - \tl_clear:N \l__fontspec_script_name_tl + \tl_set:Nn \l__fontspec_script_name_tl {Default (##1)} + \tl_set:Nn \l__fontspec_script_tl {##1} + \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \tl_gset:Nx \g__fontspec_single_feat_tl { script=##1 } + \clist_map_break: } } - } + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \tl_clear:N \l__fontspec_script_name_tl + } } -\fontspec_default_script:nn {CustomDefault} {latn,DFLT} +} \keys_define:nn {fontspec-opentype} { Language .choice: , @@ -3036,7 +3061,7 @@ } \bool_if:NF \l__fontspec_scriptlang_exist_bool { - \__fontspec_warning:nx {language-not-exist} {#1} + \__fontspec_info:nx {language-not-exist} {#1} \clist_set:Nn \l_tmpa_clist {#2} \clist_get:NN \l_tmpa_clist \l__fontspec_lang_tl \exp_args:Noo \__fontspec_check_lang:NnF \l__fontspec_fontface_cs_tl \l__fontspec_lang_tl @@ -3049,6 +3074,12 @@ } } } +\clist_new:N \g__fontspec_default_langs_clist +\cs_new:Nn \fontspec_default_lang:n + { + \clist_gset:Nn \g__fontspec_default_langs_clist {#1} + } +\fontspec_default_lang:n {dflt} \__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default } { \tl_set:Nn \l__fontspec_lang_tl {dflt} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty index 242e8141c0e..ff88419e717 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty @@ -40,7 +40,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec-xetex}% - {2024/05/07}{2.9d}{Font selection for XeLaTeX and LuaLaTeX} + {2024/05/11}{2.9e}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <latex3.github.io/fontspec> %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <latex3.github.io/fontspec> @@ -338,6 +338,12 @@ { '#1' doesn't appear to have an Optical Size axis. } +\__fontspec_msg_new:nn {script-not-exist} + { + Script '#2' not explicitly supported within font '#1'. + Check the typeset output, and if it is okay then ignore this warning. + Otherwise a different font should be chosen. + } \__fontspec_msg_new:nn {language-not-exist} { Language '#1' not explicitly supported @@ -397,12 +403,6 @@ { Adjusting the maths setup (use [no-math] to avoid this). } -\__fontspec_msg_new:nn {no-script} - { - Script '#2' not explicitly supported within font '#1'. - Check the typeset output, and if it is okay then ignore this warning. - Otherwise a different font should be chosen. - } \__fontspec_msg_new:nn {opa-twice} { Opacity set twice, in both Colour and Opacity.\\ @@ -1003,7 +1003,7 @@ \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_lang_tl - \__fontspec_check_ot_feat:NnTF \font {#1} {\prg_return_true:} {\prg_return_false:} + \__fontspec_check_ot_feat:NnnnTF \font {#1} {\l__fontspec_lang_tl} {\l__fontspec_script_tl} {\prg_return_true:} {\prg_return_false:} } { \prg_return_false: @@ -1603,7 +1603,7 @@ % "normal" \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_sizedfont_tl} - \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_tl {#1} {\l__fontspec_sizing_leftover_clist} {} + \__fontspec_setup_nfss:Nn \l__fontspec_nfss_tl { #1 , \l__fontspec_sizing_leftover_clist } % small caps \clist_set_eq:NN \l__fontspec_fontfeat_curr_clist \l__fontspec_fontfeat_sc_clist @@ -1625,14 +1625,15 @@ \bool_if:NF \l__fontspec_nosc_bool { - \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_sc_tl - {#1} {\l__fontspec_sizing_leftover_clist} {\l__fontspec_fontfeat_curr_clist} + \__fontspec_setup_nfss:Nn \l__fontspec_nfss_sc_tl + {#1 , \l__fontspec_sizing_leftover_clist , \l__fontspec_fontfeat_curr_clist} } } -\cs_new:Nn \__fontspec_setup_nfss:Nnnn +\cs_new:Nn \__fontspec_setup_nfss:Nn { - \__fontspec_get_features:n { #2 , #3 , #4 } + \__fontspec_get_features:n { #2 } + \tl_if_empty:NF \l__fontspec_scale_tl { @@ -1742,22 +1743,25 @@ } (#1/#2)~ with~ NFSS~ spec.:~ \l__fontspec_nfss_tl - \exp_not:n { \\ } - -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} } - { - {\mddefault/\scdefault} {'small~ caps'~} - {\bfdefault/\scdefault} {'bold~ small~ caps'~} - {\mddefault/\scitdefault} {'italic~ small~ caps'~} - {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~} - {\mddefault/\scsldefault} {'slanted~ small~ caps'~} - {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~} - }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~ - with~ NFSS~ spec.:~ - \l__fontspec_nfss_sc_tl - \tl_if_empty:fF {\l__fontspec_postadjust_tl} + \tl_if_empty:NF \l__fontspec_nfss_sc_tl { - \exp_not:N \\ and~ font~ adjustment~ code: - \exp_not:N \\ \l__fontspec_postadjust_tl + \exp_not:n { \\ } + -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} } + { + {\mddefault/\scdefault} {'small~ caps'~} + {\bfdefault/\scdefault} {'bold~ small~ caps'~} + {\mddefault/\scitdefault} {'italic~ small~ caps'~} + {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~} + {\mddefault/\scsldefault} {'slanted~ small~ caps'~} + {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~} + }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~ + with~ NFSS~ spec.:~ + \l__fontspec_nfss_sc_tl + \tl_if_empty:fF {\l__fontspec_postadjust_tl} + { + \exp_not:N \\ and~ font~ adjustment~ code: + \exp_not:N \\ \l__fontspec_postadjust_tl + } } } } @@ -1771,7 +1775,19 @@ } \cs_new:Nn \__fontspec_make_ot_smallcaps:TF { - \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2} + \bool_set_false:N \l__fontspec_tmpa_bool + \exp_args:Ne \clist_map_inline:nn { \l__fontspec_lang_tl , \g__fontspec_default_langs_clist } + { + \exp_args:Ne \clist_map_inline:nn { \l__fontspec_script_tl , \g__fontspec_default_scripts_clist } + { + \exp_args:No \__fontspec_check_ot_feat:NnnnT \l__fontspec_fontface_cs_tl {smcp} {##1} {####1} + { + \bool_set_true:N \l__fontspec_tmpa_bool + \clist_map_break: + } + } + } + \bool_if:NTF \l__fontspec_tmpa_bool {#1} {#2} } \cs_new:Nn \__fontspec_make_smallcaps:TF { @@ -2004,12 +2020,7 @@ } } } -\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nn {TF,F} - { - \__fontspec_check_ot_feat:NnnnTF #1 {#2} {\l__fontspec_lang_tl} {\l__fontspec_script_tl} - {\prg_return_true:} {\prg_return_false:} - } -\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,F} +\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,T,F} { \bool_if:NTF \l__fontspec_never_check_bool { \prg_return_true: } @@ -3098,7 +3109,7 @@ } \bool_if:NF \l__fontspec_scriptlang_exist_bool { - \__fontspec_warning:nxx {no-script} {\l_fontspec_fontname_tl} {#1} + \__fontspec_info:nxx {script-not-exist} {\l_fontspec_fontname_tl} {#1} \clist_set:Nn \l_tmpa_clist {#2} \clist_get:NN \l_tmpa_clist \l__fontspec_script_tl \exp_args:Noo \__fontspec_check_script:NnF \l__fontspec_fontface_cs_tl \l__fontspec_script_tl @@ -3111,31 +3122,33 @@ } } } -\cs_new:Nn \fontspec_default_script:nn +\clist_new:N \g__fontspec_default_scripts_clist +\cs_new:Nn \fontspec_default_script:n { - \keys_define:nn {fontspec-opentype} { Script / #1 .code:n = + \clist_gset:Nn \g__fontspec_default_scripts_clist {#1} + } +\fontspec_default_script:n {latn,DFLT} +\keys_define:nn {fontspec-opentype} { Script / CustomDefault .code:n = + { + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:Nn \g__fontspec_default_scripts_clist { - \bool_set_false:N \l__fontspec_scriptlang_exist_bool - \clist_map_inline:nn {#2} + \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {##1} { - \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {####1} - { - \tl_set:Nn \l__fontspec_script_name_tl {#1} - \tl_set:Nn \l__fontspec_script_tl {####1} - \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} - \bool_set_true:N \l__fontspec_scriptlang_exist_bool - \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 } - \clist_map_break: - } - } - \bool_if:NF \l__fontspec_scriptlang_exist_bool - { - \tl_clear:N \l__fontspec_script_name_tl + \tl_set:Nn \l__fontspec_script_name_tl {Default (##1)} + \tl_set:Nn \l__fontspec_script_tl {##1} + \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \tl_gset:Nx \g__fontspec_single_feat_tl { script=##1 } + \clist_map_break: } } - } + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \tl_clear:N \l__fontspec_script_name_tl + } } -\fontspec_default_script:nn {CustomDefault} {latn,DFLT} +} \keys_define:nn {fontspec-opentype} { Language .choice: , @@ -3159,7 +3172,7 @@ } \bool_if:NF \l__fontspec_scriptlang_exist_bool { - \__fontspec_warning:nx {language-not-exist} {#1} + \__fontspec_info:nx {language-not-exist} {#1} \clist_set:Nn \l_tmpa_clist {#2} \clist_get:NN \l_tmpa_clist \l__fontspec_lang_tl \exp_args:Noo \__fontspec_check_lang:NnF \l__fontspec_fontface_cs_tl \l__fontspec_lang_tl @@ -3172,6 +3185,12 @@ } } } +\clist_new:N \g__fontspec_default_langs_clist +\cs_new:Nn \fontspec_default_lang:n + { + \clist_gset:Nn \g__fontspec_default_langs_clist {#1} + } +\fontspec_default_lang:n {dflt} \__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default } { \tl_set:Nn \l__fontspec_lang_tl {dflt} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua index c889bc65b2c..fbafa4095f8 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua @@ -23,8 +23,8 @@ fontspec = fontspec or {} local fontspec = fontspec fontspec.module = { name = "fontspec", - version = "2.9d", - date = "2024/05/07", + version = "2.9e", + date = "2024/05/11", description = "Font selection for XeLaTeX and LuaLaTeX", author = "Khaled Hosny, Philipp Gesang, Will Robertson", copyright = "Khaled Hosny, Philipp Gesang, Will Robertson", diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty index b0c70f2b249..1ca8270f673 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty @@ -24,7 +24,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec}% - {2024/05/07}{2.9d}{Font selection for XeLaTeX and LuaLaTeX} + {2024/05/11}{2.9e}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <latex3.github.io/fontspec> \bool_new:N \g__fontspec_cfg_bool |