Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp将字体样式应用于现有字体_C#_Itext_Font Style - Fatal编程技术网

C# iTextSharp将字体样式应用于现有字体

C# iTextSharp将字体样式应用于现有字体,c#,itext,font-style,C#,Itext,Font Style,在文档的开头,我创建了一种新字体: BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED); var font1 = new Font(baseFont, 12, Font.NORMAL); 在同一文档的某个地方,我想使用不同字体的字体(FANTHANCE和SUPE):粗体和斜体。 我是否可以更改font1的样式,还是必须创建新字体 注:我

在文档的开头,我创建了一种新字体:

BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED);
var font1 = new Font(baseFont, 12, Font.NORMAL);

在同一文档的某个地方,我想使用不同字体的字体(FANTHANCE和SUPE):粗体和斜体。

我是否可以更改font1的样式,还是必须创建新字体

注:我知道我可以做到:

font1.SetStyle("bold");
font1.SetStyle("italic");
font1.SetStyle("bold");
font1.SetStyle("italic");
但两者如何?也可能在下面画线。

首先,在

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
导出样式为“normal”的
Font


话虽如此,现在谈谈你的主要问题:

我知道我能做到:

font1.SetStyle("bold");
font1.SetStyle("italic");
font1.SetStyle("bold");
font1.SetStyle("italic");
但两者如何?也许还可以强调

对于这两种情况,你可以简单地按照你写的做

font1.SetStyle("bold");
font1.SetStyle("italic");
i、 e.按顺序设置这两种样式,因为
SetStyle(String)
实际上更像
AddStyle
。不过,你也可以这样做

font1.SetStyle("bold italic");
如果需要将所选样式集重置为正常,可以使用
SetStyle(int)
,它的工作原理与setter应该:

font1.SetStyle(0);
也许还可以强调

可用样式的
字符串
常量为

  • “正常”
  • “粗体”
  • “斜体”
  • “斜的”
  • “下划线”
  • “线路通过”