在不同的编码之间重新映射字体?

在不同的编码之间重新映射字体?

考虑一下这个MWE:

\documentclass{article}

% http://tex.stackexchange.com/questions/215447/using-cyrillic-with-tex-gyre-pagella-and-pdflatex
\usepackage[utf8]{inputenc}
\usepackage[T2A, T1]{fontenc} % before babel!
\usepackage[russian,greek,english]{babel} % tlmgr install babel-russian

\usepackage[sc]{mathpazo}
\usepackage{paratype} % tlmgr install paratype
\usepackage{tgpagella}

% T2A for cyrillic - paratype
\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}


\begin{document}

\fontencoding{T1}\selectfont
Testing: \textsc{Small-caps Test!}

\fontencoding{T2A}\selectfont
Testing: \textsc{Small-caps Test!}

\end{document}

当构建这个时,它会失败:

! No declaration for shape T2A/PTSerif-TLF/m/sc.
sub@sfcnt ...e forspace shapespace mandatory@arg }
                                                  error@fontshape else #1{Fo...
l.23 Testing: \textsc{Small-caps Test!}

...但你可以按ENTER这里,然后pdflatex完成,产生如下结果:

测试.png

所以事情是这样的:我怎么才能告诉 Latex,一旦它\scshape在 T2A 字体编码(这里使用paratype'sPTSerif字体)中遇到小型大写字母(例如 ),它应该改用tgpagellaT1 编码中的字体(仅适用于小型大写字母)?我在序言中尝试过这个:

\sbox0{\fontencoding{T2A}\selectfont \scshape X}
\DeclareFontShape{T2A}{PTSerif-TLF}{m}{sc}{<-> qpl}{} % nope

...但这似乎不起作用。这种不同字体编码之间的字体映射可能吗?

相关内容