在良好的排版中,某些字母(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
当然,复制粘贴会导致字母+撇号。