Style de police [Résolu]

Signaler
-
 Oliv -
Bonjour,

je me demande si il est possible de définir une police dans un autre style que ceux (appremment) disponible via le constructeur de
Font
.
Sauf erreur, il n' y a rien à part:
Font.PLAIN
Font.BOLD
Font.ITALIC

et la combinaison des deux derniers.
Or, la police que je souhaiterais utiliser (et de très nombreuses autres) ont bien plus de styles:
Light, SemiLight, SemiBold, Condensed, SemiCondensed...

Existe-t-il un moyen de s'en servir en Java ?
Par ex:
new Font("Bahnschrift SemiCondensed", Font.SEMIBOLD, 16)


Parce que même en mettant une constante qui existe (
Font.BOLD
), le JRE13 ne comprend pas non plus le nom de la police et affiche la police par défaut.

La police "Bahnschrift" est bien installée sur mon ordi dans les Fonts de Windows, mais...
Toutes ses sous-variantes sont apparemment des polices "logiques" et rangées dans la famille "Dialog".
Je ne peux donc faire que :
new Font("Bahnschrift", Font.PLAIN, 16)

new Font("Bahnschrift", Font.ITALIC, 16)

new Font("Bahnschrift", Font.BOLD, 16)

new Font("Bahnschrift", Font.BOLD | Font.ITALIC, 16)

quand c'est l'un des onze (11) autres styles de cette police que je veux (et que PAINT.exe délivre sans soucis)

Configuration: Windows / Chrome 79.0.3945.117

1 réponse

Messages postés
16040
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 septembre 2020
2 679
Bonjour,

La classe Font a un constructeur Font(Map<? extends AttributedCharacterIterator.Attribute,​?> attributes) avec lequel tu peux manipuler les TextAttribute qui font exactement ce que tu veux (et plus encore).

Exemple :
Font font = new Font(Map.of(
                TextAttribute.FAMILY, "Bahnschrift",
                TextAttribute.WIDTH, TextAttribute.WIDTH_SEMI_CONDENSED,
                TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD,
                TextAttribute.SIZE, 16));
Yeeeeeees ! Merci !!!
Je me doutais bien que c'était par là... Si c'était ; mais impossible de comprendre comment construire ça.
Aaah, ça fait plaisir. Bonne journée !