Win32 API 日本語リファレンス
ホームStorage.Xps › IXpsOMGlyphsEditor

IXpsOMGlyphsEditor

COM
IIDa5ab8616-5b16-4b9f-9629-89b323ed7909継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IXpsOMGlyphs インターフェースのテキストコンテンツに影響するプロパティを、まとめて変更できるようにします。

メソッド 18

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT ApplyEdits()

プロパティ間の相互検証を行った後、変更内容を親の IXpsOMGlyphs インターフェースにコピーします。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
この IXpsOMGlyphsEditor インターフェースが、有効な IXpsOMGlyphs インターフェースに属していません。
XPS_E_CARET_OUTSIDE_STRING
空の文字列に対してキャレットストップが指定されたか、キャレットのジャンプインデックスが Unicode 文字列の長さを超えています。
XPS_E_MAPPING_OUTSIDE_INDICES
グリフマッピングがグリフインデックスの数を超えています。
XPS_E_MAPPING_OUTSIDE_STRING
空の文字列に対してグリフマッピングが定義されています。Unicode 文字列が空の場合、グリフマッピングを定義することはできません。

または

グリフマッピングが Unicode 文字列の長さを超えています。

XPS_E_MISSING_GLYPHS
Unicode 文字列を持たない IXpsOMGlyphs インターフェースに、グリフインデックスが 1 つも指定されていません。IXpsOMGlyphs インターフェースには、Unicode 文字列またはグリフインデックスの配列のいずれかを指定する必要があります。
XPS_E_ODD_BIDILEVEL
テキスト文字列が横向き (sideways) かつ右から左 (right-to-left) として指定されました。テキストが横向きの場合、bidi レベルに奇数値 (右から左) を指定することはできません。同様に、bidi レベルが奇数値の場合は、横向きにすることはできません。
XPS_E_ONE_TO_ONE_MAPPING_EXPECTED
グリフマッピングが Unicode 文字列の内容と一致しませんでした。
XPS_E_TOO_MANY_INDICES
グリフインデックスの数が Unicode コードポイントの数を上回っています。グリフマッピングがない場合、グリフインデックスの数は Unicode コードポイントの数以下でなければなりません。

解説(Remarks)

IXpsOMGlyphsEditor インターフェースは、このメソッドの呼び出し後も有効なままであるため、引き続き変更を加えることができます。

vtbl 4 HRESULT GetUnicodeString(LPWSTR* unicodeString)

エスケープされていない UTF-16 スカラー値でテキストを取得します。(IXpsOMGlyphsEditor.GetUnicodeString)

unicodeStringLPWSTR*outUTF-16 の Unicode 文字列。文字列が空の場合は、NULL ポインターが返されます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
unicodeStringNULL です。

解説(Remarks)

このメソッドは、unicodeString で返される文字列が使用するメモリを割り当てます。unicodeStringNULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。

vtbl 5 HRESULT SetUnicodeString(LPWSTR unicodeString)

エスケープされていない UTF-16 スカラー値でテキストを設定します。

unicodeStringLPWSTRinUTF-16 の Unicode 文字列のアドレス。NULL ポインターを指定すると、このプロパティはクリアされます。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT GetGlyphIndexCount(DWORD* indexCount)

グリフインデックスの数を取得します。

indexCountDWORD*outグリフインデックスの数。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
indexCountNULL です。

解説(Remarks)

グリフインデックスを取得するには、GetGlyphIndices を呼び出します。

vtbl 7 HRESULT GetGlyphIndices(DWORD* indexCount, XPS_GLYPH_INDEX* glyphIndices)

フォント内の特定のグリフインデックスを表す XPS_GLYPH_INDEX 構造体の配列を取得します。(IXpsOMGlyphsEditor.GetGlyphIndices)

indexCountDWORD*inoutglyphIndices パラメーターが参照する配列に格納できる要素数。メソッドが戻るとき、indexCount には glyphIndices が参照する配列に返された XPS_GLYPH_INDEX 構造体の数が格納されます。
glyphIndicesXPS_GLYPH_INDEX*outグリフインデックスを受け取る XPS_GLYPH_INDEX 構造体の配列。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
indexCount または glyphIndices、あるいはその両方が NULL です。
ERROR_MORE_DATA
glyphIndices がグリフインデックスのデータを受け取るのに十分な大きさではありません。indexCount には必要な要素数が格納されます。

解説(Remarks)

glyphIndices で返されるグリフインデックスは、UnicodeString プロパティからグリフインデックスへの既定の cmap マッピングをオーバーライドします。各 XPS_GLYPH_INDEX 構造体には、送り幅 (advance width) と垂直方向および水平方向のオフセット情報も含まれます。

GetGlyphIndexCount は、グリフインデックス配列の要素数を取得します。

vtbl 8 HRESULT SetGlyphIndices(DWORD indexCount, XPS_GLYPH_INDEX* glyphIndices)

フォント内で使用するグリフインデックスを表す XPS_GLYPH_INDEX 構造体の配列を設定します。

indexCountDWORDinglyphIndices が参照する配列に含まれる XPS_GLYPH_INDEX 構造体の数。0 を指定すると、このプロパティはクリアされます。
glyphIndicesXPS_GLYPH_INDEX*inグリフインデックスを格納した XPS_GLYPH_INDEX 構造体の配列。indexCount が 0 の場合、このパラメーターは無視されます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上の XPS_GLYPH_INDEX 構造体の index フィールドに、有効でない値が設定されています。index フィールドには、–1 以上 65535 (0xFFFF) 以下の値を指定する必要があります。
E_POINTER
glyphIndicesNULL で、かつ indexCount が 0 より大きい値です。
XPS_E_INVALID_FLOAT
1 つ以上の XPS_GLYPH_INDEX 構造体の advanceWidthhorizontalOffset、または verticalOffset フィールドに、有効でない浮動小数点値が設定されています。
XPS_E_NEGATIVE_FLOAT
1 つ以上の XPS_GLYPH_INDEX 構造体の advanceWidth フィールドに、有効でない値が設定されています。advanceWidth フィールドには、負でない値、または正確に –1.0 の値を指定する必要があります。–1.0 以外の負の値は無効です。

解説(Remarks)

glyphIndices で渡すグリフインデックスは、UnicodeString プロパティからグリフインデックスへの既定の cmap マッピングをオーバーライドします。各 XPS_GLYPH_INDEX 構造体には、送り幅 (advance width) と垂直方向および水平方向のオフセット情報も含まれます。

vtbl 9 HRESULT GetGlyphMappingCount(DWORD* glyphMappingCount)

グリフマッピングの数を取得します。(IXpsOMGlyphsEditor.GetGlyphMappingCount)

glyphMappingCountDWORD*outグリフマッピングの数。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
glyphMappingCountNULL です。

解説(Remarks)

グリフマッピングを取得するには、GetGlyphMappings を呼び出します。

vtbl 10 HRESULT GetGlyphMappings(DWORD* glyphMappingCount, XPS_GLYPH_MAPPING* glyphMappings)

UTF-16 スカラー値を、GetGlyphIndices が返す XPS_GLYPH_INDEX 構造体の配列の要素にどのようにマップするかを表す XPS_GLYPH_MAPPING 構造体の配列を取得します。(IXpsOMGlyphsEditor.GetGlyphMappings)

glyphMappingCountDWORD*inoutglyphMappings が参照する配列に格納できる XPS_GLYPH_MAPPING 構造体の数。メソッドが戻るとき、glyphMappingCount にはその配列に格納された値の数が設定されます。
glyphMappingsXPS_GLYPH_MAPPING*outグリフマッピングの値を受け取る XPS_GLYPH_MAPPING 構造体の配列。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
glyphMappingCount または glyphMappingsNULL です。
ERROR_MORE_DATA
glyphMappings がグリフインデックスのデータを受け取るのに十分な大きさではありません。glyphMappingCount には必要な要素数が格納されます。

解説(Remarks)

GetGlyphMappingCount は、グリフマッピングの数を取得します。

vtbl 11 HRESULT SetGlyphMappings(DWORD glyphMappingCount, XPS_GLYPH_MAPPING* glyphMappings)

UnicodeString プロパティ内の UTF-16 スカラー値を、XPS_GLYPH_INDEX 構造体の配列の要素にどのようにマップするかを表す XPS_GLYPH_MAPPING 構造体の配列を設定します。

glyphMappingCountDWORDinglyphMappings が参照する配列に含まれる XPS_GLYPH_MAPPING 構造体の数。0 を指定すると、このプロパティはクリアされます。
glyphMappingsXPS_GLYPH_MAPPING*inグリフマッピングの値を格納した XPS_GLYPH_MAPPING 構造体の配列。glyphMappingCount が 0 の場合、このパラメーターは無視され、NULL を設定できます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上の XPS_GLYPH_MAPPING 構造体のメンバーに、有効でない値が設定されています。これは次の場合に発生します。文字列の長さと開始位置の合計が開始位置より小さい場合、インデックス位置とインデックス長の合計が開始位置より小さい場合、およびインデックスの長さが 0 の場合です。
E_POINTER
glyphMappingsNULL で、かつ glyphMappingCount が 0 より大きい値です。
XPS_E_MAPPING_OUT_OF_ORDER
1 つ以上の XPS_GLYPH_MAPPING 構造体で、要素の順序が正しくありません。
vtbl 12 HRESULT GetProhibitedCaretStopCount(DWORD* prohibitedCaretStopCount)

禁止されているキャレットストップの数を取得します。(IXpsOMGlyphsEditor.GetProhibitedCaretStopCount)

prohibitedCaretStopCountDWORD*out禁止されているキャレットストップの数。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
prohibitedCaretStopCountNULL です。

解説(Remarks)

禁止されているキャレットストップを取得するには、GetProhibitedCaretStops を呼び出します。

各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。

vtbl 13 HRESULT GetProhibitedCaretStops(DWORD* count, DWORD* prohibitedCaretStops)

禁止されているキャレットストップ位置の配列を取得します。(IXpsOMGlyphsEditor.GetProhibitedCaretStops)

countDWORD*inoutprohibitedCaretStops パラメーターが参照する配列に格納できる、禁止されているキャレットストップ値の数。メソッドが戻るとき、prohibitedCaretStopCount にはその配列に格納された値の数が設定されます。
prohibitedCaretStopsDWORD*outグリフマッピングの値の配列。禁止されているキャレットストップが定義されていない場合は、NULL ポインターが返されます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
prohibitedCaretStopCountprohibitedCaretStops、またはその両方が NULL でした。
ERROR_MORE_DATA
prohibitedCaretStops が、禁止されているキャレットストップのデータを受け取るのに十分な大きさではありませんでした。prohibitedCaretStopCount には必要な要素数が格納されます。

解説(Remarks)

各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。

GetProhibitedCaretStopCount は、禁止されているキャレットストップの数を取得します。

キャレットストップとは、グリフの UnicodeString プロパティ内の UTF-16 コードポイントのインデックスです。

vtbl 14 HRESULT SetProhibitedCaretStops(DWORD count, DWORD* prohibitedCaretStops)

禁止されているキャレットストップ位置の配列を設定します。

countDWORDinprohibitedCaretStops が参照する配列に含まれる、禁止されているキャレットストップ位置の数。0 を指定すると、このプロパティはクリアされます。
prohibitedCaretStopsDWORD*in設定する、禁止されているキャレットストップ位置の配列。count が 0 の場合、このパラメーターは無視され、NULL を設定できます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
prohibitedCaretStopsNULL で、かつ count が 0 より大きい値です。
XPS_E_CARET_OUTOFORDER
キャレット位置の値の順序が正しくありません。位置の値は昇順に並べる必要があります。

解説(Remarks)

各キャレットストップのインデックスは、UTF-16 の UnicodeString プロパティのスカラー値に対応します。インデックス 0 は UnicodeString の最初の UTF-16 スカラー値の直前の位置を表し、インデックス 1 は 1 番目と 2 番目の UTF-16 スカラー値の間の位置を表します (以下同様)。UnicodeString の末尾にもインデックスが 1 つあります。指定されていないインデックスは、いずれも有効なキャレットストップ位置です。

vtbl 15 HRESULT GetBidiLevel(DWORD* bidiLevel)

親の IXpsOMGlyphs インターフェースの双方向テキストのレベルを取得します。

bidiLevelDWORD*out

双方向テキストのレベル。

範囲: 0–61

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
bidiLevel が NULL です。

解説(Remarks)

BidiLevel プロパティは、Unicode アルゴリズムにおける双方向のネストレベルを指定します。偶数値は左から右へのレイアウトを、奇数値は右から左へのレイアウトを意味します。右から左へのレイアウトでは、ラン (run) の原点が最初のグリフの右側に配置されます。送り幅が正の値の場合は左方向に移動し、後続のグリフを直前のグリフの左側に配置できます。

このプロパティに指定できる値の範囲は 0 以上 61 以下で、既定値は 0 です。

vtbl 16 HRESULT SetBidiLevel(DWORD bidiLevel)

双方向テキストのレベルを設定します。

bidiLevelDWORDin

双方向テキストのレベル。

範囲: 0–61

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
bidiLevel の値が許容範囲外です。詳細については、「解説」セクションを参照してください。

解説(Remarks)

BidiLevel プロパティは、Unicode アルゴリズムにおける双方向のネストレベルを指定します。偶数値は左から右へのレイアウトを、奇数値は右から左へのレイアウトを意味します。右から左へのレイアウトでは、ラン (run) の原点が最初のグリフの右側に配置されます。送り幅が正の値の場合は左方向に移動し、後続のグリフを直前のグリフの左側に配置できます。

このプロパティに指定できる値の範囲は 0 以上 61 以下で、既定値は 0 です。

vtbl 17 HRESULT GetIsSideways(BOOL* isSideways)

グリフを横向きに回転してテキストを描画するかどうかを示すブール値を取得します。(IXpsOMGlyphsEditor.GetIsSideways)

isSidewaysBOOL*out

グリフを横向きに回転してテキストを描画するかどうかを示すブール値。

意味
TRUE
グリフを横向きに回転します。横向きのテキストになります。
FALSE
グリフを横向きに回転しません。通常のテキストになります。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
isSidewaysNULL です。

解説(Remarks)

このプロパティの既定値は false です。

vtbl 18 HRESULT SetIsSideways(BOOL isSideways)

グリフを横向きに回転してテキストを描画するかどうかを示す値を設定します。

isSidewaysBOOLin

グリフを横向きに回転してテキストを描画するかどうかを示すブール値。

意味
TRUE
グリフを横向きに回転します。横向きのテキストになります。
FALSE
グリフを横向きに回転しません。通常のテキストになります。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 19 HRESULT GetDeviceFontName(LPWSTR* deviceFontName)

デバイスフォントの名前を取得します。(IXpsOMGlyphsEditor.GetDeviceFontName)

deviceFontNameLPWSTR*outデバイスフォントの名前。指定されていない場合は、NULL ポインターが返されます。

戻り値

このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すものが含まれます (ただし、これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
deviceFontNameNULL です。

解説(Remarks)

デバイスフォント名は、オブジェクトがシリアル化されるときにエスケープされた名前として作成されます。

デバイスフォント名は特定のデバイスフォントを一意に識別するもので、通常はハードウェアベンダーまたはフォントベンダーによって定義されます。

このメソッドは、deviceFontName で返される文字列が使用するメモリを割り当てます。deviceFontNameNULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。

vtbl 20 HRESULT SetDeviceFontName(LPWSTR deviceFontName)

デバイスフォントの名前を設定します。

deviceFontNameLPWSTRinエスケープされていない形式のデバイスフォント名を格納した文字列へのポインター。NULL ポインターを指定すると、このプロパティはクリアされます。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

deviceFontName に渡すデバイスフォント名は、エスケープされていない形式で設定できます。ドキュメントがシリアル化されるときに、エスケープされた形式へ変換されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。