gpt4 book ai didi

IOS:注销使用 CoreText 注册的字体

转载 作者:可可西里 更新时间:2023-11-01 03:21:24 28 4
gpt4 key购买 nike

我在运行时加载 ttf 字体并使用 CoreText 注册它们。稍后,当字体更新时,我从 CoreText 中取消注册字体,从服务器下载最新版本并再次向 CoreText 注册字体。

这几乎可以工作,但字体似乎已缓存并且在我的应用程序终止并重新启动之前不会更新。

取消注册字体并将其从任何缓存中删除的正确方法是什么?

我使用此代码注销字体:

NSURL *url = /* My url to the font */;
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef) url);
CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error = nil;
CTFontManagerUnregisterGraphicsFont(newFont, &error);

CGFontRelease(newFont);

if (error) {
NSLog(@"Error unregistering font: %@", error);
}

return newFontName;

有一件事我觉得不对,但不知道如何解决,那就是我如何获得 CGFontRefCGFontCreateWithDataProvider 是否每次都创建新的引用,或者我是否获得对已注册的 CGFontRef 的引用(如果它存在)?有没有更好的方法来获取已注册字体的 CGFontRef

我只使用字体来创建动态 UIImage 实例,所以我认为没有任何标签或其他 UI 元素保留对字体的引用。

感谢您的帮助!

最佳答案

经过一些尝试,我认为这是 iOS 7 的一个错误。
您是否尝试过在 iOS 6 中运行它?

关于IOS:注销使用 CoreText 注册的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18534761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com