为什么CSS字体与Pango的字体说明不一致?

时间:2019-08-01 09:03:40

标签: gtk3 pango

我试图弄清楚为什么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

0 个答案:

没有答案