Rich Text Format

Rich Text Format (часто скорочено RTF) — це власницький формат файлу[6][7][8] документа з опублікованою специфікацією, розроблений корпорацією Microsoft з 1987 по 2008 рік для міжплатформного обміну документами з продуктами Microsoft. До 2008 року корпорація Майкрософт публікувала оновлені специфікації RTF разом зі значними змінами версій Microsoft Word і Microsoft Office.

Rich Text Format
Розширення файлу: .rtf
MIME-тип: text/rtf[1]
application/rtf[2]
Type code: 'RTF.'[3][4][5]
Узагальнений ідентифікатор типу: public.rtf
Магічне число: {\rtf
Розробник: Microsoft
Рік випуску: 1987
Остання версія: 1.9.1
Дата випуску останньої версії: 19 березня 2008
Тип формату: формат файлу документа
Відкритий формат? No

Більшість текстових процесорів можуть читати та записувати деякі версії RTF.[9] Існує кілька різних версій специфікації RTF; переносимість файлів залежатиме від того, яка версія RTF використовується.[7][10]

RTF не слід плутати зі збагаченим текстом[11] або його попередником Rich Text[12][13], ані з RFT-DCA (Revisable Format Text-Document Content Architecture) від IBM, оскільки це різні специфікації.

Історія

Річард Броді, Чарльз Сімоні та Девід Любберт, члени групи розробників Microsoft Word, розробили оригінальний RTF у середині-кінці 1980-х років. Перший переглядач та редактор RTF був надісланий у 1987 році як частина Microsoft Word 3.0 для Macintosh, який реалізував специфікацію RTF версії 1.0. Усі наступні випуски Microsoft Word для Macintosh, а також усі версії Windows можуть читати та записувати у форматі RTF.

Microsoft підтримує RTF. Остаточна версія була 1.9.1 у 2008 році, яка реалізувала функції Office 2007. Корпорація Майкрософт припинила вдосконалення специфікації RTF, тому нові функції Word 2010 або новішої версії не зберігатимуться належним чином у RTF.[14] Корпорація Майкрософт не очікує подальших оновлень RTF, але заявила про готовність розглянути редакційні та інші несуттєві зміни специфікації RTF під час відповідного періоду голосування за ISO/IEC 29500.[15]

Файли RTF використовувалися для створення файлів довідки Windows, хоча з тих пір вони були замінені файлами Microsoft Compiled HTML Help .

Специфікації RTF для Microsoft Word[16][17]
Версія RTFДата публікаціїВерсія Microsoft WordДата випуску MS WordПримітки
1.01987 рікMicrosoft Word 31987 рікОстання редакція відбулася в червні 1992 року.[18][19] Редакція 1992 року визначила підтримку для об'єктів Microsoft Object Linking and Embedding (OLE) і об'єктів передплатника Macintosh Edition Manager. Він також підтримував включення типів зображень Windows Metafile, PICT, Windows device-dependent bitmap, Windows device-dependent bitmap і OS/2 Metafile Metafile.
1.1Microsoft Word 41989 рікДозволено вбудовування шрифтів, що дозволяє розташовувати дані шрифту у файлі.
1.21993 рікMicrosoft Word 51991 рік[20][21]
1.3Січень 1994 рокуMicrosoft Word 61993 рік1/94 GC0165; для незалежності від пристрою та сумісності заохочується вбудовування растрових зображень у метафайли Windows[22][23] замість використання незалежних від пристрою растрових зображень Windows або залежних від пристрою растрових зображень Windows.
1.4Вересень 1995 рокуMicrosoft Word 95/Word 71995 рік[24]
1.5Квітень 1997 рокуMicrosoft Word 97/Word 81997 рікПредставлено Unicode RTF, який підтримує 16-бітну схему кодування символів Unicode; визначено включення типів зображень PNG, JPEG і EMF у шістнадцятковому (за замовчуванням) або двійковому форматі до файлу RTF.[25] Також містить японську локальну специфікацію RTF під назвою RTF-J для японської версії Word; RTF-J дещо відрізняється від стандартної специфікації RTF.[25]
1.6Травень 1999 рокуMicrosoft Word 2000/Word 91999 рікВключено Pocket Word і Exchange (використовується для перетворення RTF-HTML).[3]
1.7Серпень 2001 рокуMicrosoft Word 2002/Word 102001 рік8/2001– Специфікація Word 2002 RTF[26][27]
1.8Квітень 2004 рокуMicrosoft Word 2003/Word 112003 рік10/2003– Специфікація Word 2003 RTF[4]
1.9.119 березня 2008 року (RTF 1.9 – опубліковано в січні 2007 р.)[28]Microsoft Word 2007/Word 122006 рікДозволена розмітка XML – Спеціальні теги XML, SmartTags, математичні елементи в документі RTF, захист паролем, елементи, що відповідають Office Open XML Ecma-376, частина 4[29]

Синтаксис коду

Він програмується за допомогою груп, зворотної косої риски, контрольного слова та розділювача. Групи містяться у фігурних дужках ({}) і вказують, які атрибути слід застосувати до певного тексту.

Зворотний слеш (\) вводить керуюче слово, яке є спеціально запрограмованою командою для RTF. Керуючі слова можуть мати певні стани, в яких вони активні. Ці стани представлені цифрами. Наприклад,

\b0
indicates that the Bold text is off
\b1
indicates that the Bold text is on

Роздільник — це одна з трьох речей:

  1. Пробіл
  2. Цифра або дефіс (наприклад, -23, 23, 275)
  3. Символ, відмінний від цифри або літери (наприклад, \, /, })[30]

Як приклад, наступний код RTF

 {\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard Це якийсь {\b жирний} текст.\par }

буде представлено таким чином:

Це якийсь жирний текст.

Кодування символів

Стандартний файл RTF може складатися лише з 7-розрядних символів ASCII, але може використовувати escape-послідовності для кодування інших символів.[31] Двома екранованими символами є екрановані символи кодової сторінки та, починаючи з RTF 1.5, екрановані символи Unicode. У вихідній кодовій сторінці дві шістнадцяткові цифри після зворотної косої риски й апостроф друкарської машини позначають символ, узятий із кодової сторінки Windows. Наприклад, якщо для кодової сторінки встановлено Windows-1256, послідовність \'c8 кодуватиме арабську літеру bāʼ ب. Також можна вказати «Набір символів» у преамбулі документа RTF і пов'язати його з заголовком. Наприклад, у преамбулі є текст \f3\fnil\fcharset128, тоді в тілі документа текст \f3\'bd\'f0 представлятиме кодову точку 0xbd 0xf0 із набору символів 128 (що відповідає кодовій сторінці Shift-JIS), яка кодує «金».

Набір символів RTFКодова сторінкаОпис
0Windows-1252Латинський алфавіт, Західна Європа / Америка
10Стандартна кодова сторінка Windows API для локалі системи
242Символ (PUA-mapped)[32] набір символів
772Кодова сторінка сумісності з Macintosh за умовчанням для локалі системи
128Windows-932Японська, Shift JIS (версія для Windows)
129Windows-949Корейська, уніфікований код хангиль (розширений Wansung)
130Windows-1361Корейська, Johab (версія на основі ASCII)
134Windows-936Китайська, GBK (розширений GB 2312)
136Windows-950Китайська, Big5
161Windows-1253Грецька
163Windows-1254Латинський алфавіт, турецька
177Windows-1258Латинський алфавіт, в'єтнамська
178Windows-1255Іврит
186Windows-1256Арабська
204Windows-1257Балтійський
222Windows-1251Кирилиця
238Windows-1250Латинський алфавіт, Східна Європа
2551Кодова сторінка OEM за умовчанням для локалі системи

Для вихідного коду Unicode використовується контрольне слово \u, за яким слідує 16-розрядне ціле число зі знаком, яке відповідає номеру одиниці коду Unicode UTF-16. Для програм, які не підтримують Unicode, це має супроводжуватися найближчим представленням цього символу на вказаній кодовій сторінці. Наприклад, \u1576? дасть арабську літеру bāʼ ب, але вказує на те, що старіші програми, які не підтримують Unicode, мають відображати її як знак питання.

Керуюче слово \uc0 можна використовувати, щоб вказати, що наступні керуючі послідовності Юнікоду в межах поточної групи не вказують символ підстановки.

До версії 1.5 специфікації RTF у 1997 році RTF обробляв лише 7-бітові символи безпосередньо та 8-бітові символи, закодовані як шістнадцяткові (з використанням \'xx). Однак, починаючи з RTF 1.5, керуючі слова RTF зазвичай приймають 16-бітні числа зі знаком як аргументи. Значення Unicode, що перевищують 32767, мають бути виражені від'ємними числами.[25] Якщо символ Unicode знаходиться за межами BMP, він кодується сурогатною парою. Підтримка Unicode була здійснена через зміни обробки тексту в Microsoft Word — Microsoft Word 97 частково підтримує Unicode і обробляє текст за допомогою 16-бітної схеми кодування символів Unicode.[25] Microsoft Word 2000 і новіші версії є програмами з підтримкою Unicode, які обробляють текст за допомогою 16-бітної схеми кодування символів Unicode.[3]

Оскільки файли RTF зазвичай являють собою 7-розрядний простий текст ASCII, їх можна легко передавати між операційними системами ПК. Конвертери, які спілкуються з Microsoft Word для MS Windows або Macintosh, зазвичай очікують передачі даних у вигляді 8-бітних символів і двійкових даних, які можуть містити будь-які 8-бітні значення.[29]

Читабельність людиною

RTF — це формат даних для збереження та спільного використання документів, а не мова розмітки; він не призначений для інтуїтивно зрозумілого та легкого введення.[33][34] Тим не менш, на відміну від багатьох форматів обробки тексту, код RTF може читатися людиною . Коли RTF-файл, який містить переважно латинські символи без діакритики, переглядається як звичайний текстовий файл, основний текст ASCII читається за умови, що автор зберіг стисле форматування.

Коли було випущено RTF, більшість текстових процесорів використовували двійкові формати файлів; Microsoft Word, наприклад, використовував формат файлу DOC. RTF був унікальним своїм простим керуванням форматуванням, яке дозволяло програмам, які не підтримують RTF, наприклад Microsoft Notepad, відкривати та надавати читабельні файли. Сьогодні більшість текстових процесорів перейшли на формати файлів на основі XML (Word перейшов на формат файлів .docx). Незважаючи на це, ці файли містять велику кількість коду форматування, тому вони часто в десять або більше разів більші за відповідний звичайний текст.[35][33]

Щоб RTF відповідав стандартам, символи, відмінні від ASCII, повинні бути екрановані. Таким чином, навіть за стислого форматування текст, у якому використовуються певні тире та лапки, є менш читабельним. Латинські мови з великою кількістю діакритичних знаків особливо важко читати в RTF, оскільки вони призводять до замін на \'f1 замість ñ і \'e9 замість é . Нелатинські шрифти нерозбірливі в RTF — \u21563, наприклад, використовується для吻. З самого початку RTF також підтримував вбудовані об'єкти Microsoft OLE та об'єкти передплатників Macintosh Edition Manager, які не читаються людиною.

Загальне використання та сумісність

Більшість програмного забезпечення для обробки текстів підтримує імпорт і експорт у форматі RTF для певної специфікації RTF або пряме редагування, що робить його «загальним» форматом між інакше не сумісним програмним забезпеченням для обробки текстів та операційними системами. Більшість програм, які читають файли RTF, мовчки ігнорують невідомі керуючі слова RTF.[36] Ці фактори сприяють його сумісності, хоча це все ще залежить від конкретної версії RTF, яка використовується.[7] Існує кілька свідомо створених або випадково народжених діалектів RTF.[36]

RTF — це внутрішня мова розмітки, яка використовується Microsoft Word.[33] З 1987 року файли RTF можна передавати туди-сюди між багатьма старими та новими комп'ютерними системами (а тепер і через Інтернет), незважаючи на відмінності між операційними системами та їх версіями. Це робить його корисним форматом для базових форматованих текстових документів, таких як інструкції з експлуатації, резюме, листи та скромні інформаційні документи. Ці документи, як мінімум, підтримують форматування тексту жирним шрифтом, курсивом і підкресленням. Також зазвичай підтримуються вирівняний за лівим, центральним і правим краєм текст, специфікацію шрифту та поля документа.

Типові параметри шрифту та полів, стилі та інші функції залежать від типових параметрів програми. Також може бути несумісність між різними версіями RTF, наприклад між специфікаціями RTF 1.0 1987 і пізнішими, або між RTF 1.0-1.4 і RTF 1.5+ у використанні символів Unicode.[37][38][39] І хоча RTF підтримує такі метадані, як назва та автор, не всі реалізації підтримують це. Незважаючи на це, формат RTF є достатньо послідовним, щоб вважатися високопортативним і прийнятним для кросплатформного використання.

Об'єкти

Об'єкти Microsoft Object Linking and Embedding (OLE) і об'єкти передплатника Macintosh Edition Manager дозволяють вбудовувати інші файли всередину RTF, наприклад таблиці або діаграми з програми для роботи з електронними таблицями. Однак, оскільки ці об'єкти не підтримуються широко в програмах для перегляду або редагування файлів RTF, вони також обмежують сумісність RTF.[40][41][42][43][44] Якщо програмне забезпечення, яке розуміє певний об'єкт OLE, недоступне, об'єкт відображається за допомогою зображення об'єкта, вбудованого разом із ним.[45]

Зображення

RTF підтримує включення JPEG, PNG, Enhanced Metafile (EMF), Windows Metafile (WMF), Apple PICT, Windows device-dependent bitmap і OS/2 Metafile типи зображень у шістнадцятковому (за замовчуванням) або двійковому форматі у файлі RTF. Однак не всі ці типи зображень підтримуються в усіх програмах читання RTF. Коли документ RTF відкривається в програмному забезпеченні, яке не підтримує тип вставленого зображення, зображення не відображається. Редактори RTF зазвичай або перетворюють вставлене зображення непідтримуваного типу на зображення одного з підтримуваних типів, або взагалі не включають зображення.

Для кращої сумісності з продуктами Microsoft деякі редактори RTF включають те саме зображення в двох різних типах в одному файлі RTF: один підтримуваний тип зображення для відображення та одна нестиснена WMF-копія оригінального зображення для покращення сумісності з деякими програмами Microsoft, наприклад Wordpad.[46]

Цей метод значно збільшує розмір файлу RTF. Специфікація RTF не вимагає використання цього методу, і кілька реалізацій не включають копію WMF (наприклад, Abiword або Ted).

Для Microsoft Word також можна встановити певне значення реєстру («ExportPictureWithMetafile=0»), щоб заборонити Word зберігати копію WMF.[46]

Шрифти

RTF підтримує вбудовування шрифтів, які використовуються в документі, але ця функція не підтримується широко в програмних реалізаціях.[47][48][49]

RTF також підтримує загальні назви сімейств шрифтів, які використовуються для заміни шрифтів: roman (serif), Swiss (sans-serif), modern (monospace), script, decorative та technical.[19] Ця функція також не підтримується широко.

Анотації

Починаючи з RTF 1.0, специфікація RTF підтримує анотації/коментарі документів.[19] Специфікація RTF 1.7 визначила деякі нові функції для анотацій, зокрема позначку дати (раніше була лише «мітка часу») і батьків анотацій.[27] Коли документ RTF із анотаціями відкривається в програмі, яка не підтримує анотації RTF, анотації не відображаються. Так само, коли документ із анотаціями зберігається як RTF у програмі, яка не підтримує анотації RTF, анотації не зберігаються у файлі RTF. Деякі реалізації, як-от Abiword (починаючи з версії 2.8) і IBM Lotus Symphony (до версії 1.3), можуть приховувати анотації за замовчуванням або потребувати певних дій користувача для їх відображення.

Специфікація RTF також підтримує виноски, які широко підтримуються у реалізаціях RTF (наприклад, у OpenOffice.org, Abiword, KWord, Ted, але не у Wordpad). Кінцеві виноски реалізовано як варіацію виносок, тому програми, які підтримують виноски, але не підтримують кінцеві виноски, відображатимуть кінцеву виноску як виноску.

Продукти Microsoft не підтримують коментарі в нижніх колонтитулах, виносках і заголовках. Подібним чином продукти Microsoft не підтримують виноски в верхніх і нижніх колонтитулах або коментарях. Вставлення коментаря або виноски в один із цих заборонених контекстів може призвести до пошкодження документа.[29]

Малювання предметів

Специфікація RTF 1.2 визначила використання об'єктів малювання, відомих як фігури, таких як прямокутники, еліпси, лінії, стрілки та багатокутники. Специфікація RTF 1.5 представила багато нових керуючих слів для малювання об'єктів.[25]

Однак багато реалізацій RTF, наприклад Apache OpenOffice, не підтримують об'єкти малювання[50] (хоча вони підтримуються в LibreOffice 4.0[51]) або Abiword.[52] Програми, які не підтримують об'єкти малювання RTF, не відображають і не зберігають фігури. Деякі реалізації також не відображатимуть текст усередині об'єктів малювання.[53][54]

Питання безпеки

На відміну від формату DOC Microsoft Word, а також новіших форматів Office Open XML і OpenDocument, RTF не підтримує макроси . З цієї причини RTF часто рекомендувався замість цих форматів, коли було занепокоєння щодо поширення комп'ютерних вірусів через макроси. Однак, розширення RTF не гарантує що файл є безпечним, оскільки Microsoft Word відкриє стандартні файли DOC, зі зміненим на RTF розширенням, і запустить будь-які макроси, що містяться в них, як звичайно. Щоб визначити, чи є підозрілий файл справді RTF, потрібне ручне дослідження файлу в текстовому редакторі, такому як Блокнот, або використання команди file в UNIX -подібних системах.[9][55] Увімкнення параметра Word «Підтвердити перетворення формату файлу під час відкриття» також може допомогти, попереджаючи, що документ, який відкривається, має формат, що не відповідає формату, передбаченому його розширенням, і надаючи можливість перервати відкриття цього файлу. Один експлойт, що атакує вразливість, було виправлено в Microsoft Word у квітні 2015 року.[56]

З 2014 року з'явилися RTF-файли зловмисного програмного забезпечення, які містять експлойти OpenXML.[57]

Підтримка формату програмним забезпеченням

Кожна програма зазвичай реалізує лише деякі версії або підмножини специфікації RTF.[7] Багато доступних конвертерів RTF не можуть зрозуміти всі нові функції в останніх специфікаціях RTF.[37][58]

Редактор WordPad у Microsoft Windows за замовчуванням створює файли RTF. Колись за замовчуванням використовувався формат файлу Microsoft Word 6.0, але підтримку збереження для документів Word (.doc) було вилучено в оновленні безпеки. У Windows 7 також припинено підтримку читання. WordPad не підтримує деякі функції RTF, наприклад верхні та нижні колонтитули.[59] Однак WordPad може читати та зберігати багато функцій RTF, які він не може створити, включаючи таблиці, закреслення, верхній індекс, нижній індекс, «додаткові» кольори, кольори фону тексту, нумеровані списки, відступи праворуч або ліворуч, квазігіпертекст і URL-посилання, а також різні міжрядкові інтервали. RTF також є форматом даних для «текстових елементів керування» в MS Windows API.[33]

Текстовий редактор за замовчуванням для macOS, TextEdit, також може переглядати, редагувати та зберігати файли RTF, а також файли RTFD, і використовує формат як стандартний. Станом на липень 2009 року TextEdit має обмежені можливості редагування полів документа RTF. Набагато старіші прикладні програми для обробки текстів Mac, такі як MacWrite та WriteNow, мали ті самі можливості RTF, що й TextEdit.

Безкоштовні текстові процесори з відкритим кодом AbiWord, Apache OpenOffice, Bean, Calligra, KWord, LibreOffice і NeoOffice можуть переглядати, редагувати та зберігати файли RTF. Формат RTF також використовується в текстовому процесорі Ted .

Scrivener використовує окремі файли RTF для всіх текстових файлів, які складають певний «проект».

Безкоштовна програма SIL International, для розробки та публікації словників, використовує RTF як найпоширенішу форму виведення документів. Файли RTF, створені Toolbox, призначені для використання в Microsoft Word, але також можуть використовуватися іншими текстовими процесорами, що підтримують RTF.

RTF можна використовувати на деяких пристроях для читання електронних книг завдяки його сумісності,[60] простоті та низьких вимогах до процесора.

Бібліотеки та конвертери

Сценарій з відкритим кодом rtf2xml може частково конвертувати RTF у XML.[61][62]

GNU UnRTF — це програма з відкритим кодом для перетворення RTF у HTML, LaTeX, макроси troff та інші формати. pyth — це бібліотека Python для створення та конвертації документів у форматах RTF, XHTML і PDF. Ruby RTF — це проект для створення форматованого текстового вмісту за допомогою Ruby . RaTFink — це бібліотека процедур Tcl, безкоштовне програмне забезпечення для генерування виводу RTF і сценарій Cost для перетворення SGML у RTF. RTF::Writer — це модуль Perl для створення документів RTF. PHPRtfLite — це API, який дозволяє розробникам створювати документи RTF за допомогою PHP. Pandoc — це конвертер документів з відкритим вихідним кодом із кількома вихідними форматами, включаючи RTF. RTFGen — це проект для створення документів RTF за допомогою чистого PHP. rtf.js — це бібліотека на основі JavaScript для відтворення документів RTF у HTML.

Інструмент командного рядка macOS textutil може конвертувати файли між форматами rtf, rtfd, text, doc, docx, wordml, odt і webarchive.[63] Редактор Ted також може конвертувати файли RTF у формат HTML і PS.

Критика

Формат Rich Text Format був стандартним форматом файлів для текстових документів у програмах, розроблених для Microsoft Windows. Microsoft спочатку не оприлюднила специфікацію RTF, що ускладнювало конкурентам розробку функцій перетворення документів у своїх програмах. Оскільки розробники Microsoft мали доступ до специфікації, програми Microsoft мали кращу сумісність із форматом. Крім того, кожного разу, коли Microsoft змінювала специфікацію RTF, власні програми Microsoft мали перевагу за часом виходу на ринок, оскільки конкурентам доводилося переробляти свої програми після вивчення новішої версії формату.

У своїй антимонопольній скарзі проти Microsoft у 2004 році Novell стверджувала, що дії Microsoft були антиконкурентними.[64][65]

Примітки

Джерела

Посилання