2016-01-04 15 views
10

Bunun mümkün olup olmadığı konusunda tam bir fikrim yok ve ayrıca sorularıma çözüm bulmaya çalıştım ama başarı elde edemedim, bu yüzden ben Burada soruyorum ve çözüm bulacağımı umuyorum.UIFont veya .ttf dosyasından gelen her bir karakter (şekle sahip) yazıyı alın

.ttf dosyası veya UIFont tarafından sağlanan her bir yazı tipinin şeklini almak istediğim çizimle ilgili bir uygulama geliştiriyorum.

Ex için.

Eğer ben "OpenSans-Italic" gibi UIFont/Ttf dosyası böyle sonra nasıl şekil (burada "İtalik" şekli) "OpenSans" yazı var olan her "Sözc'ü" alabilirim? Ve Char or NSString.

=> Bu istediğiniz @ [ "a" @ "c" @ "b", @, @, "d", .. "B" @ "A", @ , @ "C", @ "D", ..... @ "1", @ "2", @ "3" ....]; // Bu sadece anlama amacına yönelik char dizisidir.

Lütfen bunu nasıl önerebilirim?

+0

Her bir karakteri [atfedilen dize] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSAttributedString_Class/) veya görüntü olarak mı istiyorsunuz? – ColGraff

+0

@KennethBruno Resim yok Her char karakterini string olarak istiyorum. – iPatel

+0

Belki bu yardımcıdır: http://stackoverflow.com/a/6991793/2754158 kod gibi görünüyor yazı tipi karakter kümesi alır. – Krzysztof

cevap

3

İşte bunu yapmanın bir yolu, this numaradan ödünç alma. NSCharacterSet'daki tüm olası karakterler arasında yineleme yapar ve geçerli olanları bulur. Şu anda .URLPathAllowedCharacterSet() kullanıyor, ancak başkalarını kullanabilir.

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])) 
    } 
    } 
} 
+0

Cevabınız için teşekkürler, bu kodu Objective-C'ye dönüştürebilir misiniz? – iPatel

+1

@iPatel Sorunuz, Swift'i kullandığınız dil olarak listeler. Gönderdiğim bağlantıya giderseniz, cevaplardan birinde benzer Objective-C kodu var. – ColGraff

0

Mevcut glif kodda listeleniyor mu çalışıyor? Çalışırsa, her şey kolay görünüyor.

Yazı tipi dosyasını ayrıştırmak ve kullanılabilir tüm karakterleri içeren bazı kodlar oluşturmak için bazı yapı aşamaları eklemek istiyorum. Ben IconFont benzer bir fikir sağlayan bir proje oluşturduk. Bu proje, font dosyasından UIImage sağlar. Geliştirme dalında, proje PyTTF kullanarak ttf yazı tipi dosyasını ayrıştırmak ve TBCityIcon.m'a kod eklemek için bir yapı fazı ekliyorum. Tüm mevcut karakterleri içeren bir NSArray kodu oluşturmak için python betiğini değiştirmek kolaydır.

İlgili konular