Re: Default font question



Am Mi, den 19.05.2004 um 14:45 Uhr +0400 schrieb Andrew E. Makeev:
> Hi
> 
> Could someone explain, please, how should I to determine default font 
> name for widget where it's applicable (label, textview, etc)?
> I have used these methods:
> 
> 1. Using GtkStyle: Gtk::Label ().get_style ()->get_font ().to_string () 
> - returned "Sans 10"
> 2. Using GtkRcStyle: Gtk::Label ().get_modifier_style ()->get_font () - 
> returned Pango::FontDescription with gobj() == 0 (no font specified)

1. and 2. are essentially identical.  "Sans 10" is returned if
Pango::FontDescription doesn't specify a valid font.  The problem is
that you can't just instantiate a dummy Gtk::Label() and expect the
desktop environment's default font to be assigned to it.  IIRC the
widget styles are set up recursively as soon as the toplevel window is
realized.

> It's fine for Linux, but wrong on Win32 system, because it uses theme 
> font = "Thahoma 8".
> Is there a right way to get theme default font name? (An example will be 
> much better than lotsa theory :) )

The best way to access the default font, and also to keep track of it in
case the user changes that setting while your app is running, would be
something like this:

MyWindow::on_style_changed(const Glib::RefPtr<Gtk::Style>& previous_style)
{
  Gtk::Window::on_style_changed(previous_style);
  app_font_ = get_pango_context()->get_font_description();
}

This assumes that MyWindow is your toplevel window class derived from
Gtk::Window, and that you didn't assign a custom font to it.

Cheers,
--Daniel





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]