2012-08-02 104 views
1

我有兩個自定義的.ttf和.otf字體。我想使用此行代碼來加載它們在CoreText:CoreText不加載自定義字體

CTFontRef fontRef = CTFontCreateWithName(CFSTR("Ronnia"), self.fontSize, NULL); 

無奈的是它與像「美國打字機」安裝的字體。但是,什麼是更令人困惑的是,我發現我安裝自定義字體與UILabels工作fontWithName

回答

-1

如果自定義字體具有的UILabel工作,那麼它應該能夠在創建後CoreText工作作爲

fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL); 

字體,您需要將它設置爲fontRef,以便爲NSAttributedString的歸屬字典中的值kCTFontAttributeName使用。這個對我有用。

1

爲了在iOS中使用自定義字體,只需通過將&拖放到您的項目來添加您的字體。在Info.plist中使用關鍵字「應用程序提供的字體」提到帶有擴展名的字體名稱數組。

for (NSString* family in [UIFont familyNames]) 
{ 
    DebugLog(@"FONT FAMILY: %@", family); 

    for (NSString *name in [UIFont fontNamesForFamilyName: family]) 
    { 
    DebugLog(@" %@", name); 
    } 
} 

控制檯打印:

宋體希伯來語
ArialHebrew粗體
ArialHebrew光強
ArialHebrew

宋體然後使用下面的代碼打印所有字體系列名稱
宋體粗體
宋體

格魯吉亞
格魯吉亞BOLDITALIC
格魯吉亞粗體
格魯吉亞斜體
格魯吉亞

然後從控制檯,您將獲得實際的字體 - 名稱(如上所述)。使用下面的代碼來創建字體 -

在覈心文本:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);

UIKit中: UIFont *font = [UIFont fontWithName:fontName size:10];

注:此處fontName = @"Calibri-Bold"是不帶擴展名。