Вопрос

Я пытаюсь понять Документ спецификации 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.

Есть еще много других, но это основные из них.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top