web-dev-qa-db-fra.com

Toutes les polices TTF ne sont pas visibles depuis le JDK (Sun)

Je voulais utiliser Monaco.ttf avec IntelliJ. Malheureusement, ça ne se voit pas.

J'ai également remarqué que la police Monaco n'apparaissait pas dans la liste des polices obtenues de awt:

Java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()

J'ai installé Monaco.ttf dans/usr/share/fonts/truetype/osx

J'ai également essayé de le copier dans /usr/lib/jvm/Java-6-Sun/jre/lib/fonts et j'ai même essayé de mettre à jour manuellement le fichier /usr/lib/jvm/Java-6-Sun/jre/lib/fonts/fonts.dir.

J'ai redémarré le fichier jvm à chaque essai, mais les polices ne sont pas visibles à partir du fichier jdk de Sun.

Toutes les autres applications voient cette police (même Eclipse, qui se trouve dans Java mais utilise la bibliothèque SWT)

Est-ce que quelqu'un sait comment faire en sorte que jdk voie des polices supplémentaires?

6
ithkuil

Le problème vient de la police Monaco elle-même, elle ne semble pas avoir les métadonnées appropriées et est un portage de hacky, donc Java ne la reconnaît pas. Vous pouvez probablement trouver une autre version de ce fichier TTF qui fonctionnera mieux ou essayer de la réparer vous-même avec FontForge.

Voir aussi mon commentaire dans le suivi des problèmes IntelliJ IDEA.

4
CrazyCoder

Vous devez exécuter les utilitaires mkfontscale et mkfontdir dans cet ordre afin de mettre à jour le fichier fonts.dir.

Entrez le répertoire /usr/lib/jvm/Java-6-Sun/jre/lib/fonts à partir de votre terminal et exécutez

Sudo mkfontscale
Sudo mkfontdir

mkfontscale crée le fichier fonts.scale que mkfontdir peut utiliser pour créer fonts.dir.

3
user4124

Mettre à jour votre cache de polices

Sudo fc-cache -f -v
1
wojox

Avez-vous essayé d'appeler:

Java.awt.GraphicsEnvironment.getAllFonts()

Il semble que le système de polices Java soit un peu foiré:

http://www.sabi.co.uk/Notes/linuxFonts.html#fontSwJava

Vous devrez peut-être contourner les problèmes liés à la recherche des polices. Mais si Eclipse peut voir la police, il n’ya aucune raison pour que votre application ne le puisse pas. Vous pouvez même choisir de consulter le code Eclipse pour voir comment ils l'ont fait.

http://Java.Sun.com/products/Java-media/2D/reference/faqs/#Font_and_Text_questions

0