Hello,

I work with Java2D for CAD/CAM style applications where antialiasing is not 
desirable. Since Java 6 the rasterizer for Bézier curves changed:
   
   -    
Java 5: non-antialiased Bézier curves produced very regular, uniform “ladder” 
steps (each pixel step had the same length).

   -    
Java 6 and later: the rasterizer switched, and now the visible steps are 
irregular — some longer, some shorter.


For my use case, the old behavior was much cleaner and easier to interpret 
visually. Rendering hints such as KEY_STROKE_CONTROL and KEY_FRACTIONALMETRICS 
do not restore this, since the difference lies in the rasterizer implementation 
itself.

Minimal test case: 
import java.awt.*;import java.awt.geom.*;import javax.swing.*;
public class CurveTest extends JPanel {    @Override    protected void 
paintComponent(Graphics g) {        super.paintComponent(g);        Graphics2D 
g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,                    
        RenderingHints.VALUE_ANTIALIAS_OFF);
        g2.setStroke(new BasicStroke(1f));
        // Flatter cubic curve across the panel        CubicCurve2D curve = new 
CubicCurve2D.Double(                50, 400,   // start                200, 
350,  // control1                600, 450,  // control2                750, 400 
  // end        );        g2.draw(curve);    }
    public static void main(String[] args) {        JFrame f = new 
JFrame("Curve Test");        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
      f.setSize(800, 800);        f.add(new CurveTest());        
f.setVisible(true);    }}
Expected (Java 5): uniform, even “ladder” steps when antialiasing is off.
Actual (Java 6+): irregular steps of varying length, harder to read.

Request:
Would it be possible to expose an option (for example, a rendering hint or 
system property) to select the old Java 5 rasterizer mode, or otherwise 
reproduce its uniform step behavior for non-antialiased curve rendering?

This would help applications that rely on crisp pixel stair-steps as a visual 
aid, rather than smooth antialiasing.

Thank you for considering,
Francisco

Reply via email to