版本:freetype-2.3.7问题:FT_New_Memory_Face的第二个参数是要传入的字体数据,这个数据是指的整个字体文件的数据吗?
PDF中可以存储字体数据,对于里边存储的字体二进制数据是可以通过FT_New_Memory_Face加载的,对于某种字体:字体文件很大,但存储在PDF里边的字体数据流却不大(是经过ZIP压缩的,但还是差的太多了),我觉得存储的应该是部分字体数据。总之就是想知道这第二个参数是什么数据,和什么有关系。如何通过字体文件提取应该传入FT_New_Memory_Face的数据?
PDF中可以存储字体数据,对于里边存储的字体二进制数据是可以通过FT_New_Memory_Face加载的,对于某种字体:字体文件很大,但存储在PDF里边的字体数据流却不大(是经过ZIP压缩的,但还是差的太多了),我觉得存储的应该是部分字体数据。总之就是想知道这第二个参数是什么数据,和什么有关系。如何通过字体文件提取应该传入FT_New_Memory_Face的数据?
FT_New_Face函数从一个字体文件装载一个字体face,一个face对象描述了一个特定的字样和风格,其返回值为FT_Err_Unknown_File_Format,表示可以打开,读这个文件,但是不支持它的格式,其他非零的返回值,表示不能打开跟读该文件.返回零表示装载成功. 函数原型为:
FT_EXPORT( FT_Error )
FT_New_Face( FT_Library library, // 库的句柄
const char* filepathname, // 字体文件路径名
FT_Long face_index, // 字体face的索引,该索引指示你想装载的face如果这个值太大,函数将会返回一个错误Index为0总是正确的。
FT_Face *aface ); // 一个指向新建的face对象的指针 freetype还提供从内存装载字体face的函数,函数原型为:
FT_EXPORT( FT_Error )
FT_New_Memory_Face( FT_Library library, // 库的句柄
const FT_Byte* file_base, // 指向字体数据的第一个字节
FT_Long file_size, // 缓存的大小(以字节表示)
FT_Long face_index, // face索引
FT_Face *aface ); // face对象的指针
****************************************/
谢谢回复,我现在想知道的是:FT_New_Memory_Face第二个参数要传入的数据是什么,我能把整个字体文件读出来,然后传给它吗?
如果可以,那我必须传入整个字体文件的数据吗?是不是传入字体的某一部分就可以?PDF的字体有嵌入或不嵌入两种方式,对于不嵌入字体的PDF文件我现在想把本地字体数据读出来,然后写入PDF文件。
现在的问题是:怎么读取字体文件数据,使用freetype库需要提取什么数据,不应该是直接把字体文件写入PDF吧。
要写入PDF的位置,及如何读取显示等都没问题了。就差这一个需要解决了。