LuaLaTeX 带有负值的突出问题

LuaLaTeX 带有负值的突出问题

请参阅以下屏幕截图。

enter image description here

如您所见,那里有两个“过满”的水平框。但是,LaTeX 根本没有产生任何过满框警告。我尝试制作一个最小的工作示例,但由于没有完全相同的布局、字体和换行符,因此无法重现。很抱歉,我无法在这个问题中包含 MWE。(编辑:请在下方找到 MWE)。

不过我尝试诊断问题。由于 LaTeX 不会将这些视为溢出框,所以我猜这可能是突出问题。我使用 fontspec (LuaLaTeX) 设置 Minion 字体,如下所示,

\setmainfont[
UprightFeatures    = {RawFeature = {protrusion = mnr}},
BoldFeatures       = {RawFeature = {protrusion = mnr}},
ItalicFeatures     = {RawFeature = {protrusion = mni}},
BoldItalicFeatures = {RawFeature = {protrusion = mni}},
RawFeature = {expansion  = default},
Ligatures = {Required, Common, Contextual, TeX},
Numbers = {OldStyle, Proportional},
SizeFeatures = {
  {Size =      -8.41,  OpticalSize = 8},
  {Size =  8.41-13.01, OpticalSize = 11},
  {Size = 13.01-19.91, OpticalSize = 19},
  {Size = 19.91-,      OpticalSize = 72}},
]{Minion Pro}

忽略其他因素(例如 SizeFeatures 用于解决 fontspec/luaotfload 无法选择正确的光学尺寸的问题)。问题出现在以下行

ItalicFeatures = {RawFeature = {protrusion = mmi}},

其中,突起在 设置的字体之前打开\pdfprotrudechars2,是mniMinion Pro Italic 的突起设置。我将MinionPro包中的设置转换为与 LuaLaTeX 一起使用(因为 的官方版本microtype尚不支持 加载 opentype 字体的 LuaTeX fontspec)。设置突起的文件的一部分Lua可以在下面找到,

fonts                    = fonts                    or { }
fonts.protrusions        = fonts.protrusions        or { }
fonts.protrusions.setups = fonts.protrusions.setups or { }

--omitted codes--

fonts.protrusions.setups["mni"] = { -- Minion Pro Italic

      factor = 1, left = 1, right = 1,

  -- omitted code--
  [0x0067] = {-0.070, -0.070}, -- g
  [0x0069] = { 0.000, -0.110}, -- i
  [0x006A] = {-0.090, -0.150}, -- j
  [0x0070] = {-0.040,  0.000}, -- p
  [0x0072] = { 0.000,  0.080}, -- r
  -- omitted --
}

gII 改变字母和的突出度p,即上图中的断点,则问题解决。

有人能解释一下这个问题吗?我的字体设置(使用)或突起设置文件有问题吗RawFeatures(上述代码片段中省略的代码只是针对其他字母的设置,我认为它们应该彼此独立)?

似乎只要在斜体字符处发生换行并且激活了该字符的突出部分,就会出现问题。罗马字体不会发生这种情况。

編輯:进一步的实验表明,为突出因子分配正值而不是负值不会对斜体字体造成任何问题。我猜问题不在于斜体字体,但突出系数为负值。罗马字体不存在此类问题的原因是,没有为任何罗马字符分配负值。但一些斜体字符具有负突出值,因此它们不会超出边界太多。

最新编辑:这是触发该问题的最小文档。

\documentclass[a4paper]{article}
\usepackage{microtype}
\usepackage{amsthm}
\newtheorem{proposition}{Proposition}
\usepackage{lipsum}
\begin{document}
\begin{proposition}
  \lipsum
\end{proposition}
\end{document}

使用 lualatex (展示错误):lualatex

使用 pdflatex (非常好):pdflatex

答案1

这可能与我所发现的负突出值错误有关一年前报道过显然还开着。您使用的是哪个版本的luatex?

相关内容