在文档的开头,我创建了一种新字体:
BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED);
var font1 = new Font(baseFont, 12, Font.NORMAL);
在同一文档的中间某处,我想使用具有不同样式的相同字体(字体家族和大小):粗体和斜体。
我可以以某种方式更改 font1 的样式还是必须创建新的字体?
注意:我知道我可以做到:
font1.SetStyle("bold");
font1.SetStyle("italic");
但是两者呢?也许还下划线 ...
答案 0 :(得分:1)
首先,在
BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED);
您为常规Calibri加载了字体文件。如果您从此Font
派生任何BaseFont
,则无论您设置了哪种样式属性,它都会使用常规的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);
并从匹配的Font
中派生出样式为“正常”的BaseFont
。
话虽如此,现在是您的主要问题:
我知道我可以做到:
font1.SetStyle("bold"); font1.SetStyle("italic");
但是两者呢?也许还会强调...
对于两者,您都可以按照自己的写作方式做
font1.SetStyle("bold");
font1.SetStyle("italic");
即依次设置两个参数,因为SetStyle(String)
实际上更像AddStyle
。但是,您也可以选择
font1.SetStyle("bold italic");
如果您需要将一组选定的样式重置为正常样式,则可以使用SetStyle(int)
,它的工作方式确实像设置员应该的:
font1.SetStyle(0);
也许还有下划线...
可用样式的String
常量是