Use advance.x for estimating cell width if linearHoriAdvance is zero.

This commit is contained in:
Marisa the Magician 2022-09-22 18:02:15 +02:00
commit c5b1bb0430

View file

@ -456,8 +456,8 @@ int main( int argc, char **argv )
if ( !glyph || FT_Load_Glyph(fnt,glyph,LOADFLAGS) ) continue; if ( !glyph || FT_Load_Glyph(fnt,glyph,LOADFLAGS) ) continue;
FT_Render_Glyph(fnt->glyph,RENDERMODE); FT_Render_Glyph(fnt->glyph,RENDERMODE);
int adv = fnt->glyph->linearHoriAdvance>>16; int adv = fnt->glyph->linearHoriAdvance>>16;
int gw = fnt->glyph->bitmap.width+fnt->glyph->bitmap_left; int adv2 = fnt->glyph->advance.x>>6;
if ( gw > adv ) adv = gw; if ( !adv ) adv = adv2;
if ( (adv+rightshift) > w ) w = adv+rightshift; if ( (adv+rightshift) > w ) w = adv+rightshift;
} }
fprintf(stderr,"info: max cell size is %dx%d.\n",w,h); fprintf(stderr,"info: max cell size is %dx%d.\n",w,h);
@ -487,6 +487,8 @@ int main( int argc, char **argv )
{ {
// readjust cell width (but not height) for this character // readjust cell width (but not height) for this character
int adv = fnt->glyph->linearHoriAdvance>>16; int adv = fnt->glyph->linearHoriAdvance>>16;
int adv2 = fnt->glyph->advance.x>>6;
if ( !adv ) adv = adv2;
w = adv+rightshift; w = adv+rightshift;
iw = w+((gradient&4)?2:1); iw = w+((gradient&4)?2:1);
} }