[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.