Another take based on @rasher's comment:
Graphics[{Thickness[.02],
Arrowheads[{{-.1, 0, Graphics[{Thickness[.02], CapForm["Round"],
Line[{{-1, 0}, {0, 0}}]}]}, {.2, 1}}],
Arrow[BSplineCurve[{{0, 0}, {4, 7}, {2, 11}, {10, 10}},
SplineWeights -> {3, 5, 4, 5}], .05]}]
Update:
What if the arrow is dashed or dotted?
Overlaying BSplineCurve
(without Arrow
) with a transparent Arrow
with some manual adjustments seems to work:
ah = GraphElementData["FilledArrow", "ArrowSize" -> 0.1][{{0.`, 0.`},
{1.`, 0.`}}][[1, 1, 1, 3, 1]];
g1 = Graphics[{Thickness[.03], Red, Dashing[.02], CapForm["Round"],
BSplineCurve[{{0, 0}, {4, 7}, {2, 11}, {10, 10}},
SplineWeights -> {3, 5, 4, 5}]}, ImageSize -> 300];
g2 = Graphics[{Thickness[.03],
Arrowheads[{{.15, 1, {ah /. FilledCurve[x__] :> {Opacity[1], Red,
FilledCurve[x]}, .5}}}],
Red, Dashing[.02], CapForm["Round"],
BSplineCurve[{{0, 0}, {4, 7}, {2, 11}, {9.2, 10.05}},
SplineWeights -> {3, 5, 4, 5}],
Opacity[0],
Arrow[BSplineCurve[{{0, 0}, {4, 7}, {2, 11}, {10, 10}},
SplineWeights -> {3, 5, 4, 5}]]}, ImageSize -> 300];
Row[{g1, g2}]
ArrowHeads
with custom arrow graphics... $\endgroup$