Введение
Формат файла документа, разработанный Microsoft.
Формат Rich Text (часто сокращается как RTF) — это запатентованный формат файла документа с опубликованной спецификацией, разработанный корпорацией Microsoft с 1987 по 2008 год для обеспечения кроссплатформенного обмена документами с продуктами Microsoft. До 2008 года Microsoft публиковала обновленные спецификации для RTF, внося существенные изменения с каждой новой версией Microsoft Word и Office. Большинство текстовых процессоров способны читать и записывать некоторые версии RTF. Существует несколько различных редакций спецификации RTF, и переносимость файлов зависит от используемой версии RTF. RTF не следует путать с форматированным текстом или его предшественником Rich Text, а также с 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. Microsoft прекратила дальнейшее развитие спецификации RTF, поэтому новые функции в Word 2010 или более поздних версиях не будут корректно сохраняться в RTF. Microsoft не планирует дальнейших обновлений RTF, но заявила о готовности рассмотреть редакторские и другие несущественные изменения спецификации RTF в период голосования по ISO/IEC 29500. Файлы RTF использовались для создания файлов справки Windows Help, однако они были заменены файлами Microsoft Compiled HTML Help. + Спецификации RTF для Microsoft Word RTF версия Дата публикации Версия Microsoft Word Дата выпуска MS Word Примечания 1.0 1987 Microsoft Word 3 1987 Последняя редакция вышла в июне 1992 года. Редакция 1992 года определила поддержку объектов Microsoft Object Linking and Embedding (OLE) и объектов подписчиков Macintosh Edition Manager. Также поддерживалось включение в RTF изображений типов Windows Metafile, PICT, растровых изображений Windows, зависимых от устройства, растровых изображений Windows, независимых от устройства, и OS/2 Metafile. 1.1 Microsoft Word 4 1989 Разрешено встраивание шрифтов, позволяющее размещать данные шрифтов внутри файла. 1.2 1993 Microsoft Word 5 1991 1.3 Январь 1994 Microsoft Word 6 1993 1/94 GC0165; для обеспечения независимости от устройств и совместимости рекомендуется встраивать растровые изображения в метафайлы Windows вместо использования растровых изображений Windows, независимых от устройств, или растровых изображений Windows, зависимых от устройств. 1.4 Сентябрь 1995 Microsoft Word 95/Word 7 1995 1.5 Апрель 1997 Microsoft Word 97/Word 8 1997 Внедрен Unicode RTF, поддерживающий 16-битную схему кодирования символов Unicode; определено включение типов изображений PNG, JPEG и EMF в шестнадцатеричном (по умолчанию) или бинарном формате в файл RTF. 1.6 Май 1999 Microsoft Word 2000/Word 9 1999 Включает Pocket Word и Exchange (используется в преобразованиях RTF в HTML). 1.8 Апрель 2004 Microsoft Word 2003/Word 11 2003 10/2003 – Спецификация RTF для Word 2003 Microsoft Word 2007/Word 12 2006 Допускается XML-разметка – пользовательские XML-теги, SmartTags, математические элементы в документе RTF, защита паролем, элементы, соответствующие Office Open XML Ecma 376 Часть 4.
Объекты
Объекты Microsoft Object Linking and Embedding (OLE) и объекты подписчика Macintosh Edition Manager позволяют встраивать другие файлы внутрь RTF, например таблицы или диаграммы из программ электронных таблиц. Однако, поскольку эти объекты не поддерживаются большинством программ для просмотра и редактирования RTF-файлов, это также снижает совместимость RTF. Если необходимое программное обеспечение для работы с конкретным объектом OLE отсутствует, объект отображается в виде картинки, которая встроена вместе с ним.
Фотографии
RTF поддерживает включение изображений форматов JPEG, PNG, Enhanced Metafile (EMF), Windows Metafile (WMF), Apple PICT, растровое изображение Windows, зависимое от устройства, растровое изображение Windows, независимое от устройства, и OS/2 Metafile в шестнадцатеричном (по умолчанию) или бинарном формате в файл RTF. Однако не все эти типы изображений поддерживаются всеми программами для чтения RTF. Если документ RTF открывается в программе, не поддерживающей тип изображения вставленной картинки, эта картинка не будет отображаться. Программы для создания RTF обычно либо преобразуют вставленную картинку в неподдерживаемом формате в поддерживаемый формат, либо не включают её вовсе. Для обеспечения лучшей совместимости с продуктами Microsoft некоторые программы для создания RTF включают одно и то же изображение в двух разных форматах в одном файле RTF: один поддерживаемый формат для отображения и одну несжатую копию исходного изображения в формате WMF для повышения совместимости с некоторыми приложениями Microsoft, такими как Wordpad. Этот метод значительно увеличивает размер файла RTF. Спецификация RTF не требует использования этого метода, и некоторые реализации не включают копию WMF (например, Abiword или Ted). Для Microsoft Word также можно установить определенное значение в реестре ("ExportPictureWithMetafile=0"), чтобы Word не сохранял копию WMF. RTF также поддерживает общие имена семейств шрифтов, используемые для подстановки шрифтов: roman (с засечками), Swiss (без засечек), modern (моноширинный), script (рукописный), decorative (декоративный) и technical (технический). (хотя они поддерживаются начиная с LibreOffice 4.0) или Abiword. Приложения, не поддерживающие объекты рисования RTF, не отображают и не сохраняют фигуры. Некоторые реализации также не отображают текст внутри объектов рисования.
Проблемы безопасности
В отличие от формата DOC Microsoft Word, а также более новых форматов Office Open XML и OpenDocument, RTF не поддерживает макросы. По этой причине RTF часто рекомендовали вместо этих форматов, когда распространение компьютерных вирусов через макросы вызывало опасения. Однако наличие расширения RTF не гарантирует безопасность файла, поскольку Microsoft Word откроет стандартные файлы DOC, переименованные в RTF, и выполнит содержащиеся в них макросы как обычно. Для определения того, является ли подозрительный файл действительно RTF, требуется ручная проверка файла в простом текстовом редакторе, таком как Notepad, или использование команды `file` в UNIX-подобных системах. Включение опции Word "Подтверждать преобразование формата файла при открытии" также может помочь, предупреждая о том, что открываемый документ имеет формат, не соответствующий формату, указанному расширением файла, и предоставляя возможность отменить открытие файла. Один эксплойт, использующий уязвимость, был устранен в Microsoft Word в апреле 2015 года. С 2014 года появляются вредоносные RTF-файлы, содержащие эксплойты OpenXML.
Реализация
Каждая реализация RTF обычно поддерживает лишь некоторые версии или подмножества спецификации RTF. Редактор WordPad в Microsoft Windows по умолчанию создает RTF-файлы. Ранее он по умолчанию использовал формат файлов Microsoft Word 6.0, но возможность записи документов Word (.doc) была удалена в обновлении безопасности. Возможность чтения также была удалена в Windows 7. WordPad не поддерживает некоторые функции RTF, такие как заголовки и нижние колонтитулы. Однако WordPad может читать и сохранять многие функции RTF, которые он не может создавать, включая таблицы, зачеркивание, верхние и нижние индексы, "дополнительные" цвета, цвета фона текста, нумерованные списки, отступы слева или справа, псевдогипертекст и URL-ссылки, а также различные интервалы между строками. RTF также является форматом данных для "элементов управления Rich Text" в API MS Windows, благодаря своей простоте и низким требованиям к вычислительной мощности процессора.
Библиотеки и конвертеры
Скрипт с открытым исходным кодом rtf2xml может частично преобразовывать RTF в XML. GNU UnRTF — это программа с открытым исходным кодом для преобразования RTF в HTML, LaTeX, макросы troff и другие форматы. pyth — это библиотека Python для создания и преобразования документов в форматах RTF, XHTML и PDF. Ruby RTF — проект по созданию Rich Text-контента с помощью 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. Редактор Ted также может преобразовывать файлы RTF в форматы HTML и PS.
Критика
Формат Rich Text (RTF) был стандартным форматом файлов для текстовых документов в приложениях, разработанных для Microsoft Windows. Microsoft изначально не публиковала спецификацию RTF, что затрудняло конкурентам разработку функций преобразования документов в своих приложениях. Поскольку разработчики Microsoft имели доступ к спецификации, приложения Microsoft обеспечивали лучшую совместимость с этим форматом. Более того, каждый раз, когда Microsoft изменяла спецификацию RTF, собственные приложения Microsoft получали преимущество по времени выхода на рынок, так как конкурентам приходилось перерабатывать свои приложения после изучения обновленной версии формата. Компания Novell заявила, что действия Microsoft были антиконкурентными в своем антимонопольном иске против Microsoft, поданном в 2004 году.