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];

0 ответов

Другие вопросы по тегам