+ if(num<=1) {
+ *_x1=x1;
+ } else {
+ double scale = min_size/1024.0;
+ for(t=from;t<=to;t++) {
+ if(t==x1) {
+ row[t]=-1e20;
+ continue;
+ }
+ double r1 = (t<x1?t:x1)*scale;
+ double r2 = (t<x1?x1:t)*scale;
+ double d1 = r2-r1;
+ double d2 = d1+2;
+ double s = d2/d1;
+ double ext1 = r1-from*scale;
+ double ext2 = to*scale-r2;
+ double add1 = ext1*s - ext1;
+ double add2 = ext2*s - ext2;
+
+ /* don't allow the char to grow more than one pixel */
+ if(add1>=1 || add2>=1) {
+ row[t]=-1e20;
+ }