I solved it. It was just a mismatch between OpenGL's normalized device
coordiante system, where the origin is at (-1, -1) and the coordinate
system of the glyph, where the origin would be top left.

On Sun, Jun 7, 2015 at 11:41 AM, Erlend Langseth <[email protected]> wrote:

> Hi!
>
> I'm trying to render text, using FreeType 2. My problem is in offsetting
> each glyph with respect to their own origin. In this mail, with "offset", I
> refer to what is called bearingX and bearingY in this
> <http://www.freetype.org/freetype2/docs/tutorial/metrics.png>
> illustration.
>
> I first render all glyphs, storing necessary metrics, then use the results
> to render text.
> Given an unsigned char c, this is how I render glyphs, and need to obtain
> the correct offsets (C++):
>
> FT_Face face;
>
> if (!FT_Load_Char(face, c, 0)) {
>       if (!FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL)) {
>              if (!FT_Get_Char_Index( face, c )) continue;
>                    // Set offset of glyphs accessing face->glyph here.
>
> I have tried to use face->glyph->bitmap_left (and bitmap_top), and also
> face->glyph->metrics.horiBearingX / 64.0f (and Y), but the results always
> look arbitrary:
>
> http://a.pomf.se/iudwvo.png      And with inverted yoffset:
> http://a.pomf.se/jlkngl.png
>
> This <https://bpaste.net/show/4c7b4fa88e67> is how I render text at the
> moment (no kerning yet). (Additional question: is width, height, xadvance,
> yadvance, xoffset and yoffset all metrics I need to render text?)
>
> On lines 27 and 28, you see how I apply the offset. size is the pixel size
> of the font (note that I "normalize" the metrics by dividing by pixel size
> in the first place).
>
> Thanks in xadvance!
>
_______________________________________________
Freetype mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype

Reply via email to