IDWriteRemoteFontFileLoader
COM公式ドキュメント
リモート(すなわちダウンロード可能な)フォントにアクセスできるフォントファイルローダーを表します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
開いているファイルリソースをカプセル化し、リモートファイルのデータをダウンロードするために使用できるリモートフォントファイルストリームオブジェクトを作成します。
| fontFileReferenceKey | void* | in | 使用しているフォントローダーのスコープ内でフォントファイルリソースを一意に識別するフォントファイル参照キーです。 |
| fontFileReferenceKeySize | DWORD | in | フォントファイル参照キーのサイズ(バイト単位)です。 |
| fontFileStream | IDWriteRemoteFontFileStream** | out | 新しく作成されたフォントファイルストリームへのポインターです。 |
戻り値
型: HRESULT
このメソッドは HRESULT の成功またはエラーコードを返します。
解説(Remarks)
CreateStreamFromKey とは異なり、このメソッドはリモートファイル用のストリームを作成するために使用できます。 ファイルがリモートの場合、ストリームを使用してファイルサイズを取得したりデータにアクセスしたりする前に、クライアントは空のファイルフラグメント配列を指定して IDWriteRemoteFontFileStream::BeginDownload を呼び出す必要があります。
一意のキーで識別されるファイルリソースのロカリティを取得します。
| fontFileReferenceKey | void* | in | 使用しているフォントローダーのスコープ内でフォントファイルリソースを一意に識別するフォントファイル参照キーです。 |
| fontFileReferenceKeySize | DWORD | in | フォントファイル参照キーのサイズ(バイト単位)です。 |
| locality | DWRITE_LOCALITY* | out | ファイルのロカリティです。 |
戻り値
型: HRESULT
このメソッドは HRESULT の成功またはエラーコードを返します。
ローダーがこの機能をサポートしている場合、URL からフォントファイル参照を作成します。
| factory | IDWriteFactory* | in | フォントファイル参照の作成に使用する Factory です。 |
| baseUrl | LPWSTR | inoptional | 省略可能なベース URL です。ベース URL は、fontFileUrl が相対 URL の場合にそれを解決するために使用されます。たとえば、baseUrl は fontFileUrl を含んでいた参照元ドキュメントの URL などになります。 |
| fontFileUrl | LPWSTR | in | フォントリソースの URL です。 |
| fontFile | IDWriteFontFile** | out | 新しく作成されたフォントファイル参照へのポインターを受け取ります。 |
戻り値
型: HRESULT
このメソッドは HRESULT の成功またはエラーコードを返します。
解説(Remarks)
baseUrl が空でない文字列の場合、baseUrl と fontFileUrl を連結したものが有効な URL を形成する必要があります。DirectWrite は追加の区切り文字を補いません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteRemoteFontFileLoader "{68648C83-6EDE-46C0-AB46-20083A887FDE}" #usecom global IDWriteRemoteFontFileLoader IID_IDWriteRemoteFontFileLoader "{}" #comfunc global IDWriteRemoteFontFileLoader_CreateRemoteStreamFromKey 4 sptr,int,sptr #comfunc global IDWriteRemoteFontFileLoader_GetLocalityFromKey 5 sptr,int,var #comfunc global IDWriteRemoteFontFileLoader_CreateFontFileReferenceFromUrl 6 sptr,wstr,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteRemoteFontFileLoader "{68648C83-6EDE-46C0-AB46-20083A887FDE}" #usecom global IDWriteRemoteFontFileLoader IID_IDWriteRemoteFontFileLoader "{}" #comfunc global IDWriteRemoteFontFileLoader_CreateRemoteStreamFromKey 4 sptr,int,sptr #comfunc global IDWriteRemoteFontFileLoader_GetLocalityFromKey 5 sptr,int,sptr #comfunc global IDWriteRemoteFontFileLoader_CreateFontFileReferenceFromUrl 6 sptr,wstr,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。