]> git.tdb.fi Git - ttf2png.git/blobdiff - ttf2png.c
Slightly refactor how the font size is set
[ttf2png.git] / ttf2png.c
index 5e6e351328e30b78f0b641ec867cda66d8313351..1c17c6b16b11795d07a58e524e800a68d6e263df 100644 (file)
--- a/ttf2png.c
+++ b/ttf2png.c
@@ -220,7 +220,11 @@ int main(int argc, char **argv)
                printf("Glyphs:    %ld\n", face->num_glyphs);
        }
 
-       err = FT_Set_Pixel_Sizes(face, 0, (distfield ? size*distfield : size));
+       font.size = size;
+       if(distfield)
+               size *= distfield;
+
+       err = FT_Set_Pixel_Sizes(face, 0, size);
        if(err)
        {
                fprintf(stderr, "Couldn't set size\n");
@@ -237,7 +241,6 @@ int main(int argc, char **argv)
        else
                sort_and_compact_ranges(ranges, &n_ranges);
 
-       font.size = size;
        err = init_font(&font, face, ranges, n_ranges, autohinter, distfield);
        if(err)
                return 1;
@@ -694,15 +697,9 @@ int copy_bitmap(const FT_Bitmap *bmp, Image *image)
 
 unsigned sqrti(unsigned num)
 {
-       unsigned result = num;
-       while(result*result>num)
-       {
-               unsigned diff = result*result-num;
-               if(diff<result)
-                       break;
-
-               result -= (diff+result)/(result*2);
-       }
+       unsigned result = (num>0xFFFF ? 0xFFFF : 0x100);
+       while(result && result*result>=result+num)
+               result -= (result*result+result-num)/(result*2);
 
        return result;
 }
@@ -740,7 +737,7 @@ unsigned find_distance_to_edge(const Image *image, int origin_x, int origin_y, u
                }
        }
 
-       return sqrti(closest)*0x7F/range;
+       return sqrti(closest*0x3F01)/range;
 }
 
 int create_distance_field(const FT_Bitmap *bmp, Image *image, unsigned scale, unsigned margin)