CanvasRenderingContext2D::drawTextInternal() uses the computed textRect as the size of the mask image created for painting text stroke with a gradient or pattern.
textRect is too small if stroking text, because it does not take the bounds of the stroke into account; it fails to account for miters etc.
Created attachment 26351 [details]
Maybe Path::strokeBoundingRect() can help here. We moved it from SVG to Path. See SVGPaintServer.cpp and RenderObject.cpp for the usage.
Other platforms don't use clipToImageBuffer anymore. That means it's only a CG related bug.
My last suggestion can't work here. Text's are no paths :-P
But why using clipToImageBuffer for both, gradients and pattern. We just need it for gradients, right?