[tuto] Utiliser des polices de caractères externes [PB 4.5x]

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

[tuto] Utiliser des polices de caractères externes [PB 4.5x]

Message par Ar-S »

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

Code : Tout sélectionner

;Fonctionnement de l'API pour info
;----------------------------------------
int AddFontResource(
  __in  LPCTSTR lpszFilename
);
- 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 :

Code : Tout sélectionner

AddFontResource_("nom_du_fichier_Font1.ttf")  
AddFontResource_("nom_du_fichier_Font2.ttf")
ou plus simplement pour signaler plusieurs Fonts

Code : Tout sélectionner

AddFontResource_("nom_du_fichier_Font1.ttf;nom_du_fichier_Font2.ttf")
Une fois fait, il faut charger ces fonts dans PB de façon classique.

Code : Tout sélectionner

Font1 = LoadFont(#PB_Any,"neuralnomicon",14) 
Font2 = LoadFont(#PB_Any,"Nash",14)
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.
Image

Nous pouvons maintenant attribuer les Fonts aux gadgets concernés.

Code : Tout sélectionner

SetGadgetFont(#Btn_Quit,fontID(Font1))
SetGadgetFont(#Btn_Test,FontID(Font2))
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 :

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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels