如何在最终输出中显示正在使用的字体大小

如何在最终输出中显示正在使用的字体大小

如何显示文档特定位置正在使用的字体大小。

例如,在下面的代码中,我生成了一个 PDF 文件,其中显示了每个形状和大小实际使用的字体,

\documentclass{article}

\usepackage{fontspec}
\usepackage{pgffor}
\usepackage{xcolor}

\definecolor{mred} {cmyk}{0,1,1,0.6}
\definecolor{mblue}{cmyk}{1,1,0,0.2}

\setmainfont{Minion Pro}

\long\def\testfont{
  \foreach \size in
  {normalsize, Large, Huge}
  {\csname\size\endcsname\testshape}}

\long\def\testshape{
  \vskip\baselineskip
  \csname\size\endcsname\size
  \vskip\baselineskip
  \foreach \shape in {up, it, sc, bf}
  {\par\csname text\shape\endcsname
    {
      \textcolor{mred}{\directlua{tex.print(font.fonts[font.current()].fullname)}}
      \textcolor{mblue}{\shape}
    }}
  \vskip\baselineskip}

\begin{document}
  \pagestyle{empty}
  \flushleft
  \rmfamily\testfont\vfill
\end{document}

这将产生以下内容。(如您所见fontspec或未luaotfload选择正确的光学字体,请参阅我的答案使用 MinionPro 作为主字体,使用 Fontspec 作为等宽字体如何解决这个问题)

我的问题是,我不想打印“normalize”、“Large”、“Huge”,而是想打印“10pt”或“10”之类的内容,这样我就可以看到实际的字体大小,就像在这个例子中我可以看到实际使用的字体一样。

我知道可以使用 Acrobat 之类的软件来实现这一点。但是这样一来,用户就必须多次点击鼠标才能检查字体。我更喜欢一种更自动化的方式,类似于我在示例中打印字体名称的方式。

提前谢谢了。

字体测试

答案1

我不知道我是否理解了你的问题。这是我的解释 ;-)

\documentclass[11pt]{article}
\begin{document}
\makeatletter
orig: \f@size

\verb+\small+ \small \f@size

\verb+\normalsize+ \normalsize \f@size

\verb+\large+ \large \f@size

\verb+\Huge+ \Huge \f@size
\makeatother
\end{document}

答案2

\f@size是 LaTeX2e NFSS 中的内部宏。如果未通过 NFSS 指定字体,则可能会失败。要了解 LaTeX 命令的大小,例如\large,您可以阅读classes文档。

此外,您不需要直接使用 Lua 代码来获取字体名称。

以下是显示字体大小的低级方法:

\documentclass{article}
\usepackage{luaotfload}
\font\1="TeX Gyre Termes"
\begin{document}

\fontname\font\ at \the\fontdimen6\font
% cmr10 at 10.00002pt

\1
\fontname\font\ at \the\fontdimen6\font
% TeX Gyre Termes at 10.0pt
\end{document}

\fontdimen61em.的长度,表示当前字体。请参阅第 4 章\font\fontname\fontdimenTeX 按主题分类了解更多解释。

答案3

font.fonts[font.current()].size给出大小缩放点。除以 65536 将得出以 pts 为单位的大小。

相关内容