J'en profite pour crachouiller sur Falsam, en étayant Micoute, qui utilise "W".
Effectivement, Micoute, "W" est la lettre la plus large. Et TextWidth("W") offre la largeur maximum d'une lettre, voire, de la table ASCII 8 bits. Très pertinent donc.
Mais, effectivement, Djes souligne l'idée de se faire sa propre fonte. Et c'est vraiment bien de faire sa propre sauce.
Sympa, l'alignement de brochettes de cons que nous sommes à se retrouver un peu, le temps d'orbiter autour d'un petit amas d'idées...
Je pige pas les fontes / tailles de fontes
Re: Je pige pas les fontes / tailles de fontes
Pour la largeur, TextWidth() prends une chaine en paramètre. On peut donc lui passer "Une chaine de caractères complète." pour avoir encore un peu plus de précision 
Enfin, à en croire ce que je vois dans notepad++, certains changements de taille de caractères n'influent que sur la largeur ou la hauteur...

Enfin, à en croire ce que je vois dans notepad++, certains changements de taille de caractères n'influent que sur la largeur ou la hauteur...
Re: Je pige pas les fontes / tailles de fontes
j'ai indiqué a Dr Floyd sur son site
un moyen de ne pas trop s'embeter avec les fontes ..
je rappel que son probleme n'est pas lié aux fontes sur Gadgets...
mais aux fonte sur support DirectX (Screen,windowedScreen ) , car dans ce cas precis
l'option de la compilation "DPI Aware" ne marche pas !
certain ordinateur (monitor ou carte grah,ou version de DirectX , je sais pas) ne semble pas fonctionner comme tout le monde
et qu'un text Lambda , peut tres bien s'afficher sur 90% des ordi , puis sur le reste, afficher trop Gros !!
la solution que je preconise, c'est d'utiliser une Image ou un Sprite , et ecrire dessus !
au lieu d'ecrire directement sur la surface d'un Screen ....
cela semble stabiliser le probleme , car l'affichage sur une image ou un Sprite est un context qui ne semble pas changer
quelques soit le mode d'affichage ....
une image qui fait 320x200 pixels, continue a faire cette taille sur tout les ordis PC de la terre ...
en quelque sorte en faisant ainsi , on "Pixelise" le texte , une fonte meme Vectoriel , deviendra une fonte "Pixelisé"
avec ces cotes liées a l'image ou le sprite ....
voici une version du code que je lui ai donné ... (ici la version utilisant une image )
note que j'ai laissé la possibilité de redimensionner la fenetre ....
vu que Dr Floyd ecrit surtout des programmes de jeux 2D (faible resolution )
la methode, devrai bien fonctionner
un moyen de ne pas trop s'embeter avec les fontes ..
je rappel que son probleme n'est pas lié aux fontes sur Gadgets...
mais aux fonte sur support DirectX (Screen,windowedScreen ) , car dans ce cas precis
l'option de la compilation "DPI Aware" ne marche pas !
certain ordinateur (monitor ou carte grah,ou version de DirectX , je sais pas) ne semble pas fonctionner comme tout le monde
et qu'un text Lambda , peut tres bien s'afficher sur 90% des ordi , puis sur le reste, afficher trop Gros !!
la solution que je preconise, c'est d'utiliser une Image ou un Sprite , et ecrire dessus !
au lieu d'ecrire directement sur la surface d'un Screen ....
cela semble stabiliser le probleme , car l'affichage sur une image ou un Sprite est un context qui ne semble pas changer
quelques soit le mode d'affichage ....
une image qui fait 320x200 pixels, continue a faire cette taille sur tout les ordis PC de la terre ...
en quelque sorte en faisant ainsi , on "Pixelise" le texte , une fonte meme Vectoriel , deviendra une fonte "Pixelisé"
avec ces cotes liées a l'image ou le sprite ....
voici une version du code que je lui ai donné ... (ici la version utilisant une image )
Code : Tout sélectionner
Enumeration
#font
#win
#bouton
#sprite1
#numero_ligne
EndEnumeration
Declare CreateLineText(win,num,txt.s,coul)
Declare WriteLineText(num,x,y)
If InitSprite() = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
End
EndIf
If LoadFont(#font,"Comic sans Ms",30,#BOLD_FONTTYPE)
Else
MessageRequester("erreur" ,"fonte pas chargée")
EndIf
If OpenWindow(#win, 0, 0, 320, 200, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_SizeGadget )
rez_x=WindowWidth(#win)-5 ; on recup la resolution de la fenetre
rez_y=WindowHeight(#win)-5
redimenssionnement_auto=#True
If OpenWindowedScreen(WindowID(#win), 0, 0, rez_x, rez_y,redimenssionnement_auto,1,1,1)
; ******************* creation d'un ligne de text ********************
CreateLineText(#win,#numero_ligne,"Purebasic Power",rgb(255,255,0))
; ***************************************************************
; ************* Le sprite carré qui bouge ****************************
CreateSprite(#sprite1, 20, 20)
If StartDrawing(SpriteOutput(#sprite1))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing() ;>
EndIf;|
Else
MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
End ;|
EndIf
Endif
; ***********************************************************************
directionx = 2 :directiony=2
Repeat ; boucle Event
Event = WaitWindowEvent(2)
Select Event
Case #PB_Event_SizeWindow ; en cas de redimenssionnement de la fenetre
Case #PB_Event_CloseWindow
End
EndSelect
; ******************* Affiche la ligne de text ************************
StartDrawing(ScreenOutput())
WriteLineText(#numero_ligne,5,50) ; affiche la ligne de text
StopDrawing()
; *****************************************************************
x + directionx
y + directiony
If x >= (screenWidth()-20) : directionx = -2 : EndIf
IF y>= (screenHeight() -20) :Directiony = -2 :Endif
If x <= 0 : directionx = -directionx : EndIf
If y <= 0:directiony = -directiony :Endif
DisplaySprite(#Sprite1, x, y) ;affiche le sprite carré
FlipBuffers()
ClearScreen(rgb(255,255,255))
ForEver
; ********************* Zone des Procedures *************************
Procedure CreateLineText(win,num,txt.s,coul)
;By Dobro
if Isimage(num)
FreeImage(num)
Endif
; on dessine dans l'ecran la phrase a ecrire
; le but est de recuperer sa taille en pixel
StartDrawing(ScreenOutput())
DrawingFont(Fontid(#font))
larg_text=TextWidth(txt.s)
haut_text=TextHeight(txt.s)
StopDrawing()
; on a la taille en pixel , on creer l'image pour correspondre a la phrase
CreateImage(num,larg_text,haut_text)
; maintenant on peut ecrire le text dans l'image qui viens d'etre adapté en taille
StartDrawing(imageOutput(num))
DrawingFont(Fontid(#font))
DrawText( 1,1,txt.s,coul)
StopDrawing()
EndProcedure
Procedure WriteLineText(num,x,y)
;By Dobro
DrawImage(imageID(num),x,y) ; on dessine simplement notre image, qui contient notre text
EndProcedure
; Epb
vu que Dr Floyd ecrit surtout des programmes de jeux 2D (faible resolution )
la methode, devrai bien fonctionner