Conversion de polices. Détails avancés | .NET
Dans certains cas, il est judicieux de lire/modifier les données de police converties avant de sauvegarder la police.
La méthode Aspose.Font.Font.Convert(FontType fontType) a été conçue pour de tels cas. Cette méthode convertit une police dans le type spécifié et renvoie l’objet hérité de la classe Aspose.Font.Font qui correspond à la valeur FontType, passée dans la méthode Convert().
Le tableau suivant montre une carte de cohérence entre les valeurs FontType et les objets, héritée de la classe de base Aspose.Font.Font.
| Type de police | Objet de police |
|---|---|
TTF | Aspose.Font.Ttf.TtfFont |
Type1 | Aspose.Font.Type1.Type1Font |
CFF | Aspose.Font.Cff.CffFont |
OTF | Aspose.Font.Ttf.TtfFont |
Utilisez l’objet de police résultant pour accéder/modifier les propriétés de la police avant d’enregistrer la police résultante ou au lieu d’enregistrer la police résultante.
Actuellement, la méthode
Convert() ne prend en charge la conversion qu’au format de police TrueType (FontType.TTF), elle renvoie donc toujours l’objet de type
TtfFont comme résultat de la conversion, indépendamment de la police source utilisée.
L’extrait de code suivant charge la police CFF CenturyGothic à partir du disque, la convertit au format TrueType et change le nom de la police convertie en “CenturyGothic_Converted”.
Effectuez les actions suivantes :
- Charger la police CFF source –
- Construire le chemin absolu vers le fichier source à l’aide de la constante du répertoire de données :
1string fontPath = Path.Combine(DataDir, "CenturyGothic.cff");Cela garantit l’emplacement correct du fichier, quel que soit le système d’exploitation.
- Créer une définition de fichier (
FontFileDefinition) indiquant à Aspose.Font le format physique du fichier ("cff") et fournissant une source de flux pour le fichier :
1var fontFileDef = new FontFileDefinition("cff", new FileSystemStreamSource(fontPath)); ```
2- Créez une `FontDefinition` combinant le type de police souhaité (`FontType.CFF`) avec l'objet `fontFileDef` précédemment créé :
3```csharp
4var fontDefinition = new FontDefinition(FontType.CFF, fontFileDef);- Ouvrez la police avec
Font.Open(fontDefinition). La méthode renvoie une instance générique deFontreprésentant la police CFF chargée et pouvant être utilisée pour les étapes de conversion ultérieures.
- Convertir la police en TrueType –
- Appelez la méthode de conversion sur l’objet
Fontprécédemment chargé :
1Aspose.Font.Font convertedFont = font.Convert(FontType.TTF); ```
2- La méthode `Convert` lit les données CFF source, applique l'algorithme de conversion et renvoie une nouvelle instance `Aspose.Font.Font` qui représente en interne une police TrueType (`TtfFont`).
3- Cette `convertedFont` générique peut être convertie en type concret `Aspose.Font.Ttf.TtfFont` pour accéder aux propriétés spécifiques à TrueType.
4
53. **Convertir le résultat en classe TrueType concrète et le renommer** –
6- Convertir en toute sécurité la `convertedFont` générique en classe TrueType concrète :
7```csharp
8Aspose.Font.Ttf.TtfFont destFont = convertedFont as Aspose.Font.Ttf.TtfFont;- Vérifier que le transtypage a réussi (
destFont != null). En cas d’échec, gérer l’erreur en conséquence. - Définissez un nouveau nom pour la police convertie :
1destFont.FontName = "CenturyGothic_Converted";- Ceci met à jour les métadonnées internes du nom de la police, qui seront reflétées dans le fichier enregistré.
- Préparez le chemin d’accès du fichier de sortie –
- Choisissez le nom du fichier de sortie souhaité, par exemple,
"CffToTtf_out.ttf". - Créez le chemin d’accès complet à l’aide de la constante du répertoire de sortie :
1string outPath = Path.Combine(OutputDir, "CffToTtf_out.ttf");Path.Combinegarantit des séparateurs de chemin corrects sur toutes les plateformes et concatène le répertoire et le nom du fichier en toute sécurité.
- Enregistrer la police TrueType convertie –
- Conserver la police TrueType renommée sur le disque :
1destFont.Save(outPath);- Après l’enregistrement, vous pouvez éventuellement vérifier que le fichier a bien été créé :
1bool exists = System.IO.File.Exists(outPath);- La journalisation de
outPathou la vérification d’existence permet de confirmer la réussite de la conversion et de l’enregistrement.
1
2 // Open cff font
3 string fontPath = Path.Combine(DataDir, "CenturyGothic.cff");
4 FontDefinition fontDefinition = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new FileSystemStreamSource(fontPath)));
5 Font font = Font.Open(fontDefinition);
6
7 // Convert font into TrueType format and cast font returned to Aspose.Font.Ttf.TtfFont
8 Aspose.Font.Ttf.TtfFont destFont = font.Convert(FontType.TTF) as Aspose.Font.Ttf.TtfFont;
9
10 // Change name of converted font
11 destFont.FontName = "CenturyGothic_Converted";
12
13 // Ttf output settings
14 string outPath = Path.Combine(OutputDir, "CffToTtf_out.ttf");
15
16 // Save resultant font with font name changed
17 destFont.Save(outPath);The full range of examples for using Aspose.Font for.NET is placed in Aspose.Font.Examples.sln solution, in the net-examples folder of the Aspose.Font Documentation github repository.