fontspec
改变信箱的大小。比较
\documentclass{article}
%\usepackage{fontspec}
\begin{document}
\Huge\fbox{S}\fbox{F}
\end{document}
代码一样,但是\usepackage{fontspec}
没有注释掉。图中左边是没有注释掉的fontspec
,右边是有注释掉的。
有没有办法让它们的尺寸与没有fontspec
包装时的尺寸相同?
答案1
在我看来,这是字体设计不好造成的。S
字体开发人员决定定义一个垂直覆盖整个墨迹区域并具有一些侧边距的边界框,而不是让它超出边界框,这一点在将参数设置\fboxsep
为零时就很明显了:
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\setlength{\fboxsep}{0pt}
\Huge
\fbox{S}\fbox{F}\fbox{f}\fbox{\itshape f}
\end{document}
请注意,斜体的两个边距f
都是负的,而直立体只有右侧边距是负的f
。
我不知道这是 OpenType 字体固有的局限性还是只是设计不当:在精心制作的罗马字体中,所有大写字母应具有相同的高度和零深度。字母可能会超出边界框,但这种超出应该不是确定高度和深度时应考虑这一点。
如果你想要一个“大写字母框”宏,你可以使用“I”作为模型:
\documentclass{article}
\usepackage{fontspec}
\newcommand{\cfbox}{\fbox{\vphantom{I}\smash{#1}}}
\begin{document}
\Huge
\cfbox{S}\cfbox{F}
\end{document}