diff options
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/fontspec/fontspec.dtx | 182 |
1 files changed, 84 insertions, 98 deletions
diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx index 172fdc6e71c..a6c502caed5 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx @@ -93,7 +93,7 @@ This work consists of this file fontspec.dtx %<fontspec&luatex>\ProvidesPackage{fontspec-luatex} %<patches>\ProvidesPackage{fontspec-patches} %<*fontspec|patches> - [2015/07/22 v2.4d Font selection for XeLaTeX and LuaLaTeX] + [2015/09/24 v2.4e Font selection for XeLaTeX and LuaLaTeX] %</fontspec|patches> % %<*driver> @@ -235,8 +235,8 @@ This work consists of this file fontspec.dtx % \emph{The \pkg{babel} package is not really supported!} Especially Vietnamese, % Greek, and Hebrew at least might not work correctly, as far as I can tell. % There's a better chance with Cyrillic and Latin-based languages, -% however---\pkg{fontspec} ensures at least that fonts should load correctly. -% The \pkg{polyglossia} package is recommended instead as a modern replacement +% however---\pkg{fontspec} ensures at least that fonts should load correctly. +% The \pkg{polyglossia} package is recommended instead as a modern replacement % for \pkg{babel}. % % @@ -328,8 +328,8 @@ This work consists of this file fontspec.dtx % % \subsection{By font name} % -% Fonts known to \LuaTeX\ or \XeTeX\ may be loaded by their standard names as -% you'd speak them out loud, such as \emph{Times New Roman} or +% Fonts known to \LuaTeX\ or \XeTeX\ may be loaded by their standard names as +% you'd speak them out loud, such as \emph{Times New Roman} or % \emph{Adobe Garamond}. % `Known to' in this case generally means `exists in a standard fonts location' % such as |~/Library/Fonts| on \MacOSX, or |C:\Windows\Fonts| on Windows. @@ -647,7 +647,7 @@ This work consists of this file fontspec.dtx % }, % }, % \end{Verbatim} -% Note that if the first \feat{Font} feature is omitted then each size needs its own inner \feat{Font} declaration. +% Note that if the first \feat{Font} feature is omitted then each size needs its own inner \feat{Font} declaration. % % \subsection{Math(s) fonts} % @@ -742,7 +742,7 @@ This work consists of this file fontspec.dtx % \fontspec{myfont.otf}% \fontspec{myfont.otf}[ % [Color=red] Color=Red] % \end{Verbatim} -% +% % \end{enumerate} % % \paragraph{Spaces} @@ -827,7 +827,7 @@ This work consists of this file fontspec.dtx % % \textbf{New in v2.4}. % Using the |+| form of the command appends the \meta{font features} to any already-selected defaults. -% +% % % \subsection{Default settings from a file} % @@ -2735,7 +2735,7 @@ This work consists of this file fontspec.dtx % \end{macrocode} % But for now, this is the shared code. % \begin{macrocode} -\RequirePackage{expl3}[2011/09/05] +\RequirePackage{expl3}[2015/06/26] \RequirePackage{xparse} \ExplSyntaxOn % \end{macrocode} @@ -2763,7 +2763,7 @@ This work consists of this file fontspec.dtx \luatex_if_engine:TF { \RequirePackage{luaotfload}[2013/05/20] - \RequireLuaModule{fontspec} + \directlua{require("fontspec")} } { \msg_fatal:nn {fontspec} {cannot-use-pdftex} @@ -2836,6 +2836,9 @@ This work consists of this file fontspec.dtx \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} +\cs_generate_variant:Nn \tl_if_empty:nTF {x} +\cs_generate_variant:Nn \tl_if_empty:nTF {x} +\cs_generate_variant:Nn \prop_put:Nnn {Nxx} % \end{macrocode} % % \begin{macro}{\@@_int_mult_truncate:Nn} @@ -3363,7 +3366,7 @@ This work consists of this file fontspec.dtx \tl_if_single:nTF {##1} { \tl_set:No \l_@@_tmp_tl { \cs:w g_@@_ \cs_to_str:N ##1 _family\cs_end: } } { \@@_sanitise_fontname:Nn \l_@@_tmp_tl {##1} } - + \IfBooleanTF {#1} { \prop_get:NVNF \g_@@_fontopts_prop \l_@@_tmp_tl \l_@@_tmpb_tl @@ -3374,7 +3377,7 @@ This work consists of this file fontspec.dtx { \tl_if_empty:nTF {#3} { \prop_gremove:NV \g_@@_fontopts_prop \l_@@_tmp_tl } - { \prop_put:NVn \g_@@_fontopts_prop \l_@@_tmp_tl {#3,} } + { \prop_put:NVn \g_@@_fontopts_prop \l_@@_tmp_tl {#3,} } } } } @@ -3507,28 +3510,25 @@ This work consists of this file fontspec.dtx % \begin{macro}{\aliasfontfeatureoption} % User commands for renaming font features and font feature options. % \begin{macrocode} +\bool_new:N \l_@@_alias_bool \DeclareDocumentCommand \aliasfontfeature {mm} { + \bool_set_false:N \l_@@_alias_bool + \clist_map_inline:nn { fontspec, fontspec-preparse, fontspec-preparse-external, fontspec-preparse-nested, fontspec-renderer } { + \keys_if_exist:nnT {##1} {#1} { - \clist_map_break:n - { - \@@_alias_font_feature:nnn {##1} {#1} {#2} - \use_none_delimit_by_q_nil:w - } + \bool_set_true:N \l_@@_alias_bool + \@@_alias_font_feature:nnn {##1} {#1} {#2} } } - % this executes if no match was found: - \@@_warning:nx {rename-feature-not-exist} {#1} - - % jump to here if a match: - \use_none:n - \q_nil + \bool_if:NF \l_@@_alias_bool + { \@@_warning:nx {rename-feature-not-exist} {#1} } } \cs_set:Nn \@@_alias_font_feature:nnn @@ -3717,10 +3717,10 @@ This work consists of this file fontspec.dtx { \prop_get:cnN {g_@@_ \f@family _prop} {script-num} \l_@@_tmp_tl \int_set:Nn \l_fontspec_script_int {\l_@@_tmp_tl} - + \prop_get:cnN {g_@@_ \f@family _prop} {lang-num} \l_@@_tmp_tl \int_set:Nn \l_fontspec_language_int {\l_@@_tmp_tl} - + \prop_get:cnN {g_@@_ \f@family _prop} {script-tag} \l_fontspec_script_tl \prop_get:cnN {g_@@_ \f@family _prop} {lang-tag} \l_fontspec_lang_tl @@ -3802,7 +3802,7 @@ This work consists of this file fontspec.dtx \bool_if:NTF \l_@@_ot_bool { \prop_get:cnN {g_@@_ \f@family _prop} {script-num} \l_@@_tmp_tl - \int_set:Nn \l_fontspec_script_int {\l_@@_tmp_tl} + \int_set:Nn \l_fontspec_script_int {\l_@@_tmp_tl} \prop_get:cnN {g_@@_ \f@family _prop} {script-tag} \l_fontspec_script_tl \fontspec_check_lang:nTF {#1} \prg_return_true: \prg_return_false: @@ -3937,31 +3937,30 @@ This work consists of this file fontspec.dtx \cs_set:Nn \@@_fontwrap:n { "#1" } % \end{macrocode} % -% Beginnings of an `l3font', I guess: % \begin{macrocode} -\cs_if_free:NT \font_set_eq:NN - { - \cs_set_eq:NN \font_set_eq:NN \tex_let:D - \cs_set:Npn \font_set:Nnn #1#2#3 - { - \font #1 = #2 ~at~ #3\scan_stop: - } - \cs_set:Npn \font_gset:Nnn #1#2#3 - { +\cs_set:Npn \@@_primitive_font_set:Nnn #1#2#3 + { + \font #1 = #2 ~at~ #3 \scan_stop: + } + +\cs_set:Npn \@@_primitive_font_gset:Nnn #1#2#3 + { \global \font #1 = #2 ~at~ #3 \scan_stop: - } - \cs_set:Npn \font_suppress_not_found_error: -%<xetexx> {\suppressfontnotfounderror=1} -%<luatex> {\luatexsuppressfontnotfounderror=1} - \prg_set_conditional:Nnn \@@_font_if_null:N {p,TF,T,F} - { + } + +\cs_set:Npn \@@_font_suppress_not_found_error: + { + \int_set_eq:NN \xetex_suppressfontnotfounderror:D \c_one + } + +\prg_set_conditional:Nnn \@@_font_if_null:N {p,TF,T,F} + { \ifx #1 \nullfont \prg_return_true: \else \prg_return_false: \fi - } - } + } % \end{macrocode} % % @@ -3970,11 +3969,11 @@ This work consists of this file fontspec.dtx % \begin{macrocode} \cs_new:Nn \@@_font_set:Nnn { - \font_set:Nnn #1 {\@@_fontwrap:n {#2}} {#3} + \@@_primitive_font_set:Nnn #1 { \@@_fontwrap:n {#2} } {#3} } \cs_new:Nn \@@_font_gset:Nnn { - \font_gset:Nnn #1 {\@@_fontwrap:n {#2}} {#3} + \@@_primitive_font_gset:Nnn #1 { \@@_fontwrap:n {#2} } {#3} } % \end{macrocode} % \end{macro} @@ -4026,7 +4025,7 @@ This work consists of this file fontspec.dtx \cs_set:Nn \fontspec_select:nn { \group_begin: - \font_suppress_not_found_error: + \@@_font_suppress_not_found_error: \@@_init: \tl_set:Nx \l_fontspec_fontname_tl {#2} @@ -4085,7 +4084,7 @@ This work consists of this file fontspec.dtx % \begin{macro}{\@@_extract_features:} % \begin{macrocode} \cs_new:Nn \@@_extract_all_features:n - { + { \bool_if:NTF \l_@@_disable_defaults_bool { \clist_set:Nx \l_@@_all_features_clist {#1} @@ -4103,7 +4102,7 @@ This work consists of this file fontspec.dtx \g_@@_default_fontopts_clist, \l_@@_family_fontopts_clist, \l_@@_fontopts_clist, - #1 + #1 } } \tl_set:Nx \l_@@_fontid_tl { \tl_to_str:N \l_fontspec_fontname_tl-:-\tl_to_str:N \l_@@_all_features_clist } @@ -4158,7 +4157,7 @@ This work consists of this file fontspec.dtx { \@@_fullname:n {\l_fontspec_fontname_up_tl} } {\f@size pt} \@@_font_if_null:NT \l_fontspec_font { \@@_error:nx {font-not-found} {\l_fontspec_fontname_up_tl} } \@@_set_font_type: - \@@_font_gset:Nnn \l_fontspec_font + \@@_font_gset:Nnn \l_fontspec_font { \@@_fullname:n {\l_fontspec_fontname_up_tl} } {\f@size pt} \l_fontspec_font % this is necessary for LuaLaTeX to check the scripts properly } @@ -4310,7 +4309,7 @@ This work consists of this file fontspec.dtx % \begin{macro}{\@@_find_autofonts:} % \begin{macrocode} \cs_new:Nn \@@_find_autofonts: - { + { \bool_if:nF {\l_@@_noit_bool || \l_@@_nobf_bool} { \@@_set_autofont:Nnn \l_fontspec_fontname_bfit_tl {\l_fontspec_fontname_it_tl} {/B} @@ -4322,7 +4321,7 @@ This work consists of this file fontspec.dtx { \@@_set_autofont:Nnn \l_fontspec_fontname_bf_tl {\l_fontspec_fontname_tl} {/B} } - + \bool_if:NF \l_@@_noit_bool { \@@_set_autofont:Nnn \l_fontspec_fontname_it_tl {\l_fontspec_fontname_tl} {/I} @@ -4347,7 +4346,7 @@ This work consists of this file fontspec.dtx \prop_map_inline:Nn \l_@@_nfssfont_prop { \@@_set_faces_aux:nnnnn ##2 } } \cs_new:Nn \@@_set_faces_aux:nnnnn - { + { \fontspec_complete_fontname:Nn \l_@@_curr_fontname_tl {#3} \@@_make_font_shapes:Nnnnn \l_@@_curr_fontname_tl {#1} {#2} {#4} {#5} } @@ -4462,27 +4461,13 @@ This work consists of this file fontspec.dtx % \darg{Size features} % This macro eventually uses \cs{DeclareFontShape} to define the font shape in % question. -% -% The optional first -% argument is used when making the font shapes for bold, italic, and -% bold italic fonts using \XeTeX's auto-recognition with |#2| as |/B|, |/I|, -% and |/BI| font name suffixes. If no such font is found, it falls -% back to the original font name, in which case this macro doesn't -% proceed and the font shape is not created for the NFSS. -% -% Next, the small caps are defined. [...] is used to -% define the appropriate string for activating small caps in the font, -% if they exist. If we are defining small caps for the upright shape, -% then the small caps shape default is used. For an \emph{italic} -% font, however, the shape parameter is overloaded and we must call -% italic small caps by their own identifier. See \vref{sec:sishape} -% for the code that enables this usage. % \begin{macrocode} \cs_new:Nn \@@_make_font_shapes:Nnnnn { \group_begin: + \keys_set_known:nxN {fontspec-preparse-external} { #4 } \l_@@_leftover_clist \@@_load_fontname:n {#1} - \@@_declare_shape:nnxx {#2} {#3} { \l_@@_fontopts_clist, #4 } {#5} + \@@_declare_shape:nnxx {#2} {#3} { \l_@@_fontopts_clist, \l_@@_leftover_clist } {#5} \group_end: } @@ -4495,8 +4480,6 @@ This work consists of this file fontspec.dtx \@@_font_if_null:NT \l_fontspec_font { \@@_error:nx {font-not-found} {#1} } } % \end{macrocode} -% Note that the test for italics to choose the \cmd\sidefault\ shape -% only works while \cmd\fontspec_select:nn\ passes single tokens to this macro\dots % \end{macro} % % \begin{macro}{\@@_declare_shape:nnnn} @@ -4522,16 +4505,16 @@ This work consists of this file fontspec.dtx { \tl_clear:N \l_@@_size_tl \tl_set_eq:NN \l_@@_sizedfont_tl \l_@@_saved_fontname_tl % in case not spec'ed - + \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n ##1 } \l_@@_sizing_leftover_clist \tl_if_empty:NT \l_@@_size_tl { \@@_error:n {no-size-info} } % "normal" \@@_load_fontname:n {\l_@@_sizedfont_tl} - \@@_setup_nfss:Nnn \l_@@_nfss_tl {#3} {} - - % small caps + \@@_setup_nfss:Nnn \l_@@_nfss_tl {#3} {} + + % small caps \clist_set_eq:NN \l_@@_fontfeat_curr_clist \l_@@_fontfeat_sc_clist \bool_if:NF \l_@@_nosc_bool @@ -4554,7 +4537,7 @@ This work consists of this file fontspec.dtx \bool_if:NF \l_@@_nosc_bool { - \@@_setup_nfss:Nnn \l_@@_nfss_sc_tl {#3} {\l_@@_fontfeat_curr_clist} + \@@_setup_nfss:Nnn \l_@@_nfss_sc_tl {#3} {\l_@@_fontfeat_curr_clist} } } @@ -4585,7 +4568,7 @@ This work consists of this file fontspec.dtx { \@@_DeclareFontShape:xxxxxx {\g_fontspec_encoding_tl} {\l_fontspec_family_tl} {#1} {#2} {\l_@@_nfss_tl}{\l_@@_postadjust_tl} - + \bool_if:NF \l_@@_nosc_bool { \@@_DeclareFontShape:xxxxxx {\g_fontspec_encoding_tl} {\l_fontspec_family_tl} @@ -4726,7 +4709,7 @@ This work consists of this file fontspec.dtx { \@@_update_featstr:n { color = \l_@@_hexcol_tl\l_@@_opacity_tl } } - + \tl_set_eq:NN #1 \l_@@_rawfeatures_sclist } % \end{macrocode} @@ -4789,10 +4772,10 @@ This work consists of this file fontspec.dtx %<*luatex> \tl_set:Nn \l_fontspec_mode_tl {node} - \luatexprehyphenchar =`\- % fixme - \luatexposthyphenchar = 0 % fixme - \luatexpreexhyphenchar = 0 % fixme - \luatexpostexhyphenchar= 0 % fixme + \int_set:Nn \luatex_prehyphenchar:D { `\- } % fixme + \int_zero:N \luatex_posthyphenchar:D % fixme + \int_zero:N \luatex_preexhyphenchar:D % fixme + \int_zero:N \luatex_postexhyphenchar:D % fixme %</luatex> } % \end{macrocode} @@ -5175,7 +5158,7 @@ This work consists of this file fontspec.dtx % \begin{macrocode} \cs_new:Nn \@@_keys_define_code:nnn { - \keys_define:nn {#1} { #2 .code:n = {#3} } + \keys_define:nn {#1} { #2 .code:n = {#3} } } % \end{macrocode} % @@ -5194,7 +5177,7 @@ This work consists of this file fontspec.dtx \bool_set_true:N \l_@@_nobf_bool \bool_set_true:N \l_@@_noit_bool \bool_set_true:N \l_@@_external_bool - \cs_gset:Npn \@@_namewrap:n ##1 { [ #1 ##1 ] } + \cs_set:Npn \@@_namewrap:n ##1 { [ #1 ##1 ] } %<*xetexx> \keys_set:nn {fontspec-renderer} {Renderer=OpenType} %</xetexx> @@ -5320,7 +5303,7 @@ This work consists of this file fontspec.dtx { \bool_set_false:N \l_@@_nobf_bool \fontspec_complete_fontname:Nn \l_@@_curr_bfname_tl {#1} - + \seq_if_empty:NT \g_@@_bf_series_seq { \tl_gset:Nx \g_@@_curr_series_tl {\bfdefault} @@ -5407,7 +5390,7 @@ This work consists of this file fontspec.dtx \@@_keys_define_code:nnn {fontspec-preparse} {BoldFeatures} { \clist_set:Nn \l_@@_fontfeat_bf_clist {#1} - + % \prop_put:NxV \l_@@_nfss_prop % {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl } @@ -5497,7 +5480,6 @@ This work consists of this file fontspec.dtx % \paragraph{NFSS series/shape} % This option looks similar in name but has a very different function. % \begin{macrocode} -\cs_generate_variant:Nn \prop_put:Nnn {Nxx} \prop_new:N \l_@@_nfssfont_prop \@@_keys_define_code:nnn {fontspec} {FontFace} { @@ -5518,7 +5500,7 @@ This work consists of this file fontspec.dtx \tl_clear:N \l_@@_this_feat_tl } } - + \@@_add_nfssfont:oooo {\use_i:nnn #1}{\use_ii:nnn #1}{\l_@@_this_font_tl}{\l_@@_this_feat_tl} } @@ -5538,7 +5520,7 @@ This work consists of this file fontspec.dtx \tl_if_empty:xTF {#4} { \clist_set:Nn \l_@@_sizefeat_clist {Size={-}} } { \keys_set_known:noN {fontspec-preparse-nested} {#4} \l_@@_tmp_tl } - + \tl_if_empty:NF \l_@@_this_font_tl { \prop_put:Nxx \l_@@_nfssfont_prop {#1/#2} @@ -5547,7 +5529,6 @@ This work consists of this file fontspec.dtx } \cs_generate_variant:Nn \@@_add_nfssfont:nnnn {ooo} \cs_generate_variant:Nn \@@_add_nfssfont:nnnn {oooo} -\cs_generate_variant:Nn \tl_if_empty:nTF {x} % \end{macrocode} % \end{macro} % @@ -5673,12 +5654,12 @@ This work consists of this file fontspec.dtx {WordSpace} { \tl_set:Nn \l_@@_punctspace_adjust_tl - { \fontdimen 7 \font = 0 \fontdimen 2 \font } + { \fontdimen 7 \font = 0 \fontdimen 2 \font } } {TwiceWordSpace} { \tl_set:Nn \l_@@_punctspace_adjust_tl - { \fontdimen 7 \font = 1 \fontdimen 2 \font } + { \fontdimen 7 \font = 1 \fontdimen 2 \font } } } { @@ -5731,7 +5712,7 @@ This work consists of this file fontspec.dtx %<*luatex> { \hyphenchar \font = \c_zero - \luatexprehyphenchar = \l_fontspec_hyphenchar_tl \scan_stop: + \int_set:Nn \luatex_prehyphenchar:D { \l_fontspec_hyphenchar_tl } } %</luatex> } @@ -6926,12 +6907,17 @@ local err, warn, info, log = luatexbase.provides_module(fontspec.module) % \end{macrocode} % Some utility functions % \begin{macrocode} -fontspec.log = log -fontspec.warning = warn -fontspec.error = err +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) +if luatexbase.catcodetables == nil then + latexpackage_catcodetable=luatexbase.registernumber("catcodetable@atletter") +else + latexpackage_catcodetable=luatexbase.catcodetables['latex-package'] +end function fontspec.sprint (...) - tex.sprint(luatexbase.catcodetables['latex-package'], ...) + tex.sprint(latexpackage_catcodetable, ...) end % \end{macrocode} % @@ -7263,7 +7249,7 @@ end \defaultfontfeatures [\rmfamily,\sffamily] {Ligatures=TeX} - + \defaultfontfeatures [\ttfamily] {WordSpace={1,0,0}, |