代码之家  ›  专栏  ›  技术社区  ›  TheMixy

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

  •  1
  • TheMixy  · 技术社区  · 7 年前

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

    在同一文档中间的某个位置,我希望使用相同的字体(fontfamine&尺寸)不同风格:粗体;斜体。

    字体1

    注:我知道我能做到:

    font1.SetStyle("bold");
    font1.SetStyle("italic");
    

    下划线 ...

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    首先,在

    BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Calibri.ttf", "Identity-H", BaseFont.EMBEDDED);
    

    加载常规Calibri的字体文件。如果你得到任何 Font 从这个 BaseFont

    • 一个“粗体”风格不仅是通过填充正常的字形轮廓,而且还沿着它抚摸一条线来实现的(这是所谓的“穷人粗体”的变体)
    • “斜体”样式是通过应用一个有点倾斜的变换矩阵来实现的。

    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);
    

    得出一个 字体 .


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

    font1.SetStyle("bold");
    font1.SetStyle("italic");
    

    但这两样呢?也可以加下划线。。。

    为了 二者都 你可以照你写的做

    font1.设置样式(“斜体”);
    

    SetStyle(String) 实际上更像是一个 AddStyle . 不过,你也可以这样做

    font1.SetStyle("bold italic");
    

    SetStyle(int) 它真的像一个setter应该:

    font1.SetStyle(0);
    

    也可以加下划线。。。

    这个 String 可用样式的常量为

    • “正常”
    • “粗体”
    • “斜体”
    • “斜的”
    • “下划线”
    推荐文章