JDK:Font.canDisplay()是如何生效的

简介: JDK:Font.canDisplay()是如何生效的

之前记得某些情况下,Font.canDisplay()有问题。今天试了一下Times New Roman字体对泰的结果,得到了false,说明正确工作了。


 那么Font.canDisplay()是如何生效的?


调用过程

Font.canDisplay(char) line: 2108    

TrueTypeFont(Font2D).canDisplay(char) line: 545    

TrueTypeGlyphMapper(CharToGlyphMapper).canDisplay(char) line: 55    


这个函数中,charToGlyph()得到字符图像索引,如果是-1就是无法显示。


如何得到图像索引

TrueTypeGlyphMapper.charToGlyph(char) line: 149    

TrueTypeGlyphMapper.getGlyphFromCMAP(int) line: 84    

CMap$CMapFormat4.getGlyph(int) line: 587    


先通过二分法,找到char对应的index。


如果index合法(落在startCount和endCount之间),就可以找到索引。否则返回0。


canDisplay()

如果返回的glyph与missingGlyph不同,就可以显示。相同肯定无法显示。


missingGlyph初始化为-1,TrueTypeGlyphMapper()中初始化为0。

目录
相关文章
|
4月前
|
缓存 前端开发 Linux
如何使用 @font-face 和 font-display 在 CSS 中定义自定义字体
如何使用 @font-face 和 font-display 在 CSS 中定义自定义字体
114 0
|
7月前
|
前端开发
字体浓淡[font-weight]
字体浓淡[font-weight]。
33 2
|
7月前
|
前端开发
字体变化[font-variant]
字体变化[font-variant]。
36 2
|
Java
JDK:字体大小是如何生效的
JDK:字体大小是如何生效的
127 0
泰山JDK8新实现的一个字体斜体效果
泰山JDK8新实现的一个字体斜体效果
108 0
泰山JDK8新实现的一个字体斜体效果
|
Java
一篇介绍OpenJDK字体的文章
一篇介绍OpenJDK字体的文章
283 0
|
Java Windows 数据格式
解决Font 'STSong-light' is not available to the JVM.
困扰两天的问题,今天得到解决. 由于公司早些时候的产品是ireport-1.x系列下开发的,现在ireport都出到5.x系列,产品要做升级,就把老的xml文件拿来,放到新的ireport中,预览出来发现报错,各种报错.
4193 0