X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxfont.c;h=d1f58066a0aaa3e063edd7c90cee7c10798796e3;hp=5004e18359b02a90f3201107b885a0586fe9ab8e;hb=f9843bbeaa52fe428420eed8d2c8992f763a8d68;hpb=161eb9ef43958996250c3786802a013e1ac549de diff --git a/lib/gfxfont.c b/lib/gfxfont.c index 5004e18..d1f5806 100644 --- a/lib/gfxfont.c +++ b/lib/gfxfont.c @@ -539,6 +539,7 @@ ttf_t* gfxfont_to_ttf(gfxfont_t*font) ttf->glyphs = rfx_calloc(num_glyphs*sizeof(ttfglyph_t)); double scale = 1.0; int max_unicode = font->max_unicode; + int remap_pos=0; for(t=0;tnum_glyphs;t++) { gfxglyph_t*src = &font->glyphs[t]; ttfglyph_t*dest = &ttf->glyphs[t+offset]; @@ -592,19 +593,24 @@ ttf_t* gfxfont_to_ttf(gfxfont_t*font) } dest->advance = src->advance*scale; - if(src->unicode > max_unicode) - max_unicode = src->unicode; + + int u = font->glyphs[t].unicode; + if(u<32 || (u>=0xe000 && u<0xf900)) { + 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); - int remap_pos=0; + remap_pos=0; for(t=0;tnum_glyphs;t++) { gfxglyph_t*src = &font->glyphs[t]; int u = font->glyphs[t].unicode; if(u<32 || (u>=0xe000 && u<0xf900)) { u = 0xe000 + remap_pos++; } - if(u>=0) + if(u>=0 && uunicode_size) ttf->unicode[u] = t+offset; } int u;