一些代码连字符在 xelatex 中有效,但在 lualatex 中无效

一些代码连字符在 xelatex 中有效,但在 lualatex 中无效

在看着这个问题我注意到 JetBrains Mono 字体(可从其网站) 在 xelatex 中有效,但在 lualatex 中无效。比较:

赛莱特

路拉泰克斯

来源

我必须添加一些字符,\verbatim@nolig@list以便连字符不会逐字出现。

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmonofont{JetBrains Mono}

\makeatletter
\AddToHook{cmd/verbatim@nolig@list/after}{\do \|\do \=\do \+\do \~\do \#\do \.\do \/\do \?\do \:\do \[\do \]}
\makeatother

\pagestyle{empty}

\begin{document}
\ttfamily
\begin{tabular}{rl}
<> & \verb|<>| \\
|=> & \verb!|=>! \\
<=| & \verb!<=|! \\
++ & \verb|++| \\
-> & \verb|->| \\
<- & \verb|<-| \\
<-> & \verb|<->| \\
<!-- & \verb|<!--| \\
\textasciitilde> & \verb|~>| \\ 
<\textasciitilde & \verb|<~| \\
\textasciitilde\textasciitilde> & \verb|~~>| \\
<\textasciitilde\textasciitilde & \verb|<~~| \\
->> & \verb|->>| \\
<<- & \verb|<<-| \\
--> & \verb|-->| \\
<-- & \verb|<--| \\
>-> & \verb|>->| \\
<-< & \verb|<-<| \\
/= & \verb|/=| \\
=> & \verb|=>| \\
<= & \verb|<=| \\
<=> & \verb|<=>| \\
\end{tabular}
\hspace{2cm}
\begin{tabular}{rl}
=>> & \verb|=>>| \\
<<= & \verb|<<=| \\
==> & \verb|==>| \\
<== & \verb|<==| \\
<==> & \verb|<==>| \\
>=> & \verb|>=>| \\
<=< & \verb|<=<| \\
\#\# & \verb|##| \\
\#\#\# & \verb|###| \\
|> & \verb!|>! \\
<| & \verb!<|! \\[0.5ex]
[||] & \verb![||]! \\
:?> & \verb|:?>| \\
::= & \verb|::=| \\
:: & \verb|::| \\
?? & \verb|??| \\
<+> & \verb|<+>| \\
.. & \verb|..| \\
</ & \verb|</| \\
/> & \verb|/>| \\
\#? & \verb|#?| \\
]\# & \verb|]#| 
\end{tabular}
\end{document}

<->使用 lualatex 时,->>>->、 和的连字<-<无法正确显示。这是 lualatex(或 luaotfload 等)中的错误,还是字体的问题?

请注意,添加[Contextuals=Alternate]如下内容这个答案似乎没有什么区别。

答案1

正如 Ulrike Fischer 在评论中回答的那样,当某些东西在 XeLaTeX 中有效而在 LuaLaTeX 中无效时,首先要尝试的是使用 加载字体Renderer=HarfBuzz。我没有那个字体可以测试,但你说它对你有用。

原因是,默认情况下,XeTeX 使用 HarfBuzz 渲染器来渲染现代 Unicode 字体,而 LuaTeX 使用其自己的实验性渲染器。您已将此问题报告给他们,作为一个错误。

相关内容