diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty | 109 |
1 files changed, 70 insertions, 39 deletions
diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty index 7382cdaa732..6c799b521b1 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty @@ -41,7 +41,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec-luatex}% - {2019/01/16}{2.6k}{Font selection for XeLaTeX and LuaLaTeX} + {2019/01/18}{2.6l}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec> %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec> @@ -73,10 +73,14 @@ \bool_new:N \l__fontspec_proceed_bool \bool_new:N \l__fontspec_check_feat_bool \bool_new:N \l__fontspec_never_check_bool +\bool_new:N \l__fontspec_scripts_missing_bool \int_new:N \l__fontspec_script_int \int_new:N \l__fontspec_language_int \int_new:N \l__fontspec_strnum_int \int_new:N \l__fontspec_tmp_int +\int_new:N \l__fontspec_tmpa_int +\int_new:N \l__fontspec_tmpb_int +\int_new:N \l__fontspec_tmpc_int \int_new:N \l__fontspec_em_int \int_new:N \l__fontspec_emdef_int \int_new:N \l__fontspec_strong_int @@ -407,6 +411,10 @@ { Font "\l_fontspec_fontname_tl" does not contain any OpenType `Script' information. } +\__fontspec_msg_new:nnn {fontspec} {dflt-script} + { + Font "\l_fontspec_fontname_tl" falling back to default (DFLT) script. + } \__fontspec_msg_new:nnn {fontspec} {opa-twice} { Opacity set twice, in both Colour and Opacity.\\ @@ -1281,6 +1289,13 @@ \__fontspec_primitive_font_gset:Nnn \l_fontspec_font { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} } {\f@size pt} \l_fontspec_font % this is necessary for LuaLaTeX to check the scripts properly + \__fontspec_check_script:NnTF \l_fontspec_font {DFLT} + { + \bool_set_false:N \l__fontspec_scripts_missing_bool + } + { + \bool_set_true:N \l__fontspec_scripts_missing_bool + } } \cs_new:Nn \__fontspec_construct_font_call:nnnnnn { @@ -1310,11 +1325,30 @@ { \bool_if:NT \l__fontspec_firsttime_bool { - \tl_if_empty:NTF \l__fontspec_script_name_tl + \bool_if:NTF \l__fontspec_scripts_missing_bool { - \__fontspec_check_script:NnTF \l_fontspec_font {latn} + \__fontspec_info:n {no-scripts} + } + { + \tl_if_empty:NTF \l__fontspec_script_name_tl + { + \__fontspec_check_script:NnTF \l_fontspec_font {latn} + { + \tl_set:Nn \l__fontspec_script_name_tl {Latin} + \tl_if_empty:NT \l__fontspec_lang_name_tl + { + \tl_set:Nn \l__fontspec_lang_name_tl {Default} + } + \keys_set:nx {fontspec-opentype} {Script=\l__fontspec_script_name_tl} + \keys_set:nx {fontspec-opentype} {Language=\l__fontspec_lang_name_tl} + } + { + \__fontspec_info:n {dflt-script} + \keys_set:nx {fontspec-opentype} {Script=Default} + \keys_set:nx {fontspec-opentype} {Language=Default} + } + } { - \tl_set:Nn \l__fontspec_script_name_tl {Latin} \tl_if_empty:NT \l__fontspec_lang_name_tl { \tl_set:Nn \l__fontspec_lang_name_tl {Default} @@ -1322,18 +1356,6 @@ \keys_set:nx {fontspec-opentype} {Script=\l__fontspec_script_name_tl} \keys_set:nx {fontspec-opentype} {Language=\l__fontspec_lang_name_tl} } - { - \__fontspec_info:n {no-scripts} - \bool_set_true:N \l__fontspec_never_check_bool - } - } - { - \tl_if_empty:NT \l__fontspec_lang_name_tl - { - \tl_set:Nn \l__fontspec_lang_name_tl {Default} - } - \keys_set:nx {fontspec-opentype} {Script=\l__fontspec_script_name_tl} - \keys_set:nx {fontspec-opentype} {Language=\l__fontspec_lang_name_tl} } } } @@ -1817,7 +1839,13 @@ { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} } { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} } \directlua{fontspec.check_ot_script("\l__fontspec_tmp_tl", "#2")} - \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false: + \bool_if:NTF \l__fontspec_check_bool + { + \prg_return_true: + } + { + \prg_return_false: + } } } \prg_new_conditional:Nnn \__fontspec_check_lang:Nn {TF} @@ -1848,7 +1876,7 @@ } \prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,F} { - \bool_if:NTF \l__fontspec_never_check_bool + \bool_if:nTF {\l__fontspec_never_check_bool || \l__fontspec_scripts_missing_bool} { \prg_return_true: } { \__fontspec_ot_validate_tag:x {#2} @@ -2754,34 +2782,37 @@ { \keys_define:nn { fontspec-opentype } { Script / #1 .code:n = { - \bool_set_false:N \l__fontspec_scriptlang_exist_bool - \clist_map_inline:nn {#2} - { - \__fontspec_check_script:NnT \l_fontspec_font {####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 + \bool_if:NF \l__fontspec_scripts_missing_bool { - \str_if_eq:eeTF {#1} {Latin} - { - \__fontspec_warning:nx {script-not-exist} {#1} - } + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:nn {#2} { - \__fontspec_check_script:NnTF \l_fontspec_font {latn} + \__fontspec_check_script:NnT \l_fontspec_font {####1} { - \__fontspec_warning:nx {script-not-exist-latn} {#1} - \tl_set:Nn \l_fontspec_script_tl {latn} + \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 + { + \str_if_eq:eeTF {#1} {Latin} { \__fontspec_warning:nx {script-not-exist} {#1} - \keys_set:nn {fontspec-opentype} { Script = Default } + } + { + \__fontspec_check_script:NnTF \l_fontspec_font {latn} + { + \__fontspec_warning:nx {script-not-exist-latn} {#1} + \tl_set:Nn \l_fontspec_script_tl {latn} + \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} + } + { + \__fontspec_warning:nx {script-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Script = Default } + } } } } |