[tuto] Utiliser des polices de caractères externes [PB 4.5x]
Publié : ven. 17/sept./2010 10:05
Voilà comment utiliser des Fonts (polices de caractères) qui ne sont pas installées dans windows.
Utilisation de l'API AddFontResource_ / RemoveFontResource_
(API supportées sur Windows 2K et +)
"Fonts" récupérées sur fontesgratis
- Tout d'abord, placez vos Fonts dans le répertoire de votre programme.
- Ensuite, on va faire connaitre à windows ces Fonts en utilisant AddFontResource_
La synthaxe peut être :
ou plus simplement pour signaler plusieurs Fonts
Une fois fait, il faut charger ces fonts dans PB de façon classique.
J'attire votre attention sur le fait de bien noter le nom de la font tel qu'il apparait lorsque vous double cliquez sur celui-ci dans windows.
Dans mon exemple, le fichier de la Font1 est bien neural2.ttf mais son vrai nom est neuralnomicon lorsque je double clique dessus.

Nous pouvons maintenant attribuer les Fonts aux gadgets concernés.
Enfin avant de quitter on va décharger les tables de fonts de windows avec RemoveFontResource_
RemoveFontResource_("neural2.ttf;nash-tuc.ttf") ;
Mise en œuvre concrète :
Voilou.
Utilisation de l'API AddFontResource_ / RemoveFontResource_
(API supportées sur Windows 2K et +)
"Fonts" récupérées sur fontesgratis
Code : Tout sélectionner
;Fonctionnement de l'API pour info
;----------------------------------------
int AddFontResource(
__in LPCTSTR lpszFilename
);
- Ensuite, on va faire connaitre à windows ces Fonts en utilisant AddFontResource_
La synthaxe peut être :
Code : Tout sélectionner
AddFontResource_("nom_du_fichier_Font1.ttf")
AddFontResource_("nom_du_fichier_Font2.ttf")
Code : Tout sélectionner
AddFontResource_("nom_du_fichier_Font1.ttf;nom_du_fichier_Font2.ttf")
Code : Tout sélectionner
Font1 = LoadFont(#PB_Any,"neuralnomicon",14)
Font2 = LoadFont(#PB_Any,"Nash",14)
Dans mon exemple, le fichier de la Font1 est bien neural2.ttf mais son vrai nom est neuralnomicon lorsque je double clique dessus.

Nous pouvons maintenant attribuer les Fonts aux gadgets concernés.
Code : Tout sélectionner
SetGadgetFont(#Btn_Quit,fontID(Font1))
SetGadgetFont(#Btn_Test,FontID(Font2))
RemoveFontResource_("neural2.ttf;nash-tuc.ttf") ;
Mise en œuvre concrète :
Code : Tout sélectionner
;Ajouter des Fonts externes by Ar-S / 2010 - PB 4.5x
;Adaptation d'un code de Chris
Enumeration
#Window_0
#Btn_Test
#Btn_Quit
EndEnumeration
AddFontResource_("neural2.ttf;nash-tuc.ttf") ; Utilisation de l'API pour ajouter les font se trouvant dans le répertoire de travail
Font1 = LoadFont(#PB_Any,"neuralnomicon",14)
Font2 = LoadFont(#PB_Any,"Nash",14)
If OpenWindow(#Window_0, 300, 300, 203, 210, "Fenêtre 1",#PB_Window_SystemMenu,0)
ButtonGadget(#Btn_Quit, 1, 1, 200, 100, "Quitter")
ButtonGadget(#Btn_Test, 1, 108, 200, 100, "Test")
; On Attribue les Fonts aux boutons
SetGadgetFont(#Btn_Quit,fontID(Font1))
SetGadgetFont(#Btn_Test,FontID(Font2))
endif
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Quit
quit = 1
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
quit = 1
EndSelect
EndSelect
until quit=1
RemoveFontResource_("neural2.ttf;nash-tuc.ttf") ; on décharge les Fonts
CloseWindow(#Window_0)
end
Voilou.