【发布时间】:2015-12-15 08:45:47
【问题描述】:
我正在尝试使用 mattt 的 UIFontSerialization 类 (here) 将一些 UIFont 对象转换为 NSData,以便能够序列化它们并将它们保存在 CoreData 或 Realm 数据库中,但我'我觉得它不能满足我的需要。
我正在尝试序列化 ttf 文件本身(我从 API 接收),因此我不需要将它们存储在用户的 Documents 目录或任何地方。这个想法是我的数据库存储了渲染字体所需的所有内容。
我在使用CTFontCopyTable 将CTFontRef 转换为CFDataRef 时遇到了麻烦。我正在这样做:
UIFont *originalFont = [UIFont fontWithName:@"Geometos" size:48];
CTFontRef fontRef = CTFontCreateWithName((__bridge CFStringRef)originalFont.fontName, originalFont.pointSize, NULL);
CFDataRef dataRef = CTFontCopyTable(fontRef, kCTFontTableCFF, kCTFontTableOptionNoOptions);
NSData *encodedFont = (__bridge_transfer NSData *)dataRef;
originalFont 很好,在我的包中,显示在标签等中。fontRef 也可以正确创建,不用担心。 dataRef 最终为零。如果我将表标签从CFF 切换到其他东西,它会编码,但后来当我将它解码回UIFont 时,它会失败,所以我想我需要使用CFF表(我不知道 CFF 代表什么)。
有人做过吗?将字体存储为序列化数据?
【问题讨论】:
-
嘿,你有没有设法用
CTFontCopyTable()和kCTFontTableCFF对字体进行编码?我现在遇到了这个问题,似乎无法让它工作
标签: ios serialization core-text uifont