修复 Unicode 字符内部的字距调整

修复 Unicode 字符内部的字距调整

有没有办法深入研究定义代码,例如,修复变音符号的字距?在 中情况更糟ebgaramond;在现代计算机中情况也好不到哪里去。

\documentclass{standalone}

\usepackage{ebgaramond}
\usepackage[greek]{babel}

\begin{document}

\textgreek{Ἄνθρωπε, οὐκ οἶδα ὃ λέγεις.}

\end{document}

在此处输入图片描述

答案1

有问题的字符是U+1F0C 带有 PSILI 和 OXIA 的希腊大写字母 ALPHA,我们发现lgrenc.dfu

\DeclareUnicodeCharacter{1F0C}{\ensuregreek{\accpsilioxia\textAlpha}}        % Ἄ

我们lgrenc.def看到

\DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\textAlpha}{>'A}

因此,字符在组合中直接翻译>'A。在希腊字体中,>'是连字,有些字体可能会在此字符和字母 A(用于音译希腊字母)之间提供字距调整。例如,如果我删除对 的调用ebgaramond,TeX 的跟踪会显示

....\LGR/cmr/m/n/10 ^ (ligature >')
....\kern-0.83313
....\LGR/cmr/m/n/10 A

但当ebgaramond使用相同的组合时会产生

....\LGR/EBGaramond-OsF/regular/n/10 ^ (ligature >')
....\LGR/EBGaramond-OsF/regular/n/10 A

没有字距调整。在这种情况下,我们可以添加它吗?是的,我们可以。

\documentclass{article}

\usepackage{ebgaramond}
\usepackage[greek]{babel}

\DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\textAlpha}{>'\kern-0.15em A}


\begin{document}

\textgreek{Ἄνθρωπε, οὐκ οἶδα ὃ λέγεις.}

\end{document}

在此处输入图片描述

我相信您需要修复其他复合命令,但想法是一样的。

答案2

无需深入研究任何东西。正如@UlrikeFischer 在评论中建议的那样,如果您愿意并且能够这样做,请务必考虑切换到 LuaLaTeX 或 XeLaTeX,并且不要使用\textgreek包装器。

在此处输入图片描述

% !TEX TS-program = xelatex  %% or 'lualatex'
\documentclass[border=2pt]{standalone}
\usepackage{ebgaramond}
\usepackage[greek]{babel}
\begin{document}
Ἄνθρωπε, οὐκ οἶδα ὃ λέγεις.
\end{document}

相关内容