为什么附加编码 T2A 会使文本字体变轻?

为什么附加编码 T2A 会使文本字体变轻?

我需要使用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}

当使用 T2A 时,角色的重量也会更轻。

将上面的输出与我T1单独使用编码时的输出进行比较:

\documentclass[12pt]{article}    
\usepackage{lipsum}    
\usepackage{times}

%\usepackage[T1,T2A]{fontenc}
\usepackage[T1]{fontenc}

\begin{document}
\Large    
\lipsum[1]
\end{document}

仅使用 T1 编码即可增加重量

这个更重的重量是我在fontenc根本不使用的时候看到的。

问题:

  1. 为什么T2A编码会导致这种情况?
  2. 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}

Tempora-TLF 作为 T2A 字体。

请注意,我现在使用的是 Lucida Bright 字体(我的实际书本长度的文档所使用的字体),即使如此,俄语名称的字体粗细也与周围的英文文本相匹配 — — 尽管 Tempora-TLF 字体旨在与其他字体一起使用。

答案1

在现代工具链中

首先回答你的第二个问题,这是我的建议。如果可能的话,用现代的 TrueType 或 OpenType 字体替换并使用fontencfontspec

\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 New Roman 示例

如您所见,该示例使用 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}

Tempora 样本

为了使用不支持编码的字体系列,您需要在切换语言时切换字体。您可以使用包来执行此操作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。

相关内容