JDK:Font.canDisplay()是如何生效的
Posted 柳鲲鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于JDK:Font.canDisplay()是如何生效的的主要内容,如果未能解决你的问题,请参考以下文章
Java 8 的 parallelStream 中产生了多少线程?