我使用的字体没有半粗体粗细。
我想伪造一种与常规字体宽度相似的粗体字体。
我尝试使用这种方法https://tex.stackexchange.com/a/23691/41036:
\newsavebox\CBox
\def\textBF#1{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\textbf{#1}}}
它对于单个单词非常有效,但是不允许换行等。
我如何重新定义此命令以将其用于更长的表达式,最好像我通常使用的那样\bfseries
(例如,通过定义一个新的命令\bfsemiseries
)?
最诚挚的问候,Mil
答案1
您无法扩展此命令。但您可以使用 pdfliteral(假设您使用 pdflatex):
\documentclass[]{article}
\newcommand{\textBF}[1]{%
\pdfliteral direct {2 Tr 0.3 w} %the second factor is the boldness
#1%
\pdfliteral direct {0 Tr 0 w}%
}
\usepackage{lipsum}
\begin{document}
some text
\textBF{some text}
\textbf{some text}
\lipsum[1]
\textBF{\lipsum[1]}
\end{document}
答案2
该fontspec
软件包支持FakeBold
字体选项。您可以使用\newfontfamily\somefamily{Some Font}[FakeBold=1.2]
或\addfontfeature{FakeBold=1.2}
(或您喜欢的任何数字,但正常粗细为 1.0,粗体的典型值为 1.5)。
如果您想添加可以使用 和 等命令选择的半粗体粗细\sbseries
,\textsb{}
请参阅以下示例:
\documentclass[varwidth, preview]{standalone}
\usepackage{fontspec}
\setmainfont{DejaVuSerif}[
Scale = 1.0,
Ligatures = {Common, Discretionary, TeX},
UprightFont = * ,
BoldFont = *-Bold ,
ItalicFont = *-Italic ,
BoldItalicFont = *-BoldItalic ,
FontFace = {sb}{n}{ Font={*}, FakeBold = 1.2 },
FontFace = {sb}{it}{ Font={*-Italic}, FakeBold = 1.2 },
Extension = .ttf
]
% The commands to select semibold weight:
\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
\begin{document}
DejaVu \textit{Serif} \\
\textbf{Bold \textit{Italic}} \\
\textsb{\textit{Fake} Semibold}
\end{document}