[Tex/LaTex] Using cyrillic with Tex Gyre Pagella and pdflatex

cyrillicfont-encodingsfonts

I just saw in this posting: How to access cyrillic letters in the TeX Gyre fonts (e.g. pagella)? – comp.text.tex the note: "the TeX Gyre Pagella font, which includes glyphs
for cyrillic.". There is an MWE there, which apparently worked in 2009; here it is (I just moved the fontenc line before the babel line, because pdflatex complained):

\listfiles
\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc} % before babel!
\usepackage[ngerman,russian]{babel}
\usepackage{tgpagella}

\begin{document}

Добро пожаловать!

\selectlanguage{ngerman}

Some german umlauts: ÄÖÜ, äöü, ß

\end{document}

I build this with pdflatex test.tex, and it fails on Texlive 2014 with:

...
This is METAFONT, Version 2.7182818 (TeX Live 2014) (preloaded base=mf)


kpathsea: Running mktexmf larm1000
! I can't find file `larm1000'.
<*> ...ljfour; mag:=1; nonstopmode; input larm1000

Please type another input file name
! Emergency stop.
<*> ...ljfour; mag:=1; nonstopmode; input larm1000

Transcript written on mfput.log.
grep: larm1000.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input larm1000' failed to make larm1000.tfm.
kpathsea: Appending font creation commands to missfont.log.

! Font T2A/cmr/m/n/10=larm1000 at 10.0pt not loadable: Metric (TFM) file not fo
und.
<to be read again> 
                   relax 
l.100 \fontencoding\encodingdefault\selectfont

? 

Apparently I may be missing some package, but I have no idea which one.

Is it possible to get this example working with pdflatex, and if so – how?


EDIT: Just found What is wrong with cyrillic package?, and so I managed to fix the problem by installing the TexLive lh package, then I got the document to compile:

tlmgr install lh                      # passes, font not really tgpagella?
tlmgr install collection-langcyrillic # installs 36 packages, like babel-bulgarian,... lcyw, lhcyr...

With that, the output is:

test.png

… and the cyrillic font doesn't look like tgpagella. So I installed collection-langcyrillic, but that didn't change the output either; still getting in the transcipt:

LaTeX Font Warning: Font shape `T2A/qpl/m/n' undefined
(Font)              using `T2A/cmr/m/n' instead on input line 3.

… so apparently, the output shows the cyrillic of "Computer Modern". Now, if just the cyrillic font could be made like tgpagella, that would be great…

Best Answer

Right, as @egreg and @cfr pointed out, there is no Tex Gyre Pagella in cyrillic; looking a bit further, I found:

Your choice may depend on what you mean by Palatino-like and whether and how much you're willing to pay for a commercial font. The open source Linux Libertine font is a serif font that has Cyrillic glyphs, but it's not really Palatino-like

I now get the whole palatino family (including \em, \sc, etc.) for Roman letters. ... But none of the font attribute commands do anything for Cyrillic text.

... and if that wasn't enough, here is what I get for fontforge /path/to/texlive/2014/texmf-dist/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf:

fontforge.png

... which confirms that the font indeed has some Greek characters, but no Cyrillic ones.

So I was about to drop all this, when I found CTAN: substitutefont, which notes:

Combine font families [...]
Tests/Examples [...]
* Times/Helvetica/Courier (TeX Gyre) with Cyrillic ParaType_ fonts: <cyrillic-paratype.tex>__, <cyrillic-paratype.pdf>__

... and as I read in cyrillic-paratype.tex, seemingly paratype works as a cyrillic substitute for palatino/Tex Gyre Pagella - and it actually looks good enough for me (not exactly the same, but certainly doesn't poke the eyes as much, as when it was Computer Modern cyrillic there):

test.png

Here is the MWE that produces that output - I simply load paratype before tgpagella, and after tgpagella is loaded, I use substitutefont to set paratype as the default "roman" when T2A encoding is used:

\listfiles
\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc} % before babel!
\usepackage[ngerman,russian]{babel}
\usepackage{paratype} % tlmgr install paratype
\usepackage{tgpagella}

\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}

\begin{document}

Добро пожаловать!

\selectlanguage{ngerman}

Some german umlauts: ÄÖÜ, äöü, ß

\end{document}