Поделиться через


Функция CreateFontPackage (fontsub.h)

Функция CreateFontPackage создает подмножество указанного шрифта TrueType, как правило, для передачи его на принтер. Чтобы допустить, что на последующих страницах документа могут потребоваться символы или глифы, которые не использовались на первой странице, эта функция может создать начальный пакет шрифтов подмножества, а затем создать пакеты шрифтов Delta, которые можно объединить с исходным пакетом шрифтов подмножества, эффективно расширяя его.

Синтаксис

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

Указывает на переменную типа unsigned char*. Функция CreateFontPackage выделяет буфер **puchFontPackageBuffer с помощью lpfnAllocate и lpfnReAllocate. При успешном возвращении буфер будет содержать шрифт подмножества или пакет шрифтов. Приложение отвечает за окончательное освобождение буфера.

[out] pulFontPackageBufferSize

Указывает на неподписанный объект long, который при успешном возвращении будет указывать выделенный размер буфера **puchFontPackageBuffer.

[out] pulBytesWritten

Указывает на длину без знака, которая при успешном возвращении будет указывать количество байтов, фактически используемых в буфере **puchFontPackageBuffer.

[in] usFlag

Указывает, должен ли этот шрифт быть подмножеством, сжатым или и тем, и другим; является ли это TTF или TTC; и указывает, является ли pusSubsetKeepListrepresents кодами символов или индексами глифов. Можно указать любое сочетание следующих флагов:

Значение Значение
TTFCFP_FLAGS_SUBSET
Если задано, запрашивает подмножество.
TTFCFP_FLAGS_COMPRESS
Если задано значение , запрашивает сжатие. Текущая поставляемая версия этой функции не выполняет сжатие. Этот флаг позволяет реализовать эту возможность в будущем, но в настоящее время игнорируется.
TTFCFP_FLAGS_TTC
Если задано значение , указывает, что шрифт в puchSrcBuffer является TTC; В противном случае это должен быть TTF.
TTFCFP_FLAGS_GLYPHLIST
Если задано, указывает, что*pusSubsetKeepList представляет список индексов глифов; В противном случае это должен быть список кодов символов.

[in] usTTCIndex

Отсчитываемый от нуля индекс TTC; Используется, только если TTFCFP_FLAGS_TTC задано в usFlags.

[in] usSubsetFormat

Формат создаваемого файла. Выберите одно из этих значений. их нельзя объединить.

Значение Значение
TTFCFP_SUBSET
Создайте отдельный шрифт подмножества, с которым позже нельзя будет объединить.
TTFCFP_SUBSET1
Создайте пакет шрифтов подмножества, с которым можно будет объединиться позже.
TTFCFP_DELTA
Создайте пакет шрифта Delta, который можно объединить с предыдущим шрифтом подмножества.

[in] usSubsetLanguage

Язык в таблице Name для сохранения. Если задано значение 0, все языки будут сохранены. Используется только для начального подмножества, то есть используется только в том случае, если usSubsetFormat имеет значение TTFCFP_SUBSET или TTFCFP_SUBSET1, а флаг TTFCFP_FLAGS_SUBSET установлен в usFlags.

[in] usSubsetPlatform

В сочетании с usSubsetEncoding указывает, какой CMAP следует использовать. Используется только в том случае, если *pusSubsetKeepList является списком символов, то есть используется только в том случае, если TTFCFP_FLAGS_GLYPHLIST не задан в usFlags. В этом случае эта подтаблишка CMAP применяется к pusSubsetKeepList , чтобы создать список глифов для сохранения в выходном шрифте или пакете шрифтов.

Если используется, он должен принимать одно из следующих значений. Их нельзя объединить:

Значение Значение
TTFCFP_UNICODE_PLATFORMID
TTFCFP_APPLE_PLATFORMID
TTFCFP_ISO_PLATFORMID
TTFCFP_MS_PLATFORMID

[in] usSubsetEncoding

В сочетании с usSubsetPlatform указывает, какой CMAP следует использовать. Используется только в том случае, если *pusSubsetKeepList является списком символов, то есть используется только в том случае, если TTFCFP_FLAGS_GLYPHLIST не задан в usFlags.

Если используется, он должен принимать одно из следующих значений. Их нельзя объединить:

Значение Значение
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

Указывает на массив целых чисел, состоящий из списка кодов символов или индексов глифов, которые должны храниться в выходном шрифте или пакете шрифтов. Если этот список содержит коды символов (т. е. если TTFCFP_FLAGS_GLYPHLIST не задан в usFlags), этот список может быть кодировкой Юникод или другим типом в зависимости от Platform-Encoding CMAP, заданной usSubsetPlatform и usSubsetEncoding.

[in] usSubsetListCount

Количество элементов в списке *pusSubsetKeepList.

[in] lpfnAllocate

Функция обратного вызова для выделения начальной памяти для puchFontPackageBuffer и для временных буферов.

[in] lpfnReAllocate

Функция обратного вызова для перераспределения памяти для puchFontPackageBuffer и временных буферов.

[in] lpfnFree

Функция обратного вызова для освобождения памяти, выделенной lpfnAllocate и lpfnReAllocate.

[in] lpvReserved

Для параметра должно быть задано значение NULL.

Возвращаемое значение

Если функция выполнена успешно, возвращает ноль.

В противном случае возвращается ненулевое значение. Сведения о возможных ошибках см. в статье Font-Package Function Messages (Сообщения об ошибках функции Font-Package ).

Комментарии

Указав значение TTFCFP_SUBSET для usSubsetFormat, можно напрямую создать рабочий шрифт, а не пакет шрифтов. Это не допускает объединения в будущем, но если нет необходимости в слиянии, это пропускает шаг в последующей обработке: пакет шрифта необходимо преобразовать обратно в рабочий шрифт, прежде чем его можно будет использовать.

Указав значение TTFCFP_SUBSET1 для usSubsetFormat, можно создать пакет шрифтов, который в дальнейшем будет выполнять слияние. Например, рассмотрим случай, когда приложение вызывает эту функцию в начале большого задания печати. При частичном прохождении задания печати приложение обнаруживает, что ему нужны глифы, которые не входят в созданное подмножество. Приложение может выполнить еще один вызов CreateFontPackage, на этот раз указав значение TTFCFP_DELTA для usSubsetFormat. Принтер может использовать MergeFontPackage для слияния в этих дополнительных глифах.

CMAP сопоставляет кодировку символов с глифами. Если *pusSubsetKeepList — это список символьных значений, приложение использует параметры usSubsetPlatform и usSubsetEncoding , чтобы указать, какой тип CMAP используется, чтобы символьные значения можно было сопоставить с глифами.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header fontsub.h
Библиотека FontSub.lib
DLL FontSub.dll

См. также раздел

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

MergeFontPackage