Що таке файл RTF?
Розширений текстовий формат (RTF), представлений і задокументований корпорацією Майкрософт, представляє метод кодування форматованого тексту та графіки для використання в програмах. Формат полегшує міжплатформний обмін документами з іншими продуктами Microsoft, таким чином служачи меті взаємодії. Ця можливість робить його стандартом передачі даних між програмним забезпеченням для обробки текстів і, отже, вміст можна передавати з однієї операційної системи в іншу без втрати форматування документа. Специфікації формату файлу доступні Microsoft для загального завантаження і можуть бути використані з точки зору розробника.
Коротка історія формату файлу RTF
Формат файлу RTF зазнав кілька переглядів з часу його публікації. Його офіційна версія для читання/запису була опублікована як частина Microsoft Word 3.0 для Macintosh зі специфікаціями версії 1.0. Остаточна версія специфікацій, 1.9.1, була опублікована корпорацією Майкрософт у березні 2008 року. Після цього жодних покращень до специфікацій не вносилося. Зараз майже всі операційні системи мають багатофункціональні програми, які мінімізували/викорінили використання формату RTF.
Специфікації формату файлу RTF
RTF служить стандартом передачі даних між програмами для обробки текстів і передачі вмісту з однієї операційної системи в іншу. Це досягається за допомогою керуючих слів, які були представлені Microsoft Office Word до 2007 року. Стандартний файл RTF складається з ASCII для представлення форматованого тексту та символів, що не є ASCII, які перетворюються на відповідні кодові значення. Новіші версії Word можуть читати файли RTF, створені за допомогою попередніх версій, тоді як старі версії ігнорують керуючі слова та групи, які вони не розуміють.
Розуміння основ RTF
Файли RTF використовують 7-бітний простий текст ASCII, який складається з:
- контрольні слова
- контрольні символи, і
- групи.
Вони діють як будівельні блоки для представлення даних RTF у вигляді зрозумілого тексту та кодування символів.
Контрольне слово
Вони представляють спеціально відформатовану команду, яка використовується для позначення символів для відображення та не може бути довшою за 32 літери. Керуюче слово визначається:
<ASCII Letter Sequence> //<//Delimiter//> //
Кожне контрольне слово чутливе до регістру та починається зі зворотної скісної риски. Послідовність літер ASCII може містити алфавіти ASCII (від a до z і від A до Z). The позначає кінець назви контрольного слова і може бути одним із наступного:
- Пробіл. Це служить лише для розмежування контрольного слова та ігнорується під час подальшої обробки.
- Числова цифра або знак мінус ASCII, який вказує на те, що числовий параметр пов’язано з керуючим словом. Наступна цифрова послідовність розмежовується будь-яким символом, окрім цифри ASCII (зазвичай інше керуюче слово, яке починається зі зворотної косої риски). Параметр може бути позитивним або негативним десятковим числом. Діапазон значень числа номінально становить від –32768 до 32767, тобто 16-розрядне ціле число зі знаком. Невелика кількість контрольних слів приймає значення в діапазоні від −2 147 483 648 до 2 147 483 647 (32-розрядне ціле число зі знаком). Ці керуючі слова включають \binN, \revdttmN//, \rsidN пов’язані керуючі слова та деякі властивості зображення, такі як \bliptagN. Тут N означає числовий параметр. Синтаксичний аналізатор RTF має передбачати до 10 цифр, перед якими необов’язково стоїть знак мінус. Якщо роздільником є пробіл, він відкидається, тобто не включається до подальшої обробки.
- Будь-який символ, окрім букви чи цифри. У цьому випадку розмежувальний символ закінчує керуюче слово і не є частиною керуючого слова. Наприклад, зворотна коса риска «\», що означає, що слідує нове керуюче слово або контрольний символ.
Контрольний символ
Контрольний символ представляє особливий випадок, який має певне значення залежно від його вмісту. Він складається із зворотної скісної риски, за якою йде спеціальний символ (неалфавітний символ) і не має жодних роздільників.
Група
Група може складатися з тексту, керуючих слів або керуючих символів, укладених у дужки ({ }). Відкриваюча дужка ({) вказує на початок групи, а закриваюча дужка (}) вказує на кінець групи. Кожна група визначає текст, на який впливає група, і різні атрибути цього тексту.
Структура файлу RTF
Файл RTF має такий стандартний синтаксис:
Розширений текстовий формат (RTF), представлений і задокументований корпорацією Майкрософт, представляє метод кодування форматованого тексту та графіки для використання в програмах. Формат полегшує міжплатформний обмін документами з іншими продуктами Microsoft, таким чином слугуючи меті взаємодії. Ця можливість робить його стандартом передачі даних між програмним забезпеченням для обробки текстів і, отже, вміст можна передавати з однієї операційної системи в іншу без втрати форматування документа. Специфікації формату файлу доступні Microsoft для загального завантаження і можуть бути використані з точки зору розробника.
Заголовок RTF
Заголовок RTF має наступне представлення.
Поле | Опис |
---|---|
<header> | \rtf1\fbidis? <character set> <from> ? <deffont> <deflang> <fonttbl> ? <filetbl> ? <colortbl> ? <stylesheet> ? <stylerestrictions> ? <listtables> ? <revtbl> ? <rsidtable> ? <mathprops> ? <generator> ? |
Таблиці заголовків мають відображатися в такому порядку, якщо вони існують. Файл RTF може включати групи для шрифтів, стилів, кольорів екрана, зображень, виносок, коментарів (анотацій), верхніх і нижніх колонтитулів, підсумкової інформації, полів, закладок, властивостей форматування документів, розділів, абзаців і символів, математики, зображення та предмети. Якщо шрифт, файл, стиль, колір, позначка перегляду та групи підсумкової інформації та властивості форматування документа включено до файлу, вони мають відображатися в заголовку RTF, який передує тілу RTF. Якщо вміст будь-якої групи не використовується, групу можна опустити. Будь-яка група, яка використовує властивості, визначені в іншій групі, має з’являтися після групи, яка визначає ці властивості. Наприклад, властивості кольору та шрифту мають передувати групі стилів.
Версія RTF
Документ RTF має починатися з цих шести символів:
{\rtf1
де 1 показує номер версії RTF.
Набір символів
Після {\rtf1 у документі має бути зазначено, який набір символів він використовує. Набір символів можна оголосити за допомогою однієї з цих команд:
\ansi
– документ містить набір символів ANSI, також відомий як кодова сторінка 1252, звичайний набір символів MSWindows.
\mac
– документ містить набір символів MacAscii, звичайний набір символів у старих (до 10) версіях Mac OS.
\pc
– документ містить кодову сторінку DOS 437, стандартний набір символів для MS-DOS. Друкарі з хорошою м’язовою пам’яттю зауважать, що це набір символів, який досі використовується для інтерпретації «цифрових» кодів «Alt», тобто коли ви, утримуючи Alt, набираєте «130» на цифровій клавіатурі, видає é, оскільки символ 130 у CP437 є é. Це єдине використання, яке CP437 бачить сьогодні.
\pca
– документ знаходиться на кодовій сторінці DOS 850, також відомій як багатомовна кодова сторінка MS-DOS.
Команда шрифту
За визначенням набору символів слідує команда \deffN
. Це визначає, що номер шрифту N є шрифтом за замовчуванням для цього документа. Номер шрифту N взято з таблиці шрифтів. Команда \deffN
є технічно необов’язковою, але вона має бути там, щоб бути безпечною, оскільки звичайний пролог, як наступний, вибирає шрифт 0 як шрифт за замовчуванням.
{\rtf1\ansi\deff0
Таблиця шрифтів
Усі шрифти, які можна використовувати в документі, перераховані в таблиці шрифтів, де кожен шрифт представлено номером шрифту. Документ повинен мати таблицю шрифтів, хоча деякі програми працюватимуть і без неї.
Синтаксис для таблиці шрифтів — {\fonttbl //…декларації//…}, у якій кожне оголошення має такий базовий синтаксис:
{\fnumber\familycommand Fontname;}
Таблиця шрифтів із чотирма оголошеннями має такий вигляд:
{\fonttbl
{\f0\froman Times;}
{\f1\fswiss Arial;}
{\f2\fmodern Courier New;}
}
У документі з такою таблицею шрифтів {\f2 stuff}
надрукує «речі» в Courier New. Шрифт не можна використовувати в документі, доки його не буде вказано в таблиці шрифтів.
Кінець документа
Кожен документ RTF має закінчуватися символом }, щоб закрити групу, відкриту символом {, який є першим символом у документі. Ніщо не може слідувати за кінцевим }, крім, можливо, нового рядка.