首先,在
BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED);
您为常规 Calibri 加载字体文件。如果您从此BaseFont 派生任何Font,则无论您设置哪种样式属性,它都会使用常规的Calibri 字体文件。这尤其意味着
- “粗体”样式的实现方式不仅是填充正常的字形轮廓,而且还沿着它画一条线(所谓的“穷人粗体”的变体)和
- “斜体”样式是通过应用稍微倾斜的变换矩阵来实现的。
通过加载粗体或斜体 Calibri,您可以获得质量更好的粗体和斜体变体
BaseFont baseFontBold = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibrib.ttf", "Identity-H", BaseFont.EMBEDDED);
BaseFont baseFontItalic = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibrii.ttf", "Identity-H", BaseFont.EMBEDDED);
BaseFont baseFontBoldItalic = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibriz.ttf", "Identity-H", BaseFont.EMBEDDED);
并从匹配的BaseFont 派生一个样式为“正常”的Font。
说了这么多,现在来回答你的主要问题:
我知道我能做到:
font1.SetStyle("bold");
font1.SetStyle("italic");
但是两者呢?并且也许还强调...
对于两者你可以简单地按照你写的去做
font1.SetStyle("bold");
font1.SetStyle("italic");
即按顺序设置两者,因为SetStyle(String) 实际上更像AddStyle。或者,你也可以这样做
font1.SetStyle("bold italic");
如果您需要将所选样式集重置为正常,您可以使用SetStyle(int),它确实像 setter 一样工作:
font1.SetStyle(0);
也许还要加下划线...
可用样式的String 常量是
- “正常”
- “粗体”
- “斜体”
- “斜”
- “下划线”
- “直通”