$VERSION = '3.013'; # $Id: //depot/Tk8/Tk/X11Font.pm#13 $
Construct Tk::Widget 'X11Font';
my @field = qw(foundry family weight slant swidth adstyle pixel
point xres yres space avgwidth registry encoding);
map { eval "sub \u$_ { shift->elem('$_', \@_) }" } @field;
use overload
'""' => 'as_string';
if($pattern =~ /\A(-[^-]*){14}\Z/)
@me{@field} = split(/-/, substr($pattern,1));
if($pattern =~ /^[^-]?-([^-]*-){2,}/)
my $f = $d->XListFonts($pattern,1);
if($f && $f =~ /\A(-[^-]*){14}/)
my @f = split(/-/, substr($f,1));
my @n = split(/-/, $pattern);
shift @n if($pattern =~ /\A-/);
$f{$field[$i]} = shift @n;
map { $me{$_} ||= '*' } @field;
$me{MainWin
} = $w->MainWindow;
return join('-', '',@
{$me}{@field});
my $max = wantarray ?
shift || 128 : 1;
if ($^O
eq 'MSWin32' or ($^O
eq 'cygwin' and $Tk::platform
eq 'MSWin32'))
my $fm = $me->{'family'} || 'system';
my $sz = -int($me->{'point'}/10) || -($me->{'pixel'}) || 12;
my @opt = (-family
=> $fm, -size
=> $sz );
my $wt = $me->{'weight'};
$wt = 'normal' unless $wt =~ /bold/i;
push(@opt,-weight
=> lc($wt));
$sl = ($sl =~ /^[io]/) ?
'italic' : 'roman';
push(@opt,-slant
=> $sl);
my $name = $me->{Name
} ||
join('-', '',@
{$me}{@field});
return $me->{Display
}->XListFonts($name,$max);
if(exists $me->{'Name'});
$me = bless { %$me }, ref($me);
unless(exists $me->{'Name'})
my $v = shift || $me->{MainWin
}->BackTrace('Tk::Font->Clone( key => value, ... )');
$me->{MainWin
}->fontMetrics($name, '-ascent');
$me->{MainWin
}->fontMetrics($name, '-descent');