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 :
[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.
[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 |
---|---|
|
|
|
|
|
|
|
[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 :
[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 |