全网首发: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/Java对于TTC字体文件的支持研究
全网首发:JDK/Java对于TTC字体文件的支持研究
413 0
全网首发:JDK/Java对于TTC字体文件的支持研究
|
Java
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
155 0
|
Java
JDK:字体大小是如何生效的
JDK:字体大小是如何生效的
122 0
|
Java
JDK本身是支持浮点字体的
JDK本身是支持浮点字体的
60 0
|
Java
JDK中字体的高度信息ascent/descent/leading是怎么计算的
JDK中字体的高度信息ascent/descent/leading是怎么计算的
157 0
|
Java 索引
关于JDK/Java支持TTC字体的思路
关于JDK/Java支持TTC字体的思路
135 0
|
2月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
328 3
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
57 1
|
3月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
694 4
|
6天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
14 0