2016-01-17 45 views
1

我正在使用中文字符。我的一些字符不存在於Unicode中。我正在使用PUA .ttf來支持我的非通用字符。讓我的字體在不調用的情況下作爲「回退」工作

當我打電話

UIFont fontWithName:@"BabelStoneHanPUA"

一切都是沒說的,我讓我的漂亮美麗的字符[第二個是精確的。

enter image description here

當我不叫什麼我只是得到一個:

(閱讀:大丑問號)。

enter image description here

雖然UIFont fontWithName:@"BabelStoneHanPUA"似乎沒有什麼亂七八糟的,我真的很喜歡我已經包括,可用字體爲「回退」工作,或無需調用它的工作。

是否有反正我可以讓我的PUA字體工作,而無需將其設置爲字體?

+0

是否https://developer.xamarin.com/ api/type/UIKit.UIFont的字體後備部分不起作用? –

回答

0
  1. 在使用字體之前,請調用此方法以添加回退。

    func addFallbacktoFont(font:UIFont)->UIFont{ 
        let originalDescriptor = font.fontDescriptor() 
    
        let fallbackDescriptor = originalDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorNameAttribute:"BabelStoneHanPUA"]) 
    
        let repairedDescriptor = originalDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorCascadeListAttribute:[fallbackDescriptor]]) 
    
        return UIFont(descriptor: repairedDescriptor, size: 0.0) 
    } 
    
  2. 如果在原來的字體已經存在你的角色,調用此方法來刪除這些字符添加後回退:

    func removeCharacters(characterString:String,font:UIFont)->UIFont{ 
        let originalDescriptor = font.fontDescriptor() 
    
        let cset = (originalDescriptor.objectForKey(UIFontDescriptorCharacterSetAttribute) as! NSCharacterSet).mutableCopy(); 
    
        cset.removeCharactersInString(characterString) 
    
        let removedDescriptor = originalDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorCharacterSetAttribute:cset]) 
    
        return UIFont(descriptor: removedDescriptor, size: 0.0) 
    } 
    
相關問題