diff --git a/mkfont.c b/mkfont.c index f0712b7..0f49ec3 100644 --- a/mkfont.c +++ b/mkfont.c @@ -352,7 +352,7 @@ int main( int argc, char **argv ) { if ( argc < 3 ) { - fprintf(stderr,"usage: mkfont " + fprintf(stderr,"usage: mkfont [:face index] " " [gradient type (0,11)] [color palette] [-palinv]\n"); return 1; } @@ -376,12 +376,38 @@ int main( int argc, char **argv ) } if ( argc > 6 ) palinv = !strcmp(argv[6],"-palinv"); if ( argc > 5 ) loadpalette(argv[5]); - if ( FT_New_Face(ftlib,argv[1],0,&fnt) ) + char *fidx = strrchr(argv[1],':'); + int fnum = 0; + if ( fidx ) { - fprintf(stderr,"error: failed to open font '%s'\n",argv[1]); + *fidx = 0; + sscanf(fidx+1,"%d",&fnum); + } + if ( FT_New_Face(ftlib,argv[1],fnum,&fnt) ) + { + if ( fidx ) fprintf(stderr,"error: failed to open font '%s' face %d.\n",argv[1],fnum); + else fprintf(stderr,"error: failed to open font '%s'.\n",argv[1]); return 4; } fprintf(stderr,"info: loaded font \'%s %s\'.\n",fnt->family_name,fnt->style_name); + int nfnt = fnt->num_faces; + if ( !fidx && (nfnt > 1) ) + { + fprintf(stderr,"info: loaded font has %d faces, you may want to load a specific one (see below).\n",nfnt); + FT_Done_Face(fnt); + for ( int i=0; ifamily_name,fnt->style_name); + FT_Done_Face(fnt); + } + FT_Done_FreeType(ftlib); + return 0; + } if ( !strcmp(fnt->family_name,"tewi") ) tewi_hotfix = 1; else if ( !strcmp(fnt->family_name,"miniwi") ) miniwi_hotfix = 1; if ( FT_Set_Pixel_Sizes(fnt,0,pxsiz) ) @@ -481,7 +507,7 @@ int main( int argc, char **argv ) int adv2 = fnt->glyph->advance.x>>6; if ( adv2 ) adv = adv2; w = adv; - iw = w+((gradient&4)?2:1); + iw = w+((gradient&8)?0:(gradient&4)?2:1); } int xx = 0; int yy = upshift+tewi_hotfix+miniwi_hotfix;