在 iText 7 中,如何知道字体中是否存在特定字符?
In iText 7, How to know whether specific character exists in font?
在iText 7中,如何知道字体中是否存在特定字符?
在 iText 5 中,我使用了以下代码。
Font font = FontFactory.getFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
BaseFont baseFont = font.getBaseFont();
boolean isExist = baseFont.charExists(ch);
这在 iText 7 中可行吗?
我不确定它是否适用于任何字体,因为我还没有测试所有字体,但我的第一次尝试是在 PdfFont
中使用以下方法:
public abstract Glyph getGlyph(int unicode);
如果字体不包含此 Unicode 代码点的字形,则此方法应该 return null
.
当然
File windowsFontDir = new File("C:\Windows\Fonts");
for(File fontFile : windowsFontDir.listFiles()) {
try {
PdfFont font = PdfFontFactory.createFont(fontFile.getAbsolutePath());
if(font.containsGlyph((int) 'a'))
{
System.out.println("Font " + fontFile.getName() + " has the required glyph.");
}else
{
System.out.println("Font " + fontFile.getName() + " does NOT have the required glyph.");
}
}catch(Exception ex){}
}
这会打印如下内容:
Font AGENCYB.TTF has the required glyph.
Font AGENCYR.TTF has the required glyph.
Font ALGER.TTF has the required glyph.
Font ANTQUAB.TTF has the required glyph.
...
在iText 7中,如何知道字体中是否存在特定字符?
在 iText 5 中,我使用了以下代码。
Font font = FontFactory.getFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
BaseFont baseFont = font.getBaseFont();
boolean isExist = baseFont.charExists(ch);
这在 iText 7 中可行吗?
我不确定它是否适用于任何字体,因为我还没有测试所有字体,但我的第一次尝试是在 PdfFont
中使用以下方法:
public abstract Glyph getGlyph(int unicode);
如果字体不包含此 Unicode 代码点的字形,则此方法应该 return null
.
当然
File windowsFontDir = new File("C:\Windows\Fonts");
for(File fontFile : windowsFontDir.listFiles()) {
try {
PdfFont font = PdfFontFactory.createFont(fontFile.getAbsolutePath());
if(font.containsGlyph((int) 'a'))
{
System.out.println("Font " + fontFile.getName() + " has the required glyph.");
}else
{
System.out.println("Font " + fontFile.getName() + " does NOT have the required glyph.");
}
}catch(Exception ex){}
}
这会打印如下内容:
Font AGENCYB.TTF has the required glyph.
Font AGENCYR.TTF has the required glyph.
Font ALGER.TTF has the required glyph.
Font ANTQUAB.TTF has the required glyph.
...