我需要使用T2A
编码以及babel
在英语文档中包含一些俄语名称。但是,包括
\usepackage[T1,T2A]{fontenc}
使序言中的所有文本字体(包括英文)的粗细变浅,如下所示:
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage{times}
\usepackage[T1,T2A]{fontenc}
%\usepackage[T1]{fontenc}
\begin{document}
\Large
\lipsum[1]
\end{document}
将上面的输出与我T1
单独使用编码时的输出进行比较:
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage{times}
%\usepackage[T1,T2A]{fontenc}
\usepackage[T1]{fontenc}
\begin{document}
\Large
\lipsum[1]
\end{document}
这个更重的重量是我在fontenc
根本不使用的时候看到的。
问题:
- 为什么
T2A
编码会导致这种情况? fontenc
有什么补救办法——以便在根本不使用时,重量会与正常情况相同?
复合解决方案:
@Davislor 的回答提出了以下建议(https://tex.stackexchange.com/a/494900/13492Tempora-TLF
)以及讨论https://tex.stackexcange.com/questions/473057/russian-language-bold-font-problem-with-newtxtext。
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian,main=english]{babel}
\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{Tempora-TLF}
\usepackage[lucidasmallscale]{lucidabr}
\begin{document}
\Large
\noindent The names are{ \Russian Алекс\'{а}ндров}, {\Russian Т\'{и}хонов}, and {\Russian Урыс\'{o}н}.
\lipsum[1]
\end{document}
请注意,我现在使用的是 Lucida Bright 字体(我的实际书本长度的文档所使用的字体),即使如此,俄语名称的字体粗细也与周围的英文文本相匹配 — — 尽管 Tempora-TLF 字体旨在与其他字体一起使用。
答案1
在现代工具链中
首先回答你的第二个问题,这是我的建议。如果可能的话,用现代的 TrueType 或 OpenType 字体替换并使用fontenc
。fontspec
\documentclass[12pt]{article}
\usepackage{babel}
\usepackage{fontspec}
\usepackage[paperwidth=11cm]{geometry} % To fit into the allowed width.
\babelprovide[main, import=en]{english}
\babelprovide[import=ru]{russian}
\setmainfont{Times New Roman}
\begin{document}
\Large
Fyodor Dostoevsky (\foreignlanguage{russian}{Фёдор Достоевский}) and
Alexander Pushkin (\foreignlanguage{russian}{Александр Пушкин}).
\end{document}
如您所见,该示例使用 Times 而非 Computer Modern,并加载俄语连字模式。 \babelprovide[import]
为您转换字体编码。选择支持西里尔文的字体,或使用\babelfont
更改字体。
根据连字模式对您有多大用处,您甚至可以放弃该babel
包,只需输入西里尔字母。另一种为不同脚本加载不同字体的方法是,它不需要在文档正文中进行标记,ucharclasses
但这不会连字。还可以考虑\usepackage{microtype}
在 LuaLaTeX 中大幅减少文档所需的连字量。
在旧版工具链中
如果你无法切换到 LuaLaTeX 或 XeLaTeX,你实际上需要解决问题 1。这很简单。最后的您指定的编码fontenc
将成为默认编码。 Times 字体 ( ptm*
) 不包含 T2A,因此 LaTeX 会回退到 Computer Modern。 PDFLaTeX 在您的第一个 MWE 上向我提供了以下错误消息:
LaTeX Font Warning: Font shape `T2A/ptm/m/n' undefined
(Font) using `T2A/cmr/m/n' instead on input line 8.
在这种情况下,您只想使用几个俄语名称。因此,您需要将英语作为主要语言,将俄语作为第二语言,并使用babel
在这两种语言的编码之间切换。一种基于 Times 的涵盖西里尔字母的传统字体是 Tempora。
\documentclass[12pt]{article}
\usepackage[X2, T1]{fontenc}
\usepackage{textcomp}
\usepackage{tempora}
\usepackage[russian, main=english]{babel}
\usepackage[paperwidth=11cm]{geometry} % To fit into the allowed width.
\begin{document}
\Large
Fyodor Dostoevsky (\foreignlanguage{russian}{Фёдор Достоевский}) and
Alexander Pushkin (\foreignlanguage{russian}{Александр Пушкин}).
\end{document}
为了使用不支持编码的字体系列,您需要在切换语言时切换字体。您可以使用包来执行此操作substitutefont
(或通过声明\textrussian
一个同时更改语言和的新命令\fontfamily
)。例如:
\usepackage{tempora}
\usepackage{times}
\usepackage{substitutefont}
\substitutefont{T2A}{\familydefault}{Tempora-TLF}
支持 T2A 的字体并不多,几乎所有字体都是现有字体的扩展。其中包括 Computer Modern Unicode、Tempora (Times)、Heuristica (Utopia)、DejaVu、Libertine 和 Gentium。