我试图弄清楚为什么Gtk3应用程序的CSS字体与Pango的字体描述不一致。
如果我创建一个名为label.css的简单CSS文件,如下所示:
label {
background-color: rgb(0,0,0);
font-size: 40px;
color: rgb(0,255,0);
font-family: 'Noto Sans';
}
并使用Gtk3 Perl应用程序加载它,如下所示:
#! /usr/bin/env perl
use feature qw(state);
use local::lib;
use warnings;
use strict;
use utf8;
use Glib qw(TRUE FALSE);
use Gtk3 qw(init);
use Pango;
sub catchKey {
my ($object, $event) = @_;
my $c = lc chr ($event->keyval);
Gtk3->main_quit if $c eq 'q';
FALSE;
}
my $window = Gtk3::Window->new(q<toplevel>);
my $label = Gtk3::Label->new(q<40px>);
my $provider = Gtk3::CssProvider->new();
$provider->load_from_path(q<label.css>);
my $style = $label->get_style_context();
$style->add_provider($provider, Gtk3::STYLE_PROVIDER_PRIORITY_APPLICATION);
my $pCont = $label->get_pango_context();
my $fDescr = $pCont->get_font_description();
STDOUT->print("Font description: ", $fDescr->to_string,"\n");
$window->add_events(q<GDK_KEY_PRESS_MASK>);
$window->signal_connect(delete_event => sub {Gtk3->main_quit; FALSE});
$window->signal_connect(key_press_event => \&catchKey);
$window->set_decorated(FALSE);
$window->set_border_width(0);
$window->set_default_size(500, 300);
$window->add($label);
$window->show_all();
Gtk3->main;
当我从Pango显示字体描述时,我得到了:
字体描述:Noto Sans 30
当CSS文件将其设置为40px时为什么为30?如果我将label.css文件更改为50px,则显示Pango的字体描述:
字体描述:诺托Sans 37.5
为什么值不同?
如果这有帮助: 30/40 = 0.75 和 37.5 / 50 = 0.75