[cairo] UserFont size issue (ImageSurface)

Behdad Esfahbod behdad at behdad.org
Wed Feb 4 09:48:23 PST 2009


You'd just need to draw in font space.  That is, your drawings are typically
in a box of about 0 to 1 (assuming your font has zero descent).  Anyway, try
adding a few strokes to see what's going on.  Everything should just work.
Somehow you are doing a scale somewhere maybe that you shouldn't do?

behdad

Ian Britten wrote:
> Ian Britten wrote:
>> I'm investigating a sizing problem with my custom [FreeType based]
>> UserFont that seems to only occur when using an ImageSurface, and was
>> wondering if anyone knew of any apparent reason for the discrepancy
>> I'm seeing?
>    [ snip ]
>> The code for MyFont doesn't do anything other than implement the
>> required 'render' functionality, which just draws the strokes of my
>> glyph.  I'm not doing anything with any of the 'extent' stuff, but
>> maybe I should be?
> 
> Can anyone describe what is required to be done within the 'render'
> callback of a UserFont, specifically regarding sizing?  Currently,
> I'm not doing anything for sizing - Just drawing stuff.  The docs
> allude to several possible things that could (should?) be done, but
> it isn't really clear (to me) what is required, and what is optional.
> 
> In my testing, I gutted my current/custom 'render' implementation,
> and simply did a show_glyphs() using the input Context and the input
> glyph.  Surprisingly, this seems to work [ Using the 'toy' font, I
> guess? ].  The actual glyphs are wrong (Presumably the wrong glyph
> mapping, but I'm not concerned about that), but they seemed to
> be the correct size, both for PDF and PNG output.
> 
> Going back to my minimal 'render' implementation, if I simply do this:
>      Cairo::RefPtr<Cairo::FtFontFace> fFace(
>              Cairo::FtFontFace::create(this->theData.ftFace,//FT_Face
>                                        load_flags));
>      inContext->set_font_face(fFace);
>      inContext->show_glyphs(glyphs); // Draw 1 glyph at (0,0)
> to use my FT_Face rather than the default face, then I get the
> correct face, but I'm back to my size problem - It seems right for
> PDF, but is too small for PNG.
> 
> As such, I'm getting the impression I need to do something more, but
> I'm just not sure what.
> - Do I do use the input scaled_font somehow?  Currently I'm ignoring
>    it...
> - Do I modify the input text_extents somehow?  The docs indicate the
>    defaults should usually be suitable.
> - Do I change the matrix (Or the font_matrix?) on the input context?
>    The docs say it's already been set though, and things are in
>    'font space'.
> 
> Many thanks for any clarification/help!
> Ian
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
> 


More information about the cairo mailing list