如何更改文档中特定字体的默认字体大小?

如何更改文档中特定字体的默认字体大小?

我正在使用 XeLaTeX(fontspec),但遇到了以下问题。我在序言中使用了很多不同的字体,例如

\setmainfont{GFSDidot}    
\newfontfamily{\greekfont}{CMU Serif}
 \newfontfamily{\greekfontsf}{CMU Sans Serif}
  \newfontfamily{\hebrewfont}{Linux Libertine O}[Scale=MatchUppercase]

我使用stackengine包来堆叠不同的字体。我想在本地更改一种特定字体的字体大小,而不影响在堆栈过程中一起使用的其他字体的大小。我担心该命令\addfontfeatures[Scale=..]会影响堆栈中任何字体的大小!所以我的问题是:是否可以在本地更改特定字体的字体大小(无需为该\newfontfamily特定字体定义新的字体并指定所需的大小)?像 { \addfontfeatures{\hebrewfont}[Scale=..] ....} 这样的?您可以使用以下最小示例:

\documentclass[letterpaper, 12pt]{article}
\usepackage[no-math]{fontspec}
\usepackage{stackengine}
\usepackage{polyglossia}
\usepackage{newunicodechar}
\setmainfont{Arial}
\newfontfamily{\hebrewfont}{Linux Libertine O}
\newunicodechar{ǎ}{\accent\string"02C7 a}
\newunicodechar{א}{{\hebrewfont{א}}}
\newunicodechar{ע}{{\hebrewfont{ע}}}
\begin{document}
\stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}\\
{\fontspec{\hebrewfont} \addfontfeature[Scale=0.8] \stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}}
\end{document}

当我尝试定义“缩放”命令时也遇到了同样的问题,例如\newcommand\hebr[1]{\fontspec{Linux Libertine O}\addfontfeature{Scale=#1}} ,输出{\hebr{0.3}ǎא }不是预期的!!

答案1

如果要缩放的字体始终出现在堆栈中的同一级别(例如,始终在顶部),则可以在此处设置一个宏,\mystackon用于缩放堆栈的上部元素。

\documentclass[letterpaper, 12pt]{article}
\usepackage[no-math]{fontspec}
\usepackage{stackengine}
\usepackage{polyglossia}
\usepackage{newunicodechar}
\setmainfont{Arial}
\newfontfamily{\hebrewfont}{Linux Libertine O}
\newunicodechar{ǎ}{\accent\string"02C7 a}
\newunicodechar{א}{{\hebrewfont{א}}}
\newunicodechar{ע}{{\hebrewfont{ע}}}
\newcommand\mystackon[2]{%
  \stackengine{\Lstackgap}{#1}{\scalebox{.8}{#2}}{O}{c}{F}{\useanchorwidth}{L}%
}
\begin{document}
Unaltered:
\stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}
Revised:
\mystackon{ǎ}{א} \mystackon{b}{ע}
\end{document}

在此处输入图片描述

另一方面,如果需要在任意位置按需使用较小的字体,则可以创建宏\smallhebrew\normalhebrew作为更改字体大小的指令。这可以通过重新定义来\hebrewfont包含(或不包含)缩放来实现。

\documentclass[letterpaper, 12pt]{article}
\usepackage[no-math]{fontspec}
\usepackage{stackengine}
\usepackage{polyglossia}
\usepackage{newunicodechar}
\setmainfont{Arial}
\newfontfamily{\hebrewfont}{Linux Libertine O}
\newunicodechar{ǎ}{\accent\string"02C7 a}
\newunicodechar{א}{{\hebrewfont{א}}}
\newunicodechar{ע}{{\hebrewfont{ע}}}
\let\svhebrewfont\hebrewfont
\newcommand\smallhebrew{\renewcommand\hebrewfont[1]{\scalebox{.8}{\svhebrewfont{##1}}}}
\newcommand\normalhebrew{\let\hebrewfont\svhebrewfont}
\begin{document}
normal: \stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}
\stackengine{\Lstackgap}{ע}{ǎ}{O}{c}{F}{\useanchorwidth}{L}
%
small: \smallhebrew%
\stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}
\stackengine{\Lstackgap}{ע}{ǎ}{O}{c}{F}{\useanchorwidth}{L}
%
back to normal: \normalhebrew%
\stackengine{\Lstackgap}{ǎ}{א}{O}{c}{F}{\useanchorwidth}{L}
\stackengine{\Lstackgap}{ע}{ǎ}{O}{c}{F}{\useanchorwidth}{L}
\end{document}

在此处输入图片描述

相关内容