Файлы RTF и приписанные строки

Формат Rich Text Format (RTF) является текстом, форматирующим язык, разработанный Microsoft Corporation. Можно представлять символ, абзац и атрибуты формата документа с помощью простого текста с вкрапленными командами RTF, группами и escape-последовательностями. RTF широко используется в качестве формата обмена документа для передачи документов с их информацией о форматировании через приложения и вычислительные платформы. Apple расширил RTF с помощью пользовательских команд, описанных в этой главе.

Чтение и запись данных RTF

Расширения Набора Приложения для NSAttributedString добавьте поддержку чтения и записи многих популярных форматов документов, включая RTF и RTFD, как описано в Отформатированных Документах и Приписанных Строках в Приписанном Строковом Руководстве по программированию. Несмотря на то, что NSAttributedString имеет удобные методы для чтения и записи RTF и данных RTFD в частности те методы имеют преимущество перед методами общего назначения, и они испытывают недостаток в полезном error: параметр.

Расширения Apple RTF

Apple расширил язык RTF для поддержки текстовых атрибутов и форматирующих конструкций, доступных в текстовой системе Какао, но не представимый со стандартным RTF. Расширения Apple принимают ту же форму как стандартные команды RTF, группы и Escape. Команды RTF состоят из наклонной черты влево, сопровождаемой строкой буквенных символов (чувствительных к регистру) сопровождаемый дополнительным целочисленным значением параметра, которое может быть положительным или отрицательным. Группы RTF начинают с левой фигурной скобки ({), сопровождаемый последовательностями RTF дополнительно включая другие группы, закрытые правой фигурной скобкой (}). Escape RTF состоят из наклонной черты влево, сопровождаемой специальным символом, такой как \{, который указывает литеральную левую фигурную скобку вместо начала группы.

RTF включает понятие о месте назначения, которое является группой, содержащей команду RTF и текст возможно, чтобы быть вставленным в различном расположении в документе, таком как сноска. Escape-последовательность \* указывает, что читатели RTF, не понимающие следующую команду должны проигнорировать содержание места назначения.

Размерности в RTF выражены в twips — один twip является одной двадцатой точки.

Таблица 1 перечисляет расширения Apple RTF для символьных атрибутов.

Табличный 1  Символьный атрибут расширения RTF

Последовательность RTF

Описание

Параметр (ы)

\CocoaLigatureN

Управление лигатурой

Значение NSLigatureAttributeName.

0 = никакие лигатуры, 1 = лигатуры по умолчанию, 2 = все лигатуры. Значение по умолчанию 1.

\expansionN

Фактор расширения, который будет применен к глифам

2000 * значение NSExpansionAttributeName (журнал фактора расширения).

Значение по умолчанию 0.

\obliquenessN

Скос, который будет применен к глифам

2000 * значение NSObliquenessAttributeName.

0 = никакой скос. Значение по умолчанию 0.

\fsmilliN

Более прекрасная спецификация для размера шрифта

1000 * размер шрифта.

Записанный в дополнение к \fs, когда \fs не является значением полуточки или интегралом; значение переопределяется \fs, таким образом, это должно быть сразу записано после \fs. Значение по умолчанию, управляемое \fs.

\shadxN \shadyN

Теневое смещение, записанное в сочетании с \shad

X и y смещает в twips (0 = никакое смещение).

Значения по умолчанию являются \shadx3 и \shady-3.

\shadrN

Теневая размытость, записанная в сочетании с \shad

Радиус размытия в twips.

0 = никакая размытость. Значение по умолчанию 0.

\strikecN

Перечеркнутый цвет

Номер цвета.

Значение по умолчанию то же как приоритетный цвет текста.

\strikestyleN

Перечеркнутый стиль, записанный, где, \strike, \striked, \strikew не достаточны

Стиль и маска рисунка, значение NSObliquenessAttributeName.

0 = ни один; 0x8000 = словом; стили: 1 = единственный, 2 = толстый, 9 = дважды; образцы: 0x100 = отмеченный точкой, 0x200 = тире, 0x300 = штрихпунктир, 0x400 = точка штрихпунктира. Значение по умолчанию 0.

\strokecN

Цвет обводки

Номер цвета.

Значение по умолчанию то же как приоритетный цвет текста.

\strokewidthN

Ширина штриха глифа, записанная в сочетании с \outl.

20 * перечеркивают ширину как процент размера точки шрифта.

0 = никакой штрих. Значение по умолчанию 0. Отрицательные величины указывают, что глифы и перечеркиваются и заполняются; штриховая ширина взята от абсолютного значения параметра.

\ulstyleN

Стиль подчеркивания, записанный, где стандарт \ul команды не достаточны

Стиль и маска рисунка, значение NSUnderlineStyleAttributeName.

0 = ни один; 0x8000 = словом; стили: 1 = единственный, 2 = толстый, 9 = дважды; образцы: 0x100 = отмеченный точкой, 0x200 = тире, 0x300 = штрихпунктир, 0x400 = точка штрихпунктира. Значение по умолчанию 0.

{{\\присоединение \widthN \heightN NeXTGraphic} строка}

Имя присоединяемого файла в той же папке как файл RTF (обычно упакованный в документе RTFD)

Присоединение является присоединяемым именем файла, закодированным в UTF-8 и должным образом RTF-оставленным.

Параметры ширины и высоты дополнительно указывают присоединяемый размер в twips. Строка всегда 0xAC.

{{} {\\* \glidN basestring} строка}

Глиф ID для явно указанных глифов. (Дополнительное {} пара необходимо для работы вокруг ошибки читателя RTF в версии 10.2 OS X и ранее.)

Идентификатор глифа (параметр к \glid). basestring является строкой, которую ID глифа предназначается для переопределения; этот атрибут тогда применяется к указанной строке. Обычно строка и basestring являются тем же, несмотря на то, что строка могла бы содержать многократные экземпляры basestring.

{{} {\\* \glidN basestring\glcolN} строка}

Глиф ID для явно указанных глифов

Символьный идентификатор (параметр к \glid) и символьный набор (параметр к \glcol).

Набор IDs: 0 = идентификационные данные, 1 = Adobe-CNS1, 2 = Adobe-GB1, 3 = Adobe-Japan1, 4 = Adobe-Japan2, 5 = Adobe-Корея.

{{} {\\* \glid basestring\glnam glyphname} строка}

Глиф ID для явно указанных глифов

glyphname является именем глифа в кодировании UTF-8.

\AppleTypeServicesUN

Символьное управление формой

Значение NSCharacterShapeAttributeName.

Значение интерпретируется как селектор Apple Type Services kCharacterShapeType + 1. Значение 0 отключает этот атрибут. Значение по умолчанию 0.

Таблица 2 перечисляет расширения Apple RTF для атрибутов абзацев.

Табличный 2  Атрибут абзацев расширения RTF

Последовательность RTF

Описание

Параметр (ы)

\pardeftabN

Интервал вкладки по умолчанию для абзаца

Интервал вкладки оценивает в twips. 0 = никакие вкладки кроме явно указанных. Значение по умолчанию 0.

\qnatural

Естественное выравнивание текста для абзаца (на основе сценария), записанный вместе с \ql

Ни один

\slleadingN

Межстрочный интервал абзаца (метод NSParagraphStyle lineSpacing)

Значение межстрочного интервала в twips. Значение по умолчанию 0.

\slmaximumN

Максимальная высота строки (метод NSParagraphStyle maximumLineHeight), записанный вместе с \sl и в случае необходимости \slmult

Максимальная высота строки оценивает в twips. Значение по умолчанию 0, не подразумевая максимума.

\slminimumN

Минимальная высота строки (метод NSParagraphStyle minimumLineHeight), записанный вместе с \sl и в случае необходимости \slmult

Минимальная высота строки оценивает в twips. Значение по умолчанию 0.

Таблица 3 перечисляет расширения Apple RTF для атрибутов документа.

Табличный 3  Атрибут документа расширения RTF

Последовательность RTF

Описание

Параметр (ы)

\readonlydocN

Документ только для чтения. Это не имеет никакого отношения к полномочиям файловой системы или владению файла; это - просто подсказка, указывающая, что документ должен быть представлен способом только для чтения пользователю, если средство просмотра или редактор способны.

0 = Не только для чтения, 1 = только для чтения. Значение по умолчанию 0.

\cocoartfN

Номер версии RTF-писателя какао. Это - число, используемое Apple, чтобы указать, что номер версии писателя RTF раньше писал этот документ.

Постепенное увеличение номера версии. 0 = Не писатель Какао, 1 = NextStep, 40 = OpenStep, 100 = OS X v10.0, 102 = 10.2. (Кроме постепенного увеличения числа для будущих версий, никакие предположения не должны быть сделаны относительно того, как число изменится в будущем.) Значение по умолчанию 0, несмотря на то, что некоторая эвристика используется для распознавания документов прееOS X как таковых.

\viewhN \viewwN

Размер области дисплея (не окно или размер представления), чтобы использоваться для отображения документа

Размерность области дисплея в twips. Неуказанное значение по умолчанию.