CreateFontPackage 函式 (fontsub.h)
CreateFontPackage 函式會建立指定 TrueType 字型的子集版本,通常是為了將它傳遞至印表機。 為了允許檔稍後的頁面可能需要第一頁未使用的字元或字元,此函式可以建立初始子集字型套件,然後建立可以與原始子集字型套件合併的「差異」字型套件,有效地擴充它。
語法
unsigned long CreateFontPackage(
[in] const unsigned char *puchSrcBuffer,
[in] const unsigned long ulSrcBufferSize,
[out] unsigned char **ppuchFontPackageBuffer,
[out] unsigned long *pulFontPackageBufferSize,
[out] unsigned long *pulBytesWritten,
[in] const unsigned short usFlag,
[in] const unsigned short usTTCIndex,
[in] const unsigned short usSubsetFormat,
[in] const unsigned short usSubsetLanguage,
[in] const unsigned short usSubsetPlatform,
[in] const unsigned short usSubsetEncoding,
[in] const unsigned short *pusSubsetKeepList,
[in] const unsigned short usSubsetListCount,
[in] CFP_ALLOCPROC lpfnAllocate,
[in] CFP_REALLOCPROC lpfnReAllocate,
[in] CFP_FREEPROC lpfnFree,
[in] void *lpvReserved
);
參數
[in] puchSrcBuffer
指向包含來源 TTF 或 TTC 數據的緩衝區,描述要子集的字型。
[in] ulSrcBufferSize
指定 *puchSrcBuffer 的大小,以位元組為單位。
[out] ppuchFontPackageBuffer
指向不帶正負號字元*類型的變數。 CreateFontPackage 函式會使用 lpfnAllocate 和 lpfnReAllocate 配置緩衝區 **puchFontPackageBuffer。 成功傳回時,緩衝區將包含子集字型或字型套件。 應用程式負責最終釋放緩衝區。
[out] pulFontPackageBufferSize
指向未簽署的long,成功傳回時會指定已配置的緩衝區大小 **puchFontPackageBuffer。
[out] pulBytesWritten
指向未帶正負號的long,成功傳回時會指定緩衝區 **puchFontPackageBuffer 中實際使用的位元組數目。
[in] usFlag
指定這個字型是否應該進行子集、壓縮或兩者;無論是TTF還是TTC;以及*pusSubsetKeepListrepresents 字元代碼或字元索引。 可以指定下列旗標的任何組合:
[in] usTTCIndex
以零起始的TTC索引;只有在 usFlags中設定TTFCFP_FLAGS_TTC時才使用。
[in] usSubsetFormat
要建立的檔案格式。 選取其中一個值;它們無法合併。
值 | 意義 |
---|---|
|
建立無法與稍後合併的獨立子集字型。 |
|
建立子集字型套件,以供稍後合併。 |
|
建立可以與先前子集字型合併的 Delta 字型套件。 |
[in] usSubsetLanguage
[名稱] 資料表中要保留的語言。 如果設定為 0,則會保留所有語言。 僅用於初始子設定:也就是說,只有在 usSubsetFormat 是TTFCFP_SUBSET或TTFCFP_SUBSET1,而TTFCFP_FLAGS_SUBSET旗標是在 usFlags 中設定時才使用。
[in] usSubsetPlatform
搭配 usSubsetEncoding,指定要使用的 CMAP。 只有在 *pusSubsetKeepList 是字元清單時才會使用:也就是說,只有在 usFlags中未設定TTFCFP_FLAGS_GLYPHLIST時才使用。 在此情況下,此 CMAP 子數據表會套用至 pusSubsetKeepList ,以建立要保留在輸出字型或字型套件中的字元清單。
如果使用,這必須採用下列其中一個值;它們無法合併:
值 | 意義 |
---|---|
|
|
|
|
|
|
|
[in] usSubsetEncoding
搭配 usSubsetPlatform,指定要使用的 CMAP。 只有在 *pusSubsetKeepList 是字元清單時才會使用:也就是說,只有在 usFlags中未設定TTFCFP_FLAGS_GLYPHLIST時才使用。
如果使用,這必須採用下列其中一個值;它們無法合併:
[in] pusSubsetKeepList
指向整數數位,其中包含應該保留在輸出字型或字型套件中的字元碼或字元索引清單。 如果這份清單包含字元代碼 (亦即,如果未在 usFlags 中設定TTFCFP_FLAGS_GLYPHLIST) ,則此清單可能是 Unicode 或其他編碼類型,視 usSubsetPlatform 和 usSubsetEncoding 所指定的 Platform-Encoding CMAP 而定。
[in] usSubsetListCount
清單中的元素數目 *pusSubsetKeepList。
[in] lpfnAllocate
用於配置 puchFontPackageBuffer 和暫存緩衝區初始記憶體的回呼函式。
[in] lpfnReAllocate
回呼函式,可重新配置 puchFontPackageBuffer 和暫存緩衝區的記憶體。
[in] lpfnFree
回呼函式可釋出 lpfnAllocate 和 lpfnReAllocate 所配置的記憶體。
[in] lpvReserved
必須設定為 NULL。
傳回值
如果函式成功,則傳回零。
否則,傳回非零值。 如需可能的錯誤傳回,請參閱 字型套件函式錯誤訊息 。
備註
藉由指定 usSubsetFormat TTFCFP_SUBSET的值,您可以直接建立工作字型,而不是字型套件。 這不允許未來合併,但如果不需要合併,這會略過下游處理中的步驟:字型套件必須先轉換回工作字型,才能使用。
藉由指定 usSubsetFormat TTFCFP_SUBSET1的值,您可以建立允許稍後合併的字型套件。 例如,假設應用程式在大型列印作業開始時呼叫此函式。 應用程式的一部分是透過列印作業,發現它需要不在它所建置子集中的字元。 應用程式可以呼叫 CreateFontPackage,這次指定 usSubsetFormat 的 TTFCFP_DELTA 值。 印表機可以使用 MergeFontPackage 來合併這些額外的字元。
CMAP 會從字元編碼對應到字元。 如果 *pusSubsetKeepList 是字元值的清單,則應用程式會使用 usSubsetPlatform 和 usSubsetEncoding 參數來指定所使用的 CMAP 類型,讓字元值可以對應至字元。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | fontsub.h |
程式庫 | FontSub.lib |
Dll | FontSub.dll |