從本地讀取字型 並註冊
讀取方法一 :
+(instancetype)customfont:(cgfloat)fontsizecferrorref error;
cgdataproviderref providerref =cgdataprovidercreatewithcfdata((__bridge cfdataref)dynamicfontdata);
cgfontref newfont =cgfontcreatewithdataprovider(providerref);
cfstringref fontname =cgfontcopyfullname(newfont);
nsstring *fontnamestring = (__bridge id
)(fontname);
if ( ![self isresisted:fontnamestring] && ! ctfontmanagerregistergraphicsfont(newfont, &error))
cfrelease(newfont);
cfrelease(providerref);
cfrelease(fontname);
uifont *fone =[uifont fontwithname:fontnamestring size:fontsize];
if (!fone)
return
fone;
}
讀取方法二 (參考 :
nsstring *fontpath =[[nsbundle mainbundle] pathforresource:fontfilenamearray[i] oftype:nil];nsurl *url =[nsurl fileurlwithpath:fontpath];
cgdataproviderref fontdataprovider =cgdataprovidercreatewithurl((__bridge cfurlref)url);
if (fontdataprovider ==null)
cgfontref newfont =cgfontcreatewithdataprovider(fontdataprovider);
cgdataproviderrelease(fontdataprovider);
if (newfont ==null)
cfstringref fontname =cgfontcopyfullname(newfont);
nsstring *fontnamestring = (__bridge id
)(fontname);
if ([fontnamestring isequaltostring:@"
yuppy sc regular
"])
[fontnamemdic setobject:fontnamestring forkey:fontfilenamearray[i]];
cfrelease(fontname);
cgfontrelease(newfont);
-(uifont*)customfontwithpath:(nsstring*)path size:(cgfloat)size
以上三種方法可以讀取ttf,otf 格式字型,但是方法
一、二發現有時會有讀取不到的情況,讀取不到的原因是fontnamestring 獲取錯誤,方法一有時獲取到的fontnamestring是yuppy sc regular 但是實際的fontnamestring 是 yuppysc-regular,方法二的缺點是要事先知道fontnamestring。方法三還沒有發現讀取不到的情況。
方法一、二獲取字型名的方法是:cgfontcopyfullname 方法三取字型名的方法是
cgfontcopypostscriptname,方法一 二獲取的fullname,ios用的是postscriptname
ttc字型的讀取方法(見
-(nsarray*)customfontarraywithpath:(nsstring*)path size:(cgfloat)sizereturn
customfontarray;
}
以下內容摘自(
不過這個方法只支援7.0以上,暫時在7.0以下沒有找到方法。
個人看法,因為ttc裡面的字型都比較相似,所以其實使用乙個也足以。
附:(字型的介紹)
ttc字型是truetype字型整合檔案(. ttc檔案),是在一單獨檔案結構中包含多種字型,以便更有效地共享輪廓資料,當多種字型共享同一筆畫時,ttc技術可有效地減小字型檔案的大小。
ttc是幾個ttf合成的字型檔,安裝後字型列表中會看到兩個以上的字型。兩個字型中大部分字都一樣時,可以將兩種字型做成乙個ttc檔案,常見的ttc字型,因為共享筆劃資料,所以大多這個集合中的字型區別只是字元寬度不一樣,以便適應不同的版面排版要求。
而ttf字型則只包含一種字型。
以下內容摘自(
不過這個方法只支援7.0以上,暫時在7.0以下沒有找到方法。
個人看法,因為ttc裡面的字型都比較相似,所以其實使用乙個也足以。
附:(字型的介紹)
ttc字型是truetype字型整合檔案(. ttc檔案),是在一單獨檔案結構中包含多種字型,以便更有效地共享輪廓資料,當多種字型共享同一筆畫時,ttc技術可有效地減小字型檔案的大小。
ttc是幾個ttf合成的字型檔,安裝後字型列表中會看到兩個以上的字型。兩個字型中大部分字都一樣時,可以將兩種字型做成乙個ttc檔案,常見的ttc字型,因為共享筆劃資料,所以大多這個集合中的字型區別只是字元寬度不一樣,以便適應不同的版面排版要求。
而ttf字型則只包含一種字型。
ios自定義字型
提供字型檔案路徑,返回所需要字型 複製 uifont customfontwithpath nsstring path size cgfloat size 這樣就不需要在plist設定任何東西,只需要得到字型庫檔案的路徑,就可以取出對應的字型。上面的方法對於ttf otf的字型都有效,但是對於ttc...
iOS自定義字型
ios載入自定義的字型需要點活兒 xcode自帶字型樣式查詢 info.plist配置 2.前往targets build phases copy bundle resources中新增字型檔案 copy bundle resources配置 3.通過眼力找到字型檔案對應的fontname,暫未有更...
iOS使用自定義字型
要新增方正蘭亭字型,首先需要乙個ttf的字型庫。然後把這個檔案新增到工程裡面 在plist裡面新增 新增成功後,就可以使用啦。但是我只拿到這個庫,並不清楚fontname。用下面這段 列印出來系統可用字型。nsarray familynames nsarrayalloc initwitharray ...