次の方法で共有


テキスト オブジェクト モデルについて

テキスト オブジェクト モデル (TOM) は、リッチ エディット コントロールなど、いくつかの Microsoft テキスト ソリューションによってさまざまな程度でサポートされるテキスト操作インターフェイスのセットを定義します。 このトピックでは、TOM の概要について説明します。 ここでは、次のトピックについて説明します。

TOM バージョン 2 オブジェクト

TOM バージョン 2 (TOM 2) は、元のテキスト オブジェクト モデルを拡張します。新しいインターフェイスは古いインターフェイスから派生します。 更新された TOM API には、新しい文字と段落の書式プロパティ、テーブル モデル、複数選択、数学と Ruby のインライン オブジェクトのサポートが含まれています。

最上位の TOM 2 オブジェクトは、オブジェクト階層の下位にあるオブジェクトを作成および取得するためのメソッドを持つ ITextDocument2 インターフェイスによって定義されます。 単純なプレーンテキスト処理の場合は、ITextDocument2 オブジェクトから ITextRange2 オブジェクトを取得し、それを使用してほとんどの処理を行うことができます。 リッチ テキストの書式設定を追加する必要がある場合は、ITextRange2 オブジェクトから ITextFont2 オブジェクトと ITextPara2 オブジェクトを取得できます。 ITextFont2 は、Microsoft Word の書式フォント ダイアログと同等のプログラミングを提供し、 ITextPara2 は Word の書式段落ダイアログと同等の機能を提供します。

これら 3 つの下位レベルのオブジェクトに加えて、TOM 2 には選択オブジェクト (ITextSelection2) があります。これは、選択の強調表示と一部の UI 指向メソッドを持つ ITextRange2 オブジェクトです。

範囲オブジェクトと選択オブジェクトには、画面上のテキストまたは画面にスクロールできるテキストをプログラムで調べることができる画面指向のメソッドが含まれます。 これらの機能は、視覚障害のあるユーザーがテキストにアクセスできるようにするのに役立ちます。

2 サフィックスを持つ各インターフェイスは、2 つのサフィックスを持たない対応するインターフェイスから継承されます。 たとえば、 ITextDocument2ITextDocument から継承します。

TOM 2 オブジェクトの階層は次のとおりです。

ITextDocument2         Top-level editing object
    ITextRange2        Primary text interface: a range of text
        ITextFont2     Character-attribute interface
        ITextPara2     Paragraph-attribute interface
        ITextRow       Table interface
    ITextSelection2    Screen highlighted text range
        ITextRange2    Selection inherits all range methods
    ITextDisplays      Displays collection (not yet defined)
    ITextStrings       Rich-text strings collection
    ITextStoryRanges2  Enumerator for stories in document

ITextDocument2 オブジェクトは、ストーリーと呼ばれる 1 つ以上の連続したテキスト範囲を表します。 ストーリーは、ドキュメントのメイン テキスト、ヘッダーとフッター、脚注、注釈、リッチ テキスト スクラッチ パッドなど、ドキュメントのさまざまな部分を表します。 スクラッチ パッド ストーリーは、線形形式の数式と組み込みフォームの間で翻訳するときに使用されます。 スクラッチ パッド ストーリーは、コンテンツが変更される現在のコピー ソースである範囲の内容を保存するときにも使用されます。

ITextRange2 オブジェクトは、開始位置と終了位置のオフセットとストーリー オブジェクトによって定義されます。 テキストはクリップボードまたは他のターゲットにコピーできますが、親ストーリー オブジェクトとは独立して存在しません。 テキスト範囲オブジェクトは、他の種類のオフセットによって定義されるスプレッドシートや他の範囲オブジェクトとは異なります。たとえば、行/列やグラフィックスの位置 (x、y) などです。 テキスト範囲オブジェクトは、さまざまな方法で自身を変更し、それ自体の複製を返すことができます。また、開始位置と終了文字位置、および現在の選択範囲へのストーリー ポインターをコピーするようにコマンドを実行できます。

ITextRange オブジェクトは常に特定のストーリーを表すために作成できるため、明示的なストーリー オブジェクトは必要ありません。 特に、 ITextDocument オブジェクトは 、ITextStoryRanges オブジェクトを作成して、完全なストーリー (0、 tomForward など) を記述する開始文字と終了文字の位置値を持つ範囲の観点からドキュメント内のストーリーを列挙できます。

ITextStoryRanges2 オブジェクトでは、各ストーリーは ITextRange2 オブジェクトによって記述されるため、明示的なストーリー オブジェクトは必要ありません。 特に、 ITextDocument2 オブジェクトは 、ITextStoryRanges2 オブジェクトを作成して、完全なストーリー (0、 tomForward など) を記述する開始文字と終了文字の位置値を持つ範囲の観点からドキュメント内のストーリーを列挙できます。

ITextRange::Move メソッドおよび ITextRange::Expand メソッドと共に ITextRow インターフェイスを使用すると、テーブルの挿入、クエリ、変更を行うことができます。

TOM インターフェイス規則

すべての TOM メソッドは HRESULT 値を 返します。 一般に、TOM メソッドは次の標準値を返します。

  • E_OUTOFMEMORY
  • 無効な引数エラー (E_INVALIDARG)
  • E_NOTIMPL
  • E_FILENOTFOUND
  • E_ACCESSDENIED (アクセス拒否)
  • E_FAIL
  • CO_E_RELEASED
  • NOERROR (S_OKと同じ)
  • S_FALSE

ITextRange などの TOM オブジェクトに関連付けられている編集インスタンスが削除されると、TOM オブジェクトは役に立たなくなり、そのすべてのメソッドはCO_E_RELEASEDを返します。

HRESULT 戻り値に加えて、多くのメソッドには、値を返すために使用されるポインターである out パラメーターが含まれています。 すべてのインターフェイスについて、すべてのポインター パラメーターをチェックして、使用する前に 0 以外であることを確認する必要があります。 有効なポインターを必要とするメソッドに null 値を渡すと、メソッドはE_INVALIDARGを返します。 null 値を持つ省略可能な out ポインターは無視されます。

Get プレフィックスと Set プレフィックスを持つメソッドを使用して、プロパティを取得および設定します。 ブール変数は FALSE場合は tomFalse (0)、TRUE の場合は tomTrue (-1) を使用します。

TOM 定数は tomConstants 列挙型で定義され、プレフィックス tom ( tomWord など) で始まります。

tomBool 型

多くの TOM メソッドでは、バイナリ状態のリッチ テキスト属性に "tomBool" という特殊な型の変数が使用されています。 tomBool型はBoolean型とは異なり、tomTruetomFalsetomToggletomUndefinedの4つの値を取ることができます。 tomTrue 値と tomFalse 値は true と false を示します。 tomToggle 値は、プロパティの切り替えに使用されます。 従来 NINCH と呼ばれる tomUndefined 値は、longs、floats、 COLORREFで動作する特別な入力なし、変更なし値です。 文字列の場合、 tomUndefined (または NINCH) は null 文字列で表されます。 プロパティ設定操作の場合、 tomUndefined を 使用してもターゲット プロパティは変更されません。 プロパティ取得操作の場合、 tomUndefined は、範囲内の文字の値が異なることを意味します (プロパティ ダイアログ ボックスの灰色のチェック ボックスが表示されます)。

数値演算のビルドアップとビルドダウン

ITextRange2::BuildUpMath メソッドを使用すると、線形形式の数式を組み込みバージョンに変換できます。 ITextRange2::Linearize メソッドは、線形化またはビルドダウンと呼ばれる逆の変換を実行して、組み込みバージョンの数式を線形形式に変換します。 数式のビルド ダウン機能は、プレーン テキストをエクスポートする必要がある場合や、特定の種類の編集を有効にする必要がある場合に便利です。

TOM RTF

TOM では、リッチ テキスト交換は、明示的なメソッド呼び出しのセットまたはリッチ テキスト形式 (RTF) でのリッチ テキストの転送によって実現できます。 このセクションでは、段落プロパティと文字プロパティの RTF コントロール ワードの表を示します。

TOM RTF 段落コントロールワード

制御語 意味
\ fi n 1 行目のインデント (既定値は 0)。
\保つ 段落をそのまま保持します。
キープン 次の段落に進んでください。
\ li n 左インデント (既定値は 0)。
\ noline 行番号なし。
\ nowidctlpar 未亡人/孤立コントロールをオフにします。
\ pagebb 段落の前に改ページします。
\平価 新しい段落。
\ pard 既定の段落プロパティにリセットします。
\ ql 左揃え (既定値)。
\ qr 右揃え。
\ qj 正当 化。
\ qc 中央揃え
\ ri n 右インデント (既定値は 0)。
\ s n スタイル n.
\ sa n 後のスペース (既定値は 0)。
\ sb n 前のスペース (既定値は 0)。
\ sl n 存在しない場合、または n=1000 の場合、行間は行の最も高い文字 (1 行の間隔) によって決定されます。 n> ゼロの場合は、少なくともこのサイズが使用されます。 n がゼロ < 場合は正確に |n|が使用されます。 \ slmult 1 が続く場合、行間は複数行の間隔になります。
\ slmult m 次の \ sl. m = ゼロの場合: \ sl n によって説明されているように、行間は少なくともまたは正確に調整されます。m = 1 の場合: 行間 = n/240 倍の単一行間隔。
\ tb n 左余白からのバー タブの位置 (twip 単位)。
\ tldot タブ リーダーのドット。
\ tleq タブリーダーとしての等号
\ tlhyph タブ リーダーのハイフン
\ tlth タブ リーダーの太線。
\ tlul タブ リーダーの点線下線。
\ tqc 中央揃えタブ
\ tqdec 小数点タブ。
\ tqr 右揃えタブ。
\ tx n 左余白からのタブ位置 (twip 単位)。

 

TOM RTF 文字書式制御語

制御語 意味
\ アニメーション n アニメーションの種類を n に設定します。
\ b 太字。
\キャップ すべての大文字。
\ cf n 前景色 (既定値は tomAutocolor)。
\ cs n 文字スタイル n.
\ dn n 下付き文字の位置は半ポイント(既定値は6ポイント)。
\ embo エンボス。
\ f n フォント番号 n は、フォント テーブル内のエントリを参照します。
\ fs n 半角のフォント サイズ (既定値は 24)。
\ highlight n 背景色 (既定値は tomAutocolor)。
\私 イタリック。
\ impr インプリント。
\ lang n 文字に言語を適用します。 n は言語に対応する数値です。 \ プレーンコントロールワードは、言語プロパティをドキュメントプロパティの\deflang n で定義された言語にリセットします。
\ nosupersub 上付き文字または下付き文字をオフにします。
\ outl 概要。
\シンプル 文字書式プロパティを、アプリケーションによって定義された既定値にリセットします。 関連する文字書式プロパティ (RTF 仕様の「関連文字プロパティ」セクションで説明) もリセットされます。
\ scaps スモールキャピタルズ
\シャッド 影。
\打つ 取り消し線。
\サブ テキストに下付き文字を適用し、フォント情報に従ってポイント サイズを小さくします。
\超 テキストに上付き文字を適用し、フォント情報に従ってポイント サイズを小さくします。
\ ul 連続下線。 \ ul0 では、すべての下線がオフになります。
\ uld 点線の下線。
\ uldb 二重下線。
\ ulnone すべての下線を解除します。
\ ulw Word の下線。
上へn 上付き文字の位置を半ポイントで指定します (既定値は 6)。
\ v 非表示のテキスト。

 

リッチ テキストの検索

TOM メソッドを使用すると、テキストの範囲で定義されているリッチ テキストを検索できます。 このようなリッチテキストを正確に見つけることは、ワープロで必要になることがよくありますが、「WYSIWYG」(ウィジウィグ)型のワードプロセッサでは実現されたことはありません。 一部の文字書式プロパティを無視 (または段落の書式設定やオブジェクト コンテンツを含める) ことを可能にするリッチ テキスト 照合のより大きなドメインは明らかですが、このような一般化は、このセクションの範囲外です。

この機能の 1 つの目的は、 リッチ テキスト検索 ダイアログ ボックスを使用して、ドキュメント内で検索するリッチ テキストを定義することです。 ダイアログ ボックスは豊富な編集コントロールを使用して実装され、TOM メソッドを使用してドキュメントを検索します。 文書から目的のリッチ テキストを [検索] ダイアログ ボックスにコピーするか、[検索] ダイアログ ボックスで直接入力して書式設定することができます

次の例は、TOM メソッドを使用して、正確な文字書式の組み合わせを含むテキストを検索する方法を示しています。 アルゴリズムは、 pr1という名前の一致範囲内のプレーン テキストを検索します。 プレーン テキストが見つかった場合は、pr2という名前の試行範囲によって指されます。 次に、2 つの挿入ポイント範囲 (prip1prip2) を使用して、文字の書式設定と pr1の文字書式を比較する試用範囲を確認します。 完全に一致する場合、入力範囲 ( ppr によって指定) が評価版範囲のテキストを指すように更新され、関数は一致した範囲内の文字数を返します。 文字書式の比較では、pf1pf2 の 2 つの ITextFont オブジェクトが使用されます。 これらは、 prip1 および prip2の挿入ポイント範囲にアタッチされます。

LONG FindRichText (
    ITextRange **ppr,             // Ptr to range to search
    ITextRange *pr1)              // Range with rich text to find
{
    BSTR        bstr;             // pr1 plain-text to search for
    LONG        cch;              // Text string count
    LONG        cch1, cch2;       // tomCharFormat run char counts
    LONG        cchMatch = 0;     // Nothing matched yet
    LONG        cp;               // Handy char position
    LONG        cpFirst1;         // pr1 cpFirst
    LONG        cpFirst2;         // pr2 cpFirst
    ITextFont  *    pf1, *pf      // Fonts corresponding to IPs prip1 and prip2
    ITextRange *pr2;              // Range duplicate to search with
    ITextRange *prip1, *prip      // Insertion points to walk pr1, pr2

    if (!ppr || !*ppr || !pr1)
        return E_INVALIDARG;

    // Initialize range and font objects used in search
    if ((*ppr)->GetDuplicate(&pr2)    != NOERROR ||
        pr1->GetDuplicate(&prip1)     != NOERROR ||
        pr2->GetDuplicate(&prip2)     != NOERROR ||
        prip1->GetFont(&pf1)          != NOERROR ||
        prip2->GetFont(&pf2)          != NOERROR ||
        pr1->GetText(&bstr)           != NOERROR )
    {
        return E_OUTOFMEMORY;
    }

    pr1->GetStart(&cpFirst1);

    // Keep searching till rich text is matched or no more plain-text hits
    while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
    {
        pr2->GetStart(&cpFirst2);                 // pr2 is a new trial range
        prip1->SetRange(cpFirst1, cpFirst1);      // Set up IPs to scan match
        prip2->SetRange(cpFirst2, cpFirst2);      //  and trial ranges

        while(cch > 0 &&
            pf1->IsEqual(pf2, NULL) == NOERROR)   // Walk match & trial ranges
        {                                         //  together comparing font
            prip1->GetStart(&cch1);               //  properties
            prip1->Move(tomCharFormat, 1, NULL);
            prip1->GetStart(&cp);
            cch1 = cp - cch1;                     // cch of next match font run

            prip2->GetStart(&cch2);
            prip2->Move(tomCharFormat, 1, NULL);
            prip2->GetStart(&cp);
            cch2 = cp - cch2;                      // cch of next trial font run

            if(cch1 < cch)                         // There is more to compare
            {
                if(cch1 != cch2)                   // Different run lengths:
                    break;                         //  no formatting match
                cch = cch - cch1;                  // Matched format run
            }
            else if(cch2 < cch)                    // Trial range format run too
                break;                             //  short

            else                                   // Both match and trial runs
            {                                      //  reach at least to match
                pr2->GetEnd(&cp);                  //  text end: rich-text match
                (*ppr)->SetRange(cpFirst2, cp)     // Set input range to hit
                cchMatch = cp - cpFirst2;          //  coordinates and return
                break;                             //  length of matched string
            }
        }
    }
    pr2->Release();
    prip1->Release();
    prip2->Release();
    pf1->Release();
    pf2->Release();
    SysFreeString(bstr);

    return cchMatch;
}

TOM アクセシビリティ

TOM では、 ITextSelection インターフェイスと ITextRange インターフェイスを介したアクセシビリティ サポートが提供されます。 このセクションでは、アクセシビリティに役立つメソッドと、プログラムがオブジェクトの xy 画面の位置を決定する方法について説明します。

UI ベースのアクセシビリティ プログラムは通常、画面とマウスで動作するため、一般的な懸念事項は、現在のマウス位置 (画面座標) に対応する ITextDocument インターフェイスを見つけることです。 次のセクションでは、適切なインターフェイスを決定する 2 つの方法について説明します。

詳細については、Microsoft Active Accessibility 仕様を参照してください。 画面位置からオブジェクトを取得した後、 ITextDocument インターフェイスに使用し、 RangeFromPoint メソッドを呼び出して、画面の位置に対応する cp で空の範囲オブジェクトを取得できます。

実行中のオブジェクト テーブルからのインターフェイス

実行中のオブジェクト テーブル (ROT) は、アクティブなオブジェクト インスタンスを示します。 このテーブルに対してクエリを実行すると、オブジェクトが既に実行されているときに、クライアントをオブジェクトに接続するプロセスを高速化できます。 実行中のオブジェクト テーブルを介してプログラムから TOM インターフェイスにアクセスするには、ウィンドウがある TOM インスタンスをモニカーを使用して ROT に登録する必要があります。 モニカーは、 その HWND の 16 進値を含む文字列から構築します。 次のコード サンプルは、これを行う方法を示しています。

// This TOM implementation code is executed when a new windowed 
// instance starts up. 
// Variables with leading underscores are members of this class.

HRESULT hr;
OLECHAR szBuf[10];            // Place to put moniker
MONIKER *pmk;

hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
    //
    // TODO: write error handler
    //
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
 
// Accessibility Client: 
//    Find hwnd for window pointed to by mouse cursor.

GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);

// Look in ROT (running object table) for an object attached to hwnd

hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
    //
    // TODO: write error handler
    //
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();

if( pDoc )
{
    pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
    // ...now do whatever with the range pRange
}

ウィンドウ メッセージからのインターフェイス

EM_GETOLEINTERFACE メッセージは、特定の画面位置にあるオブジェクトの IUnknown インターフェイスを取得する別の方法を提供します。 「 実行中のオブジェクト テーブルからのインターフェイス」で説明されているように、画面位置の HWND を取得し、その HWND にこのメッセージを送信します。 EM_GETOLEINTERFACE メッセージは、リッチ エディット固有であり、lParam によってアドレス指定された変数内の IRichEditOle インターフェイスへのポインターを返します。

ヒント ポインタが返される場合は (lParam が指すオブジェクトをメッセージを送信する前に null に設定してください)、IUnknown::QueryInterface メソッドを呼び出して ITextDocument インターフェースを取得することが可能です。 次のコード サンプルに、この方法を示します。

    HWND    hwnd;
    ITextDocument *pDoc;
    ITextRange *pRange;
    POINT    pt;
    IUnknown *pUnk = NULL;
    
    GetCursorPos(&pt);
    hwnd = WindowFromPoint(pt);
    SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
    if(pUnk && 
        pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
    {
        pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
        //  ... continue with rest of program
    }

アクセシビリティ指向メソッド

一部の TOM メソッドは画面内を移動するのに特に役立ちますが、他の TOM メソッドは、関心のある場所に到着したときに実行できる操作を強化します。 次の表では、最も便利な方法について説明します。

メソッド アクセシビリティを向上させる方法
GetSelection このメソッドは、テキストの強調表示やスクロールなど、さまざまなビュー指向の目的で使用できるアクティブな選択を取得します。
ポイントからの範囲 アクティブな選択範囲で使用する場合、このメソッドは特定のビューに関連付けられた範囲を取得することが保証されます。
展開 テキスト範囲を拡大して、テキストに含まれる部分単位が完全に含まれるようにします。 たとえば、Expand(tomWindow) を使って範囲を拡張し、範囲内で表示される内容を含めます。
GetDuplicate アクティブな選択範囲で使用する場合、このメソッドは特定のビューに関連付けられた範囲を取得することが保証されます。 RangeFromPoint の説明を参照してください。
GetPoint テキスト範囲内の開始位置または終了文字位置の画面座標を取得します。
ScrollIntoView テキスト範囲をスクロールして表示します。
セットポイント 指定したポイントまでのテキストを選択します。

 

キャラクターマッチセット

MoveWhileMoveUntil など、ITextRange のさまざまな Move* メソッドのバリアント パラメーターは、明示的な文字列または文字一致セットの 32 ビット インデックスを受け取ることができます。 インデックスは、Unicode 範囲または GetStringTypeEx 文字セットによって定義されます。 n および長さ l (< 32768) から始まる Unicode 範囲は、インデックス n + (l << 16) + 0x80000000で指定されます。 たとえば、基本的なギリシャ文字は CR_Greek = 0x805f0370 で定義され、印刷可能な ASCII 文字は CR_ASCIIPrint = 0x805e0020 で定義されます。 さらに、 MoveWhile メソッドと MoveUntil メソッドを使用すると、 GetStringTypeEx 文字セットまたはこれらの文字セットに含まれていない文字のスパンで、一連の文字をすばやくバイパスできます。

GetStringTypeEx セットは、Ctype1、Ctype2、および Ctype3 の値で指定され、次のように定義されます。

"Cset" (Japanese transliteration: シーセット) 意味
Ctype1 CT_CTYPE1型の組み合わせ。
Ctype2 + tomCType2 任意の CT_CTYPE2 タイプ。
Ctype3 + tomCType3 CT_CTYPE3型の組み合わせ。

 

具体的には、 Ctype1 は、以下の任意の組み合わせとすることができる。

Ctype1 名称 価値 意味
C1_上部 0x0001 大文字。
C1_LOWER 0x0002 小文字。
C1_DIGIT 0x0004 小数点以下の数字。
C1_SPACE 0x0008 空白文字。
C1_PUNCT 0x0010 句読点。
C1_CNTRL 0x0020 制御文字。
C1_BLANK 0x0040 空白文字。
C1_XDIGIT 0x0080 16進数の数字。
C1_ALPHA 0x0100 任意の言語文字 (英字、音節、または表意)。
C1_DEFINED (assuming no additional context or necessity for translation exists) 0x0200 定義された文字ですが、他のC1_* 型の 1 つではありません。

 

Ctype2 型は、Unicode テキストの適切なレイアウトをサポートします。 方向属性が割り当てられ、Unicode によって標準化された双方向レイアウト アルゴリズムによって正確な結果が生成されます。 これらの型は相互に排他的です。 これらの属性の使用方法の詳細については、「 Unicode 標準: ワールドワイド文字エンコード、ボリューム 1 および 2、Addison-Wesley パブリッシング カンパニー: 1991、1992」を参照してください。

CType2 名 価値 意味
強い:
C2_LEFTTORIGHT 0x1 左から右へ。
C2_RIGHTTOLEFT 0x2 右から左へ。
弱い:
C2_EUROPENUMBER 0x3 ヨーロッパの数字、ヨーロッパの桁。
C2_EUROPESEPARATOR 0x4 ヨーロッパの数値の区切り記号。
C2_EUROPETERMINATOR 0x5 ヨーロッパの数値ターミネータ。
C2_ARABICNUMBER 0x6 アラビア数字。
C2_COMMONSEPARATOR 0x7 一般的な数値区切り記号。
ニュートラル:
C2_BLOCKSEPARATOR 0x8 ブロック区切り記号。
C2_SEGMENTSEPARATOR 0x9 セグメント区切り。
C2_WHITESPACE 0xA 空白。
C2_OTHERNEUTRAL 0xB その他のニュートラル。
該当なし:
C2_NOTAPPLICABLE 0x0 暗黙的な方向はありません。

 

Ctype3 型は、一般的なテキスト処理または標準の C ライブラリ関数に必要な POSIX 型の拡張のためのプレースホルダーです。

CType3 name 価値 意味
C3_NONSPACING 0x1 非スペーシング マーク。
C3_DIACRITIC 0x2 結合文字修飾記号。
C3_VOWELMARK 0x4 母音の非結合記号
C3_SYMBOL 0x8 記号。
C3_KATAKANA 0x10 カタカナ文字。
C3_HIRAGANA 0x20 ひらがな文字。
C3_HALFWIDTH 0x40 半角文字。
C3_FULLWIDTH 0x80 全角文字。
C3_IDEOGRAPH 0x100 表意文字。
C3_KASHIDA 0x200 アラビア語の樫田文字。
C3_ALPHA 0x8000 すべての言語文字 (英字、音節、および表意)。
C3_NOTAPPLICABLE 0x0 適用されません。

 

開発キットの編集 (EDK) には、Unicode 標準で説明されている次の範囲の pVar インデックス定義を含めることができます。

文字セット Unicode 範囲 文字セット Unicode 範囲
ASCII 0x0 — 0x7f ANSI(米国国家規格協会) 0x0 — 0xff
ASCIIPrint 0x20 — 0x7e Latin1 0x20 — 0xff
Latin1Supp 0xa0 — 0xff LatinXA 0x100 — 0x17f
LatinXB 0x180 — 0x24f IPAX 0x250 - 0x2af
スペースモッド 0x2b0 — 0x2ff 組み合わせ 0x300 — 0x36f
ギリシャ語 0x370 — 0x3ff BasicGreek 0x370 — 0x3cf
GreekSymbols 0x3d0 — 0x3ff キリル 0x400 — 0x4ff
アルメニア語 0x530 — 0x58f ヘブライ語 0x590 — 0x5ff
ベーシックヘブライ語 0x5d0 — 0x5ea ヘブライクサ 0x590 — 0x5cf
HebrewXB 0x5eb — 0x5ff アラビア語 0x600 — 0x6ff
BasicArabic 0x600 — 0x652 ArabicX 0x653 — 0x6ff
デヴァンガリ 0x900 — 0x97f バングラ 0x980 — 0x9ff
グルムキ 0xa00 — 0xa7f グジャラート語 0xa80 — 0xaff
オディア 0xb00 — 0xb7f タミール語 0xb80 — 0xbff
Teluga 0xc00 — 0xc7f カナラ語 0xc80 — 0xcff
マラヤラム語 0xd00 — 0xd7f タイ語 0xe00 — 0xe7f
ラーオ語 0xe80 — 0xeff ジョージアンエックス 0x10a0 — 0xa0cf
バスクジョージアン 0x10d0 — 0x10ff ジャモ 0x1100 — 0x11ff
LatinXAdd 0x1e00 — 0x1eff GreekX 0x1f00 — 0x1fff
GenPunct 0x2000 — 0x206f 上付き文字 0x2070 — 0x207f
下付き 0x2080 — 0x208f SuperSubscript 0x2070 — 0x209f
通貨 0x20a0 — 0x20cf CombMarkSym 0x20d0 — 0x20ff
レターライク 0x2100 — 0x214f NumberForms 0x2150 — 0x218f
矢印 0x2190 — 0x21ff MathOps 0x2200 — 0x22ff
MiscTech 0x2300 — 0x23ff CtrlPictures 0x2400 — 0x243f
光学文字認識 0x2440 — 0x245f EnclAlphaNum 0x2460 — x24ff
ボックス描画 0x2500 — 0x257f BlockElement 0x2580 — 0x259f
GeometShapes 0x25a0 — 0x25ff 雑多な記号 0x2600 — 0x26ff
ディングバッツ 0x2700 — 0x27bf CJKSymPunct 0x3000 — 0x303f
平仮名 0x3040 — 0x309f 片仮名 0x30a0 — 0x30ff
Bopomofo 0x3100 — 0x312f ハングルジャモ 0x3130 — 0x318f
CJLMisc 0x3190 — 0x319f EnclCJK 0x3200 — 0x32ff
CJKCompatibl 0x3300 - 0x33ff 0x3400 — 0xabff
ハングル 0xac00 — 0xd7ff UTF16Lead 0xd800 — 0xdbff
UTF16トレイル 0xdc00 — 0xdfff プライベート使用 0xe000 — 0xf800
CJKCompIdeog 0xf900 — 0xfaff AlphaPres 0xfb00 — 0xfb4f
ArabicPresA 0xfb50 — 0xfdff CombHalfMark 0xfe20 — 0xfe2f
CJKCompForm 0xfe30 — 0xfe4f 小型フォーム変数 0xfe50 — 0xfe6f
ArabicPresB 0xfe70 — 0xfefe ハーフフルフォーム 0xff00 - 0xffef
特別セール 0xfff0 — 0xfffd