Discussion:
Freetype2 position Y problem
Uwe Klatt
2006-12-29 13:24:08 UTC
Permalink
Hello,
I debugged the problem and found out that in engine/font_freetype2.c
in function freetype2_drawtext there is a bug in code that counts
value for pos.y. It doesn't count the baseline in pos.y thus the text
is baseline amount too high. If I add the baseline value to the pos.y
I use the following code (not in 0.91 but allready in cvs):
====================== font_truetype2.c ===============

/*
* Offset the starting point if necessary,
* FreeType always aligns at baseline
*/
if (flags & MWTF_BOTTOM) {
pos.y = (abs(size->metrics.descender) + 63) & ~63;
/* descent */
} else if (flags & MWTF_TOP) {
pos.y = (size->metrics.ascender + 63) & ~63;
/* -ascent */
} else {
pos.y = 0;
}


Bye
Uwe
Teemu Keskinarkaus
2007-01-02 09:59:07 UTC
Permalink
Hi,

I got the things working ok. Had to add the baseline handling and after that
the fonts appeared on the right places. At the moment this is enough for me.


Thanks.

Teemu Keskinarkaus
CC-Systems

-----Original Message-----
From: Uwe Klatt [mailto:u.klatt-***@public.gmane.org]
Sent: 29. joulukuuta 2006 15:24
To: Teemu Keskinarkaus; Nano-X
Subject: Re: [nanogui] Freetype2 position Y problem

Hello,
I debugged the problem and found out that in engine/font_freetype2.c
in function freetype2_drawtext there is a bug in code that counts
value for pos.y. It doesn't count the baseline in pos.y thus the text
is baseline amount too high. If I add the baseline value to the pos.y
I use the following code (not in 0.91 but allready in cvs):
====================== font_truetype2.c ===============

/*
* Offset the starting point if necessary,
* FreeType always aligns at baseline
*/
if (flags & MWTF_BOTTOM) {
pos.y = (abs(size->metrics.descender) + 63) & ~63;
/* descent */
} else if (flags & MWTF_TOP) {
pos.y = (size->metrics.ascender + 63) & ~63;
/* -ascent */
} else {
pos.y = 0;
}


Bye
Uwe
max xiayi
2007-10-26 13:12:37 UTC
Permalink
Hi Teemu Keskinarkaus,
I also found these problem, I need to figure out the basest line for a line
of text, I think things should not be like that. Only us two complain this
problem, what's the wrong thing we have done? Anybody know?

Max
Post by Teemu Keskinarkaus
Hi,
I got the things working ok. Had to add the baseline handling and after that
the fonts appeared on the right places. At the moment this is enough for me.
Thanks.
Teemu Keskinarkaus
CC-Systems
-----Original Message-----
Sent: 29. joulukuuta 2006 15:24
To: Teemu Keskinarkaus; Nano-X
Subject: Re: [nanogui] Freetype2 position Y problem
Hello,
I debugged the problem and found out that in engine/font_freetype2.c
in function freetype2_drawtext there is a bug in code that counts
value for pos.y. It doesn't count the baseline in pos.y thus the text
is baseline amount too high. If I add the baseline value to the pos.y
====================== font_truetype2.c ===============
/*
* Offset the starting point if necessary,
* FreeType always aligns at baseline
*/
if (flags & MWTF_BOTTOM) {
pos.y = (abs(size->metrics.descender) + 63) & ~63;
/* descent */
} else if (flags & MWTF_TOP) {
pos.y = (size->metrics.ascender + 63) & ~63;
/* -ascent */
} else {
pos.y = 0;
}
Bye
Uwe
---------------------------------------------------------------------
Christian Boon
2007-10-29 08:19:33 UTC
Permalink
I have fixed various issues with freetype 1 and 2, including
the y position problem. The fixes are in the nano-X CVS,
or the microwindows-src-snapshot.tar.gz on the website.
Are they in the snapshot of 8 sept because i don't see a newer snapsnot?

Chris
Greg Haerr
2007-10-27 04:03:29 UTC
Permalink
I have fixed various issues with freetype 1 and 2, including
the y position problem. The fixes are in the nano-X CVS,
or the microwindows-src-snapshot.tar.gz on the website.

Regards,

Greg



: I also found these problem, I need to figure out the basest line for a
line
: of text, I think things should not be like that. Only us two complain
this
: problem, what's the wrong thing we have done? Anybody know?
:
: Max
:
:
: 2007/1/2, Teemu Keskinarkaus <Teemu.Keskinarkaus-iZyxAbY8e+***@public.gmane.org>:
: >
: > Hi,
: >
: > I got the things working ok. Had to add the baseline handling and after
: > that
: > the fonts appeared on the right places. At the moment this is enough for
: > me.
: >
: >
: > Thanks.
: >
: > Teemu Keskinarkaus
: > CC-Systems
: >
: > -----Original Message-----
: > From: Uwe Klatt [mailto:u.klatt-***@public.gmane.org]
: > Sent: 29. joulukuuta 2006 15:24
: > To: Teemu Keskinarkaus; Nano-X
: > Subject: Re: [nanogui] Freetype2 position Y problem
: >
: > Hello,
: >
: > > I debugged the problem and found out that in engine/font_freetype2.c
: > > in function freetype2_drawtext there is a bug in code that counts
: > > value for pos.y. It doesn't count the baseline in pos.y thus the text
: > > is baseline amount too high. If I add the baseline value to the pos.y
: >
: > I use the following code (not in 0.91 but allready in cvs):
: > ====================== font_truetype2.c ===============
: >
: > /*
: > * Offset the starting point if necessary,
: > * FreeType always aligns at baseline
: > */
: > if (flags & MWTF_BOTTOM) {
: > pos.y = (abs(size->metrics.descender) + 63) & ~63;
: > /* descent */
: > } else if (flags & MWTF_TOP) {
: > pos.y = (size->metrics.ascender + 63) & ~63;
: > /* -ascent */
: > } else {
: > pos.y = 0;
: > }
: >
: >
: > Bye
: > Uwe
: >
: >
: > ---------------------------------------------------------------------
: > To unsubscribe, e-mail: nanogui-unsubscribe-***@public.gmane.org
: > For additional commands, e-mail: nanogui-help-***@public.gmane.org
: >
: >
:

Teemu Keskinarkaus
2006-12-29 11:22:55 UTC
Permalink
Hi,



I recently posted here about problem with TTF fonts. That was solved, but
then I had new problem that the fonts were too high.



I debugged the problem and found out that in engine/font_freetype2.c in
function freetype2_drawtext there is a bug in code that counts value for
pos.y. It doesn't count the baseline in pos.y thus the text is baseline
amount too high. If I add the baseline value to the pos.y I get the text
where I want them to be. Except that now I'm using fixed value for baseline
so it works only for one font. With some other font it might be wrong so I
need to calculate the baseline for each fonts or save that value in
font-struct.



I'm using NanoX version 0.91. Is this known bug or am I just using some
fonts that are different that NanoX was tested? Same problems occurs on
multiple fonts so it's not one font's problem. There are no problems with
'built-in' fonts.



Teemu Keskinarkaus

CC-Systems
Loading...