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

  书接上文:

全网首发: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有字体图像。

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

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

  1. 绘制文字(QFont字体)

    QPainter绘制文字的话使用的函数为 QPainter::drawText() QPainter::drawText()有多种重载方式.  根据坐标直接绘画文字: void Widget::pai ...

  2. python蟒蛇绘制文字_【Python】蟒蛇绘制

    来画一只你的小蛇吧! 1. 2. 3.了解turtle库 Turtle,也叫海龟渲染器,使用Turtle库画图也叫海龟作图.Turtle库是Python语言中一个很流行的绘制图像的函数库.海龟渲染器, ...

  3. CAD参数绘制文字(网页版)

    1.在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 2.主要用到函数说明:_DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  4. qt char*转int_Qt在Linux下绘制文字原理-使用FreeType来绘制字形

    原文链接 Qt源码那些事儿-Qt绘制文字原理_使用FreeType来绘制字形​www.cryfeifei.cn 前言 Qt在Linux绘制字体是使用的FreeType. FreeType是一个用C语言 ...

  5. 【Qt】2D绘图之绘制文字

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 基本绘制 04. 使用范围绘制文字 05. 使用字体绘制文字 06. 附录 01. 概述 Qt中除了绘制图形以外,还可以使 ...

  6. H5canvas(绘制矩形,绘制圆形,绘制线段,绘制文字,绘制曲线)

    Canvas简介 canvas 最早由Apple引入WebKit,用于Mac OS X 的 Dashboard,后来又在Safari和Google Chrome被实现. 基于 Gecko 1.8的浏览 ...

  7. CAD交互绘制文字(网页版)

    1.在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 2.主要用到函数说明:_DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  8. html canvas图片上绘制文字,如何用HTML5 CANVAS绘制文字

    您可能感兴趣的话题: 绘制文字 核心提示:如何在HTML5 canvas上绘制绘制文字,并且可以设置文字的字体,大小和颜色. 我们可以在HTML5 canvas上绘制绘制文字,并且可以设置文字的字体, ...

  9. 在图片UIImage上绘制文字(字符串文字转图片)

    很多时候我们需要在一张背景图上面绘制文字并且重新生成一张带有绘制好文字的图片,一开始我使用的是我上篇博客中提到的先自定义一个UIView然后再UIView上面绘制文字,绘制完成之后再通过将UIView ...

  10. R语言使用pheatmap绘制热力图(数据归一化、行列聚类、注释、文字角度、字体)

    R语言使用pheatmap绘制热力图(数据归一化.行列聚类.注释.文字角度.字体) 目录

最新文章

  1. controller是什么意思_好文推荐:什么是领域驱动设计?DDD?
  2. 可微偏导数一定存在_【导数压轴题】“偏导数”与含参不等式
  3. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
  4. 希尔排序的基本原理及实现
  5. linux 系统的内核,[科普] Linux 的内核与 Linux 系统之间的关系
  6. 易格斯拖链选型手册_拖链相关知识
  7. androidid什么时候会变_今天是“三九”为什么老话说:三九冰上走一走,过年也能露一手!...
  8. 手势模型和Angular Material的实现
  9. C# SQLite 数据库操作实例2
  10. 《程序员在第一季度追姐姐的书》——提升自己的形象气质
  11. 二项分布的期望方差证明_关于二项分布
  12. 灭顶之灾之网络电视精灵——S2 2.8
  13. iphone圆点怎么弄出来_iPhone11 怎么开启小圆圈?苹果11怎么打开小圆点?
  14. 【LwM2M】LwM2M协议官方文档
  15. 【VSCode】SSH远程连接服务器
  16. win10不能访问服务器共享文件夹权限,win10没有权限访问共享文件夹(有效解决共享文件夹权限问题)...
  17. adb 查看浏览器内核版本
  18. 【解决方案】SkeyeARS及SkeyeIVMS技术助力地铁安防视频监控系统建设
  19. u邮件收件服务器密码是什么,U-Mail邮件服务器加密技术给邮件上安全锁
  20. Layim 聊天功能

热门文章

  1. 哈夫曼树的生成详解(C++)
  2. beanutils.copyproperties属性值丢失_数据质量 | 脏数据?缺失值、异常值和一致性分析?...
  3. excel不显示0_Excel2007:Excel表格中完整输入身份证号码的几种方法
  4. 绘制一幅蓝图_如何给新家绘制一张生活蓝图
  5. 微软推出python免费在线教程视频_重磅发布!微软推出 Python 短视频入门课,直冲 GitHub 热榜第一!...
  6. python静态地图_Matplotlib Toolkits:地图绘制工具
  7. docker 多容器连接 以Nginx+Php为例
  8. mysql 分组后,统计记录条数
  9. php 获取域名,域名端口,路径 $_SERVER变量
  10. android形状属性、锁屏密码、动态模糊、kotlin项目、抖音动画、记账app、视频播放器等源码...