问题

问题

问题

我不断得到:

You can't use `\XeTeXcountglyphs` in vertical mode.

试图

\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}
\pgfmathsetmacro\maxstep{\XeTeXcountglyphs\font}
\foreach \charstep in {1,...,\maxstep}{%
    \XeTeXglyph\charstep
}%
\end{document}

请注意,我已将其更改为,\pgfmathsetmacro以便\pgfmathtruncatemacro我可以在我的文档中输入以下内容并且它是有意义的(否则你会得到类似 2625.01 的内容;字形的分数没有意义):

 Number of glyphs: \maxstep

答案1

\pgfmathsetmacro希望看到一个明确的数字,而不是内部寄存器。本来\the\XeTeXcountglyphs\font可以这样做,但由于另一个原因,它没有这样做:尝试打印与最高计数相对应的字形会导致错误。

解决方案:后退1步。

\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}

\pgfmathsetmacro\maxstep{\the\XeTeXcountglyphs\font-1}
\foreach \charstep in {1,...,\maxstep}{%
    \XeTeXglyph\charstep\space\space
}

\end{document}

第一个\space被吞噬\XeTeXglyph,第二个幸存下来并留出结果的空间。

在此处输入图片描述

答案2

您可以使用\edef,但是索引基于 0,因此您需要减少 1,否则在访问最后一个插槽时会出现错误。

\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}

\edef\maxstep{\the\numexpr\XeTeXcountglyphs\font-1\relax}

\typeout{maxstep is \maxstep}

\foreach \charstep in {0,...,\maxstep}{%
    \XeTeXglyph\charstep
}%
\end{document}

上面没有错误,虽然我没有显示图像,但结果有点过满

Overfull \hbox (4178.74983pt too wide) in paragraph at lines 13--14

相关内容