Какво е RTF файл?
Въведен и документиран от Microsoft, Rich Text Format (RTF) представлява метод за кодиране на форматиран текст и графики за използване в приложения. Форматът улеснява междуплатформения обмен на документи с други продукти на Microsoft, като по този начин обслужва целта на оперативната съвместимост. Тази способност го прави стандарт за пренос на данни между софтуер за текстообработка и следователно съдържанието може да се прехвърля от една операционна система в друга, без да се губи форматирането на документа. Спецификациите на файловия формат са достъпни от Microsoft за публично изтегляне и могат да бъдат използвани от гледна точка на програмиста.
Кратка история на файловия формат RTF
Файловият формат RTF е претърпял няколко ревизии след публикуването си. Неговата официална версия за четене/запис беше публикувана като част от Microsoft Word 3.0 за Macintosh с версия 1.0 спецификации. Окончателната версия на спецификациите, 1.9.1, беше публикувана от Microsoft през март 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 файл има следния стандартен синтаксис:
Въведен и документиран от Microsoft, Rich Text Format (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 numeric“ кодове – т.е., когато задържите 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 документ трябва да завършва с }, за да се затвори групата, отворена от {, който е първият знак в документа. Нищо не може да следва финалния }, освен евентуално нов ред.