Fix mkfont for actual fixed-width fonts.
This commit is contained in:
parent
7e47305aa4
commit
212d870a09
1 changed files with 11 additions and 4 deletions
15
mkfont.c
15
mkfont.c
|
|
@ -444,14 +444,21 @@ int main( int argc, char **argv )
|
|||
// third pass to compute the maximum cell size (for memory allocation)
|
||||
if ( autosize )
|
||||
{
|
||||
h = pxsiz+1; // should be fine
|
||||
for ( uint32_t i=range[0]; i<=range[1]; i++ )
|
||||
h = fnt->size->metrics.height>>6;
|
||||
if ( FT_IS_FIXED_WIDTH(fnt) )
|
||||
{
|
||||
w = fnt->size->metrics.max_advance>>6;
|
||||
autosize = 0; // don't readjust per-glyph
|
||||
}
|
||||
else for ( uint32_t i=range[0]; i<=range[1]; i++ )
|
||||
{
|
||||
FT_UInt glyph = FT_Get_Char_Index(fnt,i);
|
||||
if ( !glyph || FT_Load_Glyph(fnt,glyph,LOADFLAGS) ) continue;
|
||||
FT_Render_Glyph(fnt->glyph,RENDERMODE);
|
||||
int adv = fnt->glyph->linearHoriAdvance>>16;
|
||||
if ( adv > w ) w = adv;
|
||||
int gw = fnt->glyph->bitmap.width+fnt->glyph->bitmap_left;
|
||||
if ( gw > adv ) adv = gw;
|
||||
if ( (adv+rightshift) > w ) w = adv+rightshift;
|
||||
}
|
||||
fprintf(stderr,"info: max cell size is %dx%d.\n",w,h);
|
||||
}
|
||||
|
|
@ -480,7 +487,7 @@ int main( int argc, char **argv )
|
|||
{
|
||||
// readjust cell width (but not height) for this character
|
||||
int adv = fnt->glyph->linearHoriAdvance>>16;
|
||||
w = adv;
|
||||
w = adv+rightshift;
|
||||
iw = w+((gradient&4)?2:1);
|
||||
}
|
||||
int xx = rightshift;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue