From dc56acaec174575c5c27f6135a40abca511bc88e Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 23 Nov 2012 15:34:58 +0200 Subject: [PATCH] Fix the logic for determining grid range --- ttf2png.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) 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); -- 2.43.0