[OpenJDK 2D-Dev] Font rendering issue

Jim Graham james.graham at oracle.com
Wed May 19 00:04:25 UTC 2010

Phil's message brings up another issue for me with the patch.  Why use 
"ROUND" instead of a ceiling operation?  Do we know what the best option 
is for the code above?

Again, I would strongly favor leaving these base calculations in the 
scalar alone and focus more on making sure the proper operations are 
done in the code above (whether, contextually, they may be a round or a 
ceiling or working directly with the raw float value)...


Phil Race wrote:
> Too many emails with too many comments for me to address them all.
> - Swing understands that there's no guarantee that all the pixels fit
>   in the reported height of the line. I don't think you want to space
>   out the text so much that you guarantee no glyph overlap. Actually
>   due to some perhaps questionable choices of the fields in the font
>   which should be used AND the way that the height of logical
>   fonts is assembled (the maximum leading of all components +
>   the maximum descent of all components + the maximum ascent of all 
> components)
>   its higher than I'd like. Much as I'd love to fix this its going to 
> get someone upset,
>   so I've steered well clear. This goes all the way back to 1.1
>  And I doubt we'll be able to go changing Swing either.
>  Irritating as this may, where there are consequences for upstream code
>   its not something I'd want to sign off on lightly unless its clearly 
> fixing a blatant bug.
>  We have less compatibility history to maintain (in the behavioural 
> sense) in the freetype code
>   so that's easier to change.
>  Anything in the shared code, I'd want to actually try out. Any claimed 
> errors
>  in the closed code, I'd want to track down and see if its actually so and
>  what we can/should do about it.
>  If I have things right, the most obvious problem Mario saw is a negative
>  value for leading. That could be an incorrect interpretation of sign 
> somewhere?
> Seems like rounding up to get rid of it isn't addressing the real problem
> -phil.
> On 5/18/2010 2:39 PM, Mario Torre wrote:
>> Il giorno mar, 18/05/2010 alle 23.33 +0200, Mario Torre ha scritto:
>>> Il giorno mar, 18/05/2010 alle 21.07 +0200, Roman Kennke ha scritto:
>>>> Hi Mario,
>>>>>>> ly = (jfloat) ROUND(FT26Dot6ToFloat(
>>>>>>>                scalerInfo->face->size->metrics.height +
>>>>>>>                bmodifier) + ay - dy);
>> Just one little note.
>> Because this is not necessarily just a rounding problem, but it's an
>> hinting problem, it would be possible to construct a case where this fix
>> is not enough either.
>> I'm not so deep into this code (this area in general) to know by
>> intuition if this is the case or not, or if there's an obvious
>> alternative, this is another reason I'm pushing a bit for a reply, I
>> would like to get some insight from the people who wrote this code in
>> the first place ;)
>> And yes, I want this fixed in OpenJDK as soon as possible, now that I
>> know the cause and a possible solution, editing in NetBeans is starting
>> to be so annoying, makes me feel really bad!!!
>> Thanks,
>> Mario

More information about the 2d-dev mailing list