Re: [Evolution-hackers] GnuCash print problem patch
- From: Paul Andreassen <paulx andreassen com au>
- To: evolution-hackers gnome org
- Subject: Re: [Evolution-hackers] GnuCash print problem patch
- Date: Sun, 22 Apr 2007 15:10:11 +1000
On Tuesday 17 April 2007 14:55, Srinivasa Ragavan wrote:
> On Mon, 2007-04-16 at 22:14 +1000, Paul Andreassen wrote:
> > On Friday 13 April 2007 16:54, Paul Andreassen wrote:
> > > On Friday 13 April 2007 03:13, Srinivasa Ragavan wrote:
> > > > Paul,
> > > >
> > > > Yes. Before getting into the patch, can you let us know the issue the
> > > > patch is addressing? It would be helpful while reviewing the patch.
> > > >
> > > > -Srini
> > > >
> > > > On Thu, 2007-04-12 at 21:41 +1000, Paul Andreassen wrote:
> > > > > Hello,
> > > > >
> > > > > Is this where gtkhtml is maintained? If so could someone look at
> > > > > this patch and tell me if it acceptable for inclusion. I'm not
> > > > > sure I understand how all the library code goes together.
> > >
> > > Thanks for the reply.
> > >
> > > When printing or print previewing of a GnuCash report the font changes
> > > from the screen font to an unset and unchangeable one. In my case it
> > > changes from the screen font of "San Regular 10" to "Serf Regular 12".
> > > This results in very large printed reports.
>
> Quoting your previous patch.
>
> > --- gtkhtml-3.10.3/src/htmltext.c.old 2007-04-12 21:09:20.259210176
> > +1000
> > +++ gtkhtml-3.10.3/src/htmltext.c 2007-04-12 21:20:36.621387496
> > +1000
> > @@ -1214,12 +1214,16 @@ html_text_prepare_attrs (HTMLText *text,
> > pango_attr_list_insert (attrs, attr);
> > }
> > } else {
> > - if (fabs (painter->font_manager.magnification - 1.0) >
> > 0.001) {
> > - attr = pango_attr_size_new
> > (painter->font_manager.var_size*painter->font_manager.magnification);
> > + if (painter->font_manager.variable.face != NULL) {
> > + attr = pango_attr_family_new
> > (painter->font_manager.variable.face);
> > attr->start_index = 0;
> > attr->end_index = text->text_bytes;
> > pango_attr_list_insert (attrs, attr);
> > }
>
> Im not clear why you you have to insert another attribute here. Also you
> dont check for fabs as it was doing earlier.
From my testing the size is actual set a few lines down with
html_text_change_attrs using html_pango_attr_font_size_calc which takes into
account font style size. EXCEPT if default size.
Also the font is never set if default font face.
This result in gnome_print using its default of "Serf Regular 12" instead
of "San Regular 10" or anything else.
The gnome_print default font has to be set for every print page but it still
didn't work.
This is then a patch to fix a broken gnome_print. Maybe the gtk_print API
works and this is unneeded.
> > + attr = pango_attr_size_new
> > (painter->font_manager.var_size*painter->font_manager.magnification);
> > + attr->start_index = 0;
> > + attr->end_index = text->text_bytes;
> > + pango_attr_list_insert (attrs, attr);
> > pango_attr_list_splice (attrs, text->attr_list, 0, 0);
> > }
> >
> > > This patch sets the font for text areas during printing but I don't
> > > understand why it already does the right thing for the screen. My
> > > patch still has a placement problem for some characters. The C and T
> > > in the follow pngs show the problem.
> > >
> > > Thanks again,
> > > Paul
> >
> > The GnuCash report print bug is listed at
> > http://bugzilla.gnome.org/show_bug.cgi?id=350408
> >
> > After looking further into the problem, it appears that GnomePrint
> > doesn't have a setable default font. And because the pango attrs don't
> > set a font face or size if the required font is the default, the result
> > is the items are printed in GnomePrint default of "Serf Regular 12". My
> > patch changes this to explicitly set the pango attrs resulting with the
> > items printed in that font.
> >
> > As for the character placement problem, it appears to be a problem only
> > with the [Dejavu] Sans and [Dejavu] Serf fonts at point sizes 9 and 10
> > when printing. This maybe a Ubuntu 6.06 problem.
> >
> > Looking at gtkhtml-3.14.0/src/htmlprinter.c from the most recent source,
> > it appears that the new gtk_print allows the setting of a default font.
> > Please make this user accessable even if its in a gconf file.
> > HTMLPainter *
> > html_printer_new (GtkWidget *widget, GtkPrintContext *context)
> > {
> > const PangoFontDescription *desc;
> > HTMLPrinter *printer;
> > HTMLPainter *painter;
> >
> > printer = g_object_new (HTML_TYPE_PRINTER, NULL);
> > printer->context = g_object_ref (context);
> >
> > painter = HTML_PAINTER (printer);
> > html_painter_set_widget (painter, widget);
> > desc = pango_font_description_from_string ("sans 8");/* FIXME
> > font hardcoded*/
>
> IIRC the widget is the GtkHTML widget. It can be easy to get the widget
> style / font description from GtkHTML widget and set it here instead of
> GCONF something else. That way, it may be consistent from what is shown
> also. Does that suffice you?
This makes lots of sense to me. Pity Gnome doesn't have a global default
print font setting. The only problem is if the new gtk_print API ignores the
default. I can't test this, sorry.
>
> -Srini.
>
> > painter->pango_context = gtk_print_context_create_pango_context
> > (context);
> > pango_context_set_font_description (painter->pango_context,
> > desc); return painter;
> >
> > }
> >
> > My web page on this problem with fixes is at
> > http://members.iinet.com.au/~paulone/gnucash/
> >
> > Thanks,
> > Paul
--
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]