Tk font size

Le
perlgenome
Bonjour,

Je cherche obtenir les informations du font d'un Widget, comment
faire car je rencontre des comportements spciaux ?
La taille rcuprer via ma mthode est toujours infrieur de 4, 5, =
8,
etc pixels par rapport la vraie taille comme le montre l'exemple ci-
dessous.
Avez vous une ide ?

Une autre faon serait de parser le font mais comment le faire
proprement. Car il est possible de crer un font de plusieurs faon :
- soit en ecrivant -font => "Arial 8 normal" ou "{Arial} 8 normal" ou
Arial 8 , voir mme en utilisant la mthode fontCreate.


Exemple :

#!/usr/bin/perl
use strict;
use warnings;
use Tk;

my $mw = MainWindow->new(
-background => 'white',
);

my $bb = $mw->Button(
-text => 'bouton',
-font => 'Arial 8 normal',
)->pack;

for my $size ( qw/ 12 14 16 18 20 22 24 26 28 30/ ) {
$mw->update;
$bb->configure( -font => "Arial $size normal" );
my %font_data = $bb->fontActual( $bb->cget( -font ) );
print "==> Size : $size";
map { print "$_ : $font_data{$_}"; } sort keys %font_data;
print "=";
}

MainLoop();

Ce code me donne ce rsultat :
==> Size : 12
-family : Arial
-overstrike : 0
-size : -16
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 14
-family : Arial
-overstrike : 0
-size : -19
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 16
-family : Arial
-overstrike : 0
-size : -21
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 18
-family : Arial
-overstrike : 0
-size : -24
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 20
-family : Arial
-overstrike : 0
-size : -27
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 22
-family : Arial
-overstrike : 0
-size : -29
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 24
-family : Arial
-overstrike : 0
-size : -32
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 26
-family : Arial
-overstrike : 0
-size : -35
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 28
-family : Arial
-overstrike : 0
-size : -37
-slant : roman
-underline : 0
-weight : normal
=

==> Size : 30
-family : Arial
-overstrike : 0
-size : -40
-slant : roman
-underline : 0
-weight : normal
=

Merci

Djibril
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #22252801
À (at) Fri, 11 Jun 2010 07:34:46 -0700 (PDT),
perlgenome
Je cherche à obtenir les informations du font d'un Widget, comment
faire car je rencontre des comportements spéciaux ?
La taille récupérer via ma méthode est toujours inférieur de 4, 5, 8,
etc pixels par rapport à la vraie taille comme le montre l'exemple ci-
dessous.
Avez vous une idée ?


[...]
my %font_data = $bb->fontActual( $bb->cget( -font ) );
Ce code me donne ce résultat :
==> Size : 12


[...]
-size : -16



Pourquoi utiliser fontActual ?

Petit extrait de la doc '804delta.pod' :

The fontActual method now returns the pixel value instead of the
point value for -size. Pixel values are expressed as negative
numbers.

Le -16 est donc en pixel alors que le 12 est en point typographique.

--
Paul Gaborit - Perl en français -
perlgenome
Le #22253041
On 14 juin, 01:31, Paul Gaborit
À (at) Fri, 11 Jun 2010 07:34:46 -0700 (PDT),
perlgenome


> Je cherche à obtenir les informations du font d'un Widget, comment
> faire car je rencontre des comportements spéciaux ?
> La taille récupérer via ma méthode est toujours inférieur de 4, 5, 8,
> etc pixels par rapport à la vraie taille comme le montre l'exemple ci -
> dessous.
> Avez vous une idée ?
[...]
>   my %font_data = $bb->fontActual( $bb->cget( -font ) );
> Ce code me donne ce résultat :
> ==> Size : 12
[...]
> -size : -16

Pourquoi utiliser fontActual ?

Petit extrait de la doc '804delta.pod' :

       The fontActual method now returns the pixel value instead of the
       point value for -size. Pixel values are expressed as negat ive
       numbers.

Le -16 est donc en pixel alors que le 12 est en point typographique.

--
Paul Gaborit - Perl en français -


Merci pour ta réponse Paul.

En fait, j'avais besoin de jouer avec les font afin de simuler
l'option -compound pour mon module Tk pour la création de bouton avec
couleurs dégradées.
Mais j'ai finalement trouvé une autre méthode beaucoup plus propre et
efficace.

Djibril
Publicité
Poster une réponse
Anonyme