在 xelatex 中使用 Dingbats 字体

在 xelatex 中使用 Dingbats 字体

这肯定是一个真正的新手级问题(这有点令人尴尬,因为我在 1992 年使用纯 TeX 撰写了博士论文),但我找不到答案。即使这里有 500 万个类似的问题……所以,我的 MWE 是这样的:

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\dingbatsfont{Dingbats}
\newcommand\ding[1]{{\dingbatsfont\symbol{#1}}}

\begin{document}
\ding{115} % no output
{\dingbatsfont ❤} % error --- comment out to have a PDF file 
\end{document}

...运行它时xelatex第二行出现错误:

** WARNING ** 1 glyph names (out of 1) missing Unicode mapping.
** WARNING ** ToUnicode CMap "TZCCMX+Dingbats-UTF16" removed.
** ERROR ** pdf_ref_obj(): passed invalid object.

而如果我删除它,则不会出现错误,但什么\ding{115}也没有给出。奇怪的是,生成的 PDF 文件(当我删除第二行时)似乎已加载字体:

(0)samsung-romano:~/education/LibroEje/tmp% pdffonts lalla.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
IPQPDZ+Dingbats-Identity-H           CID Type 0C       Identity-H       yes yes yes      5  0
WPNUQB+LMRoman10-Regular-Identity-H  CID Type 0C       Identity-H       yes yes yes      7  0

...字体在这里并且可以由 LibreOffice 使用:

LibreOffice 字体选择器

我尝试115用 Unicode 代码点替换"2773,但再次出现上述错误。

我做错了什么?

答案1

\documentclass{article}
\usepackage{pifont}% load it first
\usepackage{fontspec}
\begin{document}

char: \ding{115}

\end{document}

还有 TrueType dingbats 字体。对于该字体,定义自己的字体是有意义的\ding

答案2

我找到了答案。大部分功劳应该归功于@Ulrike Fischer。

问题是我以为 Type1 字体可以像 opentype 或 ttf 字体一样处理。在latex、 (即pdflatex注释掉)和 中起作用的最小代码片段如下:fontspecxelatex

\documentclass{article}
\usepackage{fontspec} % comment for pdflatex or latex
\begin{document}
\newcommand{\myding}[1]{{\fontfamily{pzd}\fontencoding{U}%
  \fontseries{m}\fontshape{n}\selectfont\char#1}}

{char:  \myding{115}}

\end{document}

...并且两个编译器都生成了相同的符号(黑色填充三角形,类似于 U+25B2)。 可能有更好的方法来实现这一点,但我对此很满意...

相关内容