[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Redisplay issue
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: Redisplay issue |
Date: |
Mon, 07 Dec 2015 12:33:22 +0900 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On Sat, 5 Dec 2015 16:49:29 -0800, Yuan MEI <address@hidden> said:
>>> Maybe one font backend rounds the fractional metrics values but
>>> the other truncates them?
>>
>> Could be. Yuan, could you try these changes, and see if the
>> dimensions of the Cairo frame become identical to that of the
>> non-Cairo build?
> I tried the patch. However Cairo frame and non-Cairo frame still
> differ by the same amount as reported before.
So, rounding has nothing to do with the difference you observe.
It seems that freetype has two types of structures containing metrics
values (ascender, descender, height): FT_FaceRec and FT_Size_Metrics.
ftfont.c uses the former for scalable fonts and the latter for the
other cases.
ftfont.c in Emacs:
if (scalable)
{
font->ascent = ft_face->ascender * size / upEM + 0.5;
font->descent = - ft_face->descender * size / upEM + 0.5;
font->height = ft_face->height * size / upEM + 0.5;
}
else
{
font->ascent = ft_face->size->metrics.ascender >> 6;
font->descent = - ft_face->size->metrics.descender >> 6;
font->height = ft_face->size->metrics.height >> 6;
}
libXft internally uses the latter only.
xftfreetype.c in libXft:
if (fi->transform)
{
/* snip */
}
else
{
descent = -(face->size->metrics.descender >> 6);
ascent = face->size->metrics.ascender >> 6;
if (fi->minspace)
height = ascent + descent;
else
height = face->size->metrics.height >> 6;
}
font->public.ascent = ascent;
font->public.descent = descent;
font->public.height = height;
I don't know which is correct/appropriate. At least, there is a case
that these two kinds of values are different.
YAMAMOTO Mitsuharu
address@hidden
- Re: Redisplay issue, (continued)
- Re: Redisplay issue, martin rudalics, 2015/12/04
- Re: Redisplay issue, Yuan MEI, 2015/12/04
- Re: Redisplay issue, martin rudalics, 2015/12/04
- Re: Redisplay issue, Eli Zaretskii, 2015/12/04
- Re: Redisplay issue, martin rudalics, 2015/12/04
- Re: Redisplay issue, Eli Zaretskii, 2015/12/04
- Re: Redisplay issue, Eli Zaretskii, 2015/12/04
- Re: Redisplay issue, YAMAMOTO Mitsuharu, 2015/12/04
- Re: Redisplay issue, Eli Zaretskii, 2015/12/05
- Re: Redisplay issue, Yuan MEI, 2015/12/05
- Re: Redisplay issue,
YAMAMOTO Mitsuharu <=
- Re: Redisplay issue, Eli Zaretskii, 2015/12/07
- Re: Redisplay issue, YAMAMOTO Mitsuharu, 2015/12/07
- Re: Redisplay issue, Eli Zaretskii, 2015/12/11