在从印刷品中复制印刷版式时,我经常遇到字体“点大小”在页面上不易测量的常见困难。另一方面,x 高度和大写高度等特征很容易测量,但 fontspec 不接受它们作为尺寸规范(据我所知)。
换句话说,有类似的东西\newfontface[xheight=<dim>]{EB Garamond}
可用吗?
答案1
我假设您使用的是 LuaTeX。如果是这样,可以设置一个名为的宏并将其与的选项\Setxheight
一起使用。请注意,该宏使用 Lua 的除法例程而不是 TeX 自己的内置例程,因为缩放因子可能不是整数值。fontspec
Scale
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
%% x-height of font is stored in \fontdimen5
\newcommand\Setxheight[1]{\directlua{%
tex.sprint(#1/(\the\numexpr\dimexpr
\the\fontdimen5\font\relax\relax/65536))}}
\begin{document}
\setmainfont{EB Garamond}
\the\fontdimen5\font % show value of x-height
\setmainfont[Scale=\Setxheight{4.78}]{EB Garamond} % reload the font
\the\fontdimen5\font % show value of x-height
\end{document}
编辑:XeLaTeX 版本
% !TEX TS-program = xelatex
\documentclass{article}
\usepackage{fontspec}
%% x-height of font is stored in \fontdimen5
\ExplSyntaxOn
\newcommand\Setxheight[1]{
\fp_eval:n{(#1/(\the\numexpr\dimexpr
\the\fontdimen5\font\relax\relax/65536))}}
\ExplSyntaxOff
\begin{document}
\setmainfont{EB Garamond}
\the\fontdimen5\font % show value of x-height
\setmainfont[Scale=\Setxheight{4.78}]{EB Garamond} % reload the font
\the\fontdimen5\font % show value of x-height
\end{document}