使用 kpfonts 来标注正确的抑扬符吗?

使用 kpfonts 来标注正确的抑扬符吗?

在良好的排版中,某些字母(t、d、l)上的卡龙重音符应该被替换为更像撇号的东西。至少使用 T1 编码的“默认”字体可以正确完成此操作:

\documentclass{article}
%\usepackage{kpfonts}
\usepackage[T1]{fontenc}
\begin{document}

\Huge

Test \v{s} \v{t} \v{d} \v{l} t' d' l'

\emph{Test \v{s} \v{t} \v{d} \v{l} t' d' l'}

\end{document}

在此处输入图片描述 (注意与普通撇号的区别)

但是使用这个kpfonts包(只需在代码中取消注释它),它看起来就不太好了:

在此处输入图片描述

看起来卡顿的位置已经改变(甚至 t 的形状也可能改变),但它仍然只是一个卡顿。斜体 t 则没有进行任何尝试。

我推测这只是字体中缺少正确字形的迹象。但是有什么办法可以让它看起来更好吗?

答案1

我已经上传了该kpfonts-otf软件包的 0.60 版本,其中包含针对 dcaron、lcaron、tcaron、Lcaron(以及小号 + 小型大写字母变体)的更正字形。

此新版本应该会在明天或后天在主要的 TeX 发行版(TeXLive、MikTeX 等)中推出。

我希望这些 OpenType 字体现在也可以用于捷克语和斯洛伐克语。不幸的是,旧版本不再维护,在可预见的未来不会得到修复……

答案2

2023 年 11 月更新

OpenType 版本已解决该问题,因此下面的解决方法仅适用于旧式 Type1 字体。

原始答案

令我沮丧的是,OpenType 版本也存在同样的问题。幸运的是,这个版本(可能还有旧版本)由 Daniel Flipo 积极维护,所以也许可以纠正这个问题。

目前,你可以暂时解决该错误:

\documentclass{article}
\usepackage{iftex}

\iftutex\else
  \usepackage[T1]{fontenc}
\fi

\usepackage{kpfonts}
\usepackage{newunicodechar}

\DeclareTextCompositeCommand{\v}{\encodingdefault}{d}{d\fixedcaron}
\DeclareTextCompositeCommand{\v}{\encodingdefault}{l}{l\fixedcaron}
\DeclareTextCompositeCommand{\v}{\encodingdefault}{t}{t\fixedcaron}

\newunicodechar{ď}{\v{d}}
\newunicodechar{ľ}{\v{l}}
\newunicodechar{ť}{\v{t}}

\makeatletter
\newcommand{\fixedcaron}{%
  \/%
  \raisebox{0.3ex}{%
    \fontsize{\fpeval{0.8*(\f@size)}}{\z@}\selectfont
    \kern-\fpeval{0.15*(1-\strip@pt\fontdimen1\font)}em '%
  }%
}
\makeatother

\begin{document}

Test \v{s} \v{t} \v{d} \v{l} ť ď ľ

\textbf{Test \v{s} \v{t} \v{d} \v{l} ť ď ľ}

\textit{Test \v{s} \v{t} \v{d} \v{l} ť ď ľ}

\textbf{\textit{Test \v{s} \v{t} \v{d} \v{l} ť ď ľ}}

\end{document}

使用 LuaLaTeX 输出

在此处输入图片描述

输出pdflatex

在此处输入图片描述

当然,复制粘贴会导致字母+撇号。

相关内容