簡體   English   中英

從UIFont或.ttf文件中獲取每個char(帶形狀)字體

[英]Get each char (with shape) of font from UIFont or .ttf file

我沒有確切的想法是否有可能我也確實試圖找到我的問題的解決方案,但沒有成功,這就是為什么我在這里問,並希望我會得到解決方案。

我正在開發一個繪圖相關的應用程序,我想在其中獲得由.ttf文件或UIFont提供的每種字體的形狀。

對於Ex。

如果我有像"OpenSans-Italic"這樣的UIFont / .ttf文件 ,那么怎么能用"OpenSans"字體的形狀(這里是“斜體”形狀)獲得每個“char”? 我希望在Char or NSString.

=> @ [@“a”,@“b”,@“c”,@“d”,... @“A”,@“B”,@“C”,@“D”,.... 。@“1”,@“2”,@“3”....]; //這是char數組,僅用於理解目的。

請建議我,我怎么能得到這個?

這是一種方法,借鑒這篇文章。 它遍歷NSCharacterSet所有可能字符並找到有效字符。 現在它正在使用.URLPathAllowedCharacterSet()但它可以使用其他。

import UIKit

var attributedString = NSMutableAttributedString()
if let font = UIFont(name: "OpenSans-Italic", size: 12) {
  let charset = NSCharacterSet.URLPathAllowedCharacterSet()
  for var plane : UInt32 in 0...16 where charset.hasMemberInPlane(UInt8(plane)) {
    let planeRange = (plane << 16)..<((plane+1) << 16)
    for characterValue in planeRange where charset.longCharacterIsMember(characterValue) {
      let character = String(UnicodeScalar(CFSwapInt32HostToLittle(characterValue)))
      attributedString.appendAttributedString(NSAttributedString(string:character, attributes: [NSFontAttributeName:font]))
    }
  }
}

如果代碼中列出了可用的字形,它是否有效? 如果它有效,一切似乎都很容易。

我的意思是添加一些構建階段來解析字體文件並生成一些代碼,包括所有可用的字符。 我創建了一個提供類似想法IconFont的項目。 該項目從字體文件提供UIImage。 在開發分支中,我添加了一個構建階段來使用項目PyTTF解析ttf字體文件並將代碼添加到TBCityIcon.m 很容易修改python腳本以生成包含所有可用字符的NSArray代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM