Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找出字体中没有的字母?_Java_Fonts_Itext_Itext7 - Fatal编程技术网

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指令。这是字体的问题