Rich Text Format

Rich Text Format（RTF, リッチテキストフォーマット）は、文書ファイルフォーマットの1つ。交換・編集可能なクロスプラットフォームの文書フォーマットとして1987年からマイクロソフトにより開発され、仕様の策定が進められた。多くのワープロソフトで読み書き可能。ファイル拡張子は「.rtf」。
プレーンテキストに比べて、文字のフォント・大きさ・色や太字・斜体などの装飾指定、画像の表示、文字揃え（左揃え／中央揃え／右揃え）、箇条書き、表などの簡易レイアウトを行える特徴があり、比較的簡易なワープロソフトのデータフォーマットの一つとして位置づけられる。
また、PDFは主に閲覧・印刷を目的とした交換フォーマットであるのに対して、RTFは編集可能な交換フォーマットとなっている。
仕様.
1992年にRich Text Formatの仕様であるRTF 1.0が公開され、2007年1月にRTF 1.9となっている。
バージョンの履歴.
マイクロソフトはRTFの仕様を1.9.1以上には更新しないと言明しているが、ISO/IEC 29500策定の間に小さい修正を加えたい意向である。機能面には影響はないと見られる。
Rich Text Format (RTF) の仕様はMicrosoft WordとOfficeのメジャーバージョンアップの度に改訂されている。
コード例.
RTFのデータはテキスト形式を用いており、プレーンテキストに装飾やレイアウトのための制御用の文字列を付加した形式となっている。後に現れたHTMLなどのマークアップ言語とは表記方法が異なる。
RTFの予約文字はcodice_1の3種のみである。codice_2はブロックを定義し、codice_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進数のエスケープシーケンス (codice_4) で記述された。またRTF 1.5以降において、Unicodeで32767以降の文字は負の数で表現され、Unicode planeに収まらない文字はサロゲートペアで表現される。
コードページはcodice_5などの命令で指定される。例えば日本語のリッチテキスト文書では通例codice_6によりMicrosoftコードページ932が指定され、日本語の文字はシフトJISコードを16進数のエスケープシーケンスで表した記法が用いられる。たとえば、codice_7のように表記され、これは「あいう」を表している。
人間にとっての可読性.
ワードプロセッサのファイル形式は、データ量削減などの観点からバイナリ形式を採用しているものもあり、人間が直接読めないことも多いが、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向けに日本語用の独自拡張仕様があり、バージョン1.3から1.5ではRTF-Jと呼ばれる。バージョン1.6以降の仕様書では同様の拡張をFar East Support (1.6), East Asian Support (1.9.1) などと呼びつつ、仕様詳細部分では特に説明なくRTF-Jの呼称が使われている。
適切なマークアップを施すことでシフトJIS文字列を直接記述することもできるが、この仕様は7ビットのASCII文字で記述という大前提に反するものである。そのためのリーダーは単に全ビットをそのまま通せば良いわけではなく、下位バイトにcodice_3を含むシフトJIS文字、いわゆるダメ文字に対して正しく対応できなければならない。またこの機能は読み込みにのみ適用され、書き出す場合はエスケープされる。
Unicodeに関しては前述の通りRTF 1.5以降でサポートされているが、Unicode文字列の直接記述に関しては1.9.1現在でもサポートされていない。
RTF仕様のバージョンアップと同時に独自拡張仕様も追加されることがあるが、単体ではバージョン番号を持たず、拡張元のバージョンで区別される。
マイクロソフト製品以外ではほとんどサポートされない。
RTFに対応したソフトウェア.
オペレーティングシステムに付属するアクセサリソフトウェアをはじめ、多くのワープロソフトがRTFの読み書きに対応している。
例:
Win32コントロールのRichEditは、リッチテキスト形式データの表示・編集およびクリップボード経由のコピー＆ペーストに対応している。
マイクロソフトのソフトウェア開発・実行環境である.NET Frameworkにおいて、Windows Formsのcodice_9クラスにRTF対応のcodice_10メソッド等が当初から実装されている。.NET Core 3.0以降にも移植されている。
RTFD.
NEXTSTEP、およびNEXTSTEPに由来する機能を持つmacOS・iOSでは、Rich Text Formatを拡張したRTFD（Rich Text Format Directory、添付書類付きRTF）というフォーマットも使われている。その実体は、独自拡張したRTFファイルと添付ファイルを、拡張子RTFDの同一フォルダに入れたものである。なおOSからは拡張子RTFDののフォルダは、単一のアーカイブファイルに見えるようになっている。