Android字体渲染有关概念
来源:互联网 发布:维棠flv软件 编辑:程序博客网 时间:2024/06/10 09:41
Canvas:
画布是应用程序用来绘制Widget或图形等元素的地 方。Froyo和Gingerbread上,画布通过Skia来绘制。
Honeycomb及以后的版本,HWUI被加入了进来,提供了GPU加速支持。在 Ice Cream Sandwich及以后的版本上,HWUI缺省用于图形的绘制。
Skia:
Skia是一组2D绘图的API,它完全通过软件实现。由于性能方面的原因,Skia逐渐被HWUI所替代。
(skia:软件实现的绘图库。已经将其直接绘制到了Framebuffer上)
HWUI:
frameworks\base\libs\hwui
HWUI 可以使UI组件使用GPU加速。HWUI是在Honeycomb中引入进来的,目的是使交互更加快速,及时响应,流畅。在大分辨率的平板电脑上,通过 Skia来绘制动画,会占用很高的CPU资源,进而拖慢整个系统。HWUI需要支持OpenGL ES 2.0的GPU,不能通过软件模拟。(hwui:是代替skia实现基于gpu的绘图和描字的库)
SkBlitter:
不是单独的一个类,指代了一系列根据图像格式、是否包含Shader等区分出来的一系列子类。这一族类执行大块头的渲染任务,把像素绘制上去。
HarfBuzz:
波斯语حرفباز的宽式拉丁化转写,原意“Opentype”[1])是用于文字成型的软件开发库,用以转换Unicode文字到字形指标及方位的过程。最近的HarfBuzz(New HarfBuzz)以多种字体技术为处理目标,而第一版(Old HarfBuzz)只处理OpenType字体。[2] New HarfBuzz只提供功能性的文字成型,而且不提供文字输出及渲染,需要其他库的支持,Pango(含有HarfBuzz)可以用于高级的文字输出,FreeType或Anti-Grain Geometry可以用于文字渲染。根据开发者的安排,New HarfBuzz的目标是让HarfBuzz变得漂亮、灵活、高效且便携的。一些潜在的应用适宜使用HarfBuzz:GUI工具箱、网页浏览器、文字处理软件、设计工具、字体设计工具、终端模拟器、文档批处理器和TeX引擎。(harfbuzz:将字体排列,最明显的从右到左的排列就是harfbuzz实现的)
字库ttf/otf:
字库文件,其中存放了字形的轮廓信息,还会有更高级的Hintting和抗锯齿信息。
Freetype:
将字体光栅化。将uicode代表的字形码从ttf或者otf字库中取出字的轮廓,输出的是一个位图。其中Hinting和抗锯齿都是都美化输出的结果信息,使其更好看一些。
Cmap:
有一个问题,字符如何在TTF文件中找到自己的字形呢,见下面的说明:
详细说明一下cmap表,因为这个表是最重要的。由于存在不同的系统和编码集,cmap表内涵多个子表,每个子表包含的基本信息有系统ID、编码集以及在表的偏移量。一般系统ID有3和1,前者是Windows,后者是Macintosh。一般而言,TTF文件至少包含两张子表,即Macintosh的Roman体系(PlatformID=1, Encoding=0)和Windows的UGI体系(PlatformID=3, Encoding=1),其中Encoding=1就是Unicode编码。这些子表中保存了字符内码到glyph index的对应。拿到glyph index的值可以到表loca中查到对应glyph表glyf中的偏移。
字符影射表(charmap):
字符对应的字体数据称为glyph,字体文件中通常带有一个字符映射表,用来把字符映射到对应glyph的索引值。因为字符集的编码方式有多种,所以可以存在多个子映射表,以支持从不同编码的字符到glyph索引的映射。如果某个字符没有对应的glyph,返回索引0,glyph 0通常显示一个方块或者空格。
- Android字体渲染有关概念
- Android 4.2.2字体渲染流程
- 字体渲染 渲染引擎
- Windows下字体渲染
- Lion 字体渲染修改
- freetype渲染字体范例
- OpenJDK字体渲染修正
- 网站字体渲染过程
- 浅谈字体渲染
- 浅谈字体渲染
- opengl 字体渲染
- 认识字体渲染
- 网站字体渲染过程
- 新型字体渲染方式
- UE4 渲染基础概念
- 有关TrueType字体的
- 有关 freetype 字体显示
- 使用 Cufon 渲染网页字体
- 面试题1:一个人岁数的3次方是四位数,四次方是六位数,并知道此人岁数的3次方和4次方用遍了0--9十个数字,请编程写程序求此人的岁数
- 在pythonanywhere部署你的第一个应用
- 蓝懿iOS 技术内容和心得 10。21
- 黑马程序员--面向对象(下)
- HDU2099
- Android字体渲染有关概念
- 三种配置环境变量的方法--path
- 用汇编程序求R6R7中的双字节有符号数的补码,并将结果存入R1R0
- Contains Duplicate && Contains Duplicate II
- SetWindowLong
- Django开发教程 第三节 模板的使用(一)
- Light OJ 1013 - Love Calculator(LCS+ 计方案数)
- 青蛙的约会【数学算法总结】
- java.lang.RuntimeException: Can't create handler inside thread that has not