我正在尝试嵌入arial粗体字体,但会出现运行时错误
无法识别带有Identity-H的字体ARIALBD.TTF
我将字体嵌入purepdf库中,以便通过flex app生成pdf文件。
这里是代码。
[Embed( source="ARIALBD.TTF", mimeType="application/octet-stream" )]
public static const arialb:Class;
if ((style & Font.BOLD) == Font.BOLD)
f = BaseFont.createFont(arialb, BaseFont.IDENTITY_H);
答案 0 :(得分:1)
PurePDF只接受UNICODE字体
检查您的字体是否为Unicode字体
尝试使用Unicode字体并使用小写* .ttf编写扩展名* .TTF,因为在PurePDF BaseFont类中检查扩展名如下。
else if ( StringUtils.endsWith( nameBase, ".ttf" ) || StringUtils.endsWith( nameBase, ".otf" ) || nameBase.toLowerCase()
.indexOf( ".ttc," ) > 0 ) {
if( encoding == IDENTITY_H || encoding == IDENTITY_V)
{
fontBuilt = new TrueTypeFontUnicode();
TrueTypeFontUnicode(fontBuilt).init( name, encoding, embedded, ttfAfm, false, forceRead );
} else {
fontBuilt = new TrueTypeFont();
TrueTypeFont(fontBuilt).init( name, encoding, embedded, ttfAfm, false, forceRead );
TrueTypeFont(fontBuilt).fastWinansi
= encoding == CP1252;
} }
答案 1 :(得分:0)
如果您以这种方式引用它,则需要将它放在项目的根目录下,如果它与您需要将包路径添加到Embed路径所在的类相同的包中。 Embed路径是相对于构建路径而不是引用它的类,该类在编译期间也从构建路径引用,但在解析Embeds时它不使用相对于类的路径。