freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] Can't get offset of glyphs right.


From: Erlend Langseth
Subject: Re: [ft] Can't get offset of glyphs right.
Date: Sun, 7 Jun 2015 21:07:10 +0200

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 <address@hidden> 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 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 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!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]