X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxfont.c;h=760db9ac56f38e645c1068c906068dbede00b851;hp=119f003d1ef17eb1890bf4b67b30ccd215a8aa5c;hb=1c0b740ca41037e48a4dcb3d995b2fd6e32d9b3c;hpb=4f2366641015f517c0e4f841b7ae6a9b90c7b184 diff --git a/lib/gfxfont.c b/lib/gfxfont.c index 119f003..760db9a 100644 --- a/lib/gfxfont.c +++ b/lib/gfxfont.c @@ -28,6 +28,7 @@ #include "gfxfont.h" #include "ttf.h" #include "mem.h" +#include "log.h" static int loadfont_scale = 64; static int full_unicode = 1; @@ -569,6 +570,7 @@ void gfxfont_fix_unicode(gfxfont_t*font) int u = font->glyphs[t].unicode; if(u>=0) { assert(font->unicode2glyph[u]<0); // we took care of duplicates, right? + assert(umax_unicode); font->unicode2glyph[u] = t; } } @@ -666,30 +668,36 @@ ttf_t* gfxfont_to_ttf(gfxfont_t*font) dest->advance = src->advance*scale; int u = font->glyphs[t].unicode; - if(invalid_unicode(u)) { - u = 0xe000 + remap_pos++; - } if(u > max_unicode) max_unicode = u; } ttf->unicode_size = max_unicode+1; ttf->unicode = rfx_calloc(sizeof(unicode_t)*ttf->unicode_size); - remap_pos=0; - for(t=0;tnum_glyphs;t++) { - gfxglyph_t*src = &font->glyphs[t]; - int u = font->glyphs[t].unicode; - if(invalid_unicode(u)) { - u = 0xe000 + remap_pos++; + + if(!font->unicode2glyph) { + for(t=0;tnum_glyphs;t++) { + gfxglyph_t*src = &font->glyphs[t]; + int u = font->glyphs[t].unicode; + if(u<=0) + continue; + if(u<32) { + msg(" gfxfont_to_ttf: glyph %d has an invalid unicode (%d)", t, u); + continue; + } else if(ttf->unicode[u]) { + msg(" gfxfont_to_ttf: glyph %d has a duplicate unicode (%d)", t, u); + continue; + } + if(uunicode_size) + ttf->unicode[u] = t+offset; } - if(u>=0 && uunicode_size) - ttf->unicode[u] = t+offset; - } - int u; - if(font->unicode2glyph) { - for(u=0;uunicode_size;u++) { + } else { + int u; + for(u=1;umax_unicode;u++) { int g = font->unicode2glyph[u]; - if(invalid_unicode(u)) + if(g>=0 && u<32) { + msg(" gfxfont_to_ttf: Font contains an invalid unicode (%d)", u); continue; + } if(g>=0 && gnum_glyphs && !ttf->unicode[u]) { ttf->unicode[u] = g+offset; }