skia字体绘制的实现简介

Skia在实现字体绘制方面,采用了一种称为“文本操作”的技术。这种技术包含了字体库、文本路径和字形对象等多个组成部分,它允许开发者将字符或文本内容以路径的形式呈现出来。

步骤

具体实现过程如下:

1. 获取绘制文本的字体对象(SkTypeface)。
获取字体对象可以通过SkTypeface类的静态方法createFromFile()、createFromStream()、createFromData()等来实现,也可以通过指定字体族(family name)、字体风格(style)或字体名称(font name)等来创建。

2. 根据字体对象创建文本画笔(SkPaint)。
文本画笔(SkPaint)是一种用于描述绘制文本参数的对象,其中包含了字体信息、字号、颜色、加粗、倾斜等属性。可以通过SkPaint的构造函数或者set*()方法来设置这些参数。

3. 将文本内容转化成文本路径(SkPath)。
在Skia中,文本内容是通过字符集来存储的,因此在进行绘制之前,需要先将字符转化成对应的文本路径(SkPath)对象。这一过程可以通过SkPath的addText()方法来实现。

4. 根据文本路径和文本画笔在Canvas上绘制文本。
最后一步是将文本路径和文本画笔结合起来,并在Canvas上进行文本绘制。可以使用Canvas的drawPath()方法或drawTextOnPath()方法来完成这一过程。

sktypeface

SkTypeface 是 Skia 中用来表示字体且实现文本绘制的一个类,它封装了字体的信息和字体库的管理。在 Skia 中,使用 SkTypeface 可以支持不同种类、不同格式的字体,例如 TrueType、OpenType、Type 1、CFF 等多种格式,并且支持多语言环境和字符集。SkTypeface 中保存了字体的笔划(outline)、点阵(bitmaps)或向量轮廓(vector outlines)等多种表示方式,可以通过绘制路径或渲染位图的方式来实现文本的绘制。

SkTypeface 类提供了多种构造函数来创建字体对象,例如根据字体文件路径、字体数据块、字体家族名称、字体样式等。在创建 SkTypeface 对象时,需要选择合适的参数进行设置,以实现不同字体样式、大小和颜色等属性的控制。除了创建 SkTypeface 对象外,Skia 也支持直接使用系统内置字体,例如使用系统字体库中的字体或者直接使用 SFUI 默认字体等。

本文结束。

你可能感兴趣的:(sina)