X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=ttf2png.c;h=8fc211e4900fd73b6f41711075a6162de8034663;hb=4709d1e1e7da55da3215746fc07cffc6b6fe3c00;hp=7ef19e14860d9590e8e748dfccde291c0779c1f1;hpb=dce059b659be249e34967837adfdd6c614e011b3;p=ttf2png.git diff --git a/ttf2png.c b/ttf2png.c index 7ef19e1..8fc211e 100644 --- a/ttf2png.c +++ b/ttf2png.c @@ -61,8 +61,8 @@ typedef struct sFont Image image; } Font; -unsigned round_to_pot(unsigned); void usage(); +unsigned round_to_pot(unsigned); void *alloc_image_data(size_t, size_t); int init_font(Font *, FT_Face, unsigned, unsigned, int); int render_grid(Font *, unsigned, unsigned, unsigned, int); @@ -271,21 +271,9 @@ int main(int argc, char **argv) return 0; } -unsigned round_to_pot(unsigned n) -{ - n -= 1; - n |= n>>1; - n |= n>>2; - n |= n>>4; - n |= n>>8; - n |= n>>16; - - return n+1; -} - void usage() { - printf("ttf2png - True Type Font to PNG converter\n" + printf("ttf2png 1.0 - True Type Font to PNG converter\n" "Copyright (c) 2004-2008 Mikko Rasa, Mikkosoft Productions\n" "Distributed under the GNU General Public License\n\n"); @@ -307,6 +295,18 @@ void usage() " -h Print this message\n"); } +unsigned round_to_pot(unsigned n) +{ + n -= 1; + n |= n>>1; + n |= n>>2; + n |= n>>4; + n |= n>>8; + n |= n>>16; + + return n+1; +} + void *alloc_image_data(size_t a, size_t b) { void *ptr; @@ -320,14 +320,14 @@ void *alloc_image_data(size_t a, size_t b) a += c; if(apitch<0) { for(y=0; yrows; ++y) for(x=0; xwidth; ++x) @@ -511,7 +511,10 @@ int render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int se last = font->glyphs[font->n_glyphs-1].code; font->image.w = round_to_pot(cpl*cellw); - font->image.h = round_to_pot((last-first+cpl)/cpl*cellh); + if(seq) + font->image.h = round_to_pot((font->n_glyphs+cpl-1)/cpl*cellh); + else + font->image.h = round_to_pot((last-first+cpl)/cpl*cellh); font->image.data = (char *)alloc_image_data(font->image.w, font->image.h); if(!font->image.data) @@ -727,7 +730,7 @@ int save_png(const char *fn, const Image *image, char alpha) png_info *pngi; png_byte **rows; unsigned i; - png_byte *data2; + png_byte *data2 = 0; int color; if(!strcmp(fn, "-"))