次の方法で共有


複雑なスクリプト処理

テキストの表示と関連する処理を行って、文字体裁の細かい効果や複雑なスクリプトをサポートするオプションを次に示します。

  • 文字列関数
  • コントロールの編集
  • 豊富な編集コントロール
  • Uniscribe

選択するオプションは、次の要因によって異なります。

  • テキストまたはスクリプトの種類。
  • 実装モデルは、たとえば、アプリケーションによる改行のテキスト レイアウトと処理です。
  • 既存のアプリケーションの更新と新しいアプリケーションの作成。

一般に、比較的単純なスクリプト処理を行うアプリケーションでは、複雑なスクリプトを処理するための任意のオプションを選択できます。 ただし、複雑なスクリプト処理を最も完全に制御するには、Uniscribe をお勧めします。

テキスト関数を使用した複雑なスクリプト処理

主にプレーン テキストを使用するアプリケーション、つまり、同じ書体、重み、色などを使用するテキストには、 TextOutExtTextOutTabbedTextOutDrawTextGetTextExtentExPoint などの標準的なテキスト関数を使用して、従来は書き込まれたテキストと測定された行の長さがあります。 これらの関数は、複雑なスクリプトや細かい文字体裁効果の処理をサポートします。 詳細については、「 フォントとテキスト」を参照してください。

一般に、標準テキストのサポートは、複雑なスクリプトを処理するアプリケーションに対して透過的です。 ただし、細かい文字体裁をサポートし、複雑なスクリプトを処理するアプリケーションを作成する際に従う必要がある特定のルールに注意する必要があります。

  • アプリケーションでは、文字をバッファーに保存し、ユーザーが入力した各文字に 対して ExtTextOut を呼び出す代わりに、一度にテキスト行全体を表示する必要があります。 このメカニズムにより、高度なテキスト シェイプ モジュールはコンテキストを使用してグリフの順序を変更し、正しく生成 できます
  • グリフの幅はコンテキストによって異なる可能性があるため、キャッシュされた文字幅から行の長さを計算するのではなく、 GetTextExtentExPoint を 使用して行の長さを決定する必要があります。
  • アプリケーションでは、必要に応じて、右から左への読み取り順序と右揃えのサポートを追加する必要があります。
  • 複雑なスクリプトや細かい文字体裁に必要な並べ替え処理とコンテキスト処理では、単純なスクリプトの基本的なテキスト表示よりも処理が大幅に増加する必要があります。 そのため、パフォーマンスの問題を回避するために、結果を表示してユーザーに制御を返す前に、アプリケーションで大量のテキストを処理しないようにする必要があります。

エディット コントロールを使用した複雑なスクリプト処理

標準の Windows 編集コントロールは、多言語テキストと複雑なスクリプトをサポートするように拡張されています。 拡張サポートには、入力と表示のほか、タイ語や Devanagari スクリプトなどの文字クラスター上での正しいカーソル移動が含まれます。 詳細については、「コントロールの 編集」を参照してください。

リッチ エディット コントロールを使用した複雑なスクリプト処理

Rich Edit 3.0 は、Uniscribe を利用してテキスト レイアウト アプリケーションを特定のスクリプトの複雑さから絶縁する、より高度なインターフェイスのコレクションです。 リッチ エディットは、主な目的が必ずしもテキスト レイアウトではない場合でも、アプリケーションが複雑なスクリプトを表示する最も簡単な方法です。 リッチエディットは、豊富な Unicode 多言語テキストとシンプルなプレーンテキストの高速で汎用性の高い編集を提供します。 これには、広範なメッセージと COM インターフェイス、テキスト編集、書式設定、改行、単純なテーブル レイアウト、垂直テキスト レイアウト、双方向テキスト レイアウト、インドとタイのサポート、Microsoft Word のような編集ユーザー インターフェイス、およびテキスト オブジェクト モデル インターフェイスが含まれます。

リッチ エディット インターフェイスと共に、アプリケーションは Rich Edit TextOut 関数を使用して、行の解析、図形、位置、および改行を自動的に行うことができます。 詳細については、「 リッチ エディット コントロール」を参照してください。

Uniscribe を使用した複雑なスクリプト処理

Uniscribe は、細かい文字体裁効果や複雑なスクリプトを含むテキストの処理を最も広範にサポートします。 これは、アラビア語、デヴァナガリ、タイ語などのスクリプトに含まれる複雑なルールをサポートしています。 アラビア語やヘブライ語など、右から左に記述されたスクリプトを処理し、スクリプトの混在をサポートします。 Uniscribe では、アプリケーションが細かい文字体裁効果を制御するために使用できる OpenType フォント機能も公開されています。 詳細については、「 複雑なスクリプトの処理」を参照してください。

Uniscribe について

複雑なスクリプトの処理