From da62395886e9631f8639036d64e5164caa9f867b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 15 Jan 2019 21:40:03 +0000 Subject: fontspec (15jan19) git-svn-id: svn://tug.org/texlive/trunk@49718 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/fontspec/CHANGES.md | 5 + .../doc/latex/fontspec/fontspec-code.pdf | Bin 622215 -> 621585 bytes Master/texmf-dist/doc/latex/fontspec/fontspec.pdf | Bin 685998 -> 686001 bytes .../latex/fontspec/fontspec-code-feat-opentype.dtx | 125 ++++++++---------- .../latex/fontspec/fontspec-code-internal.dtx | 7 +- .../source/latex/fontspec/fontspec-code-lang.dtx | 1 + .../source/latex/fontspec/fontspec-code-msg.dtx | 11 +- .../latex/fontspec/fontspec-code-opentype.dtx | 2 +- .../source/latex/fontspec/fontspec-code-vars.dtx | 2 +- .../texmf-dist/source/latex/fontspec/fontspec.dtx | 6 +- .../tex/latex/fontspec/fontspec-luatex.sty | 135 +++++++++----------- .../tex/latex/fontspec/fontspec-xetex.sty | 140 +++++++++------------ Master/texmf-dist/tex/latex/fontspec/fontspec.lua | 4 +- Master/texmf-dist/tex/latex/fontspec/fontspec.sty | 2 +- 14 files changed, 198 insertions(+), 242 deletions(-) diff --git a/Master/texmf-dist/doc/latex/fontspec/CHANGES.md b/Master/texmf-dist/doc/latex/fontspec/CHANGES.md index 74daa74118f..3d07721fa37 100644 --- a/Master/texmf-dist/doc/latex/fontspec/CHANGES.md +++ b/Master/texmf-dist/doc/latex/fontspec/CHANGES.md @@ -1,6 +1,11 @@ Change history ============== +## v2.6k (2019/01/16) + + * Fix crash when loading fonts that are missing a requested script. + + ## v2.6j (2019/01/10) * Re-sync with `expl3` for deprecated commands. diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf b/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf index 392eb68a08f..bbb8f4f2e79 100644 Binary files a/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf and b/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf index befb4bbce75..a05c93ef6ba 100644 Binary files a/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf and b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf differ diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx index 26a75f91166..843e4587740 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx @@ -423,37 +423,39 @@ \cs_new:Nn \fontspec_new_script:nn { \keys_define:nn { fontspec-opentype } { Script / #1 .code:n = - \bool_set_false:N \l_@@_script_exist_bool - \clist_map_inline:nn {#2} - { - \@@_check_script:NnTF \l_fontspec_font {####1} - { - \tl_set:Nn \l_fontspec_script_tl {####1} - \int_set:Nn \l_@@_script_int {\l_@@_strnum_int} - \bool_set_true:N \l_@@_script_exist_bool - \tl_gset:Nx \g_@@_single_feat_tl { script=####1 } - \clist_map_break: - } - { } - } - \bool_if:NF \l_@@_script_exist_bool - { - \str_if_eq:nnTF {#1} {Latin} - { - \@@_warning:nx {script-not-exist} {#1} - } - { - \@@_check_script:NnTF \l_fontspec_font {latn} - { - \@@_warning:nx {script-not-exist-latn} {#1} - \tl_set:Nn \l_fontspec_script_tl {latn} - \int_set:Nn \l_@@_script_int {\l_@@_strnum_int} - } - { - \@@_warning:nx {script-not-exist} {#1} - } - } - } + { + \bool_set_false:N \l_@@_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \@@_check_script:NnT \l_fontspec_font {####1} + { + \tl_set:Nn \l_fontspec_script_tl {####1} + \int_set:Nn \l_@@_script_int {\l_@@_strnum_int} + \bool_set_true:N \l_@@_scriptlang_exist_bool + \tl_gset:Nx \g_@@_single_feat_tl { script=####1 } + \clist_map_break: + } + } + \bool_if:NF \l_@@_scriptlang_exist_bool + { + \str_if_eq:eeTF {#1} {Latin} + { + \@@_warning:nx {script-not-exist} {#1} + } + { + \@@_check_script:NnTF \l_fontspec_font {latn} + { + \@@_warning:nx {script-not-exist-latn} {#1} + \tl_set:Nn \l_fontspec_script_tl {latn} + \int_set:Nn \l_@@_script_int {\l_@@_strnum_int} + } + { + \@@_warning:nx {script-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Script = Default } + } + } + } + } } } % \end{macrocode} @@ -462,28 +464,38 @@ % \subsection{Language} % % \begin{macrocode} -\keys_define:nn { fontspec-opentype } { Language .choice: } +\keys_define:nn {fontspec-opentype} { Language .choice: } \cs_new:Nn \fontspec_new_lang:nn { \keys_define:nn { fontspec-opentype } { Language / #1 .code:n = - \@@_check_lang:NnTF \l_fontspec_font {#2} { - \tl_set:Nn \l_fontspec_lang_tl {#2} - \int_set:Nn \l_@@_language_int {\l_@@_strnum_int} - \tl_gset:Nx \g_@@_single_feat_tl { language=#2 } - } - { - \@@_warning:nx {language-not-exist} {#1} - \keys_set:nn { fontspec-opentype } { Language = Default } + \bool_set_false:N \l_@@_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \@@_check_lang:NnTF \l_fontspec_font {#2} + { + \tl_set:Nn \l_fontspec_lang_tl {#2} + \int_set:Nn \l_@@_language_int {\l_@@_strnum_int} + \tl_gset:Nx \g_@@_single_feat_tl { language=#2 } + \bool_set_true:N \l_@@_scriptlang_exist_bool + \clist_map_break: + } + } + \bool_if:NF \l_@@_scriptlang_exist_bool + { + \@@_warning:nx {language-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Language = Default } + } } } } % \end{macrocode} % % \paragraph{Default} -% +% I can't remember why this has to be special-cased. From memory, the OpenType default +% language is hardcoded to have a zero value, although this might be some \XeTeX-specific thing. % \begin{macrocode} -\@@_keys_define_code:nnn {fontspec-opentype}{ Language / Default } +\@@_keys_define_code:nnn {fontspec-opentype} { Language / Default } { \tl_set:Nn \l_fontspec_lang_tl {DFLT} \int_zero:N \l_@@_language_int @@ -491,35 +503,6 @@ } % \end{macrocode} % -% \paragraph{Turkish} Turns out that many fonts use `TUR' as their Turkish language tag rather than the specified `TRK'. So we check for both: -% \begin{macrocode} -\keys_define:nn {fontspec-opentype} - { - Language / Turkish .code:n = - { - \@@_check_lang:NnTF \l_fontspec_font {TRK} - { - \int_set:Nn \l_@@_language_int {\l_@@_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TRK} - \tl_gset:Nn \g_@@_single_feat_tl { language=TRK } - } - { - \@@_check_lang:NnTF \l_fontspec_font {TUR} - { - \int_set:Nn \l_@@_language_int {\l_@@_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TUR} - \tl_gset:Nn \g_@@_single_feat_tl { language=TUR } - } - { - \@@_warning:nx {language-not-exist} {Turkish} - \keys_set:nn {fontspec-opentype} {Language=Default} - } - } - } - } -% \end{macrocode} -% TODO: generalise the above -% % % \section{Backwards compatibility} % diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx index a8d8c49763c..da2374cde13 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx @@ -328,9 +328,9 @@ { \tl_set:Nn \l_@@_lang_name_tl {Default} } +% \typeout{:::: Script=\l_@@_script_name_tl, Language=\l_@@_lang_name_tl} \keys_set:nx {fontspec-opentype} {Script=\l_@@_script_name_tl} \keys_set:nx {fontspec-opentype} {Language=\l_@@_lang_name_tl} -% \typeout{:::: Script=\l_@@_script_name_tl, Language=\l_@@_lang_name_tl} } } } @@ -1139,11 +1139,8 @@ { \@@_error:nx {ot-tag-too-long} {#2#3#4#5#6} } \str_if_eq:eeTF {#2#3#4#5#6} {DFLT} + { \int_zero:N #1 } { - \int_set:Nn #1 {0} - } - { - \int_set:Nn #1 { `#2 * "1000000 diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx index adcdcb8a355..7b7acfc921a 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx @@ -354,6 +354,7 @@ \newfontlanguage{Thai}{THA} \newfontlanguage{Tahitian}{THT} \newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkish}{TRK,TUR} \newfontlanguage{Turkmen}{TKM} \newfontlanguage{Temne}{TMN} \newfontlanguage{Tswana}{TNA} diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx index 64aa1b96212..42b02254808 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx @@ -135,14 +135,14 @@ { OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer. } -\@@_msg_new:nnn {fontspec} {script-not-exist-latn} +\@@_msg_new:nnn {fontspec} {script-not-exist} { - Font '\l_fontspec_fontname_tl' does not contain script '#1'.\\ - 'Latin' script used instead. + Font '\l_fontspec_fontname_tl' does not contain script '#1'. } -\@@_msg_new:nnn {fontspec} {script-not-exist} +\@@_msg_new:nnn {fontspec} {script-not-exist-latn} { Font '\l_fontspec_fontname_tl' does not contain script '#1'. + `Script=Latin` used instead. } \@@_msg_new:nnn {fontspec} {aat-feature-not-exist} { @@ -173,8 +173,7 @@ { Language '#1' not available for font '\l_fontspec_fontname_tl' - with script '\l_@@_script_name_tl'.\\ - 'Default' language used instead. + with script '\l_@@_script_name_tl'. } \@@_msg_new:nnn {fontspec} {only-xetex-feature} { diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx index e7820d14dfb..ceda070f907 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx @@ -147,7 +147,7 @@ % font. \cmd\l_@@_script_int\ is used to store % the number corresponding to the script tag string. % \begin{macrocode} -\prg_new_conditional:Nnn \@@_check_script:Nn {TF} +\prg_new_conditional:Nnn \@@_check_script:Nn {TF,T} { \bool_if:NTF \l_@@_never_check_bool { \prg_return_true: } diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx index c7ca26bb0e3..bdd970f3674 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx @@ -60,7 +60,7 @@ \bool_new:N \l_@@_alias_bool \bool_new:N \l_@@_external_bool \bool_new:N \l_@@_defining_encoding_bool -\bool_new:N \l_@@_script_exist_bool +\bool_new:N \l_@@_scriptlang_exist_bool \bool_new:N \g_@@_em_normalise_slant_bool \bool_new:N \l_@@_proceed_bool \bool_new:N \l_@@_check_feat_bool diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx index e3f4907a98c..e3c5e01bde8 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx @@ -71,7 +71,7 @@ \ProvidesExplFile{fontspec.dtx} % %<*fontspec> - {2019/01/10}{2.6j}{Font selection for XeLaTeX and LuaLaTeX} + {2019/01/16}{2.6k}{Font selection for XeLaTeX and LuaLaTeX} % % \end{macrocode} % @@ -90,8 +90,8 @@ %local fontspec = fontspec %fontspec.module = { % name = "fontspec", -% version = "2.6j", -% date = "2019/01/10", +% version = "2.6k", +% date = "2019/01/16", % 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-luatex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty index 17a012c3d66..7382cdaa732 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/10}{2.6j}{Font selection for XeLaTeX and LuaLaTeX} + {2019/01/16}{2.6k}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC @@ -68,7 +68,7 @@ \bool_new:N \l__fontspec_alias_bool \bool_new:N \l__fontspec_external_bool \bool_new:N \l__fontspec_defining_encoding_bool -\bool_new:N \l__fontspec_script_exist_bool +\bool_new:N \l__fontspec_scriptlang_exist_bool \bool_new:N \g__fontspec_em_normalise_slant_bool \bool_new:N \l__fontspec_proceed_bool \bool_new:N \l__fontspec_check_feat_bool @@ -308,14 +308,14 @@ { OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer. } -\__fontspec_msg_new:nnn {fontspec} {script-not-exist-latn} +\__fontspec_msg_new:nnn {fontspec} {script-not-exist} { - Font '\l_fontspec_fontname_tl' does not contain script '#1'.\\ - 'Latin' script used instead. + Font '\l_fontspec_fontname_tl' does not contain script '#1'. } -\__fontspec_msg_new:nnn {fontspec} {script-not-exist} +\__fontspec_msg_new:nnn {fontspec} {script-not-exist-latn} { Font '\l_fontspec_fontname_tl' does not contain script '#1'. + `Script=Latin` used instead. } \__fontspec_msg_new:nnn {fontspec} {aat-feature-not-exist} { @@ -346,8 +346,7 @@ { Language '#1' not available for font '\l_fontspec_fontname_tl' - with script '\l__fontspec_script_name_tl'.\\ - 'Default' language used instead. + with script '\l__fontspec_script_name_tl'. } \__fontspec_msg_new:nnn {fontspec} {only-xetex-feature} { @@ -1808,7 +1807,7 @@ \cs_new:Nn \__fontspec_swap_plus_minus:n { \__fontspec_swap_plus_minus_aux:Nq #1 \q_nil } \cs_new:Npn \__fontspec_swap_plus_minus_aux:Nq #1#2 \q_nil { \str_case:nn {#1} { {+} {-#2} {-} {+#2} } } -\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF} +\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF,T} { \bool_if:NTF \l__fontspec_never_check_bool { \prg_return_true: } @@ -2754,85 +2753,72 @@ \cs_new:Nn \fontspec_new_script:nn { \keys_define:nn { fontspec-opentype } { Script / #1 .code:n = - \bool_set_false:N \l__fontspec_script_exist_bool - \clist_map_inline:nn {#2} - { - \__fontspec_check_script:NnTF \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_script_exist_bool - \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 } - \clist_map_break: - } - { } - } - \bool_if:NF \l__fontspec_script_exist_bool - { - \str_if_eq:nnTF {#1} {Latin} - { - \__fontspec_warning:nx {script-not-exist} {#1} - } - { - \__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} - } - } - } + { + \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 + { + \str_if_eq:eeTF {#1} {Latin} + { + \__fontspec_warning:nx {script-not-exist} {#1} + } + { + \__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 } + } + } + } + } } } -\keys_define:nn { fontspec-opentype } { Language .choice: } +\keys_define:nn {fontspec-opentype} { Language .choice: } \cs_new:Nn \fontspec_new_lang:nn { \keys_define:nn { fontspec-opentype } { Language / #1 .code:n = - \__fontspec_check_lang:NnTF \l_fontspec_font {#2} - { - \tl_set:Nn \l_fontspec_lang_tl {#2} - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_gset:Nx \g__fontspec_single_feat_tl { language=#2 } - } { - \__fontspec_warning:nx {language-not-exist} {#1} - \keys_set:nn { fontspec-opentype } { Language = Default } + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \__fontspec_check_lang:NnTF \l_fontspec_font {#2} + { + \tl_set:Nn \l_fontspec_lang_tl {#2} + \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} + \tl_gset:Nx \g__fontspec_single_feat_tl { language=#2 } + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \clist_map_break: + } + } + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \__fontspec_warning:nx {language-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Language = Default } + } } } } -\__fontspec_keys_define_code:nnn {fontspec-opentype}{ Language / Default } +\__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default } { \tl_set:Nn \l_fontspec_lang_tl {DFLT} \int_zero:N \l__fontspec_language_int \tl_gset:Nn \g__fontspec_single_feat_tl { language=DFLT } } -\keys_define:nn {fontspec-opentype} - { - Language / Turkish .code:n = - { - \__fontspec_check_lang:NnTF \l_fontspec_font {TRK} - { - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TRK} - \tl_gset:Nn \g__fontspec_single_feat_tl { language=TRK } - } - { - \__fontspec_check_lang:NnTF \l_fontspec_font {TUR} - { - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TUR} - \tl_gset:Nn \g__fontspec_single_feat_tl { language=TUR } - } - { - \__fontspec_warning:nx {language-not-exist} {Turkish} - \keys_set:nn {fontspec-opentype} {Language=Default} - } - } - } - } \cs_new:Nn \__fontspec_ot_compat:nn { \aliasfontfeatureoption {#1} {#2Off} {No#2} @@ -3349,6 +3335,7 @@ \newfontlanguage{Thai}{THA} \newfontlanguage{Tahitian}{THT} \newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkish}{TRK,TUR} \newfontlanguage{Turkmen}{TKM} \newfontlanguage{Temne}{TMN} \newfontlanguage{Tswana}{TNA} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty index 2620e3def8f..c3740818680 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty @@ -41,7 +41,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec-xetex}% - {2019/01/10}{2.6j}{Font selection for XeLaTeX and LuaLaTeX} + {2019/01/16}{2.6k}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC %%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC @@ -68,7 +68,7 @@ \bool_new:N \l__fontspec_alias_bool \bool_new:N \l__fontspec_external_bool \bool_new:N \l__fontspec_defining_encoding_bool -\bool_new:N \l__fontspec_script_exist_bool +\bool_new:N \l__fontspec_scriptlang_exist_bool \bool_new:N \g__fontspec_em_normalise_slant_bool \bool_new:N \l__fontspec_proceed_bool \bool_new:N \l__fontspec_check_feat_bool @@ -308,14 +308,14 @@ { OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer. } -\__fontspec_msg_new:nnn {fontspec} {script-not-exist-latn} +\__fontspec_msg_new:nnn {fontspec} {script-not-exist} { - Font '\l_fontspec_fontname_tl' does not contain script '#1'.\\ - 'Latin' script used instead. + Font '\l_fontspec_fontname_tl' does not contain script '#1'. } -\__fontspec_msg_new:nnn {fontspec} {script-not-exist} +\__fontspec_msg_new:nnn {fontspec} {script-not-exist-latn} { Font '\l_fontspec_fontname_tl' does not contain script '#1'. + `Script=Latin` used instead. } \__fontspec_msg_new:nnn {fontspec} {aat-feature-not-exist} { @@ -346,8 +346,7 @@ { Language '#1' not available for font '\l_fontspec_fontname_tl' - with script '\l__fontspec_script_name_tl'.\\ - 'Default' language used instead. + with script '\l__fontspec_script_name_tl'. } \__fontspec_msg_new:nnn {fontspec} {only-xetex-feature} { @@ -1757,11 +1756,8 @@ { \__fontspec_error:nx {ot-tag-too-long} {#2#3#4#5#6} } \str_if_eq:eeTF {#2#3#4#5#6} {DFLT} + { \int_zero:N #1 } { - \int_set:Nn #1 {0} - } - { - \int_set:Nn #1 { `#2 * "1000000 @@ -1851,7 +1847,7 @@ \cs_new:Nn \__fontspec_swap_plus_minus:n { \__fontspec_swap_plus_minus_aux:Nq #1 \q_nil } \cs_new:Npn \__fontspec_swap_plus_minus_aux:Nq #1#2 \q_nil { \str_case:nn {#1} { {+} {-#2} {-} {+#2} } } -\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF} +\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF,T} { \bool_if:NTF \l__fontspec_never_check_bool { \prg_return_true: } @@ -2898,85 +2894,72 @@ \cs_new:Nn \fontspec_new_script:nn { \keys_define:nn { fontspec-opentype } { Script / #1 .code:n = - \bool_set_false:N \l__fontspec_script_exist_bool - \clist_map_inline:nn {#2} - { - \__fontspec_check_script:NnTF \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_script_exist_bool - \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 } - \clist_map_break: - } - { } - } - \bool_if:NF \l__fontspec_script_exist_bool - { - \str_if_eq:nnTF {#1} {Latin} - { - \__fontspec_warning:nx {script-not-exist} {#1} - } - { - \__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} - } - } - } + { + \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 + { + \str_if_eq:eeTF {#1} {Latin} + { + \__fontspec_warning:nx {script-not-exist} {#1} + } + { + \__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 } + } + } + } + } } } -\keys_define:nn { fontspec-opentype } { Language .choice: } +\keys_define:nn {fontspec-opentype} { Language .choice: } \cs_new:Nn \fontspec_new_lang:nn { \keys_define:nn { fontspec-opentype } { Language / #1 .code:n = - \__fontspec_check_lang:NnTF \l_fontspec_font {#2} { - \tl_set:Nn \l_fontspec_lang_tl {#2} - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_gset:Nx \g__fontspec_single_feat_tl { language=#2 } - } - { - \__fontspec_warning:nx {language-not-exist} {#1} - \keys_set:nn { fontspec-opentype } { Language = Default } + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \__fontspec_check_lang:NnTF \l_fontspec_font {#2} + { + \tl_set:Nn \l_fontspec_lang_tl {#2} + \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} + \tl_gset:Nx \g__fontspec_single_feat_tl { language=#2 } + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \clist_map_break: + } + } + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \__fontspec_warning:nx {language-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Language = Default } + } } } } -\__fontspec_keys_define_code:nnn {fontspec-opentype}{ Language / Default } +\__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default } { \tl_set:Nn \l_fontspec_lang_tl {DFLT} \int_zero:N \l__fontspec_language_int \tl_gset:Nn \g__fontspec_single_feat_tl { language=DFLT } } -\keys_define:nn {fontspec-opentype} - { - Language / Turkish .code:n = - { - \__fontspec_check_lang:NnTF \l_fontspec_font {TRK} - { - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TRK} - \tl_gset:Nn \g__fontspec_single_feat_tl { language=TRK } - } - { - \__fontspec_check_lang:NnTF \l_fontspec_font {TUR} - { - \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} - \tl_set:Nn \l_fontspec_lang_tl {TUR} - \tl_gset:Nn \g__fontspec_single_feat_tl { language=TUR } - } - { - \__fontspec_warning:nx {language-not-exist} {Turkish} - \keys_set:nn {fontspec-opentype} {Language=Default} - } - } - } - } \cs_new:Nn \__fontspec_ot_compat:nn { \aliasfontfeatureoption {#1} {#2Off} {No#2} @@ -3493,6 +3476,7 @@ \newfontlanguage{Thai}{THA} \newfontlanguage{Tahitian}{THT} \newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkish}{TRK,TUR} \newfontlanguage{Turkmen}{TKM} \newfontlanguage{Temne}{TMN} \newfontlanguage{Tswana}{TNA} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua index 61da037b2bc..cd2bd1b9063 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.6j", - date = "2019/01/10", + version = "2.6k", + date = "2019/01/16", 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 cbea552a1f3..ca07864a63a 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty @@ -21,7 +21,7 @@ \RequirePackage{xparse} \ProvidesExplPackage{fontspec}% - {2019/01/10}{2.6j}{Font selection for XeLaTeX and LuaLaTeX} + {2019/01/16}{2.6k}{Font selection for XeLaTeX and LuaLaTeX} %%^^A%% fontspec-code-load.dtx -- part of FONTSPEC \sys_if_engine_luatex:T -- cgit v1.2.3