]> git.tdb.fi Git - ttf2png.git/commitdiff
Fix the logic for determining grid range
authorMikko Rasa <tdb@tdb.fi>
Fri, 23 Nov 2012 13:34:58 +0000 (15:34 +0200)
committerMikko Rasa <tdb@tdb.fi>
Fri, 23 Nov 2012 13:34:58 +0000 (15:34 +0200)
ttf2png.c

index ebc953022e20178d35a5f001a1c87ff3a5cf9ad1..7e78e84d41de01b10cd4aaa0fd410a8e88ee2e4f 100644 (file)
--- a/ttf2png.c
+++ b/ttf2png.c
@@ -362,14 +362,6 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s
        unsigned first, last;
        unsigned maxw = 0, maxh = 0;
 
        unsigned first, last;
        unsigned maxw = 0, maxh = 0;
 
-       for(i=1;; i<<=1)
-       {
-               first = font->glyphs[0].code&~(i-1);
-               last = first+i-1;
-               if(last>=font->glyphs[font->n_glyphs-1].code)
-                       break;
-       }
-
        for(i=0; i<font->n_glyphs; ++i)
        {
                int y;
        for(i=0; i<font->n_glyphs; ++i)
        {
                int y;
@@ -410,21 +402,21 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s
 
        if(cpl==0)
        {
 
        if(cpl==0)
        {
-               unsigned count = (seq ? font->n_glyphs : last-first+1);
                for(i=1;; i<<=1)
                {
                        cpl = i/cellw;
                for(i=1;; i<<=1)
                {
                        cpl = i/cellw;
-                       if(cpl>0 && (count+cpl-1)/cpl*cellh<=cpl*cellw)
+                       if(cpl>0 && font->n_glyphs/cpl*cellh<=cpl*cellw)
                                break;
                }
        }
 
                                break;
                }
        }
 
+       first = font->glyphs[0].code;
+       if(!seq)
+               first -= first%cpl;
+       last = font->glyphs[font->n_glyphs-1].code;
+
        font->image.w = round_to_pot(cpl*cellw);
        font->image.w = round_to_pot(cpl*cellw);
-       if(seq && font->n_glyphs<last-first+1)
-               font->image.h = (font->n_glyphs+cpl-1)/cpl*cellh;
-       else
-               font->image.h = (last-first+cpl)/cpl*cellh;
-       font->image.h = round_to_pot(font->image.h);
+       font->image.h = round_to_pot((last-first+cpl)/cpl*cellh);
 
        font->image.data = (char *)malloc(font->image.w*font->image.h);
        memset(font->image.data, 255, font->image.w*font->image.h);
 
        font->image.data = (char *)malloc(font->image.w*font->image.h);
        memset(font->image.data, 255, font->image.w*font->image.h);