Les polices sont un ensemble de caractères imprimables ou affichables avec différents styles, épaisseurs, etc. Elles sont utilisées pour ajouter une apparence différente aux documents ou aux pages Web en fonction de différentes exigences. Les fichiers de police contiennent la conception et d’autres informations concernant la police. Dans cet article, nous utiliserons les fichiers de police pour détecter si une police prend en charge les symboles latins ou non par programmation avec Java.

API Java pour détecter les symboles latins dans les polices TrueType et Type1

Aspose.Font for Java est une bibliothèque pour travailler avec des polices telles que TrueType, CFF, Type1, etc. L’API prend en charge le chargement, l’enregistrement et extraire des informations sur les polices. L’API vous permet également de détecter la prise en charge des symboles latins dans les polices. Vous pouvez soit télécharger l’API à l’aide de Maven, soit télécharger le JAR à partir de la section downloads.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-font</artifactId>
    <version>21.4</version>
</dependency>

Détecter les symboles latins dans les polices TrueType à l’aide de Java

Voici les étapes pour détecter si une police TrueType particulière prend en charge les symboles latins ou non.

  • Créez une instance de la classe FontDefinition à l’aide du fichier de police.
  • Créez une instance de la classe TtfFont en utilisant l’objet de FontDefinition créé à l’étape précédente.
  • Parcourez les différents codes et décodez-les en ID de glyphe.
  • Vérifiez les ID de glyphe pour la prise en charge des symboles latins.

L’exemple de code suivant montre comment détecter si une police TrueType particulière prend en charge les symboles latins ou non.

// Chemin du fichier de police
String fileName = Utils.getDataDir() + "Montserrat-Regular.ttf"; //Font file name with full path

// Charger le fichier de police
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = (TtfFont) Font.open(fd);

boolean latinText = true;

// Vérifier la prise en charge des symboles latins
for (int code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.getEncoding().decodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.getNotDef())
    {
        latinText = false;
    }
}

if (latinText)
{
    System.out.println(MessageFormat.format("Font {0} supports latin symbols.", ttfFont.getFontName()));
}
else
{
    System.out.println(MessageFormat.format("Latin symbols are not supported by font {0}.", ttfFont.getFontName()));
}

Détecter les symboles latins dans les polices Type1 à l’aide de Java

Le processus de détection de la prise en charge des symboles latins dans les polices Type1 est similaire aux polices TrueType. La seule différence est que nous utiliserons la classe Type1Font pour accéder aux informations sur la police. Voici les étapes pour détecter la prise en charge des symboles latins dans les polices Type1.

  • Créez une instance de la classe FontDefinition à l’aide du fichier de police.
  • Créez une instance de la classe Type1Font à l’aide de l’objet de FontDefinition créé à l’étape précédente.
  • Parcourez les différents codes et décodez-les en ID de glyphe.
  • Vérifiez les ID de glyphe pour la prise en charge des symboles latins.

L’exemple de code suivant montre comment détecter si une police Type1 particulière prend en charge les symboles latins ou non.

// Chemin du fichier de police
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path

// Charger le fichier de police
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = (Type1Font) Font.open(fd);

boolean latinText = true;

// Vérifier la prise en charge des symboles latins
for (int code = 65; code < 123; code++)
{
    GlyphId gid = font.getEncoding().decodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.getNotDef())
    {
        latinText = false;
    }
}

if (latinText)
{
    System.out.println(MessageFormat.format("Font {0} supports latin symbols.", font.getFontName()));
}
else
{
    System.out.println(MessageFormat.format("Latin symbols are not supported by font {0}.", font.getFontName()));
}

Obtenez une licence gratuite

Afin d’essayer l’API sans limitation d’évaluation, vous pouvez demander une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à détecter la prise en charge des symboles latins dans les polices utilisant Java. Les exemples de code partagé vous permettent de détecter si une police particulière prend en charge les symboles latins ou non. Aspose.Font for Java fournit de nombreuses fonctionnalités supplémentaires pour travailler avec des polices que vous pouvez explorer en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également