Java 如何找出字体中没有的字母?
如果我这样做:Java 如何找出字体中没有的字母?,java,fonts,itext,itext7,Java,Fonts,Itext,Itext7,如果我这样做: PdfFont font = PdfFontFactory.createFont(font_without_a, PdfEncodings.IDENTITY_H, true); System.out.println("font_without_a " + font.getWidth("a",17)); 输出:font_不带_a 5.848 字体没有字母“a” 字体: 对于字母a,这是一个示例,可以是任何字符 如何找出字体中没有的字母
PdfFont font = PdfFontFactory.createFont(font_without_a, PdfEncodings.IDENTITY_H, true);
System.out.println("font_without_a " + font.getWidth("a",17));
输出:font_不带_a 5.848
字体没有字母“a”
字体:
对于字母a,这是一个示例,可以是任何字符
如何找出字体中没有的字母
您可以使用containsGlyph
方法检查字体是否具有给定字符的字形。但是,此方法不会尝试确定字体中该字形的绘图说明是否与所讨论的字符相关
您共享的字体程序ArtScript.ttf确实包含字母“a”的字形,即使该字形没有绘图说明。因此,PdfFont
在被询问时正确地输出true
System.out.println(font.containsGlyph('a'));
我实际上从你的字体程序中删除了这个字形。对于此字体,该行代码输出false
你在评论中说
我知道即使没有字母,也有一个带边框的空白区域,但是否有可能以某种方式将该区域定义为空白区域
使用字体编辑器,您实际上可以删除字形,例如,在FontForge中使用“剪切”或“分离并删除字形”,正如我前面所做的那样。字体没有字母“a”-这是什么意思?它没有看起来像“a”的标志符号吗?或者它没有由“a”的字符代码映射到的标志符号?您可能应该在没有字体a的情况下共享您的字体字体。我完全同意@mkl,这个问题目前还不清楚,
font.getWidth
为您提供字形a
的宽度,因为它为您提供了宽度,所以它肯定意味着字体包含此字母。因此,请澄清您是如何检测到a
丢失的。我知道,即使没有字母,也有一个带边框的空白区域,但是否有可能以某种方式将该区域定义为空白区域?啊,好吧,现在您的问题清楚了。不幸的是,iText没有这种可能性,因为iText不解析glyph指令。这是字体的问题