Fonts
Fonts
Ce guide montre comment inspecter les polices référencées dans un document, extraire les données de police incorporées, et contrôler l’intégration de police TrueType lors de l’enregistrement avec Aspose.Words FOSS pour .NET. Aspose.Words FOSS pour .NET suit chaque police référencée par un document chargé via FontInfoCollection, et expose les métadonnées par police, l’extraction de police incorporée, et les contrôles d’intégration lors de l’enregistrement via FontInfo. Document.FontSettings et LoadOptions.FontSettings fournissent le point d’entrée FontSettings (délibérément minimal, dans cette édition).
Inspection des polices utilisées dans un document
DocumentBase.FontInfos (hérité de Document) renvoie un FontInfoCollection décrivant chaque police référencée n’importe où dans le document. Indexez-le par nom (par ex. fontInfos["Arial"]), testez son existence avec Contains(name), comptez-les avec Count, ou énumérez l’ensemble de la collection via GetEnumerator().
Propriétés et classification des polices
Chaque FontInfo décrit une police : Name et AltName l’identifient, Family la classe via l’énumération FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch rapporte son FontPitch (Default, Fixed, Variable), et IsTrueType, Charset et Panose exposent des données de correspondance de police de niveau inférieur.
Extraction de police incorporée
Si un document possède des polices incorporées, FontInfo.GetEmbeddedFont(format, style) renvoie les octets bruts de la police incorporée pour un EmbeddedFontFormat donné (EmbeddedOpenType ou OpenType) et EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) renvoie la police convertie directement au format OpenType, quel que soit le mode d’incorporation initial.
Droits de licence d’incorporation de polices
Avant d’extraire ou de réincorporer une police, vérifiez FontInfo.EmbeddingLicensingRights, un objet FontEmbeddingLicensingRights. EmbeddingUsagePermissions indique le niveau de licence via l’énumération FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), tandis que NoSubsetting et BitmapEmbeddingOnly signalent des restrictions supplémentaires imposées par le fournisseur de la police.
Contrôle de l’incorporation des polices lors de l’enregistrement
FontInfoCollection comporte également des commutateurs d’incorporation au niveau du document: définissez EmbedTrueTypeFonts sur true pour incorporer chaque police TrueType utilisée dans le document lors de l’enregistrement, EmbedSystemFonts pour inclure les polices généralement supposées présentes sur tout système, et SaveSubsetFonts pour incorporer uniquement les glyphes réellement utilisés plutôt que la police complète.
Portée de FontSettings dans cette édition
Document.FontSettings et LoadOptions.FontSettings renvoient tous deux un objet FontSettings, et FontSettings.DefaultInstance expose une instance par défaut partagée. Dans cette édition FOSS, la surface API de FontSettings se limite à cette propriété d’instance par défaut — la résolution des polices basée sur les dossiers et le système, qui ailleurs dans Aspose.Words est utilisée pour substituer ou résoudre les polices pour la mise en page et le rendu, n’est pas présente, car la mise en page et le rendu sont hors du champ de cette édition. La gestion des polices ici signifie l’inspection des métadonnées et l’incorporation, pas la substitution de polices pour le rendu.
Conseils et meilleures pratiques
- Vérifiez toujours
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsavant d’extraire ou de redistribuer une police intégrée — certaines polices sont uniquement licenciéesRestrictedLicenseouPrintAndPreview. - Utilisez
GetEmbeddedFontAsOpenType()lorsque vous avez besoin d’un format de sortie cohérent, quel que soit la façon dont le document source a intégré la police (EmbeddedOpenTypevsOpenType). - Définissez
FontInfoCollection.SaveSubsetFontssurtruepour réduire la taille du fichier de sortie lors de l’intégration de polices qui n’utilisent que quelques glyphes. FontInfoCollection.Contains(name)est moins coûteux que l’indexation et la gestion d’une recherche infructueuse (p. ex.fontInfos[name]) lorsque vous avez seulement besoin de tester la présence d’une police.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
GetEmbeddedFont() renvoie aucune donnée exploitable | La police référencée n’est en réalité pas intégrée dans le document | Vérifiez les paramètres d’intégration du document avant de supposer que les données de police sont présentes |
L’indexation de FontInfoCollection par nom ne trouve rien | Le nom de la police ne correspond pas exactement, y compris la casse | Énumérer FontInfoCollection avec GetEnumerator() afin de confirmer la chaîne exacte Name |
| Les API de substitution/résolution des polices attendues sont manquantes | La résolution des sources de polices basée sur les dossiers et le système n’est pas implémentée dans cette édition FOSS | Utilisez FontInfo/FontInfoCollection uniquement pour les métadonnées et l’intégration ; la substitution de polices pour le rendu ne fait pas partie du périmètre de cette édition |
FAQ
Comment lister toutes les polices référencées par un document?
Énumérez Document.FontInfos (un FontInfoCollection) via GetEnumerator(), ou indexez-le par son nom pour rechercher un spécifique (p. ex. fontInfos["Arial"]).
Puis-je extraire les octets bruts d’une police intégrée d’un document?
Oui, si la police est intégrée — appelez FontInfo.GetEmbeddedFont(format, style) pour le format intégré d’origine, ou GetEmbeddedFontAsOpenType(style) pour normaliser le résultat en OpenType.
Comment m’assurer que les polices sont intégrées lors de l’enregistrement d’un document?
Définissez FontInfoCollection.EmbedTrueTypeFonts sur true avant d’enregistrer; ajoutez EmbedSystemFonts si vous avez également besoin que les polices soient supposées présentes sur n’importe quel système, et SaveSubsetFonts pour n’intégrer que les glyphes utilisés.
Cette édition prend-t-elle en charge la résolution des polices à partir d’un dossier personnalisé pour le rendu?
Non — la résolution des sources de polices basée sur les dossiers et le système (FontSettings configuration de source) n’est pas implémentée ici, car elle sert à la mise en page et au rendu, qui sont hors du champ de cette édition FOSS.
Que signifie FontEmbeddingLicensingRights.NoSubsetting?
Il s’agit d’un indicateur de licence signalé par les droits d’intégration du fournisseur de police: lorsque true, la police ne peut pas être sous-ensemble uniquement aux glyphes utilisés.
API Reference Résumé
| Classe / Méthode | Description |
|---|---|
FontInfoCollection | Polices référencées dans un document ; indexeur par nom (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Métadonnées d’une police : Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extraire les octets de police incorporée |
EmbeddedFontFormat / EmbeddedFontStyle | Énumérations identifiant le format et la variante de style d’une police incorporée |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Restrictions de licence d’incorporation signalées pour chaque police |
FontSettings | Point d’entrée minimal des paramètres de police (Document.FontSettings, LoadOptions.FontSettings); aucune résolution de source de police dans cette édition |