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 字元代碼或字元索引。 可以指定下列旗標的任何組合:

意義
TTFCFP_FLAGS_SUBSET
如果設定,則會要求子設定。
TTFCFP_FLAGS_COMPRESS
如果設定,則會要求壓縮。 此函式的目前出貨版本不會進行壓縮。 此旗標允許未來實作這項功能,但目前會忽略。
TTFCFP_FLAGS_TTC
如果設定,則指定 puchSrcBuffer 中的字型是 TTC;否則,它必須是TTF。
TTFCFP_FLAGS_GLYPHLIST
如果設定,指定*pusSubsetKeepListis 字元索引的清單;否則,它必須是字元碼的清單。

[in] usTTCIndex

以零起始的TTC索引;只有在 usFlags中設定TTFCFP_FLAGS_TTC時才使用。

[in] usSubsetFormat

要建立的檔案格式。 選取其中一個值;它們無法合併。

意義
TTFCFP_SUBSET
建立無法與稍後合併的獨立子集字型。
TTFCFP_SUBSET1
建立子集字型套件,以供稍後合併。
TTFCFP_DELTA
建立可以與先前子集字型合併的 Delta 字型套件。

[in] usSubsetLanguage

[名稱] 資料表中要保留的語言。 如果設定為 0,則會保留所有語言。 僅用於初始子設定:也就是說,只有在 usSubsetFormat 是TTFCFP_SUBSET或TTFCFP_SUBSET1,而TTFCFP_FLAGS_SUBSET旗標是在 usFlags 中設定時才使用。

[in] usSubsetPlatform

搭配 usSubsetEncoding,指定要使用的 CMAP。 只有在 *pusSubsetKeepList 是字元清單時才會使用:也就是說,只有在 usFlags中未設定TTFCFP_FLAGS_GLYPHLIST時才使用。 在此情況下,此 CMAP 子數據表會套用至 pusSubsetKeepList ,以建立要保留在輸出字型或字型套件中的字元清單。

如果使用,這必須採用下列其中一個值;它們無法合併:

意義
TTFCFP_UNICODE_PLATFORMID
TTFCFP_APPLE_PLATFORMID
TTFCFP_ISO_PLATFORMID
TTFCFP_MS_PLATFORMID

[in] usSubsetEncoding

搭配 usSubsetPlatform,指定要使用的 CMAP。 只有在 *pusSubsetKeepList 是字元清單時才會使用:也就是說,只有在 usFlags中未設定TTFCFP_FLAGS_GLYPHLIST時才使用。

如果使用,這必須採用下列其中一個值;它們無法合併:

意義
TTFCFP_STD_MAC_CHAR_SET
只有當 usSubsetPlatform == TTFCFP_APPLE_PLATFORMID時,才能使用。
TTFCFP_SYMBOL_CHAR_SET
只有當 usSubsetPlatform == TTFSUB_MS_PLATFORMID時,才能使用。
TTFCFP_UNICODE_CHAR_SET
只有當 usSubsetPlatform == TTFSUB_MS_PLATFORMID時,才能使用。
TTFCFP_DONT_CARE

[in] pusSubsetKeepList

指向整數數位,其中包含應該保留在輸出字型或字型套件中的字元碼或字元索引清單。 如果這份清單包含字元代碼 (亦即,如果未在 usFlags 中設定TTFCFP_FLAGS_GLYPHLIST) ,則此清單可能是 Unicode 或其他編碼類型,視 usSubsetPlatformusSubsetEncoding 所指定的 Platform-Encoding CMAP 而定。

[in] usSubsetListCount

清單中的元素數目 *pusSubsetKeepList

[in] lpfnAllocate

用於配置 puchFontPackageBuffer 和暫存緩衝區初始記憶體的回呼函式。

[in] lpfnReAllocate

回呼函式,可重新配置 puchFontPackageBuffer 和暫存緩衝區的記憶體。

[in] lpfnFree

回呼函式可釋出 lpfnAllocatelpfnReAllocate 所配置的記憶體。

[in] lpvReserved

必須設定為 NULL

傳回值

如果函式成功,則傳回零。

否則,傳回非零值。 如需可能的錯誤傳回,請參閱 字型套件函式錯誤訊息

備註

藉由指定 usSubsetFormat TTFCFP_SUBSET的值,您可以直接建立工作字型,而不是字型套件。 這不允許未來合併,但如果不需要合併,這會略過下游處理中的步驟:字型套件必須先轉換回工作字型,才能使用。

藉由指定 usSubsetFormat TTFCFP_SUBSET1的值,您可以建立允許稍後合併的字型套件。 例如,假設應用程式在大型列印作業開始時呼叫此函式。 應用程式的一部分是透過列印作業,發現它需要不在它所建置子集中的字元。 應用程式可以呼叫 CreateFontPackage,這次指定 usSubsetFormat 的 TTFCFP_DELTA 值。 印表機可以使用 MergeFontPackage 來合併這些額外的字元。

CMAP 會從字元編碼對應到字元。 如果 *pusSubsetKeepList 是字元值的清單,則應用程式會使用 usSubsetPlatformusSubsetEncoding 參數來指定所使用的 CMAP 類型,讓字元值可以對應至字元。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 fontsub.h
程式庫 FontSub.lib
Dll FontSub.dll

另請參閱

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

MergeFontPackage