\documentclass{article}
\usepackage{parskip}
\usepackage{lmodern}
% We load LGR last, which as a bad idea (see below).
% play with the font encodings:
% \usepackage[T1]{fontenc}
\usepackage[T1,T2A,LGR]{fontenc}
\DeclareFontFamilySubstitution{T2A}{lmr}{cmr}
\usepackage[english,greek.ancient]{babel}
\makeatletter % we want to see the value of some internal macros
\@ifl@aded{def}{t1enc}
{\newcommand*{\T@one@detected}{loaded}}
{\newcommand*{\T@one@detected}{\textbf{not} loaded}}
\newcommand*{\cs}[1]{\ensureascii{\texttt{\textbackslash#1}}}
% the title may be given before or after \begin{document}
\title{\foreignlanguage{english}{Test font encoding switches}}
\author{\ensureascii{Günter Milde}}
\begin{document}
\maketitle
\ensureascii{The document's main language is \texttt{\bbl@main@language}}
(Ελληνικά).
\ensureascii{The initial font encodings are:}
\cs{cf@encoding}: \cf@encoding,
\cs{encodingdefault}: \encodingdefault.
\selectlanguage{english}
After switching to \texttt{english}, we get:\\
\cs{cf@encoding}: \cf@encoding,
\cs{encodingdefault}: \encodingdefault.
\subsection*{\LaTeX2e Font Encodings}
\emph{Fontenc} stores known encodings in \cs{@fontenc@load@list}:\\
\@fontenc@load@list\ (sic! note the missing comma).
The last encoding in this list becomes the document's
default font encoding. It should be a \emph{standard text encoding}
(cf. encguide.pdf).
\emph{Babel} defines a \cs{latinencoding} (\latinencoding) and
\cs{ensureascii}, which uses the standard last loaded text encoding
(\ensureascii{\cf@encoding}).
\emph{Babel-Greek} ensures that a font encoding supporting the Greek
script is used in Greek text parts.
The previous font encoding is restored in \cs{noextrasgreek}.
Exception:
If the default language is \texttt{greek} and the initial
\cs{encodingdefault} is LGR, \cs{noextrasgreek} switches to
\cs{latinencoding} because the LGR font encoding is only suited for the
Greek script.
% cf.
https://github.com/latex3/babel/pull/263
% and
https://www.lyx.org/trac/ticket/12882
\newpage
\subsection*{Tests}
Test that we are using a \emph{standard text encoding}:
język polski.\footnote{The ogonek accent fails with LGR or OT1.}
% A command local to the Polish QX font encoding: \textanglearc
Call fontencoding T2A: \fontencoding{T2A} \selectfont
\cs{cf@encoding} \cf@encoding, \cs{encodingdefault} \encodingdefault.
\\
Now I can use Кириллица\footnote{
exept for footnotes, where encodingdefault is used:
\cf@encoding, \encodingdefault}
and Latin (including the ogonek) język polski
(caveat: wrong result with drag-and-drop from the PDF).
Greek with \cs{foreignlanguage}: \foreignlanguage{greek}{Ελληνικά \\
\cs{cf@encoding} \cf@encoding, \cs{encodingdefault}: \encodingdefault{}
}
\\
Back to English -- the font encoding is restored to what it was
outside the group:
\cs{cf@encoding} \cf@encoding, \cs{encodingdefault} \encodingdefault.
I can still use Кириллица.
Greek with \cs{selectlanguage}: \selectlanguage{greek} Ελληνικά\\
\cs{cf@encoding} \cf@encoding, \cs{encodingdefault} \encodingdefault.
\selectlanguage{english}
Back to English -- the font encoding
is restored by babel-greek to the previous default encoding:
\cs{cf@encoding} \cf@encoding, \cs{encodingdefault} \encodingdefault.
I can use the ogonek (język) but Cyrillic fails because it was not set
as \cs{encodingdefault} before the switch to Greek.
% Кириллица fails
\subsection*{\emph{fontenc} curiosities}
The encodings OT1 and T1 are always pre-loaded.
However, according to \cs{@ifl@aded} the encoding file ``t1enc.def'' is
\T@one@detected{}.
\end{document}