LuaLaTeX 在补充平面中因 unicode 而出现错误?

LuaLaTeX 在补充平面中因 unicode 而出现错误?

梅威瑟:

\documentclass[margin=0pt, 12pt]{standalone}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmonofont{FiraCodeNerdFontPropo}[
  Extension = .ttf,
  Path = ../../../fonts/FiraCodeNerdFont/,
  UprightFont = *-Regular,
  BoldFont = *-Bold
]

\begin{document}
  \texttt{^^^^^^0f0072}
\end{document}

我在这里使用了字体:https://www.nerdfonts.com/font-downloads

根据字体备忘单(https://www.nerdfonts.com/cheat-sheet),0x0f0072是条形码图标。

上述代码在使用 XeLaTeX 编译时确实会产生条形码图标。

但是,当使用 LuaLaTeX 编译时,PDF 会显示一个银行图标(即 0x0f0070)。

经过一些测试,我发现 LuaLaTeX 似乎将每个图标移动了 0x2。

我不知道我是否遗漏了什么或者这只是一个错误。

答案1

问题不在于补充平面,而在于私有使用平面。LuaLaTeX 的默认node模式不期望直接输入私有使用代码点,因此可以自由地重新映射它们。

如果您不想要这个,您可以使用harf模式,例如使用fontspecRenderer = HarfBuzz选项:

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmonofont{FiraCodeNerdFontPropo}[
  Extension = .ttf,
  Path = ../../../fonts/FiraCodeNerdFont/,
  UprightFont = *-Regular,
  BoldFont = *-Bold,
  Renderer = HarfBuzz
]

\begin{document}
  \texttt{^^^^^^0f0072}
\end{document}

相关内容