BasicStrokeとRectangularShape

batikにラスタライザにピクセルレベルで癖があるらしいと書いた(id:eccoHowling:20040711#p1)けど、

  • new Rectangle2D.Float(40, 40, 20, 20);
  • new Polygon(new int[ ] {40, 40, 60, 60}, new int[ ] {40, 60, 60, 40}, 4);

この二つではストロークがズレている。Mac OS X固有の問題だろうか? 多分BasicStrokeがPathIteratorを描く前にRectangularShapeかどうかを判定してnormalizeしているんだろうと、試しにこうしてみた。

  • new GeneralPath(new Rectangle2D.Float(40, 40, 20, 20));

これだとストロークはPolygonと同じになる。STROKE_PUREを指定しても結果は変わらなかった。