IXpsOMGlyphsEditor
COM公式ドキュメント
IXpsOMGlyphs インターフェースのテキストコンテンツに影響するプロパティを、まとめて変更できるようにします。
メソッド 18
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プロパティ間の相互検証を行った後、変更内容を親の IXpsOMGlyphs インターフェースにコピーします。
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| この IXpsOMGlyphsEditor インターフェースが、有効な IXpsOMGlyphs インターフェースに属していません。 | |
| 空の文字列に対してキャレットストップが指定されたか、キャレットのジャンプインデックスが Unicode 文字列の長さを超えています。 | |
| グリフマッピングがグリフインデックスの数を超えています。 | |
|
空の文字列に対してグリフマッピングが定義されています。Unicode 文字列が空の場合、グリフマッピングを定義することはできません。
または グリフマッピングが Unicode 文字列の長さを超えています。 |
|
| Unicode 文字列を持たない IXpsOMGlyphs インターフェースに、グリフインデックスが 1 つも指定されていません。IXpsOMGlyphs インターフェースには、Unicode 文字列またはグリフインデックスの配列のいずれかを指定する必要があります。 | |
| テキスト文字列が横向き (sideways) かつ右から左 (right-to-left) として指定されました。テキストが横向きの場合、bidi レベルに奇数値 (右から左) を指定することはできません。同様に、bidi レベルが奇数値の場合は、横向きにすることはできません。 | |
| グリフマッピングが Unicode 文字列の内容と一致しませんでした。 | |
| グリフインデックスの数が Unicode コードポイントの数を上回っています。グリフマッピングがない場合、グリフインデックスの数は Unicode コードポイントの数以下でなければなりません。 |
解説(Remarks)
IXpsOMGlyphsEditor インターフェースは、このメソッドの呼び出し後も有効なままであるため、引き続き変更を加えることができます。
エスケープされていない UTF-16 スカラー値でテキストを取得します。(IXpsOMGlyphsEditor.GetUnicodeString)
| unicodeString | LPWSTR* | out | UTF-16 の Unicode 文字列。文字列が空の場合は、NULL ポインターが返されます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| unicodeString が NULL です。 |
解説(Remarks)
このメソッドは、unicodeString で返される文字列が使用するメモリを割り当てます。unicodeString が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
エスケープされていない UTF-16 スカラー値でテキストを設定します。
| unicodeString | LPWSTR | in | UTF-16 の Unicode 文字列のアドレス。NULL ポインターを指定すると、このプロパティはクリアされます。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
グリフインデックスの数を取得します。
| indexCount | DWORD* | out | グリフインデックスの数。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| indexCount が NULL です。 |
解説(Remarks)
グリフインデックスを取得するには、GetGlyphIndices を呼び出します。
フォント内の特定のグリフインデックスを表す XPS_GLYPH_INDEX 構造体の配列を取得します。(IXpsOMGlyphsEditor.GetGlyphIndices)
| indexCount | DWORD* | inout | glyphIndices パラメーターが参照する配列に格納できる要素数。メソッドが戻るとき、indexCount には glyphIndices が参照する配列に返された XPS_GLYPH_INDEX 構造体の数が格納されます。 |
| glyphIndices | XPS_GLYPH_INDEX* | out | グリフインデックスを受け取る XPS_GLYPH_INDEX 構造体の配列。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| indexCount または glyphIndices、あるいはその両方が NULL です。 | |
| glyphIndices がグリフインデックスのデータを受け取るのに十分な大きさではありません。indexCount には必要な要素数が格納されます。 |
解説(Remarks)
glyphIndices で返されるグリフインデックスは、UnicodeString プロパティからグリフインデックスへの既定の cmap マッピングをオーバーライドします。各 XPS_GLYPH_INDEX 構造体には、送り幅 (advance width) と垂直方向および水平方向のオフセット情報も含まれます。
GetGlyphIndexCount は、グリフインデックス配列の要素数を取得します。
フォント内で使用するグリフインデックスを表す XPS_GLYPH_INDEX 構造体の配列を設定します。
| indexCount | DWORD | in | glyphIndices が参照する配列に含まれる XPS_GLYPH_INDEX 構造体の数。0 を指定すると、このプロパティはクリアされます。 |
| glyphIndices | XPS_GLYPH_INDEX* | in | グリフインデックスを格納した XPS_GLYPH_INDEX 構造体の配列。indexCount が 0 の場合、このパラメーターは無視されます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 1 つ以上の XPS_GLYPH_INDEX 構造体の index フィールドに、有効でない値が設定されています。index フィールドには、–1 以上 65535 (0xFFFF) 以下の値を指定する必要があります。 | |
| glyphIndices が NULL で、かつ indexCount が 0 より大きい値です。 | |
| 1 つ以上の XPS_GLYPH_INDEX 構造体の advanceWidth、horizontalOffset、または verticalOffset フィールドに、有効でない浮動小数点値が設定されています。 | |
| 1 つ以上の XPS_GLYPH_INDEX 構造体の advanceWidth フィールドに、有効でない値が設定されています。advanceWidth フィールドには、負でない値、または正確に –1.0 の値を指定する必要があります。–1.0 以外の負の値は無効です。 |
解説(Remarks)
glyphIndices で渡すグリフインデックスは、UnicodeString プロパティからグリフインデックスへの既定の cmap マッピングをオーバーライドします。各 XPS_GLYPH_INDEX 構造体には、送り幅 (advance width) と垂直方向および水平方向のオフセット情報も含まれます。
グリフマッピングの数を取得します。(IXpsOMGlyphsEditor.GetGlyphMappingCount)
| glyphMappingCount | DWORD* | out | グリフマッピングの数。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| glyphMappingCount が NULL です。 |
解説(Remarks)
グリフマッピングを取得するには、GetGlyphMappings を呼び出します。
UTF-16 スカラー値を、GetGlyphIndices が返す XPS_GLYPH_INDEX 構造体の配列の要素にどのようにマップするかを表す XPS_GLYPH_MAPPING 構造体の配列を取得します。(IXpsOMGlyphsEditor.GetGlyphMappings)
| glyphMappingCount | DWORD* | inout | glyphMappings が参照する配列に格納できる XPS_GLYPH_MAPPING 構造体の数。メソッドが戻るとき、glyphMappingCount にはその配列に格納された値の数が設定されます。 |
| glyphMappings | XPS_GLYPH_MAPPING* | out | グリフマッピングの値を受け取る XPS_GLYPH_MAPPING 構造体の配列。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| glyphMappingCount または glyphMappings が NULL です。 | |
| glyphMappings がグリフインデックスのデータを受け取るのに十分な大きさではありません。glyphMappingCount には必要な要素数が格納されます。 |
解説(Remarks)
GetGlyphMappingCount は、グリフマッピングの数を取得します。
UnicodeString プロパティ内の UTF-16 スカラー値を、XPS_GLYPH_INDEX 構造体の配列の要素にどのようにマップするかを表す XPS_GLYPH_MAPPING 構造体の配列を設定します。
| glyphMappingCount | DWORD | in | glyphMappings が参照する配列に含まれる XPS_GLYPH_MAPPING 構造体の数。0 を指定すると、このプロパティはクリアされます。 |
| glyphMappings | XPS_GLYPH_MAPPING* | in | グリフマッピングの値を格納した XPS_GLYPH_MAPPING 構造体の配列。glyphMappingCount が 0 の場合、このパラメーターは無視され、NULL を設定できます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 1 つ以上の XPS_GLYPH_MAPPING 構造体のメンバーに、有効でない値が設定されています。これは次の場合に発生します。文字列の長さと開始位置の合計が開始位置より小さい場合、インデックス位置とインデックス長の合計が開始位置より小さい場合、およびインデックスの長さが 0 の場合です。 | |
| glyphMappings が NULL で、かつ glyphMappingCount が 0 より大きい値です。 | |
| 1 つ以上の XPS_GLYPH_MAPPING 構造体で、要素の順序が正しくありません。 |
禁止されているキャレットストップの数を取得します。(IXpsOMGlyphsEditor.GetProhibitedCaretStopCount)
| prohibitedCaretStopCount | DWORD* | out | 禁止されているキャレットストップの数。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| prohibitedCaretStopCount が NULL です。 |
解説(Remarks)
禁止されているキャレットストップを取得するには、GetProhibitedCaretStops を呼び出します。
各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。
禁止されているキャレットストップ位置の配列を取得します。(IXpsOMGlyphsEditor.GetProhibitedCaretStops)
| count | DWORD* | inout | prohibitedCaretStops パラメーターが参照する配列に格納できる、禁止されているキャレットストップ値の数。メソッドが戻るとき、prohibitedCaretStopCount にはその配列に格納された値の数が設定されます。 |
| prohibitedCaretStops | DWORD* | out | グリフマッピングの値の配列。禁止されているキャレットストップが定義されていない場合は、NULL ポインターが返されます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| prohibitedCaretStopCount、prohibitedCaretStops、またはその両方が NULL でした。 | |
| prohibitedCaretStops が、禁止されているキャレットストップのデータを受け取るのに十分な大きさではありませんでした。prohibitedCaretStopCount には必要な要素数が格納されます。 |
解説(Remarks)
各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。
GetProhibitedCaretStopCount は、禁止されているキャレットストップの数を取得します。
キャレットストップとは、グリフの UnicodeString プロパティ内の UTF-16 コードポイントのインデックスです。
禁止されているキャレットストップ位置の配列を設定します。
| count | DWORD | in | prohibitedCaretStops が参照する配列に含まれる、禁止されているキャレットストップ位置の数。0 を指定すると、このプロパティはクリアされます。 |
| prohibitedCaretStops | DWORD* | in | 設定する、禁止されているキャレットストップ位置の配列。count が 0 の場合、このパラメーターは無視され、NULL を設定できます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| prohibitedCaretStops が NULL で、かつ count が 0 より大きい値です。 | |
|
キャレット位置の値の順序が正しくありません。位置の値は昇順に並べる必要があります。 |
解説(Remarks)
各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。
親の IXpsOMGlyphs インターフェースの双方向テキストのレベルを取得します。
| bidiLevel | DWORD* | out | 双方向テキストのレベル。 範囲: 0–61 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| bidiLevel が NULL です。 |
解説(Remarks)
BidiLevel プロパティは、Unicode アルゴリズムにおける双方向のネストレベルを指定します。偶数値は左から右へのレイアウトを、奇数値は右から左へのレイアウトを意味します。右から左へのレイアウトでは、ラン (run) の原点が最初のグリフの右側に配置されます。送り幅が正の値の場合は左方向に移動し、後続のグリフを直前のグリフの左側に配置できます。
このプロパティに指定できる値の範囲は 0 以上 61 以下で、既定値は 0 です。
双方向テキストのレベルを設定します。
| bidiLevel | DWORD | in | 双方向テキストのレベル。 範囲: 0–61 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| bidiLevel の値が許容範囲外です。詳細については、「解説」セクションを参照してください。 |
解説(Remarks)
BidiLevel プロパティは、Unicode アルゴリズムにおける双方向のネストレベルを指定します。偶数値は左から右へのレイアウトを、奇数値は右から左へのレイアウトを意味します。右から左へのレイアウトでは、ラン (run) の原点が最初のグリフの右側に配置されます。送り幅が正の値の場合は左方向に移動し、後続のグリフを直前のグリフの左側に配置できます。
このプロパティに指定できる値の範囲は 0 以上 61 以下で、既定値は 0 です。
グリフを横向きに回転してテキストを描画するかどうかを示すブール値を取得します。(IXpsOMGlyphsEditor.GetIsSideways)
| isSideways | BOOL* | out | グリフを横向きに回転してテキストを描画するかどうかを示すブール値。
|
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| isSideways が NULL です。 |
解説(Remarks)
このプロパティの既定値は false です。
グリフを横向きに回転してテキストを描画するかどうかを示す値を設定します。
| isSideways | BOOL | in | グリフを横向きに回転してテキストを描画するかどうかを示すブール値。
|
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
デバイスフォントの名前を取得します。(IXpsOMGlyphsEditor.GetDeviceFontName)
| deviceFontName | LPWSTR* | out | デバイスフォントの名前。指定されていない場合は、NULL ポインターが返されます。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| deviceFontName が NULL です。 |
解説(Remarks)
デバイスフォント名は、オブジェクトがシリアル化されるときにエスケープされた名前として作成されます。
デバイスフォント名は特定のデバイスフォントを一意に識別するもので、通常はハードウェアベンダーまたはフォントベンダーによって定義されます。
このメソッドは、deviceFontName で返される文字列が使用するメモリを割り当てます。deviceFontName が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
デバイスフォントの名前を設定します。
| deviceFontName | LPWSTR | in | エスケープされていない形式のデバイスフォント名を格納した文字列へのポインター。NULL ポインターを指定すると、このプロパティはクリアされます。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
deviceFontName に渡すデバイスフォント名は、エスケープされていない形式で設定できます。ドキュメントがシリアル化されるときに、エスケープされた形式へ変換されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMGlyphsEditor "{A5AB8616-5B16-4B9F-9629-89B323ED7909}" #usecom global IXpsOMGlyphsEditor IID_IXpsOMGlyphsEditor "{}" #comfunc global IXpsOMGlyphsEditor_ApplyEdits 3 #comfunc global IXpsOMGlyphsEditor_GetUnicodeString 4 var #comfunc global IXpsOMGlyphsEditor_SetUnicodeString 5 wstr #comfunc global IXpsOMGlyphsEditor_GetGlyphIndexCount 6 var #comfunc global IXpsOMGlyphsEditor_GetGlyphIndices 7 var,var #comfunc global IXpsOMGlyphsEditor_SetGlyphIndices 8 int,var #comfunc global IXpsOMGlyphsEditor_GetGlyphMappingCount 9 var #comfunc global IXpsOMGlyphsEditor_GetGlyphMappings 10 var,var #comfunc global IXpsOMGlyphsEditor_SetGlyphMappings 11 int,var #comfunc global IXpsOMGlyphsEditor_GetProhibitedCaretStopCount 12 var #comfunc global IXpsOMGlyphsEditor_GetProhibitedCaretStops 13 var,var #comfunc global IXpsOMGlyphsEditor_SetProhibitedCaretStops 14 int,var #comfunc global IXpsOMGlyphsEditor_GetBidiLevel 15 var #comfunc global IXpsOMGlyphsEditor_SetBidiLevel 16 int #comfunc global IXpsOMGlyphsEditor_GetIsSideways 17 var #comfunc global IXpsOMGlyphsEditor_SetIsSideways 18 int #comfunc global IXpsOMGlyphsEditor_GetDeviceFontName 19 var #comfunc global IXpsOMGlyphsEditor_SetDeviceFontName 20 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IXpsOMGlyphsEditor "{A5AB8616-5B16-4B9F-9629-89B323ED7909}" #usecom global IXpsOMGlyphsEditor IID_IXpsOMGlyphsEditor "{}" #comfunc global IXpsOMGlyphsEditor_ApplyEdits 3 #comfunc global IXpsOMGlyphsEditor_GetUnicodeString 4 sptr #comfunc global IXpsOMGlyphsEditor_SetUnicodeString 5 wstr #comfunc global IXpsOMGlyphsEditor_GetGlyphIndexCount 6 sptr #comfunc global IXpsOMGlyphsEditor_GetGlyphIndices 7 sptr,sptr #comfunc global IXpsOMGlyphsEditor_SetGlyphIndices 8 int,sptr #comfunc global IXpsOMGlyphsEditor_GetGlyphMappingCount 9 sptr #comfunc global IXpsOMGlyphsEditor_GetGlyphMappings 10 sptr,sptr #comfunc global IXpsOMGlyphsEditor_SetGlyphMappings 11 int,sptr #comfunc global IXpsOMGlyphsEditor_GetProhibitedCaretStopCount 12 sptr #comfunc global IXpsOMGlyphsEditor_GetProhibitedCaretStops 13 sptr,sptr #comfunc global IXpsOMGlyphsEditor_SetProhibitedCaretStops 14 int,sptr #comfunc global IXpsOMGlyphsEditor_GetBidiLevel 15 sptr #comfunc global IXpsOMGlyphsEditor_SetBidiLevel 16 int #comfunc global IXpsOMGlyphsEditor_GetIsSideways 17 sptr #comfunc global IXpsOMGlyphsEditor_SetIsSideways 18 int #comfunc global IXpsOMGlyphsEditor_GetDeviceFontName 19 sptr #comfunc global IXpsOMGlyphsEditor_SetDeviceFontName 20 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。