Issue Details (XML | Word | Printable)

Key: JOGL-331
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: jogl-issues
Reporter: kbr
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
jogl

Floating-point precision needed in TextRenderer

Created: 29/Oct/07 02:47 PM   Updated: 08/Nov/07 06:46 PM
Component/s: jogl
Affects Version/s: current
Fix Version/s: milestone 1

Time Tracking:
Not Specified

Environment:

Operating System: All
Platform: PC


Issuezilla Id: 331
Tags:
Participants: jogl-issues and kbr


 Description  « Hide

Patrick Murris from the NASA World Wind Java project has pointed out that for
high-quality rendering of text it is necessary to use floating-point precision
rather than integer precision. The Rectangle2D from getBounds() needs to not be
rounded to an integer size, and draw() needs an overloading taking a
floating-point x and y.



kbr added a comment - 08/Nov/07 06:46 PM

More details from Patrick on related usage, which may inform changes to the
Javadoc of the getBounds() method:

"The trick to get the most accurate advance measurements is:
1. avoid cumulating text chunks bounds width. They get rounded to int and errors
sum up. Reevaluate all previous chunks in one getBounds() to eliminate
cumulative errors.
2. use the getBounds() rectangle x and y properties to compute advance for one
chunk. Advance on x is bounds.getWidth() plus bounds.getX(). This way, leading
spaces are almost correctly accounted for.

This gives very acceptable results for word by word processing.

However, the one limitating thing i see here is the rounding to int of all draw
and getBounds coordinates. Allowing floats or doubles would ease the above point
one."