<html><head></head><body><div class="yahoo-style-wrap" style="font-family:bookman old style, new york, times, serif;font-size:16px;"><div dir="ltr" data-setdir="false"> <div><p data-start="213" data-end="301">Hello,</p>
<p data-start="313" data-end="456">I work with Java2D for CAD/CAM style applications where antialiasing is not desirable. Since Java 6 the rasterizer for Bézier curves changed:</p>
<ul data-start="458" data-end="700">
<li data-start="458" data-end="584">
<p data-start="460" data-end="584">Java 5: non-antialiased Bézier curves produced very regular, uniform “ladder” steps (each pixel step had the same length).</p>
</li>
<li data-start="585" data-end="700">
<p data-start="587" data-end="700">Java 6 and later: the rasterizer switched, and now the visible steps are irregular — some longer, some shorter.</p>
</li>
</ul>
<p data-start="702" data-end="945">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.</p>
<p data-start="947" data-end="967">Minimal test case:<span style="white-space-collapse: preserve;"> </span></p><pre data-start="969" data-end="1877"><div class="ydpbec71ba3contain-inline-size ydpbec71ba3rounded-2xl ydpbec71ba3relative ydpbec71ba3bg-token-sidebar-surface-primary"><div class="ydpbec71ba3overflow-y-auto ydpbec71ba3p-4" dir="ltr" data-setdir="false"><code class="ydpbec71ba3language-java"><div><div>import java.awt.*;</div><div>import java.awt.geom.*;</div><div>import javax.swing.*;</div><div><br></div><div>public class CurveTest extends JPanel {</div><div>    @Override</div><div>    protected void paintComponent(Graphics g) {</div><div>        super.paintComponent(g);</div><div>        Graphics2D g2 = (Graphics2D) g;</div><div><br></div><div>        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,</div><div>                            RenderingHints.VALUE_ANTIALIAS_OFF);</div><div><br></div><div>        g2.setStroke(new BasicStroke(1f));</div><div><br></div><div>        // Flatter cubic curve across the panel</div><div>        CubicCurve2D curve = new CubicCurve2D.Double(</div><div>                50, 400,   // start</div><div>                200, 350,  // control1</div><div>                600, 450,  // control2</div><div>                750, 400   // end</div><div>        );</div><div>        g2.draw(curve);</div><div>    }</div><div><br></div><div>    public static void main(String[] args) {</div><div>        JFrame f = new JFrame("Curve Test");</div><div>        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div><div>        f.setSize(800, 800);</div><div>        f.add(new CurveTest());</div><div>        f.setVisible(true);</div><div>    }</div><div>}</div></div>
</code></div></div></pre>
<p data-start="1879" data-end="2025">Expected (Java 5): uniform, even “ladder” steps when antialiasing is off.<br data-start="1952" data-end="1955">
Actual (Java 6+): irregular steps of varying length, harder to read.</p>
<p data-start="2027" data-end="2259">Request:<br data-start="2035" data-end="2038">
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?</p>
<p data-start="2261" data-end="2378">This would help applications that rely on crisp pixel stair-steps as a visual aid, rather than smooth antialiasing.</p>
<p data-start="2380" data-end="2422">Thank you for considering,<br data-start="2406" data-end="2409">
Francisco</p></div><br></div></div></body></html>