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.
À l’heure actuelle, la méthode
Convert() prend en charge la conversion uniquement au format de police TrueType (FontType.TTF), elle renvoie donc toujours
l’objet de type
TtfFont suite à une 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.