[cairo] Error Loading FreeType Glyphs

Bobby Salazar bobby8934 at inbox.com
Thu Oct 30 09:43:16 PDT 2008


If anyone would be interested in taking a look at this problem, I will try to help them get it reproduced on their end. This is a very serious problem that needs to be looked into. It looks like there is a bug in the caching system of the FreeType font objects in cairo, since if I bypass that function (_cairo_ft_unscaled_font_create_internal) and just always create a new cairo_ft_unscaled_font_t object, everything works great.

> -----Original Message-----
> From: bobby8934 at inbox.com
> Sent: Sun, 19 Oct 2008 13:53:21 -0800
> To: cairo at cairographics.org
> Subject: Re: [cairo] Error Loading FreeType Glyphs
> 
> 
> Ok, I've made some progress on this problem. It looks like this problem
> appear after I updated to a new version of Cairo, but due to the fact
> that it often works, I didn't notice the bug until just recently.
> 
> I've bisected the git tree from the version I know that works and found
> the revision(s) that broke the functionality. This took quite a few hours
> to accomplish, since I am using FreeType under Win32 and I have to
> manually strip out the fontconfig stuff, which is unneeded and doesn't
> work on Win32 anyways (that I'm aware of). What are the chances that we
> could get someone to add a new cairo feature #define to separate the
> fontconfig stuff from the FreeType stuff? FreeType fonts in no way depend
> on fontconfig, so it doesn't make sense to require it.
> 
> Anyways, back to the problem. Here are the revisions that broke this
> functionality:
> 
> 2008-6-01 3f5051fab161da167fdedcdad0280da1f57a1828   As of this commit
> cairo-ft-font.c seems to work fine
> 2008-6-05 60cf2ef8449e1fd09fe0f2d8c8dc5fa2bb855e5a   As of this commit
> cairo-ft-font.c seems to render fine, but I get tons of runtime asserts
> 2008-6-10 c5b1674349154049646b491cac571d93328b5e0c   As of this commit
> cairo-ft-font.c seems to render fine, but I get tons of runtime asserts
> (same as above)
> 2008-6-10 4210bab61a1f680b0ca393e1f5fec0549ddcfcec   As of this commit
> cairo-ft-font.c is broken and some glyphs are randomly not rendered
> 
> I am very new to git, so I hope that I provided enough information about
> the broken revisions of cairo-ft-font.c so that everyone can figure out
> which ones I'm talking about.
> 
> I don't quite understand all the changes made in those revisions, but
> during my testing I noticed that if I simply changed
> _cairo_ft_unscaled_font_create_from_face() from it's last revision as of
> 2008-6-10 to this, everything works again:
> 
> static cairo_ft_unscaled_font_t *
> _cairo_ft_unscaled_font_create_from_face (FT_Face face)
> {
>     cairo_status_t status;
>     cairo_ft_unscaled_font_t *unscaled;
> 
>     unscaled = malloc (sizeof (cairo_ft_unscaled_font_t));
>     if (unscaled == NULL) {
> 	_cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
> 	return NULL;
>     }
> 
>     status = _cairo_ft_unscaled_font_init (unscaled, TRUE, NULL, 0,
> face);
>     if (status) {
> 	free (unscaled);
> 	return NULL;
>     }
> 
>     return unscaled;
>     //return _cairo_ft_unscaled_font_create_internal (TRUE, NULL, 0,
> face);
> }
> 
> 
> Since I've been looking over this file for so long now that my eyes are
> starting to glaze over, would somebody else care to take a peek and see
> if they can find any obvious problems why the code no longer works (on
> Win32 at least)?
> 
>> -----Original Message-----
>> From: bobby8934 at inbox.com
>> Sent: Sat, 18 Oct 2008 16:06:27 -0800
>> To: cairo at cairographics.org
>> Subject: [cairo] Error Loading FreeType Glyphs
>> 
>> Hello,
>> 
>> I am seeing a weird error using Cairo to render some text. It is sort of
>> out of the blue, as I have been using pretty much the same code to
>> render
>> text for a very long time now. But all of a sudden I am seeing a
>> condition where, depending on the width and height of the surface I
>> render to, some characters disappear because FreeType returns an error.
>> So drag-resizing a window causes the text to lose characters and gain
>> them again with no obvious clues why.
>> 
>> I have tracked this down to the call to _cairo_ft_scaled_glyph_init()
>> where it calls FT_Load_Glyph() to load, in this case, the letter 'g'.
>> FT_Load_Glyph() returns error 36 (which is FT_Err_Invalid_Size_Handle).
>> 
>> One other thing I have noticed is that when I maximize the window, the
>> rendered text actually shrinks in size even though I pass the same
>> height
>> to create the scaled font. This also seems to be completely random, some
>> window sizes give correct looking text and some give text that looks
>> slightly shrunk.
>> 
>> After several hours of debugging I do not feel I am any closer to
>> figuring out why this is happening. When I drag a window larger, I can
>> have it at one size and see the letter 'g' characters appear, then drag
>> it a few pixels larger and those characters fail to load, and then drag
>> the window a few pixels larger and they come back again. So what gives?
>> Has anyone seen a problem like this before?
>> 
>> Any help is appreciated!
>> 
>> ____________________________________________________________
>> FREE 3D EARTH SCREENSAVER - Watch the Earth right on your desktop!
>> Check it out at http://www.inbox.com/earth
>> _______________________________________________
>> cairo mailing list
>> cairo at cairographics.org
>> http://lists.cairographics.org/mailman/listinfo/cairo
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo


More information about the cairo mailing list