在我的文档中,我更喜欢小写和全大写字母的文本有字母间距。为此,我使用了软件包的字母间距功能microtype
。到目前为止(使用 2.5 版),当通过和引擎microtype
以相同字体排版文本时,我曾经获得完全相同的结果,但在更新到最新版本(2.6)之后,我注意到虽然两个引擎中的字符间跟踪相同,但是使用 运行文档时单词间间距不会调整,从而导致可读性较差和不太美观,尤其是在全大写文本中。我已经测试了 opentype 和 type1 格式的许多字体,行为是一致的。下图说明了该问题(使用免费提供的 libertine 字体):pdflatex
lualatex
microtype
lualatex
还提供了 MWE:
\documentclass[12pt,crop]{standalone}
\usepackage{ifluatex}
\ifluatex
\usepackage{luatex85}
\else
\usepackage[utf8]{inputenc}
\fi
\usepackage{libertine}
\usepackage{letterspace}
%\usepackage{microtype}
\usepackage{textcase}
\def\allcapsspacing{}
\def\smallcapsspacing{}
\renewcommand{\allcapsspacing}[1]{\textls*[150]{#1}}
\renewcommand{\smallcapsspacing}[1]{\textls*[50]{#1}}
\newcommand{\allcaps}[1]{\allcapsspacing{\MakeTextUppercase{#1}}}
\newcommand{\smallcaps}[1]{\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\begin{document}
Stop \smallcaps{Stealing Sheep} Stop \allcaps{Stealing Sheep}\par
\end{document}
有谁知道为什么会发生这种情况和/或我如何获得类似调整后的单词间距,而不必手动调整(通过\spaceskip
)或依靠fontspec
于\LetterSpace
命令?可能相关:这个帖子和这个帖子
答案1
我在将 Lucida OpenType 字体与 LuaLaTeX 以及 Libertine 字体一起使用时也遇到了同样的问题。另一个线程这涉及到 LuaTeX 中看似很小的一个问题的细节。我发现,我可以通过 Microtype 的命令调整单词间距来控制 LuaLaTeX,例如:
\SetTracking[
spacing = {500*,100*,}, % choose values you like
outer kerning = {*,*}
]
{encoding = *}
{ 50 } % choose a value you like
然后调用\textls{\scshape{Stop stealing sheep!}
。Microtype 如果不手动增加单词间距,当字母间距很大时(例如,某些标题文本的间距为 200/1000 em),单词之间的空间似乎太小。
答案2
的字母间距/字距的正确行为LuaTeX
似乎已在最新版本luaotfload
( v2.96
2019/02/14) 中恢复。摘自文档:
在 2.95 版中,由于字体加载器的变化(问题 38),字母间距被破坏。这个问题已经修复。同时,字母间距中的一些异常和错误也已得到纠正[...]
letterspace
和包microtype
(从v2.7b
2019/02/28 开始)现在也按预期运行。