リッチ エディット コントロールでフォント バインドを使用する方法

Microsoft Rich Edit 3.0 では、コンテキストに応じて文字セットがプレーンテキスト文字に割り当てられます。 いくつかの例を次に示します。

  • ギリシャ文字には、GREEK_CHARSET が割り当てられます。
  • ハングル記号には、HANGUL_CHARSET が割り当てられます。
  • 中国語には、近くにかな文字が見つかった場合は SHIFTJIS_CHARSET、近くにかなが見つからない場合は GB2312_CHARSET が割り当てられます。
  • ニュートラルでない ANSI 文字は、任意のイベントで ANSI_CHARSET が割り当てられます。

Note

リッチ エディット コントロールでは Unicode が内部的に使用されるため、文字セットの使用は、フォント仕様で使用される元の文字セットとは異なります。 ただし、CHARFORMAT 構造体には、文字セットの適切に定義された場所があります。

 

空白や数字などのニュートラル文字には、コンテキストに応じて文字セットが割り当てられます。 たとえば、同じ文字セットの文字で囲まれた空白は、その文字セットを取得します。 双方向テキストに使用されるニュートラルと数字には、Unicode 双方向アルゴリズムに基づく方法で文字セットが割り当てられます。

知っておくべきこと

テクノロジ

前提条件

  • C/C++
  • Windows ユーザー インターフェイス プログラミング

手順

リッチ エディット コントロールでフォント バインドを使用する

文字セットが割り当てられた後、リッチ エディットは挿入ポイント周辺のテキストをスキャンして、文字セットに使用する最も近いフォントを検索します。 文字セットのフォントが見つからない場合、リッチ エディットは、その文字セットに対してクライアントが選択したフォントを使用します。 クライアントが文字セットのフォントを指定していない場合、リッチ エディットはその文字セットの既定のフォントを使用します。 クライアントが他のフォントを必要としている場合、クライアントはいつでもフォントを変更でき、この方法はほとんどの場合機能します。 現在の既定のフォントの選択肢は、次の表に基づいています。 既定のフォントはプロセスごとに設定され、UI の使用と UI 以外の使用にはそれぞれの一覧があることに注意してください。

Language UI フォント名 UI フォント サイズ UI 以外のフォント名 UI 以外のフォント サイズ
西部、CE、ME、ベトナム語 Tahoma 8 Arial 10
日本語 MS UI ゴシック 9 MS P ゴシック 10
韓国語 グリム 9 グリム 9
簡体中国語 SimSun 9 SimSun 10
Traditional Chinese PMingLiU 9 PMingLiU 9
タイ語 MS Sans Serif 8 Tahoma 14
シンボル ウィングディングス 8 ウィングディングス 10
デバナガリ Mangal 8 Mangal 10
タミル語 Latha 8 Latha 10
ジョージア語、アルメニア語 Arial Unicode 8 Arial Unicode 10

 

したがって、既定のフォント バインド テーブル (エントリには文字セット、フォント名、およびサイズがあります) では、リッチ エディットを使用すると、ANSI_CHARSET は複数の文字セットと一致し、適切な文字セットは 1 対 1 で他のフォントと一致します。 より正確には、リッチ エディットでは、他の選択肢が見つからない場合は常に ANSI_CHARSET の選択肢を使用します。 これより細かい粒度を指定できます。たとえば、アラビア語の実行に特定の ARABIC_CHARSET を割り当てたり、ギリシャ語の実行に特定のギリシャ語フォントを割り当てたりします。 この細分性は、目的の文字セット スタンプを持つフォントが、フォント バインドされている領域の前の文書内のどこかで見つかった場合にも使用されます。

リッチ エディットでは現在、文字セットをサポートすると主張するが不完全なフォントでは不足しているグリフは処理されないことに注意してください。 複雑なスクリプトの表示時に、リッチ エディットはこのようなグリフが見つからないことを認識できますが、バッキング ストアで新しいフォントが使用されることはありません。 通常、オペレーティング システムの基になるフォント リンクは、これを実現します。

解説

Rich Edit 4.1: スクリプトに対して規定のフォントを設定する場合は、CHARFORMAT2EM_SETCHARFORMAT を呼び出し、yHeightbCharSetbPitchAndFamilyszFaceName および lcid メンバーの値を指定します。 また、特定のコード ページの既定のフォントを取得するには、CHARFORMAT2EM_GETCHARFORMAT を呼び出し、bCharSet および lcid メンバーの値を指定します。

リッチ エディット コントロールの使用

Windows コモン コントロールのデモ (CppWindowsCommonControls)