Rich Text Format

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の対応 RTFバージョン 発行日 Microsoft Wordのバージョン Microsoft Wordのリリース日 備考 1.0 1987 Microsoft Word 3 1987 最終版は92年6月。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  1.3 1994年1月 Microsoft Word 6 1993 GC0165; DIBの貼り付けが互換性の問題で非推奨になった。以後はWMFの使用が推奨される。 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進数のバイナリ形式で貼り付けられる。 1.6 1999年5月 Microsoft Word 2000/Word 9 1999 Word 2000 RTF仕様  1.7 2001年8月 Microsoft Word 2002/Word 10 2001 Word 2002 RTF仕様

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仕様
Version 1.8はMicrosoft Word 2003にて追加された拡張機能を備える。 1.9.1 2008年3月19日 (RTF 1.9 - 2007年1月) Microsoft Word 2007/Word 12 2006 XMLマークアップの導入 - カスタム XML タグ, スマートタグ, RTF内の数学記号のサポート - Office Open XML仕様への準拠 (Ecma-376, Part 4)

 コード例 
RTFのデータはテキスト形式を用いており、プレーンテキストに装飾やレイアウトのための制御用の文字列を付加した形式となっている。後に現れたHTMLなどのマークアップ言語とは表記方法が異なる。

RTFの予約文字は{}\の3種のみである。{}はブロックを定義し、\に続く文字列・記号は命令語として解釈される。パラメータを取る場合もある。バージョンの違いなどにより解釈できない場合は無視される。改行文字には意味はなく、改行はそれに対応した命令語によって行われる。

 RTFの一例:

 {\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向けに日本語用の独自拡張仕様があり『RTF Ver. 1.3 仕様書』　アスキー出版局、1995年。 ISBN 4-7561-1010-X、バージョン1.3から1.5ではRTF-Jと呼ばれる。バージョン1.6以降の仕様書では同様の拡張をFar East Support (1.6), East Asian Support (1.9.1) などと呼びつつ、仕様詳細部分では特に説明なくRTF-Jの呼称が使われている。

適切なマークアップを施すことでシフトJIS文字列を直接記述することもできるが、この仕様は7ビットのASCII文字で記述という大前提に反するものである。そのためのリーダーは単に全ビットをそのまま通せば良いわけではなく、下位バイトに\を含むシフトJIS文字、いわゆるダメ文字に対して正しく対応できなければならない。またこの機能は読み込みにのみ適用され、書き出す場合はエスケープされる。
Unicodeに関しては前述の通りRTF 1.5以降でサポートされているが、Unicode文字列の直接記述に関しては1.9.1現在でもサポートされていない。

RTF仕様のバージョンアップと同時に独自拡張仕様も追加されることがあるが、単体ではバージョン番号を持たず、拡張元のバージョンで区別される。

マイクロソフト製品以外ではほとんどサポートされない。

 RTFに対応したソフトウェア 
オペレーティングシステムに付属するアクセサリソフトウェアをはじめ、多くのワープロソフトがRTFの読み書きに対応している。

例:
ワードパッド - Microsoft Windows付属のソフトウェア
テキストエディット - macOS付属のソフトウェア
Pages - ワープロ・ページレイアウトソフトウェア
LibreOffice - オフィスソフトウェア
iText - テキストエディタ
Jedit - Mac OS用のソフトウェア

Win32コントロールのRichEditは、リッチテキスト形式データの表示・編集およびクリップボード経由のコピー＆ペーストに対応しているAbout Rich Edit Controls - Win32 apps | Microsoft LearnHow to Use Rich Edit Clipboard Operations - Win32 apps | Microsoft Learn。

マイクロソフトのソフトウェア開発・実行環境である.NET Frameworkにおいて、Windows FormsのRichTextBoxクラスにRTF対応のLoadFile()メソッド等が当初から実装されているRichTextBox Class (System.Windows.Forms) | Microsoft Learn。.NET Core 3.0以降にも移植されているRichTextBox Class (System.Windows.Forms) | Microsoft Learn。

 RTFD 
NEXTSTEP、およびNEXTSTEPに由来する機能を持つmacOS・iOSでは、Rich Text Formatを拡張したRTFD（Rich Text Format Directory、添付書類付きRTF）というフォーマットも使われている。その実体は、独自拡張したRTFファイルと添付ファイルを、拡張子RTFDの同一フォルダに入れたものである。なおOSからは拡張子RTFDののフォルダは、単一のアーカイブファイルに見えるようになっている。

 脚注 

 注釈 

 出典 

 関連項目 
ファイルフォーマット

 外部リンク 
Microsoft RTF1.6仕様 1999年5月
Microsoft RTF1.7仕様 2001年8月
Microsoft RTF1.8仕様 2004年4月
Microsoft RTF1.9仕様 2007年1月
 [MS-OXRTFCP]: Informative References | Microsoft Learn
 Microsoft® Office Rich Text Format (RTF) Specification Version 1.9.1

Category:ファイルフォーマット