我只使用 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
。这些编辑不会影响现有的使用。
- 在开头附近
microtype.sty
添加以下行:
\ifdefined\MTprefix\else\def\MTprefix{mt}\fi
- 找到宏
\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 项目。