(Overleaf/LuaLaTeX/Times New Roman)为什么 ы 中的重音符号位置错误,而 Google Docs 中却位置正确?

(Overleaf/LuaLaTeX/Times New Roman)为什么 ы 中的重音符号位置错误,而 Google Docs 中却位置正确?

在 LuaLaTeX 和 Google Docs 中使用 Times New Roman 时,两者的尖音符位置不同,Google Docs 的位置正确。为什么 LuaLaTeX 的位置错误?我原本以为 LuaLaTeX 的位置是正确的。我不想将字体更改为 STIX Two Text,因为我发现使用 TNR Cyrillic о 和 STIX Two Text Cyrillic о 时大小不一致,STT 的 о 更大,而且很明显。我必须为正在处理的文档添加元音重音符号。

\documentclass[letterpaper,12pt]{article}

\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont[Ligatures=TeX]{Times New Roman}
    \newfontfamily\secondfont[Ligatures=TeX]{STIX Two Text}
\usepackage[main=english,russian]{babel} 

\title{help with Cyrillic accents!}
\author{(please!)}
\date{\today}

\begin{document}

\maketitle

\foreignlanguage{russian}{
\'ы ы́ {\secondfont \'ы ы́}
}

Cyrillic o looks inconsistent when using the two fonts.

\foreignlanguage{russian}{
\'o {\secondfont \'o}
}

\end{document}

Google Docs 的定位正确,而 LuaLaTeX 的定位不正确,这真是说不通。希望能解决这个问题。

答案1

为什么 LuaLaTeX 的位置不对?我原本以为 LuaLaTeX 的位置应该正确。……Google Docs 的位置正确,而 LuaLaTeX 的位置不正确,这真是说不通

ы请注意,LuaLaTeX在使用 时确实“正确定位了”字形的重音符号Stix Two Text。因此,不要责怪 LuaLaTeX;相反,如果您愿意,请指责那些显然未能在 中嵌入足够数量的有关重音符号定位的元信息的人Times New Roman

我不想将字体更改为STIX Two Text,因为我发现使用 TNR Cyrillic о 和 `STIX Two Text Cyrillic о 时大小不一致,STT 的 о 更大,而且很明显。

人们普遍误以为,加载两种字体12pt意味着它们的小写字形应该具有相同的高度(即所谓的“x 高度”)。不幸的是,事实并非如此。如果您想直接比较不同字体的小写字母,请以使其 x 高度确实相同的方式加载它们。幸运的是,该fontspec软件包(顺便说一句,它适用于 LuaLaTeX 和 XeLaTeX)使这变得简单:只需指定Scale=MatchLowercase第二种字体的选项(即未通过 指定的选项\setmainfont)。

进行此调整后(见下面的屏幕截图),两种字形之间仍然有明显的差异,不仅是 Cyrillic-o,还有 Latin-o。不过,我认为没有理由将这种形状差异称为“不一致”。它们只是两种不同的字体,有很多相似之处,但也有一些不同之处。

请注意,不仅 Cyrillic-o 和 Latin-o 字形不同,而且锐音符(或“尖锐”)重音符在两种字体中也不同。再一次,我认为没有理由将这些差异称为不一致。

在此处输入图片描述

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Times New Roman}
\newfontfamily\secondfont{STIX Two Text}[Scale=MatchLowercase]

\usepackage[main=english,russian]{babel} 
\usepackage{microtype}

\begin{document}

\foreignlanguage{russian}{\'ы ы́ {\secondfont \'ы ы́}}

\'o {\secondfont \'o} % Latin

\foreignlanguage{russian}{\'o {\secondfont \'o}} % Cyrillic

\end{document}

答案2

请注意,Times New Roman 是 Windows 系统字体,其他平台通常不可用。MicroSoft 制作了 True Type 版本的旧副本,作为 Linux 版 Microsoft Corefonts 软件包的一部分,该版本是您在 Overleaf 中看到的版本。

该字体无法很好地定位此字母上的尖锐重音,但正如 fontspec 手册中所述,您可以调整命令的重音以应对这种情况。

这表示使用经典的 TeX\accent定位,而不是依赖于将尖音符组合在一起的字体来定位这个字母。

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}

\DeclareTextCompositeCommand{\'}{TU}{ы}{\accent"B4 ы}
\begin{document}


 \'ы 

\end{document}

相关内容