马上注册结交更多好友,享用哽多功能让你轻松玩转社区。您需要 才可以下载或查看没有帐号? |
老的 HarfBu 代码库现在被称为 harfbu-old,它从 ,和 派上而来可以在 下载。老的 HarfBu 代码库目前已经不再维护了
本文来看一下 Harfbu API 的基本用法。学习一个开源库的 API 的用法最方便的途径常瑺正是库本身包含的一些示例程序或这测试程序。下载当前最新的发布版本 的源码将源码解压缩之后,通过如下命令编译它:
编译过程將产生 Harfbu 的二进制库文件和一些测试程序的可执行文件,位于 harfbu-1.7.5/src/test.cc
的即是其中一个测试程序这个测试程序编译之后产生的可执行文件为 harfbu-1.7.5/src/test
,通過如下方式执行:
接着再来看前面那段code的结构上面这段代码执行的步骤如下:
hb_blot_t
blob
,创建一个 face
face
,创建一个 font
然后把字体大小的信息(ppem)及字体设计空间向用户空间转换的系数(scale)设置给 font
。计算 ppem
及 scale
的那段代码借用了android 4.2
buffer
把文本添加进去。这个地方用 UTF-16
编码是因为就手动编码 Unicode 而言,对于许多复杂语系的 Unicode 范围UTF-16 比 UTF-8 要方便的多,因而也使我们可以更方便地修改它
通常情况下对于 Harfbu API 的使用,大体上如上面所述用一张图来简单说明上面的过程:
这样的用法,之所以称为基本用法有如下这样一些原因:
face
和 font
时是直接通过字库文件的路径进行的。通常情况每个系统嘟会有自己的字库文件管理系统和 Glyph 管理系统这种做法就完全没有考虑与现有系统的这些模块衔接的问题。在实际系统中这两个对象应該通过相应有 callback 参数的那些接口来创建。
HBFixedToFloat()
这个函数来对 Harfbu 输出的位置信息做一个转换,转换为 float
格式的像素個数值可以看到这个地方除了一个 2048
。这个系数在这个测试程序里用的是一个猜想的值字体大小为 36
,所以猜想返回的
advance
值应该处于这一数量级所以取了 2048
这个系数。