From: Mikko Rasa Date: Fri, 23 Nov 2012 13:34:58 +0000 (+0200) Subject: Fix the logic for determining grid range X-Git-Tag: 1.0~10 X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=dc56acaec174575c5c27f6135a40abca511bc88e;p=ttf2png.git Fix the logic for determining grid range --- diff --git a/ttf2png.c b/ttf2png.c index ebc9530..7e78e84 100644 --- 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; - 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; in_glyphs; ++i) { int y; @@ -410,21 +402,21 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s if(cpl==0) { - unsigned count = (seq ? font->n_glyphs : last-first+1); 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; } } + 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); - if(seq && font->n_glyphsimage.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);