NSMutableAttributedString не может получить пользовательские шрифты из файла RTF на iOS 8
Я использую 3 пользовательских шрифта всвоем приложении (Лондон, Century Schoolbook,Jacob_bold). Используя этот код, я установил атрибутивный текст из файла в textView.
NSMutableAttributedString *text1 =[NSMutableAttributedString.alloc
initWithFileURL:[ NSBundle.mainBundle URLForResource:@"text48" withExtension:@"rtf"]
options:nil
documentAttributes:nil
error:nil
];
[self.textView setAttributedText:text1];
и это работает правильно для iOS7. 2 разных шрифта на этой странице.
СОЛОМЕНСКИЕ ЯЙЦА{ NSFont = " font-family: \"London\"; font-weight: normal; font-style: normal; font-size: 48.00pt"; NSParagraphStyle = "Выравнивание 1, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, вкладки (\n 28L,\n 56L,\n 84) n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, блоки (null), списки (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0"; } { NSFont = " font-family: \"Century Schoolbook\"; Вес шрифта: нормальный; стиль шрифта: нормальный; font-size: 14.00pt"; NSParagraphStyle = " Выравнивание 1, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs \ \ 28L n 56L, \ n 84L, \ n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, блоки (null), списки (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0"; } { NSFont = " font-family: \"Century Schoolbook\"; Вес шрифта: нормальный; стиль шрифта: нормальный; font-size: 14.00pt"; NSParagraphStyle = " Выравнивание 3, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs \ \ 28L n 56L, \ n 84L, \ n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0 ";} Я родился на Соломенке, улица Максима Кривоноса, и стал пятым арендатором в комнате 18 квадратных метров, в которой есть все, что нужно, чтобы родителям, бабушке и сестре Люсе. "- бабушка!), Размытые и тёплые.
но для iOS 8 я получаю или 1 пользовательский шрифт для всех
СОЛОМЕНСКИЕ ЯЙЦА{ NSFont = " font-family: \"London\"; font-weight: normal; font-style: normal; font-size: 48.00pt"; NSParagraphStyle = "Выравнивание 1, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, вкладки (\n 28L,\n 56L,\n 84) n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0 ";} Я родился на Соломенке, улица Максима Кривоноса, и стал пятым арендатором в комнате 18... Типичная яйцемодель устройства общества. Это была наша голова, когда я сознавал этот процесс.
{NSFont = "font-family: \" London \ "; font-weight: normal; font-style: normal; font-size: 48.00pt"; NSParagraphStyle = "Выравнивание 3, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, вкладки (\n 28L,\n 56L,\n 84) n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0 ";}
или даже ничего
Со мной пробовали говорить. Я хотел бы, чтобы у вас были планы на это. Точно так же, как и всю свою жизнь. Однажды, когда па
...
{NSParagraphStyle = "Выравнивание 3, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, вкладки (\ n 28L, \ n 56L, \ n) \ n 112L, \ n
140L, \ n 168L, \ n 196L, \ n 224L, \ n 252L, \ n 280L, \ n
308L, \ n 336L \ n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0 ";}
придерживаться, не могу найти выход. Только 1 - использовать стандартные шрифты Mac, они подходят для этих случаев.
!!! РЕДАКТИРОВАТЬ SPIKE WAY Вокруг
Обошли все вокруг - так как все отлично работает с системными шрифтами и все в порядке с настройкой этих пользовательских шрифтов вручную с помощью приведенного ниже кода, я решил мою проблему. Надеюсь, что это была личная ошибка, или она будет исправлена.
NSMutableAttributedString *res =[NSMutableAttributedString.alloc initWithFileURL:[ NSBundle.mainBundle URLForResource:dataObject.text withExtension:@"rtf"]
options:nil
documentAttributes:nil
error:nil
];
[res beginEditing];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile: path1];
__block BOOL found = NO; [res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
NSLog(@"%@",[(UIFont *)value fontName]);
if ([[(UIFont *)value fontName] isEqualToString:@"HelveticaNeue"]) {
UIFont *oldFont = [UIFont fontWithName:@"London" size:48.0];
UIFont *newFont = oldFont;
[res removeAttribute:NSFontAttributeName range:range];
[res addAttribute:NSFontAttributeName value:newFont range:range];
found = YES;
}
if ([[(UIFont *)value fontName] isEqualToString:@"HelveticaNeue-Bold"]) {
UIFont *oldFont = [UIFont fontWithName:@"CenturySchoolbook" size: 18.0];
UIFont *newFont = oldFont;
[res removeAttribute:NSFontAttributeName range:range];
[res addAttribute:NSFontAttributeName value:newFont range:range];
found = YES;
}
}
}];
if (!found) {
// No font was found - do something else?
}
[res endEditing];
[self.textView setAttributedText:res];