[latex3-commits] [git/LaTeX3-latex3-latex2e] hotfix/gh277: fix for #277 (c68b84b7)

Frank Mittelbach frank.mittelbach at latex-project.org
Tue Feb 18 13:04:28 CET 2020


Repository : https://github.com/latex3/latex2e
On branch  : hotfix/gh277
Link       : https://github.com/latex3/latex2e/commit/c68b84b7d00ae4ad0fe6e15e397057bcb5f8fb5b

>---------------------------------------------------------------

commit c68b84b7d00ae4ad0fe6e15e397057bcb5f8fb5b
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date:   Tue Feb 18 13:04:28 2020 +0100

    fix for #277


>---------------------------------------------------------------

c68b84b7d00ae4ad0fe6e15e397057bcb5f8fb5b
 base/changes.txt                             |  17 +++++
 base/doc/latexchanges.tex                    |  13 ++++
 base/ltfssaxes.dtx                           |  18 ++++-
 base/ltfssini.dtx                            | 107 +++++++++++++++++++++------
 base/testfiles-legacy/tlb-textcomp-005.tlg   |   4 +-
 base/testfiles-legacy/tlb-textcomp-006.tlg   |   2 +-
 base/testfiles-search/github-0277.lvt        |  40 ++++++++++
 base/testfiles-search/github-0277.tlg        |  15 ++++
 base/testfiles-search/github-0277b.lvt       |  42 +++++++++++
 base/testfiles-search/github-0277b.tlg       |  83 +++++++++++++++++++++
 base/testfiles-search/github-0277c.lvt       |  44 +++++++++++
 base/testfiles-search/github-0277c.tlg       |   9 +++
 base/testfiles/github-robust-0123.luatex.tlg |   4 +-
 base/testfiles/github-robust-0123.tlg        |   4 +-
 base/testfiles/github-robust-0123.xetex.tlg  |   4 +-
 15 files changed, 372 insertions(+), 34 deletions(-)

diff --git a/base/changes.txt b/base/changes.txt
index 846d1f15..2f69ec71 100644
--- a/base/changes.txt
+++ b/base/changes.txt
@@ -4,6 +4,23 @@ completeness or accuracy and it contains some references to files that
 are not part of the distribution.
 =======================================================================
 
+2020-02-18  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltfssaxes.dtx:
+	When \fontseriesforce is used do not auto-update the series if the
+	family changes (gh/277)
+
+2020-02-18  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltfssini.dtx:
+	Added some debugging code, but not extracted at the moment.
+	Make the \ifx selection  in \bfseries outside
+        of \fontseries argument so that it is not done several times.
+	When \fontseriesforce is used do not auto-update the series if the
+	family changes (gh/277)
+	Recognize current family if it is not a ``meta'' family and
+	auto-update series if \mddefault or \bfdefault match (gh/277)
+
 #########################
 # 2020-02-02 PL 2 Release
 #########################
diff --git a/base/doc/latexchanges.tex b/base/doc/latexchanges.tex
index d80ef370..22f162d7 100644
--- a/base/doc/latexchanges.tex
+++ b/base/doc/latexchanges.tex
@@ -106,6 +106,19 @@ see for example
 \url{https://github.com/latex3/latex2e/commits/master}.
 
 
+\section{Changes introduced in 2020-02-02 patch~3}
+
+Support the following scenario:
+\begin{verbatim}
+\fontfamily{ptm}\selectfont text  \textbf{\sffamily bold sans text}
+\end{verbatim}
+The default bold series for \texttt{ptm} is \texttt{b} so
+\verb=\textbf= switches to that. The \verb=\sffamily= then tried to
+find \texttt{OT1/cmss/b/n} which doesn't exist instead of first
+altering the series default to use \texttt{bx} as needed for Computer
+Modern Sans Serif. This has now been corrected (\ghissue{277}).
+
+
 \section{Changes introduced in 2020-02-02 patch~2}
 
 Correct \verb=\capitalacute=, etc.\ so that they work in
diff --git a/base/ltfssaxes.dtx b/base/ltfssaxes.dtx
index fcf304d1..1a8dbd9c 100644
--- a/base/ltfssaxes.dtx
+++ b/base/ltfssaxes.dtx
@@ -35,7 +35,7 @@
 %
 %
 \ProvidesFile{ltfssaxes.dtx}
-             [2020/02/05 v1.0b LaTeX Kernel (NFSS Axes handing)]
+             [2020/02/18 v1.0c LaTeX Kernel (NFSS Axes handing)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -682,14 +682,25 @@
 
 % \subsection{Changing to a new series}
 %
+%
 
+%  \begin{macro}{\if at forced@series}
+%    If the series gets forced we need to know that fact later on.
+% \changes{v1.0c}{2020/02/10}{Switch \cs{if at forced@series} added}
+%    \begin{macrocode}
+\newif\if at forced@series
+%    \end{macrocode}
+%  \end{macro}
+%
+%
 %  \begin{macro}{\fontseriesforce}
 %    To change unconditionally to a new series you can use
 %    \cs{fontseriesforce}. If course, if the series doesn't exist for
 %    the current family substitution still happens, but there is not
 %    dependency on the current series.
+% \changes{v1.0c}{2020/02/10}{Switch \cs{if at forced@series} added}
 %    \begin{macrocode}
-\DeclareRobustCommand\fontseriesforce[1]{\edef\f at series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\@forced at seriestrue\edef\f at series{#1}}
 %    \end{macrocode}
 %  \end{macro}
 %
@@ -700,8 +711,9 @@
 %    expanded value in \cs{f at series}. Now we do a bit more processing
 %    and look up the final value in the font series data base. This is
 %    done by \cs{merge at font@series}.
+% \changes{v1.0c}{2020/02/10}{Switch \cs{if at forced@series} added}
 %    \begin{macrocode}
-\DeclareRobustCommand\fontseries[1]{\merge at font@series{#1}}
+\DeclareRobustCommand\fontseries[1]{\@forced at seriesfalse\merge at font@series{#1}}
 %    \end{macrocode}
 %  \end{macro}
 
diff --git a/base/ltfssini.dtx b/base/ltfssini.dtx
index 27019e64..337b8adb 100644
--- a/base/ltfssini.dtx
+++ b/base/ltfssini.dtx
@@ -36,7 +36,7 @@
 %
 %
 \ProvidesFile{ltfssini.dtx}
-             [2020/02/11 v3.1h LaTeX Kernel (NFSS Initialisation)]
+             [2020/02/18 v3.1i LaTeX Kernel (NFSS Initialisation)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -414,18 +414,18 @@
 %    alternatives and therefore check if the current family
 %    (\cs{f at family}) is the current \cs{rmdef at ult}, \cs{sfdef at ult} or
 %    \cs{ttdef at ult}  and the select the correct family default in that case.
+% \changes{v3.1i}{2020/02/18}{Make the \cs{ifx} selection outside
+%            of \cs{fontseries} argument so that it is not done several times}
 %    \begin{macrocode}
   \expand at font@defaults
-  \fontseries{%
-    \ifx\f at family\rmdef at ult      \bfseries at rm
-    \else\ifx\f at family\sfdef at ult \bfseries at sf
-    \else\ifx\f at family\ttdef at ult \bfseries at tt
+    \ifx\f at family\rmdef at ult      \fontseries\bfseries at rm
+    \else\ifx\f at family\sfdef at ult \fontseries\bfseries at sf
+    \else\ifx\f at family\ttdef at ult \fontseries\bfseries at tt
 %    \end{macrocode}
 %    If not \cs{bfdefault} is used.
 %    \begin{macrocode}
-    \else                        \bfdefault
+    \else                        \fontseries\bfdefault
     \fi\fi\fi
-  }%
   \selectfont
 }
 %    \end{macrocode}
@@ -435,17 +435,17 @@
 
 %  \begin{macro}{\mdseries}
 %    This document command switches to the medium series.
+% \changes{v3.1i}{2020/02/18}{Make the \cs{ifx} selection outside
+%            of \cs{fontseries} argument so that it is not done several times}
 %    \begin{macrocode}
 \DeclareRobustCommand\mdseries{%
   \not at math@alphabet\mdseries\relax
   \expand at font@defaults
-  \fontseries{%
-    \ifx\f at family\rmdef at ult      \mdseries at rm
-    \else\ifx\f at family\sfdef at ult \mdseries at sf
-    \else\ifx\f at family\ttdef at ult \mdseries at tt
-    \else                        \mddefault
+    \ifx\f at family\rmdef at ult      \fontseries\mdseries at rm
+    \else\ifx\f at family\sfdef at ult \fontseries\mdseries at sf
+    \else\ifx\f at family\ttdef at ult \fontseries\mdseries at tt
+    \else                        \fontseries\mddefault
     \fi\fi\fi
-  }%
   \selectfont
 }
 %    \end{macrocode}
@@ -615,9 +615,25 @@
 %  \end{macro}
 %  \end{macro}
 %  \end{macro}
-
-
-
+%
+%
+%
+%
+%  \begin{macro}{\series at change@debug}
+%    For debugging, but right now none of this code is extracted. The
+%    idea is to have a separate package with debugging code
+%    one day.
+%    \begin{macrocode}
+%<*debug>
+\let\series at change@debug\typeout
+\let\series at change@debug\@gobble
+%</debug>
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%
 %  \begin{macro}{\prepare at family@series at update}
 %    This is core command that prepares for the family update. The big
 %    difference to the documented code above is that the nested
@@ -635,6 +651,15 @@
 %
 %    \begin{macrocode}
 \def\prepare at family@series at update#1#2{%
+%    \end{macrocode}
+%    
+% \changes{v3.1i}{2020/02/18}{No series auto-update when forced (gh/277)}
+%    \begin{macrocode}
+ \if at forced@series
+%<+debug> \series at change@debug{No series preparation (forced \f at series)\on at line}%
+   \fontfamily#2%
+ \else
+%<+debug> \series at change@debug{Prepearing for switching to #1 (#2)\on at line}%
    \expand at font@defaults
 %    \end{macrocode}
 %    We prepare for changing the current series. We have to find it
@@ -643,11 +668,36 @@
    \let\target at series@value\@empty
    \def\target at meta@family at value{#1}%
 %    \end{macrocode}
+%    As the very last item in the meta family list we add
+%    \verb=\@elt{??}= and define this pseudo meta family to be the
+%    current font family. So if none of the real meta families matched then
+%    this will match. This will cover the following case:
+%    \begin{itemize}
+%    \item \cs{bfseries} is called  for a family using \texttt{bx}
+%       (e.g., CMR) 
+%    \item Switch to a font family that is none of the the meta
+%       families, e.g., via \verb=\fontfamily{ptm}\selectfont=
+%    \item Then none of the real meta families, match but the final
+%      \verb=\@elt{??} will.
+%    \item Therefore if the current series is \cs{mddefault} or
+%    \cs{bfdefault} it will be detected and the corresponding target
+%    series selected.
+%    \end{itemize}
+% \changes{v3.1i}{2020/02/18}{Recognize current family if it is not a
+%    ``meta'' family and auto-update series using \cs{bfdefault} (gh/277)}
+%    \begin{macrocode}
+   \expandafter\edef\csname ??def at ult\endcsname{\f at family}%
+%    \end{macrocode}
 %    To find it we loop over the meta family list with a suitable
 %    definition of \cs{@elt}.
 %    \begin{macrocode}
    \let\@elt\update at series@target at value
       \@meta at family@list
+%    \end{macrocode}
+%    Last resort pseudo meta family. Will only be looked at f none of
+%    the real ones have matched.
+%    \begin{macrocode}
+      \@elt{??}%
    \let\@elt\relax
 %    \end{macrocode}
 %    That will figure out the correct series value to use without updating
@@ -659,10 +709,19 @@
 %    above.
 %    \begin{macrocode}
    \ifx\target at series@value\@empty
+%<+debug> \series at change@debug{Target series still empty ...}%
    \else
-     \maybe at load@fontshape
-     \let\f at series\target at series@value
+     \ifx \f at series\target at series@value
+%<+debug> \series at change@debug{Target series unchanged:
+%<+debug>                      \f at series \space = \target at series@value}%
+     \else
+       \maybe at load@fontshape
+%<+debug> \series at change@debug{Target series:
+%<+debug>                      \f at series \space -> \target at series@value}%
+       \let\f at series\target at series@value
+     \fi
    \fi
+ \fi
 }
 %    \end{macrocode}
 %  \end{macro}
@@ -686,6 +745,8 @@
   \def\reserved at a{#1}%
   \ifx\target at meta@family at value\reserved at a   % rm -> rm do nothing
   \else
+%<+debug> \series at change@debug{Trying to match #1: \csname#1def at ult\endcsname
+%<+debug>                      \space = \f at family\space ?}%
 %    \end{macrocode}
 %    We only ``do'' something if the current font family matches the
 %    current meta family.
@@ -707,6 +768,8 @@
                       \csname mdseries@\target at meta@family at value\endcsname
       \expandafter\let\expandafter\reserved at c
                       \csname bfseries@\target at meta@family at value\endcsname
+%<+debug>\series at change@debug{Targets for mdseries and bfseries:
+%<+debug>                     \reserved at b\space and \reserved at c}%
 %    \end{macrocode}
 %    This here is now identical to the nested \cs{ifx} block from the
 %    outline, except that it there appeared twice in
@@ -714,11 +777,15 @@
 %    loop when a match was found.
 %    \begin{macrocode}
       \expandafter\ifx\csname mdseries@#1\endcsname\f at series
+%<+debug>   \series at change@debug{mdseries@#1 matched -> \reserved at b}%
                                       \let\target at series@value\reserved at b
       \else\expandafter\ifx\csname bfseries@#1\endcsname\f at series
+%<+debug>  \series at change@debug{bfseries@#1 matched -> \reserved at c}%
                                       \let\target at series@value\reserved at c
       \else\ifx\f at series\mddef at ult    \let\target at series@value\reserved at b
+%<+debug>  \series at change@debug{mddef at ult matched -> \reserved at b}%
       \else\ifx\f at series\bfdef at ult    \let\target at series@value\reserved at c
+%<+debug>  \series at change@debug{bfdef at ult matched -> \reserved at c}%
       \fi\fi\fi\fi
     \fi
   \fi
@@ -730,10 +797,6 @@
 %
 %
 %
-%
-%
-%
-%
 %  \begin{macro}{\init at series@setup}
 %    This is code to be run at begin document \ldots
 %    \begin{macrocode}
diff --git a/base/testfiles-legacy/tlb-textcomp-005.tlg b/base/testfiles-legacy/tlb-textcomp-005.tlg
index 80ff3a6c..181cc8ab 100644
--- a/base/testfiles-legacy/tlb-textcomp-005.tlg
+++ b/base/testfiles-legacy/tlb-textcomp-005.tlg
@@ -8,7 +8,7 @@ LaTeX Info: Symbol \textcentoldstyle not provided by
             font family Alegreya-LF in TS1 encoding.
             Default family used instead on input line ....
 LaTeX Font Info:    Trying to load font information for OT1+AlegreyaSans-LF on input line ....
-No file OT1AlegreyaSans-LF.fd.
+LaTeX Font Info:    No file OT1AlegreyaSans-LF.fd. on input line ....
 LaTeX Font Warning: Font shape `OT1/AlegreyaSans-LF/m/n' undefined
 (Font)              using `OT1/cmr/m/n' instead on input line ....
 LaTeX Info: Symbol \textdollaroldstyle not provided by
@@ -19,7 +19,7 @@ LaTeX Info: Symbol \textcentoldstyle not provided by
             font family AlegreyaSans-LF in TS1 encoding.
             Default family used instead on input line ....
 LaTeX Font Info:    Trying to load font information for OT1+AlgolRevived-TLF on input line ....
-No file OT1AlgolRevived-TLF.fd.
+LaTeX Font Info:    No file OT1AlgolRevived-TLF.fd. on input line ....
 LaTeX Font Warning: Font shape `OT1/AlgolRevived-TLF/m/n' undefined
 (Font)              using `OT1/cmr/m/n' instead on input line ....
 LaTeX Info: Symbol \textdollaroldstyle not provided by
diff --git a/base/testfiles-legacy/tlb-textcomp-006.tlg b/base/testfiles-legacy/tlb-textcomp-006.tlg
index 386ecc65..4f55ea53 100644
--- a/base/testfiles-legacy/tlb-textcomp-006.tlg
+++ b/base/testfiles-legacy/tlb-textcomp-006.tlg
@@ -5,7 +5,7 @@ LaTeX Info: Oldstyle digits unavailable for family lmr.
             Default oldstyle digits used instead on input line ....
 LaTeX Font Info:    Trying to load font information for TS1+cmss on input line ....
 LaTeX Font Info:    Trying to load font information for OT1+lmtt on input line ....
-No file OT1lmtt.fd.
+LaTeX Font Info:    No file OT1lmtt.fd. on input line ....
 LaTeX Font Warning: Font shape `OT1/lmtt/m/n' undefined
 (Font)              using `OT1/cmr/m/n' instead on input line ....
 LaTeX Info: Oldstyle digits unavailable for family lmtt.
diff --git a/base/testfiles-search/github-0277.lvt b/base/testfiles-search/github-0277.lvt
new file mode 100644
index 00000000..e4d9701b
--- /dev/null
+++ b/base/testfiles-search/github-0277.lvt
@@ -0,0 +1,40 @@
+\documentclass{article}
+
+\input{test2e}
+
+\makeatletter
+\def\showfont#1#2{\typeout{#1: \f at encoding/\f at family/\f at series/\f at shape\space should be #2}}
+\makeatother
+
+\usepackage[T1]{fontenc}
+
+% Next line is not needed to display problem
+% It is only there to illustrate correct behaviour of description label
+
+\renewcommand\familydefault{\sfdefault}
+
+
+\begin{document}
+
+\START
+
+\showfont{1}{T1/cmss/m/n}
+
+\fontfamily{ptm}\selectfont
+
+\showfont{2}{T1/ptm/m/n}
+
+\textbf{\showfont{3}{T1/ptm/b/n}
+  \sffamily\showfont{4}{T1/cmss/bx/n and no substitution above}
+  hello}
+
+{\showfont{5}{T1/ptm/m/n}\bfseries\showfont{6}{T1/ptm/b/n}
+ \sffamily\showfont{7}{T1/cmss/bx/n not "b"}
+ hello}
+ 
+{\showfont{8}{T1/ptm/m/n}
+ \fontseries{bx}\showfont{9}{T1/ptm/bx/n as ptm has a bx face}
+ \sffamily\showfont{10}{T1/cmss/bx/n}
+ hello}
+
+\end{document}
diff --git a/base/testfiles-search/github-0277.tlg b/base/testfiles-search/github-0277.tlg
new file mode 100644
index 00000000..3ea538ee
--- /dev/null
+++ b/base/testfiles-search/github-0277.tlg
@@ -0,0 +1,15 @@
+This is a generated file for the LaTeX2e validation system.
+Don't change this file in any respect.
+1: T1/cmss/m/n should be T1/cmss/m/n
+LaTeX Font Info:    Trying to load font information for T1+ptm on input line ....
+2: T1/ptm/m/n should be T1/ptm/m/n
+3: T1/ptm/b/n should be T1/ptm/b/n
+4: T1/cmss/bx/n should be T1/cmss/bx/n and no substitution above
+5: T1/ptm/m/n should be T1/ptm/m/n
+6: T1/ptm/b/n should be T1/ptm/b/n
+7: T1/cmss/bx/n should be T1/cmss/bx/n not "b"
+8: T1/ptm/m/n should be T1/ptm/m/n
+9: T1/ptm/bx/n should be T1/ptm/bx/n as ptm has a bx face
+10: T1/cmss/bx/n should be T1/cmss/bx/n
+[1
+] (github-0277.aux)
diff --git a/base/testfiles-search/github-0277b.lvt b/base/testfiles-search/github-0277b.lvt
new file mode 100644
index 00000000..54b31b12
--- /dev/null
+++ b/base/testfiles-search/github-0277b.lvt
@@ -0,0 +1,42 @@
+\documentclass{article}
+
+\input{test2e}
+
+\makeatletter
+\def\showfont#1#2{\typeout{#1: \f at encoding/\f at family/\f at series/\f at shape\space should be #2}}
+\makeatother
+
+
+
+\usepackage[T1]{fontenc}
+
+\sffamily % load the family first
+
+\DeclareFontShape{T1}{cmss}{b}{n}{<->sub*cmtt/bx/n}{}
+
+\showoutput
+
+\begin{document}
+
+\START
+
+\normalfont \showfont{1}{T1/cmr/m/n}
+
+{\fontseriesforce{bx}\selectfont\showfont{2}{T1/cmr/bx/n}
+ \sffamily\showfont{3}{T1/cmss/bx/n}
+ hallo}
+ 
+{\fontseriesforce{b}\selectfont\showfont{4}{T1/cmr/b/n}
+ \sffamily\showfont{5}{T1/cmss/b/n showing substitution to cmtt above}
+ hallo} 
+
+{\sffamily\showfont{6}{T1/cmss/m/n}
+ \fontseriesforce{bx}\selectfont\showfont{7}{T1/cmss/bx/n}
+ hallo}
+ 
+{\sffamily\showfont{8}{T1/cmss/m/n}
+ \fontseriesforce{b}\selectfont\showfont{9}{T1/cmss/b/n}
+ hallo} 
+
+\end{document}
+
diff --git a/base/testfiles-search/github-0277b.tlg b/base/testfiles-search/github-0277b.tlg
new file mode 100644
index 00000000..9f2d3c8d
--- /dev/null
+++ b/base/testfiles-search/github-0277b.tlg
@@ -0,0 +1,83 @@
+This is a generated file for the LaTeX2e validation system.
+Don't change this file in any respect.
+1: T1/cmr/m/n should be T1/cmr/m/n
+2: T1/cmr/bx/n should be T1/cmr/bx/n
+3: T1/cmss/bx/n should be T1/cmss/bx/n
+4: T1/cmr/b/n should be T1/cmr/b/n
+LaTeX Font Info:    Trying to load font information for T1+cmtt on input line ....
+LaTeX Font Warning: Font shape `T1/cmss/b/n' in size <10> not available
+(Font)              Font shape `T1/cmtt/bx/n' tried instead on input line ...
+LaTeX Font Info:    Font shape `T1/cmtt/bx/n' in size <10> not available
+(Font)              Font shape `T1/cmtt/m/n' tried instead on input line ...
+5: T1/cmss/b/n should be T1/cmss/b/n showing substitution to cmtt above
+6: T1/cmss/m/n should be T1/cmss/m/n
+7: T1/cmss/bx/n should be T1/cmss/bx/n
+8: T1/cmss/m/n should be T1/cmss/m/n
+9: T1/cmss/b/n should be T1/cmss/b/n
+Completed box being shipped out [1]
+\vbox(633.0+0.0)x407.0
+.\glue 16.0
+.\vbox(617.0+0.0)x345.0, shifted 62.0
+..\vbox(12.0+0.0)x345.0, glue set 12.0fil
+...\glue 0.0 plus 1.0fil
+...\hbox(0.0+0.0)x345.0
+..\glue 25.0
+..\glue(\lineskip) 0.0
+..\vbox(550.0+0.0)x345.0, glue set 503.94617fil
+...\write-{}
+...\glue(\topskip) 2.79045
+...\hbox(7.20955+0.0)x345.0, glue set 308.53302fil
+....\hbox(0.0+0.0)x15.0
+....\T1/cmss/bx/n/10 h
+....\T1/cmss/bx/n/10 a
+....\T1/cmss/bx/n/10 l
+....\T1/cmss/bx/n/10 l
+....\T1/cmss/bx/n/10 o
+....\penalty 10000
+....\glue(\parfillskip) 0.0 plus 1.0fil
+....\glue(\rightskip) 0.0
+...\glue(\parskip) 0.0 plus 1.0
+...\glue(\baselineskip) 5.89038
+...\hbox(6.10962+0.0)x345.0, glue set 303.75641fil
+....\hbox(0.0+0.0)x15.0
+....\T1/cmtt/m/n/10 h
+....\T1/cmtt/m/n/10 a
+....\T1/cmtt/m/n/10 l
+....\T1/cmtt/m/n/10 l
+....\T1/cmtt/m/n/10 o
+....\penalty 10000
+....\glue(\parfillskip) 0.0 plus 1.0fil
+....\glue(\rightskip) 0.0
+...\glue(\parskip) 0.0 plus 1.0
+...\glue(\baselineskip) 4.79045
+...\hbox(7.20955+0.0)x345.0, glue set 308.53302fil
+....\hbox(0.0+0.0)x15.0
+....\T1/cmss/bx/n/10 h
+....\T1/cmss/bx/n/10 a
+....\T1/cmss/bx/n/10 l
+....\T1/cmss/bx/n/10 l
+....\T1/cmss/bx/n/10 o
+....\penalty 10000
+....\glue(\parfillskip) 0.0 plus 1.0fil
+....\glue(\rightskip) 0.0
+...\glue(\parskip) 0.0 plus 1.0
+...\glue(\baselineskip) 5.89038
+...\hbox(6.10962+0.0)x345.0, glue set 303.75641fil
+....\hbox(0.0+0.0)x15.0
+....\T1/cmtt/m/n/10 h
+....\T1/cmtt/m/n/10 a
+....\T1/cmtt/m/n/10 l
+....\T1/cmtt/m/n/10 l
+....\T1/cmtt/m/n/10 o
+....\penalty 10000
+....\glue(\parfillskip) 0.0 plus 1.0fil
+....\glue(\rightskip) 0.0
+...\glue 0.0 plus 1.0fil
+...\glue 0.0
+...\glue 0.0 plus 0.0001fil
+..\glue(\baselineskip) 23.5849
+..\hbox(6.4151+0.0)x345.0, glue set 170.00061fil
+...\glue 0.0 plus 1.0fil
+...\T1/cmr/m/n/10 1
+...\glue 0.0 plus 1.0fil
+(github-0277b.aux)
diff --git a/base/testfiles-search/github-0277c.lvt b/base/testfiles-search/github-0277c.lvt
new file mode 100644
index 00000000..975ac554
--- /dev/null
+++ b/base/testfiles-search/github-0277c.lvt
@@ -0,0 +1,44 @@
+\documentclass{article}
+
+\input{test2e}
+
+\makeatletter
+\def\showfont#1#2{\typeout{#1: \f at encoding/\f at family/\f at series/\f at shape\space should be #2}}
+\makeatother
+
+\usepackage[T1]{fontenc}
+
+
+\renewcommand\sfdefault{qhv}
+\renewcommand\familydefault{\sfdefault}
+
+\begin{document}
+
+\START
+
+\showfont{1}{T1/qhv/m/n}
+
+\fontfamily{cmss}\selectfont  % not the default sf
+
+\showfont{2}{T1/cmss/m/n}
+
+\fontseries{b}\selectfont  \showfont{3}{T1/cmss/bx/n because of series change rule}
+
+
+
+\end{document}
+
+
+\showfont{3}{T1/cmss/bx/n but via substitution b -> bx}
+  \sffamily\showfont{4}{T1/qhv/bx/n not recognized (because "bx"}  % bug/feature?
+  hello}
+
+{\showfont{5}{T1/cmss/m/n}\bfseries\showfont{6}{T1/cmss/bx/n}
+ \sffamily\showfont{7}{T1/qhv/bx/n}
+ hello}
+ 
+{\showfont{8}{T1/cmss/m/n}
+ \fontseriesforce{b}\showfont{9}{T1/cmss/bx/n}
+ \sffamily\showfont{10}{T1/cmss/bx/n}
+ hello}
+
diff --git a/base/testfiles-search/github-0277c.tlg b/base/testfiles-search/github-0277c.tlg
new file mode 100644
index 00000000..d4042d2b
--- /dev/null
+++ b/base/testfiles-search/github-0277c.tlg
@@ -0,0 +1,9 @@
+This is a generated file for the LaTeX2e validation system.
+Don't change this file in any respect.
+1: T1/qhv/m/n should be T1/qhv/m/n
+LaTeX Font Info:    Trying to load font information for T1+cmss on input line ....
+2: T1/cmss/m/n should be T1/cmss/m/n
+LaTeX Font Warning: Font shape `T1/cmss/b/n' undefined
+(Font)              using `T1/cmss/bx/n' instead on input line ....
+3: T1/cmss/bx/n should be T1/cmss/bx/n because of series change rule
+(github-0277c.aux)
diff --git a/base/testfiles/github-robust-0123.luatex.tlg b/base/testfiles/github-robust-0123.luatex.tlg
index 31b1f8ca..24d6b3d1 100644
--- a/base/testfiles/github-robust-0123.luatex.tlg
+++ b/base/testfiles/github-robust-0123.luatex.tlg
@@ -183,9 +183,9 @@ l. ...\show\Downarrow
 ---------------------------------------
 \fnsymbol{page} -> \TextOrMath  {\textasteriskcentered }{*}
 ---------------------------------------
-\hline -> \noalign {\hrule height\arrayrulewidth \futurelet tt}
+\hline -> \noalign {\hrule height\arrayrulewidth \futurelet ??}
 ---------------------------------------
-\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef tt{\write \@auxout {\newlabel{foo}{{}{1}}}}tt\endgroup \relax 
+\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef ??{\write \@auxout {\newlabel{foo}{{}{1}}}}??\endgroup \relax 
 ---------------------------------------
 \pageref{foo} -> \G at refundefinedtrue{\mbox {\normalfont \bfseries ??}}\GenericWarning {               }{LaTeX Warning: Reference `foo' on page 1 undefined}
 ---------------------------------------
diff --git a/base/testfiles/github-robust-0123.tlg b/base/testfiles/github-robust-0123.tlg
index fd273e1e..ca626127 100644
--- a/base/testfiles/github-robust-0123.tlg
+++ b/base/testfiles/github-robust-0123.tlg
@@ -183,9 +183,9 @@ l. ...\show\Downarrow
 ---------------------------------------
 \fnsymbol{page} -> \TextOrMath  {\textasteriskcentered }{*}
 ---------------------------------------
-\hline -> \noalign {\hrule height\arrayrulewidth \futurelet tt}
+\hline -> \noalign {\hrule height\arrayrulewidth \futurelet ??}
 ---------------------------------------
-\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef tt{\write \@auxout {\newlabel{foo}{{}{1}}}}tt\endgroup \relax 
+\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef ??{\write \@auxout {\newlabel{foo}{{}{1}}}}??\endgroup \relax 
 ---------------------------------------
 \pageref{foo} -> \G at refundefinedtrue{\mbox {\normalfont \bfseries ??}}\GenericWarning {               }{LaTeX Warning: Reference `foo' on page 1 undefined}
 ---------------------------------------
diff --git a/base/testfiles/github-robust-0123.xetex.tlg b/base/testfiles/github-robust-0123.xetex.tlg
index 540c42e3..2f131bd6 100644
--- a/base/testfiles/github-robust-0123.xetex.tlg
+++ b/base/testfiles/github-robust-0123.xetex.tlg
@@ -183,9 +183,9 @@ l. ...\show\Downarrow
 ---------------------------------------
 \fnsymbol{page} -> \TextOrMath  {\textasteriskcentered }{*}
 ---------------------------------------
-\hline -> \noalign {\hrule height\arrayrulewidth \futurelet tt}
+\hline -> \noalign {\hrule height\arrayrulewidth \futurelet ??}
 ---------------------------------------
-\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef tt{\write \@auxout {\newlabel{foo}{{}{1}}}}tt\endgroup \relax 
+\label{foo} -> \relax \begingroup \let 1\relax \let \@unexpandable at protect\edef ??{\write \@auxout {\newlabel{foo}{{}{1}}}}??\endgroup \relax 
 ---------------------------------------
 \pageref{foo} -> \G at refundefinedtrue{\mbox {\normalfont \bfseries ??}}\GenericWarning {               }{LaTeX Warning: Reference `foo' on page 1 undefined}
 ---------------------------------------





More information about the latex3-commits mailing list.