2013-09-30 2 views
0

У меня есть NSString, который содержит символы юникода.Unicode символы отсутствуют в NSAttributedString

Пример:

It's blank.\u000e test \u000f 

Длина значения по NSString «ы является 19.

Здесь \u000e и \u000f являются символами Юникода.

Я конвертирую вышеупомянутое NSString в NSMutableAttributedString, и я применил некоторые свойства шрифта. Затем я зарегистрировал NSMutableAttributedString и получил следующий вывод.

Мой Пример кода:

NSString *contAtRng = @"It's blank.\u000e test \u000f"; 
NSMutableAttributedString *attrText = [[NSMutableAttributedString alloc] initWithString:contAtRng]; 
NSMutableDictionary *attrs = [NSMutableDictionary new]; 
[attrs setObject:[UIFont fontWithName:@"HelveticaNeue-Bold" size:10] forKey:NSFontAttributeName]; 
[attrText setAttributes:attrs range:NSMakerange(0,contAtRng.length)]; 
NSLog(@"String : %@",attrText); 

Выход:

It's blank. test { 
NSFont = "<UICTFont: 0x16d22250> font-family: \"Helvetica Neue\"; font-weight: bold; font-style: normal; font-size: 10.00pt";} 

Длина NSMutableAttributedString является 17, теперь.

В результате символы Unicode отсутствуют. Я не знаю, что я сделал с моим кодом.

+1

ли символы '' 0x000e' и 0x000f' имеет глифы? Они кажутся управляющими. – trojanfoe

ответ

2

Когда вы пытаетесь создать NSMutableAttributedString с определенным семейством шрифтов (пример: HelveticaNeue-Bold), который содержит некоторые символы Unicode, он заменит символ Unicode пустой строкой и предоставит оставшуюся строку.

Итак, мы пропустим символы Юникода.

Чтобы избежать этой проблемы, Пропустить Юникод при установке семейства шрифтов для NSMutableAttributedString

Вот мой код:

NSString *contAtRng = @"It's blank.\u000e test \u000f"; 
NSMutableAttributedString *attrText = [[NSMutableAttributedString alloc] initWithString:contAtRng]; 
NSMutableDictionary *attrs = [NSMutableDictionary new]; 
[attrs setObject:[UIFont fontWithName:@"HelveticaNeue-Bold" size:10] forKey:NSFontAttributeName]; 
[attrText setAttributes:attrs range:NSMakerange(0,11)]; 
[attrText setAttributes:attrs range:NSMakerange(12,6)]; 
NSLog(@"String : %@",attrText); 
Смежные вопросы