グラフィカルなインタフェース
多くのアプリケーションではユーザと対話するためにグラフィカルなインタフェースを提供する必要があります。グラフィカルなインタフェースは人間がソフトウェアと対話するときに直感的かつ発見的な手段であり、ユーザはアプリケーションが使いやすく魅力的なユーザインタフェースを提供することを期待します。
GNOMEプラットフォームの特徴は洗練されたグラフィクス、およびユーザインタフェース技術であり、それは標準的なユーザインタフェースのコントロールから高品質なグラフィクスをスクリーンに描画するためのAPIまでを含みます。GNOMEのグラフィクス技術を使用することにより統一感があり、直感的で、心をとらえるアプリケーションを作成することができます。

3.1.1. GTK+
GTK+はGNOMEにおいてインタフェースを構築するときの主要なライブラリです。このライブラリは一般的なグラフィカルなアプリケーションで使用されるユーザインタフェースのコントロールやウィジェットのすべてを提供します。そのモダンでオブジェクト指向のAPIにより、描画やデバイスとの相互作用などの低レベルの詳細を処理することなく、魅力的で洗練されたユーザインタフェースを構築することができます。
GTK+はボタン、チェックボックス、テキスト・エントリ等の基本的なウィジェットに加え、ツリービュー、マルチラインのテキスト・フィールド、およびメニューやツールバーのアクションのためのモデル・ビュー・コントローラ(MVC)にもとづく強力なAPIを提供します。
GTK+のウィジェットはウィンドウ上にボックス・パッキング・モデルで配置されます。プログラマは位置を絶対的な座標を指定して配置するのではなく、コンテナ・ボックスにウィジェットをどのようにパックするか指定するだけです。GTK+はそれらのコンテンツを的確に配置し、ウィンドウのサイズ変更を自動的に処理することを保証します。
GTK+は柔軟なAPIを提供しているため、GTK+のアプリケーションで追加のウィジェットを開発するのは簡単です。追加のウィジェットを提供するサードパーティによるライブラリが数多く存在し、多くの開発者が自分のアプリケーションのために、特定の目的に使用するカスタム・ウィジェットを作成しています。
GTK+がユーザインタフェースやユーザとの相互作用にまつわる難解な詳細を処理し、シンプルで強力なAPIを提供するので、あなたはアプリケーションの詳細に集中することができます。GTK+を使用して開発されたアプリケーションは自動的にユーザのテーマやフォントの設定を引き継ぎ、アクセシビリティ技術と適切に対話し、ユーザの期待通りに動作します。
GTK+についての詳細は GTK+ Reference Manual を参照するか、GTK+のWebサイト を参照してください。
3.1.2. Libglade
Libgladeは GtkBuilder に置き換えられたため、使用は推奨されていないことに注意してください。新しく記述するコードでは代わりに GtkBuilder を使用するべきです。
LibgladeはXML定義からユーザインタフェースを動的に構築するためのライブラリです。あなたは Glade のようなグラフィカル・インタフェース・ビルダを使用してユーザインタフェースを構築して、そのインタフェース定義をアプリケーションにインポートすることができます。これにより複雑なレイアウトを構築し、レイアウトの詳細を調整することができます。
Libgladeによりインタフェースの構築でコードが分断されることなく、プログラマはアプリケーションのロジックに集中することができます。またグラフィカル・インタフェース・ビルダにより、デザイナはプログラムを知らずにインタフェースを構築することが簡単になります。
Libgladeについての詳細は Libglade Reference Manual を参照してください。
3.1.3. Pango
PangoはGNOMEプラットフォームにおいてテキストとフォントを処理する際に中核となるライブラリです。このライブラリはGTK+を介してテキストのレイアウトとレンダリングを受け持ちます。1
Pangoは世界中のさまざまな書記体系を広範囲にサポートします。言語により使用される多くの書記体系にはグリフのレイアウトや合成文字(composing characters)にたいする複雑なルールがあります。Pangoはほとんどすべての言語による記述を正しく表示し、すべての場所でユーザがネイティブの言語でテキストを閲覧できるようにします。Pangoは複数の書記体系を自動的にサポートします; アプリケーションのの開発者は他の言語をサポートするために特別なコードを記述する必要はありません。

Pangoは特有のドキュメントとインタフェースにより斜体、フォントの太さ、アンダーラインを含めたテキストの整形をサポートします。PangoはPangoMarkupと呼ばれる、XMLに似たシンプルな言語を使用することで、フォントのサイズや色、スタイルやその他のテキストの属性を設定することを可能にします。PangoMarkupを使用することにより、テキストブロックに手動で挿入することなくインラインでスタイルを設定できます。PangoMarkupはGTK+から直接使用され、グラフィカルインタフェースのテキストを整形するのを容易にします。
スクリーンやその他のデバイスにテキストをレイアウトするときは常にPangoを直接使用するべきです。Pangoを使用することによりGTK+やGNOMEプラットフォームの他の部分とシームレスにテキストをレイアウトすることができます。また可搬性のあるコードを記述でき、あなたのアプリケーションが異なる数百の言語を表示できることを保証します。
Pangoについての詳細は Pango Reference Manual を参照してください。
3.1.4. GDK
GDKはGTK+によって使用される、グラフィクスおよび入力デバイスにたいしてシステムを通してやりとりするための低レベルなライブラリです。あなたがアプリケーションのコードでGDKを直接使用するのは稀でしょうが、このライブラリにはオブジェクトやテキストをスクリーンに描画し、さまざまな入力デバイスとやりとりするのに必要なすべての機能が含まれています。2
GDKの特徴は簡単なオブジェクトの描画や、スクリーンにイメージをレンダリングするのに適したグラフィクス・コンテキストと基本的な描画機能です。Cairoにより広範囲の描画システムが提供されるようになって以来、GDKはCairoのコンテキストを使用するためのフックを提供しています。
GDKはGTK+で使用される高レベルのシグナルによる接続ではなく、より低レベルのキーボードやマウスおよびその他の入力デバイスからのシグナルにアクセスすることを可能にします。GDKはドラッグアンドドロップやシステムのクリップボードにアクセスするための低レベルなルーチンも提供します。カスタムコントロールを実装するときは、これらのシグナルを通じたユーザとの適切なやりとりを実装するために、これらの特色の利用が必要となるでしょう。
GDKはGTK+のような完全なグラフィック・ツールキット実装するのに必要となる、その他の機能を提供します。GDKがプラットフォームの抽象化を提供するようになって以来、GDKはGTK+で必要となるすべてのシステムの機能をAPIとして提供し、GTK+複数の環境の元で実行できるようになりました。 これには複数のディスプレイ、解像度、カラーデプス、カラーマップ、カーソルなどが含まれます。
イベント、ウィンドウ、クリップボードを含む、背後のウィンドウシステムに対する低レベルのアクセスが必要な場合はGDKを使用するべきです。これらの処理にGDKを使用することにより可搬性のあるコードを記述できるとともに、GTK+で記述されたコードと統合することが可能になります。GDKで提供されるシンプルな描画ルーチンを使用することは通常ありません。かわりにCairoで提供される、拡張された機能が使用されます。
GDKについての詳細な情報は GDK Reference Manual を参照してください。
3.1.5. Cairo
Cairoはベクタグラフィクスやパノラマ画像の描画、およびアンチエイリアスによるテキストのレンダリングといった機能のための、洗練されたAPIを特色とする2Dグラフィクス・ライブラリです。CairoはX Window System、Microsoft Windows、イメージ・バッファを含めた複数の出力デバイスへのサポートを提供し、異なるメディアにグラフィクスを描画するコードを、プラットフォームに依存せずに記述することを可能にします。
CairoはPostScriptやPDFと似た描画モデルを提供します。CairoのAPIは3次元のベジエ曲線の線描と塗りつぶし、パノラマ画像、およびアフィン変換処理といった描画のための操作を提供します。あなたのアプリケーションのコードでこれらのベクタ操作を使用することにより、高価な処理であるピクセル・ベースの描画を使用することなく、アンチエイリアスされた画像を使用することができます。
Cairoの豊富な描画モデルは複数メディアへの高品質なレンダリングを可能にします。同じAPIを使用して、スクリーンに魅力的なグラフィクスやテキストの描画、イメージのレンダリングができ、印刷に適した明瞭な出力を作成することもできます。
アプリケーションでGTK+により提供されるウィジェットへの描画という範囲を越えるグラフィクス描画が必要な場合は常にCairoを使用するべきです。GTK+内部の描画にはCairoが多く使用されています。カスタムな描画にCairoを使用することにより、アプリケーションは高品質でアンチエイリアスされた、解像度に依存しないグラフィクスを手にすることができます。
Cairoについての詳細は Cairo: A Vector Graphics Library を参照してください。
Pangoレイアウト・エンジンは異なるフォント・バックエンド、および描画バックエンドで使用することができます。大抵のGNOMEシステムでは、PangoはFreeType、fontconfig、およびフォントへのアクセスとテキストの描画にCairoを使用します。ほかのシステムではPangoはネイティブのフォントシステム、たとえばMicrosoft WindowsではUniscribe、MacOSではATSUIを使用します
GDKはX Window System、Microsoft Windows、DirectFB、Quartzを含む、いくつもの異なるプラットフォームで実行されます。それらのさまざまなプラットフォームにおいてGDKは統一された同じAPIを提供することでGTK+、そしてGTK+によるアプリケーションを変更することなしに実行することを可能にします。