全网首发:JDK绘制文字:七、使用字体图像进行绘制

简介: 全网首发:JDK绘制文字:七、使用字体图像进行绘制

  如何获取字体图像已经搞清楚了,那么是怎么绘制的呢?

  书接上文:

全网首发:JDK绘制文字:六、字符对应的字体图像加载流程_柳鲲鹏的博客-CSDN博客

  • FreetypeFontScaler.getGlyphImage()

  调用本地函数getGlyphImageNative()

  • freetypeScaler.c Java_sun_font_FreetypeFontScaler_getGlyphImageNative

getGlyphImageNativeInternal()

  在这个函数中,加载了字体图像。然后根据不同的图像格式,使用不同的函数进行复制(CopyBW2Grey8/CopyGrey4ToGrey8/CopyFTSubpixelToSubpixel/CopyFTSubpixelVToSubpixel)

  复制到哪里?GlyphInfo.image。这个对象是在函数中新产生的。一切处理后,调用ptr_to_jlong把指针转换为long后返回。

  • FileFontStrike.getGlyphImagePtrs()

  得到图像的指针后:

缓存起来:

setCachedGlyphPtr()

setCachedGlyphPtrInternal()

setCachedGlyphPtr()

setCachedGlyphPtrInternal():segLongGlyphImages[segIndex][subIndex] = glyphPtr;

复制到参数中的image

  • GlyphList.setFromChars()

  从这里可以看到,传递到getGlyphImagePtrs()的是本类的字段images。之后的绘制,肯定使用这个数据。

  疑问:GlyphList是每次新产生的?或者是images长度一直为1?

  • SolidTextRenderer(GlyphListPipe).drawChars()

调用setFromChars()之后,紧跟着就是drawGlyphList()

  • SolidTextRenderer.drawGlyphList()

sg2d.loops.drawGlyphListLoop.DrawGlyphList(sg2d, sg2d.surfaceData, gl);

  • DrawGlyphList.DrawGlyphList()

  我们这个已经熟悉了,是一个本地函数。

  • DrawGlyphList.c Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList

参数glyphlist就是GlyphList,字段images有字体图像。

这个函数先是获取绘制句柄,再绘制图像。具体操作又是什么?

目录
相关文章
|
Java
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
110 0
|
Java
JDK本身是支持浮点字体的
JDK本身是支持浮点字体的
37 0
|
Java
JDK中字体的高度信息ascent/descent/leading是怎么计算的
JDK中字体的高度信息ascent/descent/leading是怎么计算的
104 0
|
Java 索引
关于JDK/Java支持TTC字体的思路
关于JDK/Java支持TTC字体的思路
80 0
|
Java 索引
全网首发:JDK/Java对于TTC字体文件的支持研究
全网首发:JDK/Java对于TTC字体文件的支持研究
300 0
全网首发:JDK/Java对于TTC字体文件的支持研究
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
91 0
|
2月前
|
Java 应用服务中间件 开发工具
最简单JDK安装指南(小白也能一次性安装完成)
最简单JDK安装指南(小白也能一次性安装完成)
|
3月前
|
Java
安装JAVA_JDK快速入门
安装JAVA_JDK快速入门
|
21小时前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
12 2
|
9天前
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
24 0