2017-02-12 6 views
0

Есть ли способ запросить общее количество символов в UIFont? Например, что-то вроде этого: UIFont.systemFont (ofSize: 16) .count? Я создаю приложение для просмотра всех символов в UIFont. Я хотел бы узнать общее количество глифов, определенных для этого шрифта, желательно, чтобы он поддерживал максимальный код юникода.Общее количество символов в UIFont

+0

ли Вы хотите сказать, число Юникод и не-Unicode символы, которые поддерживает шрифт? – KrishnaCA

+0

@ KrishnaCA Да. – andrewz

+0

Это можно сделать с помощью 'CTFont'. Пожалуйста, проверьте мой ответ. – KrishnaCA

ответ

2

Я считаю, что вы можете достичь, следующим образом, используя 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 
} 
+0

Не могли бы вы преобразовать его в быстрый? – andrewz

+0

@andrewz, я быстро переписал код. – KrishnaCA

+0

Супер, большое спасибо – andrewz