なめらかな曲線もベースは折れ線データである。つまり、短い直線線分をつなぎ合わせたものが曲線である。
java.awt.BasicStrokeでは線分の終端および繋ぎ目の形状はそれぞれ以下の3つから選択できる。 これらの数値をプログラムで確認した結果を下に示した。
BasicStrokeとしてのデフォルトの属性は、実線の幅1.0、CAP_SQUARE、JOIN_MITER、接合制限値10.0である。
道路のレンダリングでは使い分けが必要となる。国境や県境などは標準OSM地図では JOIN_BEVEL である。
レンダリングでは、ライン描画が多彩である。細い線では、CAPやJOINをさほど気にしなくてもよい。 いちいち指定するのではなく、幅のみ指定して、CAP と JOIN はデフォルトとしたい。 BasicStrokeの仕様では CAP_SQUARE、JOIN_MITER、接合制限値10.0 となる。接合制限値は JOIN_MITER だけに関係する。 線幅によって変えるべきかもしれない。
地図アプリとしては CAP_ROUNDまたはCAP_BUTT、JOIN_ROUNDまたはJOIN_BEVEL の方がよい気がする。 現在(2025年2月19日)は CAP_BUTT、JOIN_ROUND としている。
Admin境界線、道路・鉄道などは個々に指定する。
static int CAP_BUTT 装飾を付けずに、閉じられていない部分輪郭線および破線セグメントを終了します。 static int CAP_ROUND ペン幅の半分の長さを半径とした丸い装飾を付けて、閉じられていない部分輪郭線 および破線セグメントを終了します。 static int CAP_SQUARE ライン幅の半分の長さに等しい距離だけセグメントの先端を延長する正方形を付けて、 閉じられていない部分輪郭線および破線セグメントを終了します。 static int JOIN_BEVEL 幅の広い輪郭線の外側の角を直線セグメントに接合するようにして輪郭線セグメントを接合します。 static int JOIN_MITER 輪郭線セグメントの外側の端が重なるまで延長して輪郭線セグメントを接合します。 static int JOIN_ROUND ライン幅の半分の長さを半径として、角を丸く切り落として輪郭線セグメントを接合します。
cap_butt=0, cap_round=1, cap_square=2, join_bevel=2, join_miter=0, join_round=1