![如果在字体前加载了 polyglossia,selnolig 会将 en 和 em 破折号转换为连字符](https://linux22.com/image/424036/%E5%A6%82%E6%9E%9C%E5%9C%A8%E5%AD%97%E4%BD%93%E5%89%8D%E5%8A%A0%E8%BD%BD%E4%BA%86%20polyglossia%EF%BC%8Cselnolig%20%E4%BC%9A%E5%B0%86%20en%20%E5%92%8C%20em%20%E7%A0%B4%E6%8A%98%E5%8F%B7%E8%BD%AC%E6%8D%A2%E4%B8%BA%E8%BF%9E%E5%AD%97%E7%AC%A6.png)
考虑以下代码:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont{Stix Two Text}
\usepackage{selnolig}
\begin{document}
-- ---
\end{document}
其中输出是-- ---
,而不是短破折号和长破折号。
但是,如果我在 polyglossia 之前加载字体,则输出将如预期的那样:– —
。
我不太了解 TeX 及其相关软件的内部工作原理,有人能告诉我这是怎么回事吗?在字体之后加载 polyglossia 通常是最佳做法吗?或者这仅仅是 selnolig 的问题?
答案1
polyglossia 强制默认渲染器为 harfbuzz,而 selnolig 不适用于此渲染器。在 polyglossia 之前加载字体是可以的,或者您可以强制使用节点渲染器:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont{Stix Two Text}[Renderer=Node]
\usepackage{selnolig}
\begin{document}
-- ---
\end{document}