Without a MWE, we can’t reproduce this problem. However, you say that you’re using the font tgschola
. This does not support Cyrillic, so if you check the log, you’re probably getting a message similar to:
LaTeX Font Warning: Font shape `T2A/qcs/b/n' undefined
(Font) using `T2A/qcs/m/n' instead on input line 23.
This tells you that no T2A
version of TeX Gyre Schola (family qcs
) Bold (series b
, shape n
) exists, so it fell back to the medium weight of Computer Modern.
The solution is to choose a Cyrillic font to supplement TeX Gyre Schola. Since this is a clone of URW’s version of New Century Schoolbook, you might use Century or Century Schoolbook if you have it on your system. A free font based on Century is Old Standard, although this is slightly lighter than TeX Gyre Schola. Here, I went with DejaVu Serif.
You might also just use a font that supports both Cyrillic and Latin as your main font.
In the Modern Toolchain
I recommend using modern fonts and Unicode when you can, and legacy 8-bit fonts when you have to. Some publishers unfortunately still require authors to use them.
You can declare substitute fonts for Russian with \babelfont[russian]{rm}
, \babelfont[russian]{sf}
, and \babelfont[russian]{tt}
. You could also just pick a font that contains Cyrillic. (Such as older versions of TeX Gyre Schola itself! See below.)
Be sure to declare \tracinglostchars=2
to warn you if you are trying to display glyphs the current font does not contain! Without this, TeX will silently omit any Cyrillic letters if you have the wrong language selected, with just a warning message buried in the .log
file.
With Legacy Fonts
If you need PDFLaTeX compatibility, you can declare a Cyrillic substitute font for your font families. The selection of fonts packaged as T2A from CTAN is very limited (unless you want to take a TrueType or OpenType font and convert it yourself). Here, I chose Tempora, which is based on Times.
You can use \substitutefont{T2A}{\rmdefault}{...}
and \substitutefont{T2A}{\sfdefault}{...}
from substitutefont
to declare these substitutions.
The Code
\tracinglostchars=2 % Warn if a glyph is missing from the current font.
\documentclass[russian, english]{article}
\usepackage{iftex}
\ifTUTeX
\usepackage{babel}
\usepackage{fontspec}
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\babelfont{rm}
[Ligatures=Common]{TeX Gyre Schola}
\babelfont[russian]{rm}
{DejaVu Serif}
\else
\usepackage[T2A,T1]{fontenc}
\usepackage{babel}
\usepackage{substitutefont}
\usepackage{tempora}
\usepackage{tgschola}
\substitutefont{T2A}{\rmdefault}{Tempora-TLF}
\fi
\babeltags{russian=russian} % Adds \textrussian, \begin{russian}, etc.
\begin{document}
English text and \textrussian{русские}.
\textbf{In bold, \textrussian{русское слово}.}
\end{document}
Output with LuaLaTeX (Cyrillic in DejaVu Serif):
Compiled with PDFLaTeX, you get Cyrillic in Tempora:
Using Older Versions of TeX Gyre Schola
Strangely, version 1.103 of TeX Gyre Schola did contain a Cyrillic alphabet, which has been removed from version 2.005. If you specify the older version with something like
\babelfont{rm}
[Ligatures = Common,
Path=fonts/,% Must contain version 1.103 of the font files.
UprightFont=*-regular,
BoldFont=*-bold,
ItalicFont=*-italic,
BoldItalicFont=*-bolditalic,
Extension=.otf
]{texgyreschola}
This will work in LuaLaTeX or XeLaTeX.
\foreignlanguage{russian}{\textbf{русское слово} русское слово}
(with English text for comparison).fontenc
andinputenc
and add a line like\babelfont{rm}{DejaVu Serif}
. Then compile with LuaLaTeX or XeLaTeX. This loads fontspec and a modern font that supports both languages.