Compartilhar via


Função CreateFontPackage (fontsub.h)

A função CreateFontPackage cria uma versão de subconjunto de uma fonte TrueType especificada, normalmente para passá-la para uma impressora. Para permitir o fato de que as páginas posteriores em um documento podem precisar de caracteres ou glifos que não foram usados na primeira página, essa função pode criar um pacote de fonte de subconjunto inicial e, em seguida, criar pacotes de fonte "Delta" que podem ser mesclados com o pacote de fonte do subconjunto original, estendendo-o efetivamente.

Sintaxe

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
);

Parâmetros

[in] puchSrcBuffer

Aponta para um buffer que contém dados TTF ou TTC de origem, descrevendo a fonte a ser subconfigurada.

[in] ulSrcBufferSize

Especifica o tamanho de *puchSrcBuffer, em bytes.

[out] ppuchFontPackageBuffer

Aponta para uma variável do tipo caractere sem sinal*. A função CreateFontPackage alocará um buffer **puchFontPackageBuffer, usando lpfnAllocate e lpfnReAllocate. No retorno bem-sucedido, o buffer conterá a fonte do subconjunto ou o pacote de fontes. O aplicativo é responsável por eventualmente liberar o buffer.

[out] pulFontPackageBufferSize

Aponta para um longo sem sinal, que no retorno bem-sucedido especificará o tamanho alocado do buffer **puchFontPackageBuffer.

[out] pulBytesWritten

Aponta para um long sem sinal, que no retorno bem-sucedido especificará o número de bytes realmente usados no buffer **puchFontPackageBuffer.

[in] usFlag

Especifica se essa fonte deve ser subconfigurada, compactada ou ambas; seja um TTF ou TTC; e se*pusSubsetKeepListrepresenta códigos de caractere ou índices de glifo. Qualquer combinação dos seguintes sinalizadores pode ser especificada:

Valor Significado
TTFCFP_FLAGS_SUBSET
Se definido, solicita a subconfiguração.
TTFCFP_FLAGS_COMPRESS
Se definido, solicita compactação. A versão de envio atual dessa função não faz compactação. Esse sinalizador permite a implementação futura desse recurso, mas atualmente é ignorado.
TTFCFP_FLAGS_TTC
Se definido, especifica que a fonte em puchSrcBuffer é um TTC; caso contrário, ele deve ser um TTF.
TTFCFP_FLAGS_GLYPHLIST
Se definido, especifica que*pusSubsetKeepListis uma lista de índices de glifo; caso contrário, ele deve ser uma lista de códigos de caracteres.

[in] usTTCIndex

O índice TTC baseado em zero; usado somente se TTFCFP_FLAGS_TTC estiver definido em usFlags.

[in] usSubsetFormat

O formato do arquivo a ser criado. Selecione um desses valores; eles não podem ser combinados.

Valor Significado
TTFCFP_SUBSET
Crie uma fonte subconjunto autônoma que não pode ser mesclada com posteriormente.
TTFCFP_SUBSET1
Crie um pacote de fontes subconjunto que pode ser mesclado com posteriormente.
TTFCFP_DELTA
Crie um pacote de fontes Delta que possa mesclar com uma fonte de subconjunto anterior.

[in] usSubsetLanguage

O idioma na tabela Nome a ser retido. Se Definido como 0, todos os idiomas serão retidos. Usado somente para subconfiguração inicial: ou seja, usado somente se usSubsetFormat for TTFCFP_SUBSET ou TTFCFP_SUBSET1 e o sinalizador TTFCFP_FLAGS_SUBSET for definido em usFlags.

[in] usSubsetPlatform

Em conjunto com usSubsetEncoding, especifica qual CMAP usar. Usado somente se *pusSubsetKeepList for uma lista de caracteres: ou seja, usado somente se TTFCFP_FLAGS_GLYPHLIST não estiver definido em usFlags. Nesse caso, por esta subtable CMAP é aplicada a pusSubsetKeepList para criar uma lista de glifos a serem retidos na fonte de saída ou no pacote de fontes.

Se usado, isso deve levar um dos seguintes valores; eles não podem ser combinados:

Valor Significado
TTFCFP_UNICODE_PLATFORMID
TTFCFP_APPLE_PLATFORMID
TTFCFP_ISO_PLATFORMID
TTFCFP_MS_PLATFORMID

[in] usSubsetEncoding

Em conjunto com usSubsetPlatform, especifica qual CMAP usar. Usado somente se *pusSubsetKeepList for uma lista de caracteres: ou seja, usado somente se TTFCFP_FLAGS_GLYPHLIST não estiver definido em usFlags.

Se usado, isso deve levar um dos seguintes valores; eles não podem ser combinados:

Valor Significado
TTFCFP_STD_MAC_CHAR_SET
Só poderá ser usado se usSubsetPlatform == TTFCFP_APPLE_PLATFORMID.
TTFCFP_SYMBOL_CHAR_SET
Só poderá ser usado se usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_UNICODE_CHAR_SET
Só poderá ser usado se usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_DONT_CARE

[in] pusSubsetKeepList

Aponta para uma matriz de inteiros que compõem uma lista de códigos de caractere ou índices de glifo que devem ser retidos na fonte de saída ou no pacote de fontes. Se essa lista contiver códigos de caracteres (ou seja, se TTFCFP_FLAGS_GLYPHLIST não estiver definido em usFlags), essa lista poderá ser Unicode ou algum outro tipo de codificação, dependendo da Platform-Encoding CMAP especificada por usSubsetPlatform e usSubsetEncoding.

[in] usSubsetListCount

O número de elementos na lista *pusSubsetKeepList.

[in] lpfnAllocate

A função de retorno de chamada para alocar memória inicial para puchFontPackageBuffer e para buffers temporários.

[in] lpfnReAllocate

A função de retorno de chamada para realocar memória para puchFontPackageBuffer e para buffers temporários.

[in] lpfnFree

A função de retorno de chamada para liberar memória alocada por lpfnAllocate e lpfnReAllocate.

[in] lpvReserved

Deve ser definido como NULL.

Retornar valor

Se a função for bem-sucedida, retornará zero.

Caso contrário, retornará um valor diferente de zero. Consulte Mensagens de erro da função Font-Package para obter possíveis retornos de erro.

Comentários

Ao especificar um valor de TTFCFP_SUBSET para usSubsetFormat, você pode criar diretamente uma fonte de trabalho em vez de um pacote de fontes. Isso não permite a mesclagem futura, mas se não houver necessidade de mesclagem, isso ignora uma etapa no processamento downstream: um pacote de fontes precisa ser convertido novamente em uma fonte de trabalho antes que possa ser usado.

Ao especificar um valor de TTFCFP_SUBSET1 para usSubsetFormat, você pode criar um pacote de fontes que permita a mesclagem posterior. Por exemplo, considere o caso em que um aplicativo chama essa função no início de um trabalho de impressão grande. Parte do trabalho de impressão, o aplicativo descobre que precisa de glifos que não estão no subconjunto que ele criou. O aplicativo pode fazer outra chamada para CreateFontPackage, desta vez especificando um valor de TTFCFP_DELTA para usSubsetFormat. A impressora pode usar MergeFontPackage para mesclar esses glifos adicionais.

Um CMAP mapeia de codificações de caracteres para glifos. Se *pusSubsetKeepList for uma lista de valores de caracteres, o aplicativo usará os parâmetros usSubsetPlatform e usSubsetEncoding para especificar que tipo de CMAP está sendo usado, para que os valores de caractere possam ser mapeados para glifos.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho fontsub.h
Biblioteca FontSub.lib
DLL FontSub.dll

Confira também

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

MergeFontPackage