ほとんどの入力メソッドのアーキテクチャにおいて (OnTheSpot は著しい例外ですが)、入力メソッドは自身のデータの表示を行います。より見やすい位置においておくために、入力メソッド領域をクライアント内に埋め込むことが望ましい場合が多くあります。このためには、クライアントが入力メソッドにスペースを割り当てる必要があるかもしれません。Xlib は、クライアントが入力メソッド領域のサイズと位置を提供できるようサポートします。ジオメトリ管理のためにサポートされている入力メソッド領域は、ステータス領域とプリエディット領域です。
入力メソッドウィンドウのジオメトリ管理の元となる基本概念は、クライアント (またはツールキット) と入力メソッドの間で責任を適切に分割することです。責任の分割は次のとおりです。
クライアントは、入力メソッドのウィンドウのジオメトリに責任があります。
入力メソッドは、入力メソッドのウィンドウの内容に責任があります。また、クライアントにより指定されたジオメトリにしたがって入力メソッドのウィンドウを作成することにも責任があります。
入力メソッドはクライアントにサイズを提案することはできますが、位置を提案することはできません。入力メソッドがサイズを決定することはなく、指定されたサイズを受け入れなければなりません。
クライアントは、入力メソッドのジオメトリ管理を提供する前に、ジオメトリ管理が必要かどうかを判別しなければなりません。入力メソッドは、XGetIMValues() 関数によって返された XIMStyles 値に XIMPreeditArea() 関数か XIMStatusArea() 関数を設定することにより、ジオメトリ管理の必要性を示します。クライアントは、入力メソッドへジオメトリ管理を提供することを決定するとき、XNInputStyle 値を XIC に設定することにより、その決定を示します。
クライアントが入力メソッドでジオメトリ管理を行うことを確立した後、クライアントはジオメトリを入力メソッドと交渉しなければなりません。ジオメトリは次の手順で交渉されます。
クライアントが、領域の XNAreaNeeded 値を設定することにより、入力メソッドに領域を与えます。クライアントが入力メソッドに対して制約を持たない場合は、領域を与えないか、または幅と高さを 0 (ゼロ) に設定します。そうでない場合は、値を 1 つ設定します。
クライアントが XIC の XNAreaNeeded 値を取得します。この値に入力メソッドが提案するサイズを返します。入力メソッドは、クライアントによって与えられるすべての制約に注意を払うべきです。
クライアントは XIC の XNArea 値を設定して、入力メソッドのウィンドウのジオメトリを入力メソッドに示します。クライアントは、入力メソッドから要求されたジオメトリを使用しようとします。入力メソッドはこのジオメトリを受け入れなければなりません。
ジオメトリ管理を実行するクライアントは、別の IC 値を設定すると、入力メソッドが希望するジオメトリに影響が出るかもしれないことを知っておく必要があります。たとえば、XNFontSet 値と XNLineSpacing 値は、入力メソッドが希望するジオメトリを変更する可能性があります。クライアントは、必要に応じて入力メソッドのウィンドウのジオメトリを再度ネゴシエートする責任があります。
さらに、入力メソッドがジオメトリ変更を起動するための、ジオメトリ管理コールバックが提供されます。