TeXLive2016 lualatex 不使用 MinionPro opentype 字体的光学尺寸

TeXLive2016 lualatex 不使用 MinionPro opentype 字体的光学尺寸

使用当前的 texlive 2016,文件

\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX}}
\setmainfont{Minion Pro}

\begin{document}%
\newcommand{\MyText}{No offence meant, I even upvoted your answer.}

\verb|\tiny|=\tiny\MyText\par
\verb|\scriptsize|=\scriptsize\MyText\par
\verb|\footnotesize|=\footnotesize\MyText\par
\verb|\normalsize|=\normalsize\MyText\par
\verb|\large|=\large\MyText\par
\verb|\Large|=\Large\MyText\par
\verb|\LARGE|=\LARGE\MyText\par
\verb|\huge|=\huge\MyText\par
\verb|\Huge|=\Huge\MyText\par

\end{document}

生成的 PDF 使用了 LMMono8、-10 和 -12,但 MinionPro Opticals 只使用了 MinionPro-Regular。切换回 TeXLive-2015 生成的文件包含 MinionPro-Regular、-Capt、-Subh 和 -Disp,正如预期的那样。

关于如何恢复对 OpenType 字体的适当光学尺寸的自动选择,有什么提示吗?

答案1

fontspec 手册的第 8.6 节说:

[...] 具有光学缩放功能的 OpenType 字体将存在几种不同的尺寸,这些尺寸将由 XETEX 和 LuaTEX 选择自动地 由当前字体大小决定[...]

但是,只有当它获得进行自动选择所需的信息时,它才能这样做。它需要什么信息?fontspec 手册仅在下一段中通过指定它期望如何提供信息给出了间接提示:

SizeFeatures 功能(第 17 页的第 7.6 节)可用于精确指定字体大小范围将使用的光学尺寸。[...]

Fontspec 需要设计尺寸字体。顾名思义,此大小由字体设计师决定。不幸的是,otf 文件格式不包含此信息。如果您购买字体,它们通常会附带一个自述文件。对于 Minion Pro,此自述文件有一个关于光学尺寸的部分。可以找到一个小表格,提供所需的信息。

图片说明:从 6.0 分到 8.4 分

正文:从 8.4 点增加到 13.0 点

副标题:从13.0分增至19.9分

显示:从19.9分到72.0分

该表对于每种字体可能都不同,因为各自的字体设计者做出了不同的选择。

正如评论中提到的,你现在可以更改

\setmainfont{Minion Pro}

这还不够

\setmainfont{minionpro-}[
Extension={.otf},
UprightFont={*regular},
ItalicFont={*it},
BoldFont={*bold},
BoldItalicFont={*boldit},
Numbers={Proportional,OldStyle},
SizeFeatures={
    {Size={-8.4},Font=*capt},
    {Size={8.4-13.0}},
    {Size={13.0-19.9},Font=*subh},
    {Size={19.91-},Font=*disp}
}]

这当然取决于 otf 文件的命名约定。由于我所知道的没有标准,所以您可能需要调整它们。我电脑上的 otf 文件都是小写的,因此我的文件名如下:

minionpro-capt.otf
minionpro-regular.otf
minionpro-subh.otf
minionpro-disp.otf

对于直立字体,对于斜体字体,我有

minionpro-itcapt.otf
minionpro-it.otf
minionpro-itsubh.otf
minionpro-itdisp.otf

等等

minionpro-boldcapt.otf
minionpro-bold.otf
minionpro-boldsubh.otf
minionpro-bolddisp.otf

Minion Pro 还提供了中等和半粗体版本。因此,如果“普通”粗体版本太粗,则可以通过更改来替换它们

BoldFont={*bold},
BoldItalicFont={*boldit},

进入

BoldFont={*medium},
BoldItalicFont={*mediumit},

fontspec 还提供使用字体名称而不是字体文件名的功能。根据 fontspec 手册第 7.6 节第 22 页

与其他功能的交互 为了使 SizeFeatures 与 ItalicFeatures、BoldFeatures 等以及 SmallCapsFeatures 配合使用,需要严格的层次结构:[...]

我可以通过编写以下命令使其工作:

\setmainfont{Minion Pro}[
Numbers={Proportional,OldStyle},
UprightFeatures={
  SizeFeatures={
    {Size={-8.4},Font=*Capt},
    {Size={8.4-13.0},Font=*Regular},
    {Size={13.0-19.9},Font=*Subh},
    {Size={19.9-},Font=*Disp}
}},
ItalicFeatures={
  SizeFeatures={
    {Size={-8.4},Font=*It Capt},
    {Size={8.4-13.0},Font=*It},
    {Size={13.0-19.9},Font=*It Subh},
    {Size={19.9-},Font=*It Disp}
}},
BoldFeatures={
  SizeFeatures={
    {Size={-8.4},Font=*Bold Capt},
    {Size={8.4-13.0},Font=*Bold},
    {Size={13.0-19.9},Font=*Bold Subh},
    {Size={19.9-},Font=*Bold Disp}
}},
BoldItalicFeatures={
  SizeFeatures={
    {Size={-8.4},Font=*Bold It Capt},
    {Size={8.4-13.0},Font=*Bold It Capt},
    {Size={13.0-19.9},Font=*Bold It Subh},
    {Size={19.9-},Font=*Bold It Disp}
}}]

答案2

在加载之前fontspec,文档类定义了所有字体大小,这就是为什么这里使用 Latin Modern 作为默认值的原因。但是,在加载fontspec和使用之后\setmainfont,所有内容都会重新定义。比较输出:左栏是 Minion Pro,右栏是 Latin Modern。

\documentclass[twocolumn]{article}
\usepackage{fontspec}
\setmainfont{Minion Pro}
\parindent=0pt
\newcommand\MyText{No offence meant, I even upvoted your answer.}
\newcommand\cs[1]{\texttt{\textbackslash#1}}

\begin{document}%

    \cs{tiny}=\tiny\MyText\par
    \cs{scriptsize}=\scriptsize\MyText\par
    \cs{footnotesize}=\footnotesize\MyText\par
    \cs{normalsize}=\normalsize\MyText\par
    \cs{large}=\large\MyText\par
    \cs{Large}=\Large\MyText\par
    \cs{LARGE}=\LARGE\MyText\par
    \cs{huge}=\huge\MyText\par
    \cs{Huge}=\Huge\MyText\par

\newpage\normalsize
\fontspec{Latin Modern Roman}
    \cs{tiny}=\tiny\MyText\par
    \cs{scriptsize}=\scriptsize\MyText\par
    \cs{footnotesize}=\footnotesize\MyText\par
    \cs{normalsize}=\normalsize\MyText\par
    \cs{large}=\large\MyText\par
    \cs{Large}=\Large\MyText\par
    \cs{LARGE}=\LARGE\MyText\par
    \cs{huge}=\huge\MyText\par
    \cs{Huge}=\Huge\MyText\par
\end{document}

在此处输入图片描述

但是,那

[...]
ZUQBJT+MinionPro-Capt-Identity-H     CID Type 0C       Identity-H       yes yes yes      9  0
GZICFI+MinionPro-Subh-Identity-H     CID Type 0C       Identity-H       yes yes yes     15  0
VLPSCX+MinionPro-Disp-Identity-H     CID Type 0C       Identity-H       yes yes yes     17  0
[...]

仅由使用xelatex,如果没有通过定义fontspec

相关内容