如何使用iTextSharp设置等宽字体

本文关键字:字体 设置 何使用 iTextSharp | 更新日期: 2023-09-27 18:28:12

到目前为止,我就是这样管理我的字体的:

BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED, false);
Font titleFont = new Font(bf, 20);

现在,我想设置单色(固定宽度)字体用于字符串格式化。我是否必须下载一些ttf文件(正如我所读到的),或者iTextSharp 中已经包含了单空间字体

如何使用iTextSharp设置等宽字体

如果你不想嵌入字体,你可以使用这个:

BaseFont bf = BaseFont.createFont(
    BaseFont.COURIER, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
Font titleFont = new Font(bf, 20);

Helvetica是一种比例字体。如果你需要一个等宽字体,你需要使用像Courier这样的字体。请参阅维基百科上关于等宽字体的页面。

请注意,您的代码也没有创建嵌入的字体:Helvetica(就像Courier一样)是所谓的标准类型1字体之一。标准类型1字体从不嵌入,因为iText只能访问这些字体的AFM文件,而不能访问PFB文件。例如:为什么我在创建PDFA/1a时会出现字体嵌入错误?。在其他一些情况下,即使你不想嵌入,iText也会嵌入字体。例如:为什么iText在我指定不嵌入的情况下也要嵌入字体?

如果你想嵌入单空间字体,或者如果你不喜欢Courier,你需要一个字体文件,例如ttf文件。我在谷歌上搜索了"更性感"的单格字体,发现了以下页面:十大最受欢迎的单格字形和十大免费的编程单格字体。如果你在Windows上工作,你可以在Courier New和Lucida Sans打字机之间进行选择,如本知识库文章所述。

一旦您有了TTF文件,只需使用标准的iText代码。在Lucida Sans常规打字机的情况下,你需要这样的东西:

BaseFont bf = BaseFont.createFont(
    "c:/windows/fonts/LTYPE.TTF", BaseFont.CP1250, BaseFont.EMBEDDED);
Font titleFont = new Font(bf, 20);

注意:请始终检查所使用的字体是否支持要使用的编码。不要以为每个字体都知道每个编码。

请注意,大多数字体都不是免费的。另请参阅使用iText时是否需要Windows字体的许可证?。事实上,你可以下载字体并不意味着你可以免费使用它(iText也是如此;如果你为客户构建应用程序,你必须购买iText许可证)。