MacOS下動態加載本地字庫並展現

主要分爲兩步,第一步首先要對字體進行本地註冊,執行如下代碼

- (void)loadExternFonts:(NSString *)fontFilePath {
    
    NSArray *availableFonts = [[NSFontManager sharedFontManager] availableFonts];
    NSURL *fontURL = [NSURL fileURLWithPath:fontFilePath];
    CFErrorRef error = NULL;
    if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error))
        {
            CFShow(error);
            NSLog(@"register font failed %@",error);
        }
        else {
            NSLog(@"register font success");
        }
}

第二步,獲取字庫的名稱,並進行加載

-(NSFont *)customFontWithPath:(NSString*)path size:(CGFloat)size {
    
    NSURL *fontUrl = [NSURL fileURLWithPath:path];
    
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);
    
    CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);
    
    CGDataProviderRelease(fontDataProvider);
    
    CTFontManagerRegisterGraphicsFont(fontRef, NULL);
    
    NSString *fontName = CFBridgingRelease(CGFontCopyPostScriptName(fontRef));
    
    NSFont *font = [NSFont fontWithName:fontName size:size];
    
    CGFontRelease(fontRef);
    
    return font;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章