Функция 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 кодами символов или индексами глифов. Можно указать любое сочетание следующих флагов:
[in] usTTCIndex
Отсчитываемый от нуля индекс TTC; Используется, только если TTFCFP_FLAGS_TTC задано в usFlags.
[in] usSubsetFormat
Формат создаваемого файла. Выберите одно из этих значений. их нельзя объединить.
[in] usSubsetLanguage
Язык в таблице Name для сохранения. Если задано значение 0, все языки будут сохранены. Используется только для начального подмножества, то есть используется только в том случае, если usSubsetFormat имеет значение TTFCFP_SUBSET или TTFCFP_SUBSET1, а флаг TTFCFP_FLAGS_SUBSET установлен в usFlags.
[in] usSubsetPlatform
В сочетании с usSubsetEncoding указывает, какой CMAP следует использовать. Используется только в том случае, если *pusSubsetKeepList является списком символов, то есть используется только в том случае, если TTFCFP_FLAGS_GLYPHLIST не задан в usFlags. В этом случае эта подтаблишка CMAP применяется к pusSubsetKeepList , чтобы создать список глифов для сохранения в выходном шрифте или пакете шрифтов.
Если используется, он должен принимать одно из следующих значений. Их нельзя объединить:
Значение | Значение |
---|---|
|
|
|
|
|
|
|
[in] usSubsetEncoding
В сочетании с usSubsetPlatform указывает, какой CMAP следует использовать. Используется только в том случае, если *pusSubsetKeepList является списком символов, то есть используется только в том случае, если TTFCFP_FLAGS_GLYPHLIST не задан в usFlags.
Если используется, он должен принимать одно из следующих значений. Их нельзя объединить:
[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 |