iOS 中的动态字体下载需要每次启动都下载 com_apple_MobileAsset_Font.xml?

Dynamic font download in iOS need download com_apple_MobileAsset_Font.xml every launch?

我想在我的应用程序中使用动态字体。我在苹果的 sample code 中发现他们每次启动时都会下载 xml,即使我之前已经下载过该字体。

为什么?这个文件有什么用?

此示例代码是否存在错误,或者如果我想使用此功能,我需要接受此错误。

示例代码通常旨在引导开发人员朝着正确的方向前进,而不是为他们提供功能齐全且经过优化的解决方案。

您应该在下载后保存字体数据,然后在启动时您可以使用类似这样的代码在本地检索它。

+ (void)loadFontAtPath:(NSString *)path {
    NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
    if (!data) {
        NSLog(@"Failed to load font. Data at path is null");
        return;
    }

    CFErrorRef error;
    CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
    CGFontRef font = CGFontCreateWithDataProvider(provider);

    if (!CTFontManagerRegisterGraphicsFont(font, &error)) {
        CFStringRef errorDescription = CFErrorCopyDescription(error);
        NSLog(@"Failed to load font: %@", errorDescription);
        CFRelease(errorDescription);
    }

    CFRelease(font);
    CFRelease(provider);
}

从那里你可以用 [UIFont fontWithName:size:] 正常称呼它。

另外向 URL 请求可能对您有用。 CTFontManagerRegisterFontsForURL