使用 XeLaTeX 和 Lato 字体的 Unicode 符号

使用 XeLaTeX 和 Lato 字体的 Unicode 符号

我正在尝试使用 XeLaTeX 直接从代码中打印 ✔ 符号(即直接将符号放入源代码中,而不是使用某些 \macro)。我有以下 MWE:

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Lato}

\begin{document}
This is a test: ✔
\end{document}

但它不起作用:

xelatex test.tex

在此处输入图片描述

但是,使用 Libertine 字体(带有\usepackage{libertine})可以正常工作。

有办法吗?

提前非常感谢您。

答案1

该字体没有该字符的字形(您可以从“缺少符号”字形或日志文件中的消息中看到它)。

使用提供该功能的字体。这里我使用 Libertinus Serif。

\documentclass{article}

\usepackage{fontspec}
\usepackage{newunicodechar}

\setmainfont{Lato}
\newfontfamily{\libertinus}{Libertinus Serif} % a font that has ✔
\newfontfamily{\iosevka}{Iosevka}

\newunicodechar{✔}{%
  \begingroup
  \iffontchar\font`✔ \else \libertinus\fi ✔%
  \endgroup
}

\begin{document}

This is a test: ✔

\iosevka

This is a test: ✔

\end{document}

在此处输入图片描述

您可能希望符号不根据当前条件而改变。然后使用

\documentclass{article}

\usepackage{fontspec}
\usepackage{newunicodechar}

\setmainfont{Lato}
\newfontface{\libertinus}{Libertinus Serif} % a font that has ✔
\newfontfamily{\iosevka}{Iosevka}

\newunicodechar{✔}{%
  \begingroup
  \normalfont\libertinus ✔%
  \endgroup
}

\begin{document}

This is a test: ✔

\iosevka

This is a test: ✔

\end{document}

在此处输入图片描述

我使用 Iosevka 字体只是为了看看两种情况的区别。

相关内容