【发布时间】:2021-09-10 19:43:46
【问题描述】:
我有一个使用带有文本的画布的 perl/tk 脚本。 不久前,文本的字体单独更改:不再是无衬线字体! 可能一些更新/升级弄乱了我的字体,但它们应该在某个地方。我只在 perl/tk 脚本中发现了这个问题。
我下载了一个显示已安装字体的小 perl 脚本,确实没有出现无衬线字体。实际上,只出现了 30 种左右的字体。命令xlsfonts 给了我1600 多种字体,而xfontsel 只显示了这30 种字体。
sans 字体是如何消失的,如何恢复/重新安装丢失的字体?
这是我用来查看字体的脚本:
#!/usr/bin/perl
use Tk;
use Tk::BrowseEntry;
use strict;
my $mw = MainWindow->new(-title => 'Font Viewer');
my $f = $mw->Frame->pack(-side => 'top');
my $family = 'Courier';
my $be = $f->BrowseEntry(-label => 'Family:', -variable => \$family,
-browsecmd => \&apply_font)->pack(-fill => 'x', -side => 'left');
$be->insert('end', sort $mw->fontFamilies);
my $size = 24;
my $bentry = $f->BrowseEntry(-label => 'Size:', -variable => \$size,
-browsecmd => \&apply_font)->pack(-side => 'left');
$bentry->insert('end', (3 .. 32));
my $weight = 'normal';
$f->Checkbutton(-onvalue => 'bold', -offvalue => 'normal',
-text => 'Weight', -variable => \$weight,
-command => \&apply_font)->pack(-side => 'left');
my $slant = 'roman';
$f->Checkbutton(-onvalue => 'italic', -offvalue => 'roman',
-text => 'Slant', -variable => \$slant,
-command => \&apply_font)->pack(-side => 'left');
my $underline = 0;
$f->Checkbutton(-text => 'Underline', -variable => \$underline,
-command => \&apply_font)->pack(-side => 'left');
my $overstrike = 0;
$f->Checkbutton(-text => 'Overstrike', -variable => \$overstrike,
-command => \&apply_font)->pack(-side => 'left');
my $stext = 'Sample Text';
my $sample = $mw->Entry(-textvariable => \$stext)->pack(-fill => 'x');
&apply_font;
MainLoop;
sub apply_font {
# Specify all options for font in an anonymous array
$sample->configure(-font =>
[-family => $family,
-size => $size,
-weight => $weight,
-slant => $slant,
-underline => $underline,
-overstrike => $overstrike]);
}
【问题讨论】:
-
你使用的语法对我不起作用。我需要写
$sample->configure(-font => [$family, $size, $weight, $slant]);。我无法使下划线和重划线起作用。 -
两种语法都适用于我,但下划线和重划线仅适用于我的语法。