Unicode 字符无法正确显示

Unicode 字符无法正确显示

我想使用 TeX Gyre Pagella 字体(Palatino Linotype 的克隆版)输入一个使用 Unicode 字符 U+1E17(带有长音符和锐音符的拉丁小写字母 e)的单词。但是,当我这样做时,锐音符太低了。有办法纠正这个问题吗?

以下是 MWE:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\begin{document}
\textit{\huge{\char"1E17th}} \textsc{\huge{test}}
\end{document}

以太坊

编辑:我可以将Palatino(NOT Palatino Linotype)设置为主要字体,但这样我就不能使用小型大写字母了

\documentclass{article}
    \usepackage{unicode-math}
    \setmainfont{Palatino}
    \begin{document}
    \textit{\huge{\char"1E17th}} \textsc{\huge{test}}
    \end{document}

TeX 环流佩格拉 帕拉蒂诺

答案1

我无法使用 texlive 2019 重现您的输出,我尝试使用 xelatex、lualatex 和稍作改动的实验性 harflatex 测试文件,结果如下。

西特克斯

在此处输入图片描述

哈夫泰克斯

在此处输入图片描述

路特克斯

在此处输入图片描述

答案2

该字体不支持U+1E17字符。

HarfBuzz(在 XeTeX 和 HarfTeX 中)有助于将其分解为 e + 组合长音符 + 组合 + 组合锐音符(U+0304 和 u+0301),幸运的是字体可以接受地呈现它(至少是 TeX Live 2019 中包含的版本)。

你可以通过手动进行分解在其他引擎(比如带有 luaotfload 的 LuaTeX)上实现同样的效果

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\begin{document}
\textit{\huge{e\char"0304\char"0301th}} \textsc{\huge{test}}
\end{document}

上述文档的 LuaTeX 渲染

或者,您可以继续使用 TeX Gyre Pagella 来处理小型大写字母,并对其余文本使用不同的字体:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Palatino}
[
        SmallCapsFont={TeX Gyre Pagella},
        SmallCapsFeatures={Letters=SmallCaps},
]
\begin{document}
\textit{\huge{\char"1E17th}} \textsc{\huge{test}}
\end{document}

答案3

并非所有 Unicode 字体系列都具有该功能U+1E17;并且,正如您所发现的,即使一些声称具有该字形的字体也不太正确。

如果您可以使用EB Garamond另一个 Garalde,那么您应该可以获得正确呈现的直立和斜体字形。

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\setmainfont{EB Garamond}%{TeX Gyre Pagella}
\begin{document}
\char"1E17th 
\textit{\char"1E17 th}
\end{document}

相关内容