texlive[53512] Master/texmf-dist: fontspec (23jan20)

commits+karl at tug.org commits+karl at tug.org
Thu Jan 23 22:54:34 CET 2020


Revision: 53512
          http://tug.org/svn/texlive?view=revision&revision=53512
Author:   karl
Date:     2020-01-23 22:54:34 +0100 (Thu, 23 Jan 2020)
Log Message:
-----------
fontspec (23jan20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf
    trunk/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-style.sty
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md	2020-01-23 21:54:34 UTC (rev 53512)
@@ -1,6 +1,20 @@
 Change history
 ==============
 
+## v2.7f (2020/01/24)
+
+  * Rename font feature `Letters=Uppercase` to `Style=Uppercase`, as this feature does
+    not generally affect the letters themselves, only symbols and accents.
+    The old name will be retained for the time being.
+  * Rename `Style=TitlingCaps` to `Style=Titling`.
+  * Track changes in both LaTeX2e and `expl3`.
+  * Fix long-standing (but never noticed?) bug that successive `\addfontfeatures`
+    would overwrite previous ones when using `UprightFeatures={...}` or similar.
+    Now the ‘`UprightFeatures`’ are accumulated.
+  * Remove AAT font examples from the documentation — support for many AAT fonts now
+    appears broken with latest versions of macOS.
+
+
 ## v2.7e (2020/01/09)
 
   * Rename for `Renderer=HarfBuzz` (the old `Harfbuzz` name is kept for compatibility)

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -170,7 +170,8 @@
 \@@_define_aat_feature:nnnn      {Style} {Ruby} {28} {2}
 \@@_define_aat_feature:nnnn      {Style} {Display} {19} {1}
 \@@_define_aat_feature:nnnn      {Style} {Engraved} {19} {2}
-\@@_define_aat_feature:nnnn      {Style} {TitlingCaps} {19} {4}
+\@@_define_aat_feature:nnnn      {Style} {Titling} {19} {4}
+\@@_define_aat_feature:nnnn      {Style} {TitlingCaps} {19} {4} % backwards compat
 \@@_define_aat_feature:nnnn      {Style} {TallCaps} {19} {5}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -62,13 +62,13 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {+smcp,+pcap,+c2sc,+c2pc,+unic,+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic,+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic,+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic,+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic,+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {+rand}
-\@@_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {+unic}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {}
+\@@_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {}
 %    \end{macrocode}
 %
 % \subsection{Numbers}
@@ -235,12 +235,14 @@
 \@@_define_opentype_onoffreset:nnnnn {Style} {Swash}            {swsh} {swsh} {}
 \@@_define_opentype_onoffreset:nnnnn {Style} {Cursive}          {swsh} {curs} {}
 \@@_define_opentype_onoffreset:nnnnn {Style} {Historic}         {hist} {hist} {}
-\@@_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {}
+\@@_define_opentype_onoffreset:nnnnn {Style} {Titling}          {titl} {titl} {}
+\@@_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {} % backwards compat
 \@@_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana}   {hkna} {hkna} {+vkna,+pkna}
 \@@_define_opentype_onoffreset:nnnnn {Style} {VerticalKana}     {vkna} {vkna} {+hkna,+pkna}
 \@@_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna}
 \@@_define_opentype_feature:nnnnn    {Style} {MathScript}       {ssty} {+ssty=0} {+ssty=1}
 \@@_define_opentype_feature:nnnnn    {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0}
+\@@_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {}
 %    \end{macrocode}
 %
 % \subsection{CJK shape}

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -128,7 +128,7 @@
 %    \begin{macrocode}
 \cs_new:Nn \@@_init_ttc:n
   {
-    \str_if_eq:eeT { \str_lower_case:f {\l_@@_extension_tl} } {.ttc}
+    \str_if_eq:eeT { \str_lowercase:f {\l_@@_extension_tl} } {.ttc}
       {
         \@@_sanitise_fontname:Nn \l_@@_fontname_it_tl   {#1}
         \@@_sanitise_fontname:Nn \l_@@_fontname_bf_tl   {#1}

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -179,7 +179,7 @@
 %    \begin{macrocode}
 \@@_keys_define_code:nnn {fontspec-preparse} {FontIndex}
   {
-    \str_if_eq:eeF { \str_lower_case:f {\l_@@_extension_tl} } {.ttc}
+    \str_if_eq:eeF { \str_lowercase:f {\l_@@_extension_tl} } {.ttc}
       { \@@_warning:n {font-index-needs-ttc} }
 %<XE>  \tl_set:Nn \l_@@_ttc_index_tl {:#1}
 %<LU>  \tl_set:Nn \l_@@_ttc_index_tl {(#1)}
@@ -304,11 +304,11 @@
 %    \begin{macrocode}
 \@@_keys_define_code:nnn {fontspec-preparse} {UprightFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_up_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_up_clist {#1}
   }
 \@@_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_bf_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_bf_clist {#1}
 
 %  \prop_put:NxV \l_@@_nfss_prop
 %     {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl
@@ -315,19 +315,19 @@
   }
 \@@_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_it_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_it_clist {#1}
   }
 \@@_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_bfit_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_bfit_clist {#1}
   }
 \@@_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_sl_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_sl_clist {#1}
   }
 \@@_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures}
   {
-    \clist_set:Nn \l_@@_fontfeat_bfsl_clist {#1}
+    \clist_put_right:Nn \l_@@_fontfeat_bfsl_clist {#1}
   }
 %    \end{macrocode}
 % Note that small caps features can vary by shape, so these in fact \emph{aren't} pre-parsed.
@@ -336,7 +336,7 @@
   {
     \bool_if:NF \l_@@_firsttime_bool
       {
-        \clist_set:Nn \l_@@_fontfeat_sc_clist {#1}
+        \clist_put_right:Nn \l_@@_fontfeat_sc_clist {#1}
       }
   }
 %    \end{macrocode}

Deleted: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -1,30 +0,0 @@
-%%^^A%%  fontspec-code-patches.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-% \section{Patching code}
-%
-%    \begin{macrocode}
-%<*fontspec>
-%    \end{macrocode}
-%
-% Nothing here right now.
-%
-%    \begin{macrocode}
-%</fontspec>
-%    \end{macrocode}
-
-\endinput
-
-% /©
-% ------------------------------------------------
-% The FONTSPEC package  <wspr.io/fontspec>
-% ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
-% Copyright  2009-2015  Khaled Hosny
-% Copyright  2013       Philipp Gesang
-% Copyright  2013-2016  Joseph Wright
-% ------------------------------------------------
-% This package is free software and may be redistributed and/or modified under
-% the conditions of the LaTeX Project Public License, version 1.3c or higher
-% (your choice): <http://www.latex-project.org/lppl/>.
-% ------------------------------------------------
-% ©/

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -32,12 +32,20 @@
 % \begin{macro}{\ttfamily}
 % Add an encoding switch to the three family commands.
 %    \begin{macrocode}
-\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
-  { \fontencoding \l_@@_rmfamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { sffamily~ } { \fontfamily }
-  { \fontencoding \l_@@_sffamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
-  { \fontencoding \l_@@_ttfamily_encoding_tl \fontfamily }
+\cs_if_exist:NTF \@rmfamilyhook
+  {
+    \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l_@@_rmfamily_encoding_tl}
+    \tl_put_right:Nn \@sffamilyhook {\fontencoding \l_@@_sffamily_encoding_tl}
+    \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l_@@_ttfamily_encoding_tl}
+  }
+  {
+    \tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+      { \fontencoding \l_@@_rmfamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { sffamily~ } { \fontfamily }
+      { \fontencoding \l_@@_sffamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+      { \fontencoding \l_@@_ttfamily_encoding_tl \fontfamily }
+  }
 \tl_set_eq:NN \l_@@_rmfamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l_@@_sffamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l_@@_ttfamily_encoding_tl \g_fontspec_encoding_tl

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -191,6 +191,7 @@
 \tl_new:N \l_@@_fontname_tl
 \tl_new:N \l_@@_options_tl
 \tl_new:N \l_@@_saved_fontname_tl
+\tl_new:N \l_@@_prev_unicode_name_tl
 %    \end{macrocode}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex	2020-01-23 21:54:34 UTC (rev 53512)
@@ -99,9 +99,13 @@
 
 
 \section{Going behind \pkg{fontspec}'s back}
+
 Expert users may wish not to use \pkg{fontspec}'s feature handling at all,
 while still taking advantage of its \LaTeX\ font selection conveniences. The
-\feat{RawFeature} font feature allows font feature selection using a literal feature selection string if you happen to have the OpenType feature tag memorised.
+\feat{RawFeature} font feature allows font feature selection using a literal feature
+selection string if you happen to have the OpenType feature tag memorised.
+More importantly, this can be used to enable features for which \pkg{fontspec}
+does not yet have a user interface to.
 
 \begin{Xexample}{raw}{Using raw font features directly.}
   \fontspec{texgyrepagella-regular.otf}[RawFeature=+smcp]
@@ -113,7 +117,11 @@
 \noindent or with multiple declarations:\par
 {\centering|[RawFeature=+smcp, RawFeature=+onum]|\par}
 
+Note that there is no error-checking when using |RawFeature|. Where a \pkg{fontspec}
+interface exists to a feature it is generally better to use it. If the font lacks the feature
+or if it would clash with another feature, \pkg{fontspec} will attemmpt to warn and/or resolve the issues.
 
+
 \section{Renaming existing features \& options}
 \label{sec:aliasfontfeature}
 

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex	2020-01-23 21:54:34 UTC (rev 53512)
@@ -93,9 +93,9 @@
 
 \cmdbox{\cmd\addfontfeatures\marg{font features}}
 
-This command allows font features to
+This command allows font features in an entire font family to
 be changed without knowing what features are currently selected or even what
-font is being used. A good example of this could be to add a hook to all
+font family is being used. A good example of this could be to add a hook to all
 tabular material to use monospaced numbers, as shown in \exref{aff}.
 If you attempt to \emph{change} an already-selected feature, \pkg{fontspec} will try to de-activate any features that clash with the new ones.
 \Eg, the following two invocations are mutually exclusive:
@@ -106,6 +106,13 @@
 \end{Verbatim}
 Since |Numbers=Lining| comes last, it takes precedence and deactivates the call |Numbers=OldStyle|.
 
+If you wish to apply the change to only one of the fonts of a family (say, italics only)
+you can write
+\begin{Verbatim}
+\addfontfeature{ItalicFeatures={Numbers=Lowercase}}
+\end{Verbatim}
+
+
 \begin{Lexample}{aff}{A demonstration of the \cs{addfontfeatures} command.}
   \fontspec{texgyreadventor-regular.otf}%
            [Numbers={Proportional,OldStyle}]

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex	2020-01-23 21:54:34 UTC (rev 53512)
@@ -390,6 +390,8 @@
 When a font family has both slanted \emph{and} italic shapes, these may be specified separately using the analogous features \feat{SlantedFont} and \feat{BoldSlantedFont}.
 Without these, however, the \LaTeX\ font switches for slanted (\cs{textsl}, \cs{slshape}) will default to the italic shape.
 
+For modern OpenType fonts, small caps glyphs are included within a fontface and \pkg{fontspec} will automatically detect them
+for use with the \cs{textsc} and \cs{scshape} commands.
 Pre-OpenType, it was common for font families to be distributed with small caps glyphs in separate fonts, due to the limitations on the number of glyphs allowed in the PostScript Type~1 format.
 Such fonts may be used by declaring the \feat{SmallCapsFont} of the family you are specifying:
 \begin{Verbatim}
@@ -398,8 +400,8 @@
   ]
   Roman 123 \\ \textsc{Small caps 456}
 \end{Verbatim}
-In fact, you should specify the small caps font for each individual bold and
-italic shape as in
+In fact, this example is overly simplistic since it does not cover the other shapes in a font family.
+You should specify the small caps font for each individual bold and italic shape as in
 \begin{Verbatim}
   \setmainfont{ <upright> }[
     UprightFeatures    = { SmallCapsFont={ <sc> } } ,
@@ -440,7 +442,7 @@
 \end{Verbatim}
 To select a font for use in this way in \pkg{fontspec} use the \feat{NFSSFamily} feature:\footnote{Thanks to Luca Fascione for the example and motivation for finally implementing this feature.}
 \begin{Verbatim}
-  \newfontfamily\verbatimfont[NFSSFamily=myverbatimfont]{Inconsolata}
+  \newfontfamily\verbatimfont{Inconsolata}[NFSSFamily=myverbatimfont]
 \end{Verbatim}
 It is then possible to write commands such as:
 \begin{Verbatim}
@@ -602,17 +604,6 @@
  \end{Verbatim}
  if you really felt like it and both sets of features would be applied.
 
- \item
- Following standard \pkg{xparse} behaviour, there must be no space before the opening bracket; writing
- \begin{Verbatim*}
-\fontspec{myfont.otf} [Color=red]
- \end{Verbatim*}
- will result in |[Color=red]| not being recognised an argument and therefore it will be typeset as text. When breaking over lines, write either of:
- \begin{Verbatim}
-   \fontspec{myfont.otf}%        \fontspec{myfont.otf}[
-     [Color=red]                    Color=Red]
- \end{Verbatim}
-
 \end{enumerate}
 
 \paragraph{Spaces}

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex	2020-01-23 21:54:34 UTC (rev 53512)
@@ -815,7 +815,7 @@
 a \pkg{fontspec} interface is shown in \vref{tab:none-ot}.
 Features omitted are partially by design and partially by oversight;
 for example, the |aalt| feature is largely useless in \TeX\ since it is designed
-for providing a textsc{gui} interface for selecting `all alternates' of a glyph.
+for providing a \textsc{gui} interface for selecting `all alternates' of a glyph.
 Others, such as optical bounds for example, simply haven't yet been considered
 due to a lack of fonts available for testing.
 Suggestions welcome for how/where to add these missing features to the package.
@@ -919,12 +919,12 @@
 
 For each character that can be varied, it is possible to select among
 possible options for that particular glyph.
-For example, in the example below, variants are chosen for glyphs `4' and `5',
+For example, in the hypothetical example below, variants are chosen for glyphs `4' and `5',
 and the trailing |:|\meta{n} corresponds to which variety to choose.
 \begin{Verbatim}
-  \fontspec{EB Garamond 12 Italic}[CharacterVariant={4,5:2}] \& violet
+  \fontspec{CV Font}[CharacterVariant={4,5:2}] \& violet
 \end{Verbatim}
-The numbering is entirely font-soecific. Glyph `5' might be the character `v', for example.
+The numbering is entirely font-specific. Glyph `5' might be the character `v', for example.
 Character variants are specifically designed not to conflict with each
 other, so you can enable them individually per character.
 (Unlike stylistic alternates, say.)
@@ -979,22 +979,21 @@
 \otf{ResetAll}{}
 \end{features}
 
-For OpenType fonts use a regular text slash to create fractions, but
-the \feat{Fraction} feature must be explicitly activated.
-Some (Asian fonts predominantly) also provide for the
-\opt{Alternate} feature. These are both shown in \exref{ot-frac}.
+Activates the construction of `vulgar' fractions using precomposed glyphs and/or
+subscript and superscript characters from within the font.
+Coverage will vary by font; see \exref{ot-frac}.
+Some (Asian fonts predominantly) also provide for the \opt{Alternate} option.
 
-\begin{Xexample}{ot-frac}{The \feat{Fractions} feature.}
-  \fontspec{Hiragino Maru Gothic Pro W4}
-   1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\
-  \addfontfeature{Fractions=On}
-   1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\
-  \addfontfeature{Fractions=Alternate}
-   1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\
-\end{Xexample}
+\begin{Lexample}{ot-frac}{The \feat{Fractions} feature.}
+\setsansfont{Lato}[Fractions=On]
+\setmonofont{IBM Plex Mono}[Fractions=On]
 
+\sffamily 1/2 47/11 1/1000 \par
+\ttfamily 1/2 47/11
+\end{Lexample}
 
 
+
 \subsubsection{Kerning --- \texttt{kern}}
 \label{sec:kerning}
 
@@ -1034,12 +1033,11 @@
 \subsubsection{Letters} \label{sec:letters}
 The \opt{Letters} feature specifies how the letters in the current font
 will look. OpenType fonts may contain the following options:
-\opt{Uppercase}, \opt{SmallCaps}, \opt{PetiteCaps},
+\opt{SmallCaps}, \opt{PetiteCaps},
 \opt{UppercaseSmallCaps}, \opt{UppercasePetiteCaps}, and
 \opt{Unicase}.
 
 \begin{features}{Letters}
-\otf*{Uppercase}{case}
 \otf*{SmallCaps}{smcp}
 \otf*{PetiteCaps}{pcap}
 \otf*{UppercaseSmallCaps}{c2sc}
@@ -1066,26 +1064,8 @@
    THIS SENTENCE no verb
 \end{Lexample}
 
-Note that the \opt{Uppercase} option will (probably)
-not actually map letters to uppercase.
- \note{If you want automatic uppercase letters, look to \LaTeX's
-      \cmd\MakeUppercase\ command.}
-It is designed to select various
-uppercase forms for glyphs such as accents and dashes, such as shown
-in \exref{letters-uppercase}; note the raised position of the hyphen
-to better match the surrounding letters.
 
-\begin{Lexample}{letters-uppercase}{An example of the \opt{Uppercase} option of the \feat{Letters} feature.}
-  \fontspec{LinLibertine_R.otf}
-   UPPER-CASE example \\
-  \addfontfeature{Letters=Uppercase}
-   UPPER-CASE example
-\end{Lexample}
 
-The \feat{Kerning} feature also contains an \opt{Uppercase} option,
-which adds a small amount of spacing in between letters (see \vref{sec:kerning}).
-
-
 \subsubsection{Ligatures}
 \label{sec:ot-feat-liga}
 
@@ -1196,7 +1176,7 @@
 \otf*{Swash}{swsh}
 \otf*{Cursive}{curs}
 \otf*{Historic}{hist}
-\otf*{TitlingCaps}{titl}
+\otf*{Titling}{titl}
 \otf*{HorizontalKana}{hkna}
 \otf*{VerticalKana}{vkna}
 \cmidrule{2-4}
@@ -1221,6 +1201,26 @@
    M Q W
 \end{Xexample}
 
+The \opt{Uppercase} option is designed to select various
+uppercase forms for glyphs such as accents and dashes, such as shown
+in \exref{style-uppercase}; note the raised position of the hyphen
+to better match the surrounding letters.
+It will (probably) not actually map letters to uppercase.
+ \note{If you want automatic uppercase letters, look to \LaTeX's
+      \cmd\MakeUppercase\ command.}
+This option used to be selected under the \feat{Letters} feature, but moved here
+as it generally does not actually affect the letters themselves.
+The \feat{Kerning} feature also contains an \opt{Uppercase} option,
+which adds a small amount of spacing in between letters (see \vref{sec:kerning}).
+
+\begin{Lexample}{style-uppercase}{An example of the \opt{Uppercase} option of the \feat{Style} feature.}
+  \fontspec{LinLibertine_R.otf}
+   UPPER-CASE example \\
+  \addfontfeature{Style=Uppercase}
+   UPPER-CASE example
+\end{Lexample}
+
+
 In other features, larger breadths of changes can be seen, covering
 the style of an entire alphabet.
 See \exref{style-itrub}; here, the \opt{Italic} option affects the Latin text

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-style.sty
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-style.sty	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-style.sty	2020-01-23 21:54:34 UTC (rev 53512)
@@ -8,6 +8,8 @@
 \usepackage{fontspec,booktabs,caption,xcolor,flafter,fancyvrb,hologo,graphicx,
   url,varioref,varwidth,microtype,tocloft,framed,xparse,docmute}
 
+\let\FancyVerbSpace\verbvisiblespace
+
 %% Various labelling commands:
 \newcommand*\name[1]{{#1}}
 \newcommand*\opt[1]{\texttt{#1}}

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex	2020-01-23 21:54:34 UTC (rev 53512)
@@ -32,6 +32,8 @@
 
 \subsection{Different font technologies: \AAT, OpenType, and Graphite}\label{sec:renderer-xetex}
 
+\textbf{Note that from 2020 it appears that \XeTeX\ can no longer support \AAT\ fonts in \MacOSX.}
+
 \XeTeX\ supports three rendering technologies for typesetting, selected with
 the \feat{Renderer} font feature. The first, \opt{AAT}, is
 that provided only by \MacOSX.
@@ -77,6 +79,26 @@
 \end{Verbatim}
 
 
+\subsection{Vertical typesetting}
+
+\XeTeX\ provides for vertical typesetting simply with the ability to rotate
+the individual glyphs as a font is used for typesetting, as shown in
+\exref{vert}.
+
+\begin{Xexample}[firstline=2]{vert}{Vertical typesetting.}
+  \def\verttext{共産主義者は}
+  \fontspec{Hiragino Mincho Pro}
+  \verttext
+
+  \fontspec{Hiragino Mincho Pro}[Renderer=AAT,Vertical=RotatedGlyphs]
+  \rotatebox{-90}{\verttext}% requires the graphicx package
+\end{Xexample}
+
+No actual provision is made for typesetting top-to-bottom
+languages; for an example of how to do this, see the vertical Chinese
+example provided in the \XeTeX\ documentation.
+
+
 \section{The Graphite renderer}
 \label{sec:graphite-features}
 
@@ -109,6 +131,7 @@
 \textbf{Warning!}
 \XeTeX's implementation on \MacOSX\ is currently in a state of flux and the information contained below may well be wrong from 2013 onwards.
 There is a good chance that the features described in this section will not be available any more as \XeTeX's completes its transition to a cross-platform--only application.
+All examples in this section have now been removed.
 \end{quote}
 
 \MacOSX's font technology began life before the ubiquitous-OpenType era
@@ -160,20 +183,6 @@
 non-exclusive selectors, like the ligatures, you can turn them off
 by prefixing their name with \opt{No}.
 
-\begin{Xexample}{wordcx}{Contextual glyph for the beginnings and ends of words.}
-  \newfontface\fancy{Hoefler Text Italic}[%
-    Contextuals={WordInitial,WordFinal}]
-  \fancy where is all the vegemite
-\end{Xexample}
-
-\begin{Xexample}{longsaat}{A contextual feature for the `long s' can be convenient as the character does not need to be marked up explicitly.}
-  \fontspec{Hoefler Text}[Contextuals=Inner]
-  `Inner' swashes can \emph{sometimes}    \\
-   contain the archaic long~s.
-\end{Xexample}
-
-
-
 \subsection{Vertical position}
 The \feat{VerticalPosition} feature is used to access things like
 subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and
@@ -181,22 +190,8 @@
 The \opt{Ordinal} option is (supposed to be)
 contextually sensitive to only raise characters that appear directly
 after a number.
-These are shown in \exref{aat-supp}.
 
-\begin{Xexample}{aat-supp}{Vertical position for AAT fonts.}
-  \fontspec{Skia}
-   Normal
-  \fontspec{Skia}[VerticalPosition=Superior]
-   Superior
-  \fontspec{Skia}[VerticalPosition=Inferior]
-   Inferior                \\
-  \fontspec{Skia}[VerticalPosition=Ordinal]
-   1st 2nd 3rd 4th 0th 8abcde
-\end{Xexample}
-
-The \pkg{realscripts} package
-(also loaded by \pkg{xltxtra})
-redefines the \cmd\textsubscript\ and
+The \pkg{realscripts} package redefines the \cmd\textsubscript\ and
 \cmd\textsuperscript\ commands to use the above font features,
 including for use in footnote labels.
 
@@ -209,88 +204,36 @@
 In \AAT\ fonts, the `fraction slash' or solidus character, is
 to be used to create fractions. When \feat{Fractions} are turned
 \opt{On}, then only pre-drawn fractions will be used.
-See \exref{aat-frac}.
 
 Using the \opt{Diagonal} option (\AAT\ only), the font will attempt
 to create the fraction from superscript and subscript
 characters.
 
-\edef\caretcc{\the\catcode`\^}
-\catcode`\^=12\relax
-\begin{Xexample}{aat-frac}{Fractions in AAT fonts. The \texttt{\relax^^^^2044} glyph is the `fraction slash' that may be typed in \MacOSX\ with \textsc{opt+shift+1}; not shown literally here due to font contraints.}
-  \fontspec[Fractions=On]{Skia}
-   1{^^^^2044}2 \quad 5{^^^^2044}6 \\ % fraction slash
-   1/2 \quad 5/6    % regular  slash
-
-  \fontspec[Fractions=Diagonal]{Skia}
-         13579{^^^^2044}24680 \\ % fraction slash
-   \quad 13579/24680    % regular  slash
-\end{Xexample}
-\catcode`\^=\caretcc\relax
-
 Some (Asian fonts predominantly) also provide for the
-\opt{Alternate} feature shown in \exref{frac-alt}.
+\opt{Alternate} feature.
 
-\begin{Xexample}{frac-alt}{Alternate design of pre-composed fractions.}
-  \fontspec{Hiragino Maru Gothic Pro}
-   1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\
-  \addfontfeature{Fractions=Alternate}
-   1/2 \quad 1/4 \quad 5/6 \quad 13579/24680
-\end{Xexample}
-
-
 \subsection{Variants}
 The \feat{Variant} feature takes a single numerical input for
-choosing different alphabetic shapes. Don't mind my fancy \exref{aat-var}
-\texttt{:)} I'm just looping through the nine~(\,!\,) variants of
-Zapfino.
-
-\begin{Xexample}[firstline=2,lastline=9]{aat-var}{Nine variants of Zapfino.}
-  \Huge \rule{0pt}{2cm}
-  \newcounter{var}
-  \whiledo{\value{var}<9}{%
-    \edef\1{%
-    \noexpand\fontspec[Variant=\thevar,
-      Color=0099\thevar\thevar]{Zapfino}}\1%
-    \makebox[0.75\width]{d}%
-    \stepcounter{var}}
-  \hspace*{2cm}
-\end{Xexample}
-
+choosing different alphabetic shapes.
 See \vref{sec:newfeatures} for a way to assign names to variants,
 which should be done on a per-font basis.
 
 \subsection{Alternates}
-
-Selection of \feat{Alternate}s \emph{again}
-must be done numerically; see \exref{aat-alt}.
+Selection of \feat{Alternate}s again must be done numerically.
 See \vref{sec:newfeatures} for a way to assign names to alternates,
 which should be done on a per-font basis.
 
-\begin{Xexample}{aat-alt}{Alternate shape selection must be numerical.}
-  \fontspec{Hoefler Text Italic}[Alternate=0]
-   Sphinx Of Black Quartz, {\scshape Judge My Vow} \\
-  \fontspec{Hoefler Text Italic}[Alternate=1]
-   Sphinx Of Black Quartz, {\scshape Judge My Vow}
-\end{Xexample}
 
-
 \subsection{Style}
-
 The options of the \feat{Style} feature
 are defined in \AAT\ as one of the following: \opt{Display},
 \opt{Engraved}, \opt{IlluminatedCaps}, \opt{Italic},
-\opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{TitlingCaps}.
+\opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{Titling}.
 \footnotetext{`Ruby' refers to a small optical size, used in
 Japanese typography for annotations.}
 
 Typical examples for these features are shown in \ref{sec:ot-feat-style}.
 
-
-
-
-
-
 \subsection{CJK shape}
 There have been many standards for how CJK ideographic
 glyphs are `supposed' to look. Some fonts will contain many alternate
@@ -306,34 +249,6 @@
 \AAT\ also allows \feat{CharacterWidth}|=|\opt{Default} to return to
 the original font settings.
 
-
-
-
-
-
-
-\subsection{Vertical typesetting}
-
-\XeTeX\ provides for vertical typesetting simply with the ability to rotate
-the individual glyphs as a font is used for typesetting, as shown in
-\exref{vert}.
-
-\begin{Xexample}[firstline=2]{vert}{Vertical typesetting.}
-  \def\verttext{共産主義者は}
-  \fontspec{Hiragino Mincho Pro}
-  \verttext
-
-  \fontspec{Hiragino Mincho Pro}[Renderer=AAT,Vertical=RotatedGlyphs]
-  \rotatebox{-90}{\verttext}% requires the graphicx package
-\end{Xexample}
-
-No actual provision is made for typesetting top-to-bottom
-languages; for an example of how to do this, see the vertical Chinese
-example provided in the \XeTeX\ documentation.
-
-
-
-
 \subsection{Diacritics}
 Diacritics are marks, such as the acute accent or the tilde, applied to letters; they usually indicate a change in pronunciation.
 In Arabic scripts, diacritics are used to indicate vowels.
@@ -352,7 +267,6 @@
 instead.
 
 
-
 \subsection{Annotation}
 Various Asian fonts are equipped with a more extensive range of
 numbers and numerals in different forms. These are accessed through

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx	2020-01-23 21:54:34 UTC (rev 53512)
@@ -29,7 +29,6 @@
   \DTX{fontspec-code-math.dtx}
   \DTX{fontspec-code-closing.dtx}
   \DTX{fontspec-code-xfss.dtx}
-  \DTX{fontspec-code-patches.dtx}
 }
 %</dtx>
 %    \end{macrocode}
@@ -71,7 +70,7 @@
 \ProvidesExplFile{fontspec.dtx}
 %</dtx>
 %<*fontspec>
-  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/24}{2.7f}{Font selection for XeLaTeX and LuaLaTeX}
 %</fontspec>
 %    \end{macrocode}
 %
@@ -90,8 +89,8 @@
 %<lua>local fontspec    = fontspec
 %<lua>fontspec.module   = {
 %<lua>    name          = "fontspec",
-%<lua>    version       = "2.7e",
-%<lua>    date          = "2020/01/09",
+%<lua>    version       = "2.7f",
+%<lua>    date          = "2020/01/24",
 %<lua>    description   = "Font selection for XeLaTeX and LuaLaTeX",
 %<lua>    author        = "Khaled Hosny, Philipp Gesang, Will Robertson",
 %<lua>    copyright     = "Khaled Hosny, Philipp Gesang, Will Robertson",

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty	2020-01-23 21:54:34 UTC (rev 53512)
@@ -25,7 +25,6 @@
 %% fontspec-code-math.dtx  (with options: `fontspec,LU')
 %% fontspec-code-closing.dtx  (with options: `fontspec,LU')
 %% fontspec-code-xfss.dtx  (with options: `fontspec,LU')
-%% fontspec-code-patches.dtx  (with options: `fontspec,LU')
 %% ------------------------------------------------
 %% The FONTSPEC package  <wspr.io/fontspec>
 %% ------------------------------------------------
@@ -41,7 +40,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-luatex}%
-  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/24}{2.7f}{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>
@@ -143,6 +142,7 @@
 \tl_new:N \l__fontspec_fontname_tl
 \tl_new:N \l__fontspec_options_tl
 \tl_new:N \l__fontspec_saved_fontname_tl
+\tl_new:N \l__fontspec_prev_unicode_name_tl
 \tl_new:N \g__fontspec_nfss_enc_tl
 \tl_new:N \g__fontspec_nfss_family_tl
 \tl_new:N \l__fontspec_nfss_sc_tl
@@ -735,12 +735,20 @@
     \fontencoding { \g__fontspec_nfss_enc_tl }
     \selectfont
   }
-\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { sffamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+\cs_if_exist:NTF \@rmfamilyhook
+  {
+    \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l__fontspec_rmfamily_encoding_tl}
+    \tl_put_right:Nn \@sffamilyhook {\fontencoding \l__fontspec_sffamily_encoding_tl}
+    \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l__fontspec_ttfamily_encoding_tl}
+  }
+  {
+    \tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { sffamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+  }
 \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g_fontspec_encoding_tl
@@ -1275,7 +1283,7 @@
   }
 \cs_new:Nn \__fontspec_init_ttc:n
   {
-    \str_if_eq:eeT { \str_lower_case:f {\l__fontspec_extension_tl} } {.ttc}
+    \str_if_eq:eeT { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
       {
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_it_tl   {#1}
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bf_tl   {#1}
@@ -2146,7 +2154,7 @@
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {FontIndex}
   {
-    \str_if_eq:eeF { \str_lower_case:f {\l__fontspec_extension_tl} } {.ttc}
+    \str_if_eq:eeF { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
       { \__fontspec_warning:n {font-index-needs-ttc} }
   \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)}
   }
@@ -2220,34 +2228,34 @@
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {UprightFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_up_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_up_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bf_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {#1}
 
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_it_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bfit_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bfit_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_sl_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_sl_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bfsl_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bfsl_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFeatures}
   {
     \bool_if:NF \l__fontspec_firsttime_bool
       {
-        \clist_set:Nn \l__fontspec_fontfeat_sc_clist {#1}
+        \clist_put_right:Nn \l__fontspec_fontfeat_sc_clist {#1}
       }
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {SizeFeatures}
@@ -2613,13 +2621,13 @@
     +case,+smcp,+pcap,+c2sc,+c2pc,+unic,+rand,
     -case,-smcp,-pcap,-c2sc,-c2pc,-unic,-rand
   }
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {+smcp,+pcap,+c2sc,+c2pc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {}
 \__fontspec_define_opentype_feature_group:n {Numbers}
 \__fontspec_define_opentype_feature:nnnnn   {Numbers} {ResetAll} {} {}
   {
@@ -2728,12 +2736,14 @@
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Swash}            {swsh} {swsh} {}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Cursive}          {swsh} {curs} {}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Historic}         {hist} {hist} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Titling}          {titl} {titl} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {} % backwards compat
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana}   {hkna} {hkna} {+vkna,+pkna}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {VerticalKana}     {vkna} {vkna} {+hkna,+pkna}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna}
 \__fontspec_define_opentype_feature:nnnnn    {Style} {MathScript}       {ssty} {+ssty=0} {+ssty=1}
 \__fontspec_define_opentype_feature:nnnnn    {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {}
 \__fontspec_define_opentype_feature_group:n  {CJKShape}
 \__fontspec_define_opentype_feature:nnnnn    {CJKShape} {ResetAll} {} {}
   {
@@ -3902,6 +3912,3 @@
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }
 \strongfontdeclare{ \bfseries }
 
-%%^^A%%  fontspec-code-patches.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2020-01-23 21:54:34 UTC (rev 53512)
@@ -25,7 +25,6 @@
 %% fontspec-code-math.dtx  (with options: `fontspec,XE')
 %% fontspec-code-closing.dtx  (with options: `fontspec,XE')
 %% fontspec-code-xfss.dtx  (with options: `fontspec,XE')
-%% fontspec-code-patches.dtx  (with options: `fontspec,XE')
 %% ------------------------------------------------
 %% The FONTSPEC package  <wspr.io/fontspec>
 %% ------------------------------------------------
@@ -41,7 +40,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-xetex}%
-  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/24}{2.7f}{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>
@@ -143,6 +142,7 @@
 \tl_new:N \l__fontspec_fontname_tl
 \tl_new:N \l__fontspec_options_tl
 \tl_new:N \l__fontspec_saved_fontname_tl
+\tl_new:N \l__fontspec_prev_unicode_name_tl
 \tl_new:N \g__fontspec_nfss_enc_tl
 \tl_new:N \g__fontspec_nfss_family_tl
 \tl_new:N \l__fontspec_nfss_sc_tl
@@ -728,12 +728,20 @@
     \fontencoding { \g__fontspec_nfss_enc_tl }
     \selectfont
   }
-\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { sffamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
-\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
-  { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+\cs_if_exist:NTF \@rmfamilyhook
+  {
+    \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l__fontspec_rmfamily_encoding_tl}
+    \tl_put_right:Nn \@sffamilyhook {\fontencoding \l__fontspec_sffamily_encoding_tl}
+    \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l__fontspec_ttfamily_encoding_tl}
+  }
+  {
+    \tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { sffamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
+    \tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+      { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+  }
 \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g_fontspec_encoding_tl
 \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g_fontspec_encoding_tl
@@ -1267,7 +1275,7 @@
   }
 \cs_new:Nn \__fontspec_init_ttc:n
   {
-    \str_if_eq:eeT { \str_lower_case:f {\l__fontspec_extension_tl} } {.ttc}
+    \str_if_eq:eeT { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
       {
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_it_tl   {#1}
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bf_tl   {#1}
@@ -2261,7 +2269,7 @@
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {FontIndex}
   {
-    \str_if_eq:eeF { \str_lower_case:f {\l__fontspec_extension_tl} } {.ttc}
+    \str_if_eq:eeF { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
       { \__fontspec_warning:n {font-index-needs-ttc} }
   \tl_set:Nn \l__fontspec_ttc_index_tl {:#1}
   }
@@ -2335,34 +2343,34 @@
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {UprightFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_up_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_up_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bf_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {#1}
 
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_it_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bfit_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bfit_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_sl_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_sl_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures}
   {
-    \clist_set:Nn \l__fontspec_fontfeat_bfsl_clist {#1}
+    \clist_put_right:Nn \l__fontspec_fontfeat_bfsl_clist {#1}
   }
 \__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFeatures}
   {
     \bool_if:NF \l__fontspec_firsttime_bool
       {
-        \clist_set:Nn \l__fontspec_fontfeat_sc_clist {#1}
+        \clist_put_right:Nn \l__fontspec_fontfeat_sc_clist {#1}
       }
   }
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {SizeFeatures}
@@ -2744,13 +2752,13 @@
     +case,+smcp,+pcap,+c2sc,+c2pc,+unic,+rand,
     -case,-smcp,-pcap,-c2sc,-c2pc,-unic,-rand
   }
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {+smcp,+pcap,+c2sc,+c2pc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic,+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {+rand}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {}
 \__fontspec_define_opentype_feature_group:n {Numbers}
 \__fontspec_define_opentype_feature:nnnnn   {Numbers} {ResetAll} {} {}
   {
@@ -2858,12 +2866,14 @@
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Swash}            {swsh} {swsh} {}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Cursive}          {swsh} {curs} {}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {Historic}         {hist} {hist} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Titling}          {titl} {titl} {}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps}      {titl} {titl} {} % backwards compat
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana}   {hkna} {hkna} {+vkna,+pkna}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {VerticalKana}     {vkna} {vkna} {+hkna,+pkna}
 \__fontspec_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna}
 \__fontspec_define_opentype_feature:nnnnn    {Style} {MathScript}       {ssty} {+ssty=0} {+ssty=1}
 \__fontspec_define_opentype_feature:nnnnn    {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0}
+\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {}
 \__fontspec_define_opentype_feature_group:n  {CJKShape}
 \__fontspec_define_opentype_feature:nnnnn    {CJKShape} {ResetAll} {} {}
   {
@@ -3731,7 +3741,8 @@
 \__fontspec_define_aat_feature:nnnn      {Style} {Ruby} {28} {2}
 \__fontspec_define_aat_feature:nnnn      {Style} {Display} {19} {1}
 \__fontspec_define_aat_feature:nnnn      {Style} {Engraved} {19} {2}
-\__fontspec_define_aat_feature:nnnn      {Style} {TitlingCaps} {19} {4}
+\__fontspec_define_aat_feature:nnnn      {Style} {Titling} {19} {4}
+\__fontspec_define_aat_feature:nnnn      {Style} {TitlingCaps} {19} {4} % backwards compat
 \__fontspec_define_aat_feature:nnnn      {Style} {TallCaps} {19} {5}
 \__fontspec_define_aat_feature_group:n {CJKShape}
 \__fontspec_define_aat_feature:nnnn      {CJKShape} {Traditional} {20} {0}
@@ -4164,6 +4175,3 @@
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }
 \strongfontdeclare{ \bfseries }
 
-%%^^A%%  fontspec-code-patches.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2020-01-23 21:54:34 UTC (rev 53512)
@@ -23,8 +23,8 @@
 local fontspec    = fontspec
 fontspec.module   = {
     name          = "fontspec",
-    version       = "2.7e",
-    date          = "2020/01/09",
+    version       = "2.7f",
+    date          = "2020/01/24",
     description   = "Font selection for XeLaTeX and LuaLaTeX",
     author        = "Khaled Hosny, Philipp Gesang, Will Robertson",
     copyright     = "Khaled Hosny, Philipp Gesang, Will Robertson",

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty	2020-01-23 19:04:02 UTC (rev 53511)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty	2020-01-23 21:54:34 UTC (rev 53512)
@@ -21,7 +21,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec}%
-  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/24}{2.7f}{Font selection for XeLaTeX and LuaLaTeX}
 
 %%^^A%%  fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
 \sys_if_engine_luatex:T



More information about the tex-live-commits mailing list