Freetype can return a bounding box with all fields set to INT_MIN if an
outline with all points set to 0 is used. This can happen e.g. with
\fscx0, but also in more complicated cases. (In the original crashing
sample, this was probably caused in combination with an embedded font.)
Such a bounding box causes libass to crash, because it will enlarge the
combined bitmap bounding box to a ridiculous size.
Just skip outlines that have en empty bounding box. This is probably
the correct thing to do, and won't pass INT_MAX down to other parts
of libass.
FT_Bitmap bitmap;
FT_Outline_Get_CBox(outline, &bbox);
+ if (bbox.xMin == bbox.xMax || bbox.yMin == bbox.yMax)
+ return NULL;
+
// move glyph to origin (0, 0)
bbox.xMin &= ~63;
bbox.yMin &= ~63;