[jeu] DrawText() : problème de taille de police

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

[jeu] DrawText() : problème de taille de police

Message par blendman »

salut

On a remarqué avec Stombretrooper avec je fais le jeu 3arks que d'un ordinateur à un autre il y avait un problème dans les tailles des polices affichées avec Drawtext().

Savez-vous comment on peut régler ça ?

Voici ce que ça donne sur mon ordinateur (xp, résolution du jeu 1024*768), c'est normal :
Image

Et voici ce que cela donne sur l'ordinateur de Stombretrooper (windows 7, reso jeu 1024*768), il y a un problème:
Image

Toutes les polices sur l'ordinateur de Stombretrooper sont plus grandes que sur le mien, mais ce n'est pas lié au système car j'ai un autre avec seven et ça fonctionne correctement.

La méthode que j'utilise est la suivante :
1. je crée des constante et je loade les polices ensuite avec ces constantes. J'utilise des polices disponibles sur n'importe quel ordinateur (arial et verdana), j'ai même essayé de charger la police depuis un dossier du jeu (le dossier "font"), mais le problème est toujours le même :

Code : Tout sélectionner

Enumeration
  #fnt_gras9
  #fnt_normal8
  #fnt_normal9 
  #fnt_normal10
  #fnt_normal12
  #fnt_arial10
  #fnt_arial12
EndEnumeration

If LoadFont(#fnt_gras9,"arial",9,#PB_Font_Bold) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Arial")
EndIf
If LoadFont(#fnt_arial10,"arial",10) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Arial")
EndIf
If LoadFont(#fnt_arial12,"arial", 12) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Arial")
EndIf


AddFontResource_("Font\verdana.ttf") 
If LoadFont(#fnt_normal8, "Verdana", 8) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Verdana")
EndIf
If LoadFont(#fnt_normal12, "Verdana", 12) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Verdana")
EndIf
If LoadFont(#fnt_normal10, "Verdana", 10) = 0
  MessageRequester("Erreur", "impossible d'utiliser la police d'écriture Verdana")
EndIf
If LoadFont(#fnt_normal9,"verdana",9) =0
  MessageRequester("Erreur","Problème de chargement de la police d'écriture Verdana.")
  End
EndIf
Ensuite, pour dessiner un texte, j'utilise la méthode classique, après avoir dessiner mes sprites, je fais :

Code : Tout sélectionner

Stop3D() 
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(#fnt_normal8))
DrawText(x,y,texte$)
DrawingFont(FontID(#fnt_normal10))
DrawText(x,y,texte2$)
; etc.....
stopdrawing()
Donc, logiquement, ça devrait marcher, mais la taille de base semble différer en fonction des ordinateurs, cartes graphiques, ou systèmes d'exploitation..

Alors, à part utiliser une font sprite, ce qui m'obligerait à refaire un grosse partie du code et que je ferai très certainement plus tard, existe-t'il une solution connue à ce problème ?

merci d'avance :D.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [jeu] DrawText() : problème de taille de police

Message par djes »

C'est très étrange! Es-tu certain d'avoir bien mis les polices dans le dossier de ton programme, et que le nom soit bon? Windows a tendance à charger une police par défaut de manière silencieuse, c'est peut-être ça... Apparemment, le chargement est bon, il n'y a que la taille qui change... Même en mettant les options d'affichage sur "grande polices", ça ne devrait pas faire ça! Il n'a pas un util qui hacke le système pour forcer les grandes polices?
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Thyphoon »

j'aurais tendance a te dire que Sous windows si il ne trouve pas la font demandé, il n'y pas d'erreur et il charge une autre police...c'est peut être ce qui se passe et ce qui explique la différence de taille. mais vu le code que tu as donné ...Arial et verdana on les trouves sur toute les machines...
curieux ça ... et tu as essayé avec un code simple indépendant de ton jeu voir si tu as le même problème ? (sinon j'ai fait un procédure (bricolage) que tu dois retrouver sur le forum qui permet de charger une police pour qu'elle soit pile poile a la bonne hauteur en pixel)
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Thyphoon »

Code : Tout sélectionner

Procedure MyLoadFont(Font.l,Name.s,Size.l,Flag=0)
  Taille=1;
  Img=CreateImage(#PB_Any,1,1);Creation d'une image pour travailler
  Repeat
    If IsFont(Font)
      FreeFont(Font)
    EndIf
    Taille+1
    LoadFont(Font, "Arial", Taille,Flag)
    StartDrawing(ImageOutput(Img))
    DrawingFont(FontID(Font))
    If TextHeight("P")>Size
      Taille-1
      Quit=1
    EndIf
    StopDrawing()
  Until Quit=1 Or Taille>500
  Debug Taille
  FreeImage(Img) ; je libère l'image
EndProcedure
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par comtois »

Si tu vas dans panneau de configuration ,puis affichage , tu peux choisir la taille de la police qui sera utilisée dans Windows, 100%, 125% et 150%.
Selon ta taille choisie, ça influence l'affichage du texte dans n'importe quelle appli windows !

Avec ce code la longueur du texte varie selon que je choisisse 100% ou 125%
à 100% je vois le texte complet
à 125% je ne vois que Hello World 123456

Ensuite sous windows, s'il ne trouve pas la police que tu demandes ben tu auras autre chose, donc pas d'erreur lors du chargement d'une police.

Code : Tout sélectionner

InitSprite()

OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0, 200, 200, 1, 0, 0)
LoadFont(0, "Verdana", 12)
Texte$= "Hello World 12345678"
Repeat
  Event = WaitWindowEvent()
  
  StartDrawing(ScreenOutput())
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(0))
  
  DrawText(0, 0, Texte$, $FF)
  DrawText(0,40, Str(TextWidth(Texte$)))
  StopDrawing()
Until Event = #PB_Event_CloseWindow
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [jeu] DrawText() : problème de taille de police

Message par djes »

C'est bien ce que je pensais, c'est une belle cata! Mais à quoi ils ont pensé ceux qui ont fait ce truc immonde?!
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Thyphoon »

djes a écrit :C'est bien ce que je pensais, c'est une belle cata! Mais à quoi ils ont pensé ceux qui ont fait ce truc immonde?!
a l'accessibilité des malvoyants :P
Mais faut avouer que c'est très chiant ! d'où ma procédure si dessus qui devrait régler le problème !! :roll:
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: [jeu] DrawText() : problème de taille de police

Message par Fig »

Comment ça se fait que l'on ne rencontre pas ce problème plus souvent sous windows ? Ils passent tous par des caractères en sprites ?? Etrange... 8O
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: [jeu] DrawText() : problème de taille de police

Message par G-Rom »

Tu devrais evité les drawtext() , c'est bien pour du debug en fullscreen , quoique en fullscreen on evite le debug , mais bon...
Le mieux est d'utilisé une fonte bitmap pour un jeu , y a pas photo.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [jeu] DrawText() : problème de taille de police

Message par blendman »

Thyphoon : merci pour ta procédure, je pense que je vais l'utiliser ;).
EDIT : j'ai testé mais c'est très étrange, ça réduit la police verdana de 4 pixels chez moi, alors que je n'ai aucun problème d'affichage.
comtois a écrit :Si tu vas dans panneau de configuration ,puis affichage , tu peux choisir la taille de la police qui sera utilisée dans Windows, 100%, 125% et 150%.
Selon ta taille choisie, ça influence l'affichage du texte dans n'importe quelle appli windows !
Visiblement, avec Xp, que l'on change ou non l'affichage des polices d'affichage ça n'a pas d'incidence sur la taille des polices dans le jeu. Mais ça ne semble pas être le cas sous 7, c'est ça ?
G-Rom a écrit :Tu devrais evité les drawtext() , c'est bien pour du debug en fullscreen , quoique en fullscreen on evite le debug , mais bon...
Le mieux est d'utilisé une fonte bitmap pour un jeu , y a pas photo.
C'est bien ce que je compte faire prochainement ;-)

Le problème est que je ne sais pas du tout comment on utilise cette technique, pour le moment :).
Dernière modification par blendman le lun. 20/juin/2011 14:40, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Ar-S »

comtois a écrit :Si tu vas dans panneau de configuration ,puis affichage , tu peux choisir la taille de la police qui sera utilisée dans Windows, 100%, 125% et 150%.
Selon ta taille choisie, ça influence l'affichage du texte dans n'importe quelle appli windows !
Tu m'enlèves les mots de la touche :)
J'ai découvert ça avec horreur avec mon Resize 2011 sur l'ordi de ma mère, une bête de course mais en 125% pour l'affichage des fonts.
Du coup certains textes, très bien dimensionnés en 100% sont tronqués sur cet ordi même avec une grande résolution. (rien à voir avec la résolution en fait).

C'est un problème réel sur windows, même si ces modes adaptés aux malvoyants sont pratiques dans l'idée, s'ils se retrouvent avec la moitié des phrases bonjour la galère.
Dernière modification par Ar-S le lun. 20/juin/2011 14:49, modifié 1 fois.
~~~~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
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [jeu] DrawText() : problème de taille de police

Message par djes »

Tiens, voilà un ptit topic sur les fontes bitmap. Y'a quelques liens intéressants :)
http://bbs.demoscene.fr/gfx/bitmap-fonts-!/

Sinon, pour les utiliser, y'a pas plus simple, tu te crées quelques sprites et après tu les dessines avec un truc genre

Code : Tout sélectionner

For u = 1 To Len(text)
	s.l = #SILVERFONT + Asc(Mid(text, u, 1))
	ZoomSprite3D(s, 64, 64)
	RotateSprite3D(s, 0, 0)
	DisplaySprite3D(s, x, y)
	x + 32
Next u
Plusieurs avantages : tu as de la couleur, tu peux faire des effets d'apparition, de transparence, de disparition, c'est plus rapide, ...
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Thyphoon »

blendman a écrit :Thyphoon : merci pour ta procédure, je pense que je vais l'utiliser ;).
EDIT : j'ai testé mais c'est très étrange, ça réduit la police verdana de 4 pixels chez moi, alors que je n'ai aucun problème d'affichage.
pas de souci tu peux la modifier, l'améliorer, en faire tout ce que tu veux !
G-Rom a écrit :Le mieux est d'utilisé une fonte bitmap pour un jeu , y a pas photo.
Qu'est ce que je regrette de ne pas avoir gardé mon amiga lorsque je faisais du titrage vidéo dans les année 90.. j'en avais des disquettes plein de font bitmap dont certaine vraiment très jolie et très sobre ! Le seul truc qui manque pour se faire plaisir avec des fonts bitmaps c'est un clipsprite3D natif dans pb.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [jeu] DrawText() : problème de taille de police

Message par djes »

Thyphoon a écrit :Qu'est ce que je regrette de ne pas avoir gardé mon amiga lorsque je faisais du titrage vidéo dans les année 90.. j'en avais des disquettes plein de font bitmap dont certaine vraiment très jolie et très sobre ! Le seul truc qui manque pour se faire plaisir avec des fonts bitmaps c'est un clipsprite3D natif dans pb.
Regarde là : http://cgi.algonet.se/htbin/cgiwrap?use ... t=fonts.pl
Merci qui? :mrgreen:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [jeu] DrawText() : problème de taille de police

Message par Thyphoon »

djes a écrit : Regarde là : http://cgi.algonet.se/htbin/cgiwrap?use ... t=fonts.pl
Merci qui? :mrgreen:
Haaaaaaaaaarg le pied !!! Merci :D Merci beaucoup ! :o
Répondre