防止加载微类型 mt-fontname.cfg

防止加载微类型 mt-fontname.cfg

我只使用 lualatex,但我相信这个问题适用于任何引擎。我查看了 microtype 文档(用户和代码),甚至查看了包代码,但无济于事。

除非禁用,否则mt-fontname.cfg如果 microtype 找到主字体的文件,它会自动加载该文件。microtype 软件包附带了几个文件。特别是,有一个适用于 EB Garamond 字体的文件。

我想阻止 microtype 自动加载该文件。如果我将自己的文件指定config为包选项,它将在加载文件后加载我的文件mt-EBGaramind.cfg。我自己的文件无法覆盖或更改文件中已设置的任何内容mt-。具体来说,我指的是突起。

我目前所做的:

(1) 创建一个不执行任何操作的mt-EBGaramond.cfg文件,并将其放入texmf-local。Microtype 会读取该文件而不是内置文件。然后我就可以在自己的 *cfg 文件中对 EB Garamond 进行任何我想做的事情了,因为什么都没有设置。

(2)与上述相同,但是将我需要的所有内容都放在该文件中,因此它不需要放在我自己的 *cfg 文件中。

(3) 指定不同的主字体,加载 microtype,然后更改为真正的主字体。这听起来应该可以工作,但我遇到了错误。没有深入研究这一点。

我注意到,如果我使用没有文件的字体(例如 Libertinus Serif)mt-LibertinusSerif.cfg,那么我可以在自己的 *cfg 中写入我需要的内容,然后它就会被使用。

我的问题是:是否有命令或可靠的黑客可以阻止 microtype 自动加载mt-文件?Microtype 本身并未被禁用。

我为什么要问:我对该字体有自己的突起设置。

答案1

事实证明,有一个简单的破解方法。(如果我能做到,那一定很容易。)只需对进行少量编辑microtype.sty。这些编辑不会影响现有的使用。

  1. 在开头附近microtype.sty添加以下行:
\ifdefined\MTprefix\else\def\MTprefix{mt}\fi
  1. 找到宏\def\MT@find@file并在其中将每个更改mt-#1\MTprefix-#1

用法:在文档前言中,在加载 microtype 之前,您可以定义\MTprefix\def\MTprefix{something}。如果您不这样做,microtype 的行为将与往常一样。如果您定义 MTprefix,则 microtype 将查找something-FontName.cfg而不是mt-FontName.cfg

如果您有意定义\MTprefix引用不存在的文件,或者存在但不包含任何设置的文件,那么您可以将字体特定的配置写入您使用的任何文件microtype.cfg(通过config包选项)。

发生了什么:目前,如果 microtype 在 mt-文件中找到特定于字体的设置(例如,mt-EBGaramond.cfg那么您以后就无法在配置文件中覆盖它们。但如果它没有找到特定于字体的设置,那么您可以在配置文件中写入它们。除其他事项外,您可以将\input设置写入配置文件,然后使用以下代码更改它们。这允许进行大或小的调整。

我试图将其与 Lua 代码结合使用,以便以编程方式调整一些突起设置。

编辑:我将其带到了 GitHub 的 microtype 项目。

相关内容