Ios UIFont中的字符总数
有没有办法查询UIFont中的字符总数?例如,类似这样的内容:UIFont.systemFont(大小:16)。计数?我正在构建一个应用程序来浏览UIFont中的所有字符。我想知道为该字体定义的字形总数,最好是它支持的最大unicode代码数。我相信您可以通过以下方式使用Ios UIFont中的字符总数,ios,uifont,Ios,Uifont,有没有办法查询UIFont中的字符总数?例如,类似这样的内容:UIFont.systemFont(大小:16)。计数?我正在构建一个应用程序来浏览UIFont中的所有字符。我想知道为该字体定义的字形总数,最好是它支持的最大unicode代码数。我相信您可以通过以下方式使用CoreText实现这一点: import CoreText extension CharacterSet { func charCount() -> Int { var count = 0
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
}
导入核心文本
扩展字符集{
func charCount()->Int{
变量计数=0
对于0…16中的平面:UInt8,其中self.hasMember(平面内:平面){
对于UInt32(平面)中的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
}
导入核心文本
扩展字符集{
func charCount()->Int{
变量计数=0
对于0…16中的平面:UInt8,其中self.hasMember(平面内:平面){
用于UInt32(平面)中的unicode你的意思是说该字体支持的unicode和非unicode字符的数量吗?@KrishnaCA是的。可以使用CTFont
来完成。请检查我的答案以了解详细信息。请注意,你的问题已经讨论了一半。字体中的字符数量与字形数量不同。可能有(通常有)字形比字符多。作为英语中的一个著名例子,许多字体都有一个特殊的字形(称为连字)来表示字符“fi”的序列。还有更多的例子,特别是在其他语言中(阿拉伯语根据字母在单词中的位置有不同的字形)。听起来好像@KrishnaCA的答案就是你的意思。@RobNapier我对字体定义字形的字符集感兴趣。我假设一个字符可以用一个UInt数字表示。我想知道是否有办法从UIFont对象中确定它可以表示多少个字符,最好是哪个c字符。如果我知道它的最大UInt字符数,我可以确定它的字符范围的限制。你的意思是说该字体支持的unicode和非unicode字符数吗?@KrishnaCA是的。可以使用CTFont
来完成。请检查我的答案以了解详细信息。注意,你的问题已改为半way到。字体中的字符数与字形数不同。字形数可能(通常)多于字符数。作为英语中的一个著名例子,许多字体都有一个特殊的字形(称为连字)来表示字符序列“fi”。还有更多的例子,尤其是在其他语言中(根据阿拉伯语在单词中出现的位置,许多字母有不同的字形)。听起来好像@KrishnaCA的答案就是你的意思。@RobNapier我对字体定义字形的字符集感兴趣。我假设一个字符可以用一个UInt数字表示。我想知道是否有办法从UIFont对象中确定它可以表示多少个字符,最好是哪个c字符。如果我知道其字符的最大UInt数,我可以确定其字符范围的限制。您可以将其转换为swift吗?要获取实际字符,您可能需要使用allCharacters
扩展名:您可以将其转换为swift吗?要获取实际字符,您可能需要使用所有字符
扩展名: