Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIFont中的字符总数_Ios_Uifont - Fatal编程技术网

Ios UIFont中的字符总数

Ios UIFont中的字符总数,ios,uifont,Ios,Uifont,有没有办法查询UIFont中的字符总数?例如,类似这样的内容:UIFont.systemFont(大小:16)。计数?我正在构建一个应用程序来浏览UIFont中的所有字符。我想知道为该字体定义的字形总数,最好是它支持的最大unicode代码数。我相信您可以通过以下方式使用CoreText实现这一点: import CoreText extension CharacterSet { func charCount() -> Int { var count = 0

有没有办法查询UIFont中的字符总数?例如,类似这样的内容:UIFont.systemFont(大小:16)。计数?我正在构建一个应用程序来浏览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
}
导入核心文本
扩展字符集{
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吗?要获取实际字符,您可能需要使用
所有字符
扩展名: