Style de police

Résolu
Oliv -  
 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
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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));
1
Oliv
 
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 !
0