summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/fontspec/fontspec.dtx')
-rw-r--r--Master/texmf-dist/source/latex/fontspec/fontspec.dtx143
1 files changed, 80 insertions, 63 deletions
diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
index da3219ae1ac..11582be7e05 100644
--- a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
+++ b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
@@ -38,14 +38,16 @@ Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
this license is at: http://www.latex-project.org/lppl.txt
-This work is "author-maintained" by Will Robertson.
+This work is "maintained" by Will Robertson.
This work consists of this file fontspec.dtx
and the derived files fontspec.sty,
fontspec.lua,
fontspec.cfg,
- fontspec-xetex.tex,
- fontspec-luatex.tex,
+ fontspec-xetex.sty,
+ fontspec-luatex.sty,
+ fontspec-patches.sty,
+ fontspec-example.tex,
and fontspec.pdf.
\endpostamble
@@ -91,7 +93,7 @@ This work consists of this file fontspec.dtx
%<fontspec&luatex>\ProvidesPackage{fontspec-luatex}
%<patches>\ProvidesPackage{fontspec-patches}
%<*fontspec|patches>
- [2014/06/01 v2.4 Font selection for XeLaTeX and LuaLaTeX]
+ [2014/06/21 v2.4a Font selection for XeLaTeX and LuaLaTeX]
%</fontspec|patches>
%
%<*driver>
@@ -1082,14 +1084,14 @@ This work consists of this file fontspec.dtx
% the text. The colour is defined as a triplet of two-digit Hex RGB
% values, with optionally another value for the transparency (where
% |00| is completely transparent and |FF| is opaque.)
-% \begin{Xexample}{color}{Selecting colour with transparency.}
+% \begin{Lexample}{color}{Selecting colour with transparency. N.B. due to a conflict betweeen \pkg{fontspec} and the \pkg{preview} package, this example currently does not show any transparency!}
% \fontsize{48}{48}
% \fontspec{TeX Gyre Bonum Bold}
-% {\addfontfeature{Color=FF000099}W}\kern-1ex
-% {\addfontfeature{Color=0000FF99}S}\kern-0.8ex
-% {\addfontfeature{Color=DDBB2299}P}\kern-0.8ex
+% {\addfontfeature{Color=FF000099}W}\kern-0.5ex
+% {\addfontfeature{Color=0000FF99}S}\kern-0.4ex
+% {\addfontfeature{Color=DDBB2299}P}\kern-0.4ex
% {\addfontfeature{Color=00BB3399}R}
-% \end{Xexample}
+% \end{Lexample}
% Transparency is supported by \LuaLaTeX; \XeLaTeX\ with the \texttt{xdvipdfmx} driver
% does not support this feature.
%
@@ -1236,7 +1238,7 @@ This work consists of this file fontspec.dtx
% EXAMPLE HYPHENATION%
% }}\qquad\qquad\null\par\bigskip}
%
-% \fontspec{Linux Libertine}
+% \fontspec{Linux Libertine O}
% \addfontfeature{HyphenChar=None}
% \text
% \addfontfeature{HyphenChar={+}}
@@ -1417,7 +1419,7 @@ This work consists of this file fontspec.dtx
% to better match the surrounding letters.
%
% \begin{Lexample}{letters-uppercase}{An example of the \opt{Uppercase} option of the \feat{Letters} feature.}
-% \fontspec{Linux Libertine}
+% \fontspec{Linux Libertine O}
% UPPER-CASE example \\
% \addfontfeature{Letters=Uppercase}
% UPPER-CASE example
@@ -1479,7 +1481,6 @@ This work consists of this file fontspec.dtx
% \subsection{Contextuals}
% This feature refers to substitutions of glyphs that vary `contextually' by their relative position in a word or string of characters;
% features such as contextual swashes are accessed via the options shown in \ref{feat:Contextuals}.
-% See \exref{swash} for an, er, example.
%
% \begin{features}{Contextuals}
% \otf{Swash}{cswh}
@@ -1490,16 +1491,9 @@ This work consists of this file fontspec.dtx
% \otf{Inner}{medi}
% \end{features}
%
-% \begin{Lexample}{swash}{An example of the \opt{Swashes} option of the \opt{Contextuals} feature.}
-% \fontspec{Warnock Pro} \itshape
-% Without Contextual Swashes \\
-% \fontspec{Warnock Pro}[Contextuals=Swash]
-% With Contextual Swashes; cf. W C S
-% \end{Lexample}
-%
% Historic forms are accessed in OpenType
% fonts via the feature \feat{Style=Historic}; this is generally \emph{not}
-% contextual in OpenType, which is why it is not included here.
+% contextual in OpenType, which is why it is not included in this feature.
%
% \subsection{Vertical Position}
%
@@ -1524,17 +1518,15 @@ This work consists of this file fontspec.dtx
% \opt{Numerator} and \opt{Denominator} should only be used for creating
% arbitrary fractions (see next section).
%
-% \begin{Lexample}{vertpos}{The \feat{VerticalPosition} feature. Note that the \opt{Ordinal} option can be quite unreliable, as the results here demonstrate.}
-% \fontspec{Warnock Pro}[VerticalPosition=Superior]
-% Sup: abdehilmnorst (-\$12,345.67) \\
-% \fontspec{Warnock Pro}[VerticalPosition=Numerator]
+% \begin{Lexample}{vertpos}{The \feat{VerticalPosition} feature.}
+% \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Superior]
+% Superior: 1234567890 \\
+% \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Numerator]
% Numerator: 12345 \\
-% \fontspec{Warnock Pro}[VerticalPosition=Denominator]
+% \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=Denominator]
% Denominator: 12345 \\
-% \fontspec{Warnock Pro}[VerticalPosition=ScientificInferior]
-% Scientific Inferior: 12345 \\
-% \fontspec{Warnock Pro}[VerticalPosition=Ordinal]
-% `Ordinals': 1st 2nd 3rd 4th 0th
+% \fontspec{LibreCaslonText-Regular.otf}[VerticalPosition=ScientificInferior]
+% Scientific Inferior: 12345
% \end{Lexample}
%
% The \pkg{realscripts} package
@@ -1622,20 +1614,20 @@ This work consists of this file fontspec.dtx
%
% \begin{Lexample}[firstline=2]{cv}{The \feat{CharacterVariant} feature showing off Georg Duffner's open source Garamond revival font.}
% \huge
-% \fontspec{EB Garamond Italic} very \\
-% \fontspec{EB Garamond Italic}[CharacterVariant=5] very \\
-% \fontspec{EB Garamond Italic}[CharacterVariant=5:0] very \\
-% \fontspec{EB Garamond Italic}[CharacterVariant=5:1] very \\
-% \fontspec{EB Garamond Italic}[CharacterVariant=5:2] very \\
-% \fontspec{EB Garamond Italic}[CharacterVariant=5:3] very
+% \fontspec{EB Garamond 12 Italic} very \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant=5] very \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant=5:0] very \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant=5:1] very \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant=5:2] very \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant=5:3] very
% \end{Lexample}
%
% \begin{Lexample}[firstline=2]{cv2}{The \feat{CharacterVariant} feature selecting multiple variants simultaneously.}
% \huge
-% \fontspec{EB Garamond Italic} \& violet \\
-% \fontspec{EB Garamond Italic}[CharacterVariant={4}] \& violet \\
-% \fontspec{EB Garamond Italic}[CharacterVariant={5:2}] \& violet \\
-% \fontspec{EB Garamond Italic}[CharacterVariant={4,5:2}] \& violet
+% \fontspec{EB Garamond 12 Italic} \& violet \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant={4}] \& violet \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant={5:2}] \& violet \\
+% \fontspec{EB Garamond 12 Italic}[CharacterVariant={4,5:2}] \& violet
% \end{Lexample}
%
% \subsection{Alternates}
@@ -1647,7 +1639,7 @@ This work consists of this file fontspec.dtx
%
% \begin{Xexample}[firstline=2]{salt}{The \feat{Alternate} feature.}
% \huge
-% \fontspec{Linux Libertine}
+% \fontspec{Linux Libertine O}
% \textsc{a} \& h \\
% \addfontfeature{Alternate=0}
% \textsc{a} \& h
@@ -1684,10 +1676,10 @@ This work consists of this file fontspec.dtx
%
% \begin{Xexample}[firstline=2]{style-alt}{Example of the \opt{Alternate} option of the \feat{Style} feature.}
% \Large
-% \fontspec{Warnock Pro}
-% K Q R k v w y \\
+% \fontspec{Quattrocento Roman}
+% M Q W \\
% \addfontfeature{Style=Alternate}
-% K Q R k v w y
+% M Q W
% \end{Xexample}
%
% \begin{Xexample}[firstline=2]{style-hist}{Example of the \opt{Historic} option of the \feat{Style} feature.}
@@ -2338,12 +2330,11 @@ This work consists of this file fontspec.dtx
%
% \begin{Xexample}[firstline=2,lastline=9]{aat-var}{Nine variants of Zapfino.}
% \Huge \rule{0pt}{2cm}
-% \newcounter{var}\newcounter{trans}
+% \newcounter{var}
% \whiledo{\value{var}<9}{%
-% \stepcounter{trans}%
% \edef\1{%
% \noexpand\fontspec[Variant=\thevar,
-% Color=005599\thetrans\thetrans]{Zapfino}}\1%
+% Color=0099\thevar\thevar]{Zapfino}}\1%
% \makebox[0.75\width]{d}%
% \stepcounter{var}}
% \hspace*{2cm}
@@ -2714,7 +2705,7 @@ This work consists of this file fontspec.dtx
% By default \LaTeX\ defines symbolic footnote characters in terms of commands
% that don't resolve well; better results can be achieved by using specific Unicode characters or proper LICRs with the \pkg{xunicode} package.
%
-% This problem has been solved by loading the \pkg{fixltx2e} package.
+% This problem is solved by defining \cs{@fnsymbol} in a similar manner to the \pkg{fixltx2e} package.
%
% \section{Verbatim}
% \label{sec:verb}
@@ -2773,6 +2764,12 @@ This work consists of this file fontspec.dtx
\ExplSyntaxOn
% \end{macrocode}
%
+% Quick fix for lualatex-math:
+% \begin{macrocode}
+\cs_if_exist:NF \lua_now_x:n
+ { \cs_set_eq:NN \lua_now_x:n \directlua }
+% \end{macrocode}
+%
% Check engine and load specific modules. For Lua\TeX, load only
% \pkg{luaotfload} which loads \pkg{luatexbase} and \pkg{lualibs} too.
%
@@ -4025,12 +4022,13 @@ This work consists of this file fontspec.dtx
\@@_set_faces:
\@@_info:nxx {defining-font} {#1} {#2}
%<*debug>
+ \typeout{"\l_@@_fontid_tl"~ defined.}
\@@_warning:nxx {defining-font} {#1} {#2}
%</debug>
}
{
%<*debug>
- \typeout{"#2"~ already~ defined~ apparently.}
+ \typeout{"\l_@@_fontid_tl"~ already~ defined~ apparently.}
%</debug>
}
\group_end:
@@ -4217,24 +4215,27 @@ This work consists of this file fontspec.dtx
% with a counter to create a simple NFSS family name for the font we're
% selecting.
%
-% The font name is fully expanded, in case it's defined in terms of macros, before having its spaces zapped.
% \begin{macrocode}
\prg_new_conditional:Nnn \@@_save_family:n {TF}
{
+%<debug>\typeout{save~ family:~ #1}
\cs_if_exist:NT \l_@@_nfss_fam_tl
{
\cs_set_eq:cN {g_@@_UID_\l_@@_fontid_tl} \l_@@_nfss_fam_tl
}
\cs_if_exist:cF {g_@@_UID_\l_@@_fontid_tl}
{
- \cs_if_exist:cTF {g_@@_family_#1_int}
- { \int_gincr:c {g_@@_family_#1_int} }
- { \int_new:c {g_@@_family_#1_int} }
+ % The font name is fully expanded, in case it's defined in terms of macros, before having its spaces zapped:
\tl_set:Nx \l_@@_tmp_tl {#1}
\tl_remove_all:Nn \l_@@_tmp_tl {~}
+
+ \cs_if_exist:cTF {g_@@_family_ \l_@@_tmp_tl _int}
+ { \int_gincr:c {g_@@_family_ \l_@@_tmp_tl _int} }
+ { \int_new:c {g_@@_family_ \l_@@_tmp_tl _int} }
+
\tl_gset:cx {g_@@_UID_\l_@@_fontid_tl}
{
- \l_@@_tmp_tl ( \int_use:c {g_@@_family_#1_int} )
+ \l_@@_tmp_tl ( \int_use:c {g_@@_family_ \l_@@_tmp_tl _int} )
}
}
\tl_gset:Nv \l_fontspec_family_tl {g_@@_UID_\l_@@_fontid_tl}
@@ -5382,11 +5383,10 @@ 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
+% \prop_put:NxV \l_@@_nfss_prop
+% {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl
}
\@@_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
{
@@ -5562,10 +5562,11 @@ This work consists of this file fontspec.dtx
\rmfamily
\@@_set_font_dimen:NnN \l_@@_tmpa_dim {#1} \font
\@@_set_font_dimen:NnN \l_@@_tmpb_dim {#1} \l_fontspec_font
- \fp_set_from_dim:Nn \l_@@_tmpa_fp { \l_@@_tmpa_dim }
- \fp_set_from_dim:Nn \l_@@_tmpb_fp { \l_@@_tmpb_dim }
- \fp_div:Nn \l_@@_tmpa_fp { \l_@@_tmpb_fp }
- \tl_gset:Nx \l_@@_scale_tl { \fp_use:N \l_@@_tmpa_fp }
+ \tl_gset:Nx \l_@@_scale_tl
+ {
+ \fp_eval:n { \dim_to_fp:n {\l_@@_tmpa_dim} /
+ \dim_to_fp:n {\l_@@_tmpb_dim} }
+ }
\@@_info:n {set-scale}
\group_end:
}
@@ -6768,7 +6769,7 @@ This work consists of this file fontspec.dtx
% \begin{macrocode}
\DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\updefault
\SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\updefault
+ \DeclareSymbolFontAlphabet\mathrm{operators}
\SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\itdefault
\SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\updefault
\SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g_@@_mathsf_tl\mddefault\updefault
@@ -6776,7 +6777,6 @@ This work consists of this file fontspec.dtx
\SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\updefault
\tl_if_empty:NTF \g_@@_bfmathrm_tl
{
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\updefault
\SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\itdefault
}
{
@@ -6989,9 +6989,26 @@ end
% \end{macrocode}
%
% \subsection{Unicode footnote symbols}
+% We used to load \pkg{fixltx2e} but this is not recommended; it should ideally be loaded before \cs{begindocument}, especially from TL2014 onwards.
% \begin{macrocode}
-\RequirePackage{fixltx2e}[2006/03/24]
\ExplSyntaxOn
+\cs_set_protected:Npn \@fnsymbol #1
+ {
+ \int_case:nnF {#1}
+ {
+ {0} {}
+ {1} { \mode_if_math:TF *\textasteriskcentered }
+ {2} { \mode_if_math:TF \dagger\textdagger }
+ {3} { \mode_if_math:TF \ddagger\textdaggerdbl }
+ {4} { \mode_if_math:TF \mathsection\textsection }
+ {5} { \mode_if_math:TF \mathparagraph\textparagraph }
+ {6} { \mode_if_math:TF \|\textbardbl }
+ {7} { \mode_if_math:TF {**}{\textasteriskcentered\textasteriskcentered} }
+ {8} { \mode_if_math:TF {\dagger\dagger}{\textdagger\textdagger} }
+ {9} { \mode_if_math:TF {\ddagger\ddagger}{\textdaggerdbl\textdaggerdbl} }
+ }
+ { \@ctrerr }
+ }
% \end{macrocode}
%
% \subsection{Emph}