我正在尝试使用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代表什么)。
有人做过这个吗?存储字体作为序列化数据?
答案 0 :(得分:0)
试试这个。
UIFont *originalFont = [UIFont fontWithName:@"Arial" size:48];//Geometos
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:originalFont];
NSFont *font = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"font:%@",font);