Partager via


Fonction CreateFontPackage (fontsub.h)

La fonction CreateFontPackage crée une version de sous-ensemble d’une police TrueType spécifiée, généralement pour la transmettre à une imprimante. Pour permettre aux pages ultérieures d’un document d’avoir besoin de caractères ou de glyphes qui n’ont pas été utilisés sur la première page, cette fonction peut créer un package de polices de sous-ensemble initial, puis créer des packages de polices « Delta » qui peuvent être fusionnés avec le package de polices de sous-ensemble d’origine, ce qui permet de l’étendre.

Syntaxe

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

Paramètres

[in] puchSrcBuffer

Pointe vers une mémoire tampon contenant des données TTF ou TTC sources, décrivant la police à sous-ensemble.

[in] ulSrcBufferSize

Spécifie la taille de *puchSrcBuffer, en octets.

[out] ppuchFontPackageBuffer

Pointe vers une variable de type char non signé*. La fonction CreateFontPackage alloue une mémoire tampon **puchFontPackageBuffer, à l’aide de lpfnAllocate et lpfnReAllocate. En cas de retour réussi, la mémoire tampon contient la police de sous-ensemble ou le package de police. L’application est chargée de libérer la mémoire tampon.

[out] pulFontPackageBufferSize

Pointe vers un long non signé, qui, en cas de retour réussi, spécifie la taille allouée de la mémoire tampon **puchFontPackageBuffer.

[out] pulBytesWritten

Pointe vers un long non signé, qui, en cas de retour réussi, spécifie le nombre d’octets réellement utilisés dans la mémoire tampon **puchFontPackageBuffer.

[in] usFlag

Spécifie si cette police doit être sous-ensemble, compressée ou les deux ; s’il s’agit d’un TTF ou d’un TTC ; et si*pusSubsetKeepListrepresentse les codes de caractères ou les index de glyphe. Toute combinaison des indicateurs suivants peut être spécifiée :

Valeur Signification
TTFCFP_FLAGS_SUBSET
Si la valeur est définie, demande une sous-définition.
TTFCFP_FLAGS_COMPRESS
Si cette option est définie, demande la compression. La version actuellement d’expédition de cette fonction n’effectue pas de compression. Cet indicateur permet l’implémentation future de cette fonctionnalité, mais il est actuellement ignoré.
TTFCFP_FLAGS_TTC
Si la valeur est définie, spécifie que la police dans puchSrcBuffer est un TTC ; sinon, il doit s’agir d’un TTF.
TTFCFP_FLAGS_GLYPHLIST
Si la valeur est définie, spécifie que*pusSubsetKeepList est une liste d’index de glyphes ; sinon, il doit s’agir d’une liste de codes de caractères.

[in] usTTCIndex

Index TTC de base zéro ; utilisé uniquement si TTFCFP_FLAGS_TTC est défini dans usFlags.

[in] usSubsetFormat

Format du fichier à créer. Sélectionnez l’une de ces valeurs ; ils ne peuvent pas être combinés.

Valeur Signification
TTFCFP_SUBSET
Créez une police de sous-ensemble autonome qui ne peut pas être fusionnée avec ultérieurement.
TTFCFP_SUBSET1
Créez un package de polices de sous-ensemble qui peut être fusionné avec ultérieurement.
TTFCFP_DELTA
Créez un package de police Delta qui peut fusionner avec une police de sous-ensemble précédente.

[in] usSubsetLanguage

Langue de la table Name à conserver. Si la valeur est définie sur 0, toutes les langues sont conservées. Utilisé uniquement pour la sous-définition initiale : autrement dit, utilisé uniquement si usSubsetFormat est TTFCFP_SUBSET ou TTFCFP_SUBSET1, et si l’indicateur TTFCFP_FLAGS_SUBSET est défini dans usFlags.

[in] usSubsetPlatform

Conjointement avec usSubsetEncoding, spécifie le CMAP à utiliser. Utilisé uniquement si *pusSubsetKeepList est une liste de caractères : c’est-à-dire utilisé uniquement si TTFCFP_FLAGS_GLYPHLIST n’est pas défini dans usFlags. Dans ce cas, cette sous-table CMAP est appliquée à pusSubsetKeepList pour créer une liste de glyphes à conserver dans la police de sortie ou le package de polices.

Si elle est utilisée, celle-ci doit prendre l’une des valeurs suivantes : ils ne peuvent pas être combinés :

Valeur Signification
TTFCFP_UNICODE_PLATFORMID
TTFCFP_APPLE_PLATFORMID
TTFCFP_ISO_PLATFORMID
TTFCFP_MS_PLATFORMID

[in] usSubsetEncoding

Conjointement avec usSubsetPlatform, spécifie le CMAP à utiliser. Utilisé uniquement si *pusSubsetKeepList est une liste de caractères : c’est-à-dire utilisé uniquement si TTFCFP_FLAGS_GLYPHLIST n’est pas défini dans usFlags.

Si elle est utilisée, celle-ci doit prendre l’une des valeurs suivantes : ils ne peuvent pas être combinés :

Valeur Signification
TTFCFP_STD_MAC_CHAR_SET
Ne peut être utilisé que si usSubsetPlatform == TTFCFP_APPLE_PLATFORMID.
TTFCFP_SYMBOL_CHAR_SET
Ne peut être utilisé que si usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_UNICODE_CHAR_SET
Ne peut être utilisé que si usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_DONT_CARE

[in] pusSubsetKeepList

Pointe vers un tableau d’entiers qui comprend une liste de codes de caractères ou d’index de glyphes qui doivent être conservés dans la police de sortie ou le package de polices. Si cette liste contient des codes de caractères (autrement dit, si TTFCFP_FLAGS_GLYPHLIST n’est pas défini dans usFlags), cette liste peut être Unicode ou un autre type d’encodage, selon le Platform-Encoding CMAP spécifié par usSubsetPlatform et usSubsetEncoding.

[in] usSubsetListCount

Nombre d’éléments dans la liste *pusSubsetKeepList.

[in] lpfnAllocate

Fonction de rappel permettant d’allouer la mémoire initiale pour puchFontPackageBuffer et pour les mémoires tampons temporaires.

[in] lpfnReAllocate

Fonction de rappel pour réallouer la mémoire pour puchFontPackageBuffer et pour les mémoires tampons temporaires.

[in] lpfnFree

Fonction de rappel pour libérer la mémoire allouée par lpfnAllocate et lpfnReAllocate.

[in] lpvReserved

Doit être défini sur NULL.

Valeur retournée

Si la fonction réussit, retourne zéro.

Sinon, retourne une valeur différente de zéro. Pour connaître les éventuels retours d’erreur, consultez Messages d’erreur de la fonction Font-Package .

Remarques

En spécifiant une valeur de TTFCFP_SUBSET pour usSubsetFormat, vous pouvez créer directement une police de travail plutôt qu’un package de polices. Cela n’autorise pas la fusion future, mais s’il n’est pas nécessaire de fusionner, cela ignore une étape du traitement en aval : un package de polices doit être reconverti en police de travail avant de pouvoir être utilisé.

En spécifiant une valeur de TTFCFP_SUBSET1 pour usSubsetFormat, vous pouvez créer un package de polices qui autorise la fusion ultérieure. Par exemple, considérez le cas où une application appelle cette fonction au début d’un travail d’impression volumineux. Au cours du travail d’impression, l’application découvre qu’elle a besoin de glyphes qui ne se trouvent pas dans le sous-ensemble qu’elle a créé. L’application peut effectuer un autre appel à CreateFontPackage, en spécifiant cette fois la valeur TTFCFP_DELTA pour usSubsetFormat. L’imprimante peut utiliser MergeFontPackage pour fusionner dans ces glyphes supplémentaires.

Un CMAP mappe des encodages de caractères aux glyphes. Si *pusSubsetKeepList est une liste de valeurs de caractères, l’application utilise les paramètres usSubsetPlatform et usSubsetEncoding pour spécifier le type de CMAP utilisé, afin que les valeurs de caractères puissent être mappées aux glyphes.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête fontsub.h
Bibliothèque FontSub.lib
DLL FontSub.dll

Voir aussi

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

MergeFontPackage