Unicode with xelatex

Unicode丰富了日常使用的字符集, 让我们可以使用一种简单便捷的方式表达各种奇怪的字符, 比如想要在输入一个雪人Snowman, U+2603 ☃ latex作为日常使用的排版工具, 怎么在latex中插入一个unicode? 一般来讲, 应该Ctrl+C, Ctrl+V就可以, 我们来看看下面的代码 \documentclass[utf8]{article} \begin{document} \huge Unicode char \texttt{U+13105} is 𓄅 Unicode char \texttt{U+16E4} is ᛤ Unicode char \texttt{U+25E6} is ◦ \end{document} 然而输出的PDF中并没有包含所有的Unicode字符, 看起来这个问题还存在一定的共性unicode-characters-not-displaying-in-xetex, 而且似乎是个字体问题. Tex Engine使用xelatex 我们来试试更换为FreeMono字体 \documentclass[utf8]{article} \usepackage{fontspec} \setmainfont{FreeMono} \begin{document} \huge Unicode char \texttt{U+13105} is 𓄅 Unicode char \texttt{U+16E4} is ᛤ Unicode char \texttt{U+25E6} is ◦ \end{document} Ha!现在ᛤ已经可以正常显示了, 𓄅却变成了一个奇怪字符. 其实这是因为在FreeMono字体中缺失字符𓄅, 而ᛤ之所以能显示是因为FreeMono包含了这个字符. 因此我们可以发现, 在xelatex中使用Unicode, 需要使用正确的字体, 即字体中要包含应相应的unicode字符. 那新的问题来了, 怎么知道什么字体包含了𓄅? 逛了一圈stackoverflow发现fileformat.info可以解决这个问题. 𓄅其实在Egyptian Hieroglyphs中, 找到相应的字体Noto Sans Egyptian Hieroglyphs...

📝 November 10, 2022 · ⌛ 1 min