333{
335 fprintf(out, "static SkTestFontData gTestFonts[] = {\n");
336 for (const FontFamilyDesc& family : families) {
337 for (const FontDesc& font : family.fFonts) {
341 fprintf(out,
342 " { %sPoints, %sVerbs,\n"
343 " %sCharCodes, %sCharCodesCount, %sWidths,\n"
344 " %sMetrics, \"Toy %s\", SkFontStyle(%d,%d,%s)\n"
345 " },\n",
350 }
351 }
352 fprintf(out, "};\n\n");
353 fprintf(out,
354 "struct SubFont {\n"
355 " const char* fFamilyName;\n"
356 " const char* fStyleName;\n"
357 " SkFontStyle fStyle;\n"
358 " SkTestFontData& fFont;\n"
359 " const char* fFile;\n"
360 "};\n\n"
361 "const SubFont gSubFonts[] = {\n");
362 int defaultIndex = -1;
363 int testFontsIndex = 0;
364 for (const FontFamilyDesc& family : families) {
365 for (const FontDesc& font : family.fFonts) {
366 if (&font == defaultFont) {
367 defaultIndex = testFontsIndex;
368 }
370 fprintf(out,
371 " { \"%s\", \"%s\", SkFontStyle(%d,%d,%s), gTestFonts[%d], \"%s\" },\n",
372 family.fGenericName,
font.fNamedStyle.fName,
374 testFontsIndex,
font.fFile);
375 testFontsIndex++;
376 }
377 }
378 testFontsIndex = 0;
379 for (const FontFamilyDesc& family : families) {
380 for (const FontDesc& font : family.fFonts) {
381 fprintf(out,
382 " { \"Toy %s\", \"%s\", SkFontStyle(%d,%d,%s), gTestFonts[%d], \"%s\" },\n",
383 family.fFamilyName,
font.fNamedStyle.fName,
384 font.fNamedStyle.fStyle.weight(),
font.fNamedStyle.fStyle.width(),
386 testFontsIndex++;
387 }
388 }
389 fprintf(out, "};\n\n");
391 fprintf(out, "const size_t gDefaultFontIndex = %d;\n", defaultIndex);
392 fclose(out);
393}
const char * c_str() const
static const char * slant_to_string(SkFontStyle::Slant slant)