RTF # PCDATA vs Текст документа
Вопрос
Я пытаюсь понять Документ спецификации RTF 1.9.1 но #PCDATA (текст без управляющих слов) сбивает меня с толку.Ниже приведен некоторый пример кода, чтобы показать, чего я не понимаю.Обратите внимание, что приведенный ниже текст отформатирован неправильно.Я отформатировал его, чтобы он выглядел красивее.
{
\fonttbl
{
\f0
\fbidi
\froman
\fcharset0
\fprq2
{
\*
\panose
02020603050405020304
}
Times New Roman;
}
}
В спецификации сказано:
Если символ представляет собой что-либо иное, чем открывающая фигурная скобка ({), закрывающая фигурная скобка (}), обратная косая черта (\) или CRLF (возврат каретки / перевод строки), считывающее устройство предполагает, что символ представляет собой обычный текст, и записывает символ в текущее место назначения, используя текущие свойства форматирования.
Если бы я следовал приведенной выше спецификации, я бы в конечном итоге написал Times New Roman
к документу.Как синтаксический анализатор должен узнать, столкнулся ли он с #PCDATA или текстом документа?
Решение
Ответ находится на странице 9 спецификации RTF 1.9.1.
Определенные контрольные слова, называемые пунктами назначения, отмечают начало набора связанного текста, который может появиться в другой позиции или пункте назначения в документе.Пункты назначения также могут содержать текст, который используется, но вообще не отображается в документе.
В примере, который я привел в вопросе, fonttbl - это целевое управляющее слово, означающее, что текст не отображается в документе.На странице 11 спецификации приведен список примеров управляющих слов, которые меняют назначение:
Примерами управляющих слов, меняющих назначение, являются \сноска, \заголовок, \нижний колонтитул, \пикт, \информация, \fonttbl, \таблица стилей, и \цветbl.
Есть еще много других, но это основные из них.