Bug 50688 - Freetype (TTF) font string truncated
Summary: Freetype (TTF) font string truncated
Status: RESOLVED NOTOURBUG
Alias: None
Product: cairo
Classification: Unclassified
Component: freetype font backend (show other bugs)
Version: 1.12.2
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: David Turner
QA Contact: cairo-bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-06-04 10:30 UTC by angelo
Modified: 2012-06-08 03:28 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
all i have (101.88 KB, application/zip)
2012-06-04 10:30 UTC, angelo
Details

Description angelo 2012-06-04 10:30:49 UTC
Created attachment 62524 [details]
all i have

Hi all,

from when i apt-get update to libcairo 1.12.2.1 i started to see some pixels, about 5, of the displayed strings truncated.

Same issue is visible with a particular TTF font (attached), also using gnome-font-viewer.

When i move back to libcairo 1.10.2.7, issue disappear.


What i do in my code (note issue is also with gnome-font-viewer) :

FT_Library ftl;
FT_Init_FreeType(&ftl);
FT_Face ftf;

string fontfile = Config::get().s.dir_skin + fontfilename;
FT_New_Face( ftl, fontfile.c_str(), 0, &ftf );

....

_cf = cairo_ft_font_face_create_for_ft_face(ftf, 0);

....

void MyClass::Draw ()
{
		cairo_save(cr);

		cairo_rectangle ( cr, x, y, w, h );

		cairo_clip(cr);
		cairo_rectangle ( cr, x, y, w, h );

		

		cairo_move_to   (cr, x);
		cairo_show_text (cr,_text.c_str());

		cairo_reset_clip(cr);

		cairo_restore(cr);

}

I add as more attachment i can about the issue.


NOTE: on windows same font is still displayed correctly.
Comment 1 angelo 2012-06-04 10:46:23 UTC
Tested also 1.12.2-2, issue still there.
Comment 2 Chris Wilson 2012-06-04 12:06:52 UTC
The font-metrics are incorrect; they specify that there is a maximum separation of 0 between adjacent characters (max-x-advance).
Comment 3 Chris Wilson 2012-06-04 12:19:03 UTC
I relented some what, you still need to fix that font, but

commit 9fa047c0ea49d94f9f27947931fe21b70f6463d5
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jun 4 20:16:12 2012 +0100

    composite-rectangles,scaled-font: Use accurate extents if the font is broken
    
    If the font metrics appear broken, i.e. key values are being reported as
    zero, skip approximating the bbox of the glyph string.
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=50688
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 4 angelo 2012-06-08 01:39:33 UTC
(In reply to comment #3)
> I relented some what, you still need to fix that font, but
> 
> commit 9fa047c0ea49d94f9f27947931fe21b70f6463d5
> Author: Chris Wilson <chris@chris-wilson.co.uk>
> Date:   Mon Jun 4 20:16:12 2012 +0100
> 
>     composite-rectangles,scaled-font: Use accurate extents if the font is
> broken
> 
>     If the font metrics appear broken, i.e. key values are being reported as
>     zero, skip approximating the bbox of the glyph string.
> 
>     References: https://bugs.freedesktop.org/show_bug.cgi?id=50688
>     Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Hi chris, i tested your commit, unfortunately i have still exactly the same issue.

This is what i did:

- git pull
- git log, checked for commit 9fa047c0ea49d94f9f27947931fe21b70f6463d5 to exist
- make clean
- make
- make install (checked new libs are in /user/lib) 


launched my app, or gnome-font-viewer, issue still there.
Comment 5 Chris Wilson 2012-06-08 01:51:29 UTC
The fundamental bug is still that your font is reporting invalid metrics. Can you please do:

diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c
index 7ea3a21..42a2e9d 100644
--- a/src/cairo-scaled-font.c
+++ b/src/cairo-scaled-font.c
@@ -2261,6 +2261,12 @@ _cairo_scaled_font_glyph_approximate_extents (cairo_scale
     double x0, x1, y0, y1, pad;
     int i;
 
+    fprintf("%s: max_x_advance=%f, height=%f, max_scale=%f\n",
+           __FUNCTION,
+           scaled_font->fs_extents.max_x_advance,
+           scaled_font->fs_extents.height,
+           scaled_font->max_scale)
+
     /* If any of the factors are suspect (i.e. the font is broken), bail */
     if (scaled_font->fs_extents.max_x_advance == 0 ||
        scaled_font->fs_extents.height == 0 ||

to convince yourself that you have compiled and installed the library correctly. Note that on many distributions now the canonical location is not /usr/lib/, so check with ldd `which gnome-font-viewer` to make sure it is picking up yours.
Comment 6 angelo 2012-06-08 03:28:37 UTC
Hi Chris,

great, no need for fprintf at all, i see the right path is /usr/lib/i386-linux-gnu/ here in debian. And your change works great.

I understand well the font is not correct, but previous version of cairo was working with it, and also windows is able to display correctly this font.
So, even if cairo behave correct, cairo was performing a feature "less" then before, and "less" than what windows do. So your fix, even if not needed for your "clear conscience", is important and precious.

Regards,
and thanks 
angelo


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.