Rich Text Format (RTF, リッチテキストフォーマット)は、文書ファイルフォーマット の1つ。交換・編集可能なクロスプラットフォーム の文書フォーマットとして1987年 からマイクロソフト により開発され、仕様の策定が進められた。多くのワープロソフトで読み書き可能。ファイル拡張子 は「.rtf」。
プレーンテキスト に比べて、文字のフォント ・大きさ・色や太字・斜体などの装飾指定、画像の表示、文字揃え (左揃え/中央揃え/右揃え)、箇条書き 、表 などの簡易レイアウトを行える特徴があり、比較的簡易なワープロソフト のデータフォーマットの一つとして位置づけられる。
また、PDF は主に閲覧・印刷を目的とした交換フォーマットであるのに対して、RTFは編集可能な交換フォーマットとなっている。
仕様
1992年 にRich Text Formatの仕様であるRTF 1.0が公開され、2007年1月にRTF 1.9となっている。
1992年6月 RTF 1.0
1994年1月 RTF 1.3
1995年9月 RTF 1.4
1997年4月 RTF 1.5
1999年5月 RTF 1.6
2001年8月 RTF 1.7
2004年4月 RTF 1.8
2007年1月 RTF 1.9
2008年3月 RTF 1.9.1
バージョンの履歴
RTF 1.3の仕様はMicrosoft Word 6.0の機能をすべて含んでいる。 ※ただし日本語版に関しては一部機能が後述するRTF-Jに含まれる。以下同様。
RTF 1.4の仕様はWord 7.0の機能をすべて含んでいる。
RTF 1.5の仕様はWord 95 Version 7.0とWord 97で追加された命令語に対応した。
RTF 1.6の仕様は、上記のほかWord 2000、Macintosh版Word 98などで追加された命令語をサポートするほか、Pocket Word、Exchange向け仕様(RTF ⇔ HTML変換に使用)を含む。
RTF 1.7の仕様は上記のほかWord 2002で追加された命令語をサポートする。
RTF 1.8の仕様はWord 2003の新機能をサポートする。
RTF 1.9.1の仕様はWord 2007の新機能をサポートする。ほかPocket Word、RichEdit、Exchange、Microsoft Outlook 向けの追加機能がある。 さらに以下をサポートする。
XMLマークアップ、名前空間のカスタム定義をサポート ※XMLの利用方法についてはOffice Open XML 仕様 (Ecma-376, Part4) を参照。
カスタムXMLスキーマのバリデーション
XML形式に保存する際にはXSL を出力できる(仕様書には記述無し)
RTF内にOMML を記述できる
読み込み専用パスワードでRTFを保護できる
マイクロソフトはRTFの仕様を1.9.1以上には更新しないと言明しているが、ISO/IEC 29500策定の間に小さい修正を加えたい意向である。機能面には影響はないと見られる。
Rich Text Format (RTF) の仕様はMicrosoft WordとOfficeのメジャーバージョンアップの度に改訂されている。
RTF仕様とMicrosoft Wordの対応[ 4] [ 5]
RTFバージョン
発行日
Microsoft Wordのバージョン
Microsoft Wordのリリース日
備考
1.0
1987
Microsoft Word 3
1987
最終版は92年6月[ 6] [ 7] 。 1992版ではMicrosoftのObject Linking and Embedding (OLE) オブジェクトとMacintosh版でのManager subscriberオブジェクトをサポートした。 またWMF 、PICT 、WindowsのDIB 、OS/2 メタファイル各形式の画像の貼り込みをサポートする。
1.1
Microsoft Word 4
1989
フォントの文書ファイル内への埋め込みをサポート
1.2
1993
Microsoft Word 5
1991
[ 8] [ 9]
1.3
1994年1月
Microsoft Word 6
1993
GC0165; DIB の貼り付けが互換性の問題で非推奨になった。以後はWMF の使用が推奨される[ 10] [ 11] 。
1.4
1995年9月
Microsoft Word 95/Word 7
1995
1.5
1997年4月
Microsoft Word 97/Word 8
1997
Unicode RTFの導入 - 16ビット Unicode エンコーディングが可能になった。 画像の添付についてはPNG 、JPEG 、EMF 画像形式は16進数のバイナリ形式で貼り付けられる[ 12] 。
1.6
1999年5月
Microsoft Word 2000/Word 9
1999
Word 2000 RTF仕様 [ 13]
1.7
2001年8月
Microsoft Word 2002/Word 10
2001
Word 2002 RTF仕様
[ 14]
[ 15]
RTF version 1.7はWindows版Word 95/97/2000/2002、Macintosh版Word 98などで追加された命令語をサポートする。
1.8
2004年4月
Microsoft Word 2003/Word 11
2003
Word 2003 RTF仕様[ 16]
Version 1.8はMicrosoft Word 2003にて追加された拡張機能を備える。
1.9.1
2008年3月19日 (RTF 1.9 - 2007年1月)[ 17]
Microsoft Word 2007/Word 12
2006
XMLマークアップの導入 - カスタム XML タグ, スマートタグ, RTF内の数学記号のサポート - Office Open XML 仕様への準拠 (Ecma-376, Part 4)[ 18]
コード例
RTFのデータはテキスト形式 を用いており、プレーンテキストに装飾やレイアウトのための制御用の文字列を付加した形式となっている。後に現れたHTML などのマークアップ言語 とは表記方法が異なる。
RTFの予約文字は{}\
の3種のみである。{}
はブロックを定義し、\
に続く文字列・記号は命令語として解釈される。パラメータを取る場合もある。バージョンの違いなどにより解釈できない場合は無視される。改行文字には意味はなく、改行はそれに対応した命令語によって行われる。
{\rtf
Hello!\par
This is some {\b bold} text.\par
}
上のサンプルは下のように表示される。
Hello!
This is some bold text.
文字エンコーディング
標準的なRTFファイルは7ビットのASCII 文字で記述されているが、エスケープシーケンス を使うことでそれ以外の文字を扱える。コードページ のエスケープのほか、RTF 1.5以降ではUnicodeのエスケープができる。
RTF 1.5よりも前のバージョンでは、7ビット文字以外は16進数のエスケープシーケンス (\'xx
) で記述された。またRTF 1.5以降において、Unicodeで32767以降の文字は負の数で表現され、Unicode plane に収まらない文字はサロゲートペア で表現される。
コードページは\ansicpgN
などの命令で指定される。例えば日本語のリッチテキスト文書では通例\ansicpg932
によりMicrosoftコードページ932 が指定され、日本語の文字はシフトJIS コードを16進数のエスケープシーケンスで表した記法が用いられる。たとえば、\'82\'a0\'82\'a2\'82\'a4
のように表記され、これは「あいう」を表している。
人間にとっての可読性
ワードプロセッサのファイル形式は、データ量削減などの観点からバイナリ形式を採用しているものもあり、人間が直接読めないことも多いが、RTFはプレーンテキストで記述されるので人間が読むことのできるフォーマットである。しかしながらMicrosoft Wordなどが出力するRTFは膨大な命令コードが入るため非常に読みにくくなる。さらに7ビットASCII以外の文字はすべてエスケープされるので、文字コードを知らない限り読めなくなる。
RTFは書式付きテキストであるが、本当の意味でのマークアップ言語ではないので、人が手で編集することは考慮されていない。またOLEオブジェクトなどが貼り付けられると、これも人には解読できない。
一般的な用途と相互運用性
大半のワードプロセッサではRTFの読み書きができるが、RTFのバージョン次第のところがある。未知の命令語が入っている場合は無視されてしまうことが多い。
オブジェクト
MicrosoftのOLE、またMacintosh版のsubscriber objectsの貼り付けは、元のアプリがないとその部分を編集できないため相互運用性を妨げる。もし開いた文書に自分の持たないアプリで作成されたOLEオブジェクトがある場合、代替ビットマップが表示されるか、全く表示されない。
画像
JPEG、PNG, EMF, WMF, PICT, DIBがサポートされる。RTF作成ソフトは、サポート外のファイル形式 (BMP, TIFF, GIF等) を与えられた場合はPNG, WMFなどに変換して貼り付けるか、無視して表示しないようにする。
Microsoft Wordはレジストリに ("ExportPictureWithMetafile=0") の値を設定することで、WMFへの変換を禁止できる。
フォント
フォントの埋め込みが仕様にあるが、広くサポートされてはいない。
またフォントにファミリー名(セリフ(明朝系)、サンセリフ(ゴシック系))を指定できるが、これも広くサポートされてはいない。
注釈
注釈機能があるが、OpenOffice(3.3時点)、LibreOffice (3.3.2時点)などでは注釈のインポートができないなど、サポートは限定的である。
描画オブジェクト
セキュリティ上の注意
RTF-J
バージョン1.3から1.9.1現在にかけて、主にWord向けに日本語用の独自拡張仕様があり[ 19] [ 20] 、バージョン1.3から1.5ではRTF-Jと呼ばれる。バージョン1.6以降の仕様書では同様の拡張をFar East Support (1.6), East Asian Support (1.9.1) などと呼びつつ、仕様詳細部分では特に説明なくRTF-Jの呼称が使われている。
適切なマークアップを施すことでシフトJIS文字列を直接記述することもできる[ 19] が、この仕様は7ビットのASCII文字で記述という大前提に反するものである。そのためのリーダーは単に全ビットをそのまま通せば良いわけではなく、下位バイトに\
を含むシフトJIS文字、いわゆるダメ文字 に対して正しく対応できなければならない。またこの機能は読み込みにのみ適用され、書き出す場合はエスケープされる[ 注釈 1] 。
Unicodeに関しては前述の通りRTF 1.5以降でサポートされているが、Unicode文字列の直接記述に関しては1.9.1現在でもサポートされていない。
RTF仕様のバージョンアップと同時に独自拡張仕様も追加されることがあるが、単体ではバージョン番号を持たず、拡張元のバージョンで区別される。
マイクロソフト製品以外ではほとんどサポートされない。
RTFに対応したソフトウェア
オペレーティングシステム に付属するアクセサリソフトウェアをはじめ、多くのワープロソフト がRTFの読み書きに対応している。
例:
Win32 コントロールのRichEditは、リッチテキスト形式データの表示・編集およびクリップボード経由のコピー&ペーストに対応している[ 21] [ 22] 。
マイクロソフトのソフトウェア開発・実行環境である.NET Framework において、Windows Forms のRichTextBox
クラスにRTF対応のLoadFile()
メソッド等が当初から実装されている[ 23] 。.NET Core 3.0以降にも移植されている[ 24] [ 注釈 2] 。
RTFD
NEXTSTEP 、およびNEXTSTEPに由来する機能を持つmacOS ・iOS では、Rich Text Formatを拡張したRTFD (Rich Text Format Directory、添付書類付きRTF)というフォーマットも使われている。その実体は、独自拡張したRTFファイルと添付ファイルを、拡張子RTFDの同一フォルダに入れたものである。なおOSからは拡張子RTFDののフォルダは、単一のアーカイブファイルに見えるようになっている。
脚注
注釈
^ Word 6.0JではINIファイル を編集することで直接書き出すこともできた。
^ .NET Core自体はクロスプラットフォームだが、Windows FormsはWindows版のみが実装されている。
出典
^ “application/rtf ” (英語) (2007年6月18日). 2016年6月11日 閲覧。
^ Lindner, Paul (1993年6月8日). “Registration of new MIME content-type/subtype ” (英語). 2016年6月11日 閲覧。
^ “System-Declared Uniform Type Identifiers ” (英語) (2009年11月17日). 2016年6月11日 閲覧。
^ “Information about the Rich Text Format (RTF) version specifications for various versions of Word ” (2007年2月21日). 2010年3月13日 閲覧。
^ “Those who forget Santayana… ”. Rob Weir (2007年12月20日). 2010年3月13日 閲覧。
^ Microsoft Corporation (RTF), Rich-Text Format (RTF) Specification - RTF Version 1.0 , http://www.snake.net/software/RTF/Old/RTF-Spec-1.0.rtf 2010年3月13日 閲覧。
^ Microsoft Corporation (June 1992) (TXT), Microsoft Product Support Services Application Note (Text File) - GC0165: Rich-Text Format (RTF) Specification , http://latex2rtf.sourceforge.net/RTF-Spec-1.0.txt 2010年3月13日 閲覧。
^ Microsoft Corporation (RTF), Rich Text Format Specification v. 1.2 , http://www.snake.net/software/RTF/Old/RTF-Spec-1.2.rtf 2010年3月13日 閲覧。
^ (PDF) Rich Text Format Specification v. 1.2 , http://latex2rtf.sourceforge.net/RTF-Spec-1.2.pdf 2010年3月13日 閲覧。
^ Microsoft Corporation (January 1994) (RTF), Rich Text Format (RTF) Specification - RTF Version 1.3 , http://www.snake.net/software/RTF/RTF-Spec-1.3.rtf 2010年3月13日 閲覧。
^ Microsoft Corporation (January 1994) (TXT), Rich Text Format (RTF) Specification - RTF Version 1.3 , http://latex2rtf.sourceforge.net/RTF-Spec-1.3.txt 2010年3月13日 閲覧。
^ Microsoft Corporation. “Rich Text Format (RTF) Version 1.5 Specification ”. 2010年3月13日 閲覧。
^ Microsoft Corporation (1999-05-31), Rich Text Format (RTF) Specification, version 1.6 , http://msdn.microsoft.com/en-us/library/office/aa140277%28v=office.10%29.aspx 2014年5月21日 閲覧。
^ Microsoft Corporation (2001-08-31) (EXE (ZIP)), Word 2002 Tool: Rich Text Format Specification - 8/2001– Word 2002 RTF Specification , http://download.microsoft.com/download/Word2002/Install/1.7/W98NT42KMeXP/EN-US/W2KRTFSF.exe 2014年5月21日 閲覧。
^ Word 2002 Tool: Rich Text Format Specification , https://web.archive.org/web/20101112181441/http://www.microsoft.com/downloads/en/details.aspx?familyid=E5B8EBC2-6AD6-49F0-8C90-E4F763E3F04F&displaylang=en 2012年9月26日 閲覧。
^ Microsoft Corporation (2004年4月20日). “Word 2003: Rich Text Format (RTF) Specification, version 1.8 ”. 2014年5月21日 閲覧。
^ “RTF 1.9 Specification (Word 2007) ”. Greg Duncan (2007年1月9日). 2010年3月13日 閲覧。
^ Microsoft Corporation (2008年3月20日). “Word 2007: Rich Text Format (RTF) Specification, version 1.9.1 ”. 2014年5月21日 閲覧。
^ a b 『RTF Ver. 1.3 仕様書』 アスキー出版局、1995年。 ISBN 4-7561-1010-X
^ “Microsoft® Office Rich Text Format (RTF) Specification Version 1.9.1 ” (2008年3月19日). 2022年2月20日 閲覧。
^ About Rich Edit Controls - Win32 apps | Microsoft Learn
^ How to Use Rich Edit Clipboard Operations - Win32 apps | Microsoft Learn
^ RichTextBox Class (System.Windows.Forms) | Microsoft Learn
^ RichTextBox Class (System.Windows.Forms) | Microsoft Learn
関連項目
外部リンク