到目前为止,这是我管理字体的方式:
uint4 pixel = read_imageui(srcImg, sampler, coord);
uint4 pixel2 = (uint4)(coord.x, coord.y,0,0);
pixel=pixel + pixel2;
现在,我想设置等宽(固定宽度)字体以进行字符串格式化。我是否必须下载一些ttf文件(因为我正在阅读它)或者iTextSharp中已经包含等宽字体
答案 0 :(得分:3)
如果您不想嵌入字体,可以使用:
BaseFont bf = BaseFont.createFont(
BaseFont.COURIER, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
Font titleFont = new Font(bf, 20);
Helvetica是一种比例字体。如果需要等宽字体,则需要使用Courier等字体。有关等宽字体,请参阅the Wikipedia page。
请注意,您的代码并未创建嵌入的字体:Helvetica(就像Courier一样)是所谓的标准类型1字体之一。从不嵌入标准Type 1字体,因为iText只能访问这些字体的AFM文件,而不能访问PFB文件。请阅读:Why do I get a font embedding error when creating PDFA/1a?。在其他一些情况下,即使您不想,iText也会嵌入字体。例如,请参阅:Why is iText embedding a font even when I specify not to embed?
如果你想嵌入等宽字体,或者如果你不喜欢Courier,你需要一个字体文件,例如一个ttf文件。我用Google搜索了#34;性感的"等宽字体,我找到了这些网页:Top 10 Most Popular Monospaced Fonts和10 great free monospaced fonts for programming。如果您在Windows上工作,可以选择Courier New和Lucida Sans打字机,如knowledge base article所述。
获得TTF文件后,只需使用标准的iText代码即可。对于Lucida Sans Typewriter Regular,你需要这样的东西:
BaseFont bf = BaseFont.createFont(
"c:/windows/fonts/LTYPE.TTF", BaseFont.CP1250, BaseFont.EMBEDDED);
Font titleFont = new Font(bf, 20);
注意:请始终检查您要使用的字体是否支持您要使用的字体。不要以为每种字体都知道每种编码。
请注意,大多数字体都不是免费的。另见Do I need a license for Windows fonts when using iText?。您可以下载字体的事实并不意味着您可以免费使用它(iText也是如此;如果您要为客户构建应用程序,您必须购买iText许可证)。