如何CTFontCopyCharacterSet()在 Swift 中获取字体的所有字符?...对于macOS?
从OSX:CGGlyph to UniChar answer in Swift实施该方法时出现问题。
func createUnicodeFontMap() {
// Get all characters of the font with CTFontCopyCharacterSet().
let cfCharacterSet: CFCharacterSet = CTFontCopyCharacterSet(ctFont)
//
let cfCharacterSetStr = "\(cfCharacterSet)"
print("CFCharacterSet: \(cfCharacterSet)")
// Map all Unicode characters to corresponding glyphs
var unichars = [UniChar](…NYI…) // NYI: lacking unichars for CFCharacterSet
var glyphs = [CGGlyph](repeating: 0, count: unichars.count)
guard CTFontGetGlyphsForCharacters(
ctFont, // font: CTFont
&unichars, // characters: UnsafePointer<UniChar>
&glyphs, // UnsafeMutablePointer<CGGlyph>
unichars.count // count: CFIndex
)
else {
return
}
// For each Unicode character and its glyph,
// store the mapping glyph -> Unicode in a dictionary.
// ... NYI
}
检索实际字符的CFCharacterSet方法一直难以捉摸。实例提供的自动完成cfCharacterSet显示没有相关方法。
并且Core Foundation > CFCharacterSet似乎具有创建另一个 CFCharacterSet 的方法,但没有提供能够创建映射字典的 unichars 数组|列表|字符串的方法。
注意:我正在寻找一种不特定于 iOS 的解决方案,如从使用UIFont.
