Получите каждый char (с формой) шрифта из файла UIFont или .ttf
У меня нет точной идеи, потому что это возможно или нет, и я попытался найти решение для моего вопроса, но не добился успеха, поэтому я спрашиваю здесь и надеюсь, что я получу решение.
Я разрабатываю одно приложение, связанное с рисунком, в котором я хочу получить форму каждого шрифта, предоставленного .ttf
файлом или UIFont
.
Для примера
Если у меня есть файл UIFont/.ttf, например "OpenSans-Italic"
, то как получить каждый "char" с помощью формы (здесь "курсив" ) шрифта "OpenSans"
?
И я хочу это в Char or NSString.
= > @[@ "a", @ "b", @ "c", @ "d",.. @ "A", @ "B", @ "C", @ "D"..... @ "1", @ "2", @ "3"....];//Это массив char только для понимания цели.
Пожалуйста, предложите мне, как я могу это получить?
Ответы
Ответ 1
Вот способ сделать это, заимствуя из этого сообщение. Он выполняет итерацию всех возможных символов в NSCharacterSet
и находит те, которые являются действительными. Прямо сейчас, используя .URLPathAllowedCharacterSet()
, но он может использовать другие.
import UIKit
var attributedString = NSMutableAttributedString()
if let font = UIFont(name: "OpenSans-Italic", size: 12) {
let charset = NSCharacterSet.URLPathAllowedCharacterSet()
for var plane : UInt32 in 0...16 where charset.hasMemberInPlane(UInt8(plane)) {
let planeRange = (plane << 16)..<((plane+1) << 16)
for characterValue in planeRange where charset.longCharacterIsMember(characterValue) {
let character = String(UnicodeScalar(CFSwapInt32HostToLittle(characterValue)))
attributedString.appendAttributedString(NSAttributedString(string:character, attributes: [NSFontAttributeName:font]))
}
}
}
Ответ 2
Работает ли, если доступные символы отображаются в коде? Если это работает, все кажется легким.
Я имею в виду добавить некоторую фазу сборки для разбора файла шрифта и генерировать некоторый код, включая все доступные символы. Я создал проект, который предоставил аналогичную идею IconFont. Этот проект предоставляет UIImage из файла шрифта. В ветке разработки я добавляю фазу сборки для разбора файла шрифта ttf с помощью проекта PyTTF и добавьте код в TBCityIcon.m. Легко модифицировать python script для генерации кода NSArray, который содержит все доступные символы.