2009-11-30 21 views
9

Có cách nào để phát hiện xem ký tự Unicode có xuất hiện trong phông chữ trên iPhone hay không, tức là, để phát hiện liệu ký tự sẽ ánh xạ tới hình chữ nhật có thể in hay thay vào ký hiệu "ký tự bị thiếu" hình vuông?Làm thế nào để phát hiện nếu một ký tự Unicode ánh xạ tới hình vuông thiếu biểu tượng?

Ví dụ, nếu tôi muốn tạo ra một nhân vật Wingding ngẫu nhiên với đoạn này:

NSString *s = [NSString stringWithFormat:@"%C", (0x2700 + (arc4random() % 0x0100))]; 

là có cách nào để nói nếu chuỗi được tạo ra sẽ làm như hình vuông nhỏ, hoặc một hình tượng thật khi tôi vẽ nó với điều này:

[s drawAtPoint:x withFont:[UIFont systemFontOfSize:30]]; 

Cảm ơn!

... R

Trả lời

0

Tôi không biết về bất kỳ phương pháp để kiểm tra cho điều này đặc biệt, tuy nhiên tôi tưởng tượng nó muốn được có thể thiết lập một NSDictionary với các giá trị kết hợp cho mỗi bảng ký tự mã hóa thành Unicode , sau đó chạy kiểm tra để đảm bảo rằng giá trị được tạo nằm trong phạm vi được chỉ định bởi một trong các giá trị được ghép nối.

1

NSFont có thuộc tính coveredCharacterSet mà UIFont không có. Vì vậy, tôi sẽ khuyên bạn nên sử dụng máy tính để bàn của bạn để tạo ra các thông tin coveredCharacterSet và đặt nó vào ứng dụng iphone của bạn.

Một danh sách các phông chữ có sẵn trên iphone có thể được tìm thấy tại địa chỉ: http://daringfireball.net/misc/2007/07/iphone-osx-fonts

0

Tại sao không tạo ra nó trên máy tính của bạn, nếu bạn đang sử dụng font hệ thống nó phải được Helvetica và có các bản đồ nhân vật trong tùy chọn menu Phông chữ của hầu hết mọi chương trình.

1

tôi đã có thể thực hiện điều này sử dụng Core Tiêu đề của CTFontGetGlyphsForCharacters:

- (BOOL)isInCharSet:(unichar)character 
{ 
    CTFontRef fontRef = CTFontCreateWithName((CFStringRef)@"Arial", 0.0, NULL); 
    unichar characters[] = {character}; 
    CGGlyph glyphs[] = {}; 

    return (BOOL)CTFontGetGlyphsForCharacters(fontRef, characters, glyphs, 1); 
} 
Các vấn đề liên quan