FreeType与CFF

FreeTypeCFF

CFF Engine其实一直存在于Freetype的源码中的,只不过是Freetype开发团队实现的。最近突然火起来了的原因是Adobe将其CFF Engine的源码合并了进去,这使得Freetype处理cff或者otf的效果会更加好。毕竟这个加入了Adobe的心血。

Freetype CFF典型版本:2.5.2,从这个版本正式加入了Adobe CFF Engine.

2.5.2以上版本的Freetype编译时默认使能了Adobe,应用程序的使用,这里有FreeType-2.5.2 API Reference The CFF driver教程。

Freetype教程:http://www.freetype.org/freetype2/docs/tutorial/step1.html

Freetype CFF应用程序教程:http://lists.nongnu.org/archive/html/freetype-devel/2013-05/msg00000.html

Freetype CFF编译教程:

Freetype LWM上的讨论:Adobe CFF rasterizer contributed to FreeType

 

下面是我实验的过程,1.编译2.5.2版本的Freetype2.在原有测试程序中添加Adobe CFF Engine.

1.编译2.5.2版本的Freetype.

$ cd ~/Downloads

$ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.2.tar.gz

$ tar zxvf freetype-2.5.2.tar.gz

$ cd freetype-2.5.2/

$ ./configure

$ make

$ sudo make install

2.编译运行测试程序

结合https://github.com/acarrico/ex-sdl-freetype-harfbuzz/blob/master/ex-sdl-freetype-harfbuzz.c和思源字体。

基于以上例子,添加如下内容:

#include FT_CFF_DRIVER_H

#include FT_MODULE_H

.....

int         engine = FT_CFF_HINTING_ADOBE;

assert(!FT_Property_Set( ft_library, "cff", "hinting-engine", &engine ));

两样是如下的图,可以看出并没有明显的效果。如何才能直观地看到效果呢?目前来说还显示有些困难,只有在极端条件下才能有明显的效果吧,比如DPI只有85LCD上。但是这也是一个漫长的过程。能够显示了,再更新。

 

其它问题:

1. /usr/bin/install cannot stat `./builds/unix/freetype-config'

编译时遇到如上错误,是因为我使用了autoconfig而不是configuration造成的。

2.undefined symbol: FT_Property_Set

运行程序的时候遇到的错误,编译可以过,运行不可以,说明编译和运行使用的不是同一个库。通过readelf -s /usr/local/lib/libfreetype.so | grep FT_P可以找到,但是在gcc中那个确实是找不到符号。如下操作解决:

sudo cp /usr/local/lib/libfreetype.so.6.11.1 /usr/lib/i386-linux-gnu/

sudo rm /usr/lib/i386-linux-gnu/libfreetype.so

sudo ln /usr/lib/i386-linux-gnu/libfreetype.so.6.11.1 /usr/lib/i386-linux-gnu/libfreetype.so

sudo ldconfig

你可能感兴趣的:(freetype)