UIFont 中的字符总数
Total number of characters in a UIFont
有没有办法查询一个UIFont的总字符数?例如,像这样: UIFont.systemFont(ofSize:16).count ?我正在构建一个应用程序来浏览 UIFont 中的所有字符。我想知道为该字体定义的字形总数,最好是它支持的最大 unicode 代码。
我相信您可以通过以下方式使用 CoreText
来实现:
import CoreText
extension CharacterSet {
func charCount() -> Int {
var count = 0
for plane:UInt8 in 0...16 where self.hasMember(inPlane: plane) {
for unicode in UInt32(plane) << 16 ..< UInt32(plane+1) << 16 {
if let uniChar = UnicodeScalar(unicode) {
if self.contains(uniChar) {
count += 1
}
}
}
}
return count
}
}
func getCountForFont(font: UIFont) -> Int {
let coreFont: CTFont = font
let characterSet: CharacterSet = CTFontCopyCharacterSet(coreFont) as CharacterSet
let count = characterSet.charCount()
return count
}
有没有办法查询一个UIFont的总字符数?例如,像这样: UIFont.systemFont(ofSize:16).count ?我正在构建一个应用程序来浏览 UIFont 中的所有字符。我想知道为该字体定义的字形总数,最好是它支持的最大 unicode 代码。
我相信您可以通过以下方式使用 CoreText
来实现:
import CoreText
extension CharacterSet {
func charCount() -> Int {
var count = 0
for plane:UInt8 in 0...16 where self.hasMember(inPlane: plane) {
for unicode in UInt32(plane) << 16 ..< UInt32(plane+1) << 16 {
if let uniChar = UnicodeScalar(unicode) {
if self.contains(uniChar) {
count += 1
}
}
}
}
return count
}
}
func getCountForFont(font: UIFont) -> Int {
let coreFont: CTFont = font
let characterSet: CharacterSet = CTFontCopyCharacterSet(coreFont) as CharacterSet
let count = characterSet.charCount()
return count
}