OpenType 区分大小写的形式破坏了微类型的连字符突出

OpenType 区分大小写的形式破坏了微类型的连字符突出

[Letters=Uppercase]通过使用 fontspec 的 setmainfont 启用 OpenType 功能(例如区分大小写的形式( )、垂直提升的括号、连字符或圆括号),我失去了由 microtype 完成的单词断开连字符字形的突出部分:

\setmainfont[Letters=Uppercase,StylisticSet={02,04}]{ESAllianz}
\microtypesetup{activate={true,nocompatibility},final,babel=true,factor=1000,stretch=20,shrink=20}

因为我使用 LuaLaTex,我发现microtype 的文档第 19 页上的以下内容:

然而,LuaTeX 和 XeTeX 的情况有所不同:默认继承设置仅包含可以安全假设存在于任何字体中的字形;但由于 OpenType 字体可能包含更多不同脚本(语言)的字形,因此很可能需要特定于字体的设置,这些设置应在字体的配置文件中指定(参见下一部分)。

实际上,标准连字符已被区分大小写的连字符所取代(但在 Unicode 中仍然是相同的字符U+002D:)。

我尝试使用LaTeX 命令在\DeclareCharacterInheritance{family={ES Allianz}}{\symbol{"002D}=-}哪里\symbol{"002D}打印连字符来继承非大写连字符的突起设置-

期望结果:我的文本中区分大小写的形式,并且仍然正确地突出用于单词断开的连字符。

我也尝试过\SetProtrusion{{\symbol{"002D} ={500,500}}},但是没有用。

看图片来了解区别:

不区分大小写,但连字符的突出部分正确

↑ 不区分大小写,但连字符正确突出

区分大小写,但没有连字符的突出部分

↑ 区分大小写,但没有连字符的突出部分

我需要做什么?我对 microtype 的配置文件(在 macOS、MacTeX 2023 上)没有经验。提前谢谢!


进步

我找到了正确的字形标识符,使用生成给定字体的所有可能字形的表格

\documentclass[landscape]{article}
\usepackage{geometry}
\usepackage{fontspec}
\setmainfont{ES Allianz}
\usepackage{multicol}
\setlength{\columnseprule}{0.4pt}
\usepackage{multido}
\setlength{\parindent}{0pt}
\begin{document}

\begin{multicols}{10}
\multido{\i=0+1}{"100000}{
  \iffontchar\font\i
    \makebox[3em][l]{\i}%
    \symbol{\i}\endgraf
  \fi
}
\end{multicols}

\end{document}

(增加十六进制数以扩大字形数量)

并且我可以使用\symbol{983167}983167打印字形表中的标识符)打印正确的区分大小写的连字符。

现在我尝试使用\DeclareCharacterInheritance以下内容,其中标识符45是常规连字符:

\DeclareCharacterInheritance{encoding={OT1,T1,TS1},family={*}}{\symbol{45} = \symbol{983167}}

不幸的是,这不起作用,我不知道为什么。我尝试将其放在序言中的不同位置,但不起作用。

我也尝试过:

# - \SetProtrusion{encoding={OT1,T1,TS1},family={*},series={*},size={*}}{\symbol{983167} ={1000,1000},} %over-exaggerated to make sure it is visible

也不起作用。它确实适用于常规字形,以其真实的 Unicode Char 值给出,例如文字e

相关内容