+static SRECT getcharacterbbox(SWFFONT*font)
+{
+ SRECT r;
+ char debug = 0;
+ memset(&r, 0, sizeof(r));
+
+ int t;
+ if(debug) printf("\n");
+ for(t=0;t<chardatapos;t++)
+ {
+ if(chardata[t].fontid != font->id) {
+ msg("<error> Internal error: fontid %d != fontid %d", chardata[t].fontid, font->id);
+ exit(1);
+ }
+ SRECT b = font->layout->bounds[chardata[t].charid];
+ b.xmin *= chardata[t].size;
+ b.ymin *= chardata[t].size;
+ b.xmax *= chardata[t].size;
+ b.ymax *= chardata[t].size;
+ b.xmin /= 1024;
+ b.ymin /= 1024;
+ b.xmax /= 1024;
+ b.ymax /= 1024;
+ b.xmin += chardata[t].x;
+ b.ymin += chardata[t].y;
+ b.xmax += chardata[t].x;
+ b.ymax += chardata[t].y;
+
+ /* until we solve the INTERNAL_SCALING problem (see below)
+ make sure the bounding box is big enough */
+ b.xmin -= 20;
+ b.ymin -= 20;
+ b.xmax += 20;
+ b.ymax += 20;
+
+ if(debug) printf("(%f,%f,%f,%f) -> (%f,%f,%f,%f) [font %d/%d, char %d]\n",
+ font->layout->bounds[chardata[t].charid].xmin/20.0,
+ font->layout->bounds[chardata[t].charid].ymin/20.0,
+ font->layout->bounds[chardata[t].charid].xmax/20.0,
+ font->layout->bounds[chardata[t].charid].ymax/20.0,
+ b.xmin/20.0,
+ b.ymin/20.0,
+ b.xmax/20.0,
+ b.ymax/20.0,
+ chardata[t].fontid,
+ font->id,
+ chardata[t].charid
+ );
+ swf_ExpandRect2(&r, &b);
+ }
+ if(debug) printf("-----> (%f,%f,%f,%f)\n",
+ r.xmin/20.0,
+ r.ymin/20.0,
+ r.xmax/20.0,
+ r.ymax/20.0);
+ return r;
+}
+