#include #include #include #include #include #include #ifdef BUILD2 #include "u8g2.h" #endif extern const uint8_t *u8x8_font_list[] ; extern char *u8x8_font_names[] ; extern const uint8_t *u8g2_font_list[] ; extern char *u8g2_font_names[] ; #ifdef BUILD2 extern void u8g2_SetupBuffer_TGA(u8g2_t *u8g2, const u8g2_cb_t *u8g2_cb); extern void tga_save(const char *name); #endif /*===================================*/ int add_to_str(char **dest, const char *s) { void *t; if ( *dest == NULL ) { *dest = strdup(s); if ( *dest == NULL ) return 0; } else { t = realloc(*dest, strlen(*dest) + strlen(s) + 1); if ( t == NULL ) return 0; *dest = (char *)t; strcat(*dest, s); } return 1; } /* copy file from source_file_name to dest_file_name */ int file_copy(const char *source_file_name, const char *dest_file_name) { int ch; FILE *source_fp; FILE *dest_fp; source_fp = fopen(source_file_name, "r"); dest_fp = fopen(dest_file_name, "w"); if ( source_fp == NULL || dest_fp == NULL ) return 0; while( ( ch = fgetc(source_fp) ) != EOF ) fputc(ch, dest_fp); fclose(source_fp); fclose(dest_fp); return 1; } /* Insert "text" between lines "start_line" and "end_line" of file "filename" */ int insert_into_file(const char *filename, const char *text, const char *start_line, const char *end_line) { static char line[1024*4]; const char *tmpname = "tmp.h"; FILE *source_fp; FILE *dest_fp; if ( file_copy(filename, tmpname) == 0 ) return 0; source_fp = fopen(tmpname, "r"); dest_fp = fopen(filename, "w"); if ( source_fp == NULL || dest_fp == NULL ) return 0; for(;;) { if ( fgets(line, 1024*4, source_fp) == NULL ) break; if ( strncmp(line, start_line, strlen(start_line)) == 0 ) { fputs(line, dest_fp); fputs(text, dest_fp); fputs("\n", dest_fp); for(;;) { if ( fgets(line, 1024*4, source_fp) == NULL ) break; if ( strncmp(line, end_line, strlen(end_line)) == 0 ) { fputs(line, dest_fp); break; } } } else { fputs(line, dest_fp); } } fclose(source_fp); fclose(dest_fp); unlink(tmpname); return 1; } /*===================================*/ struct groupinfo { char *groupname; char *reference; char *mdfile; char *mdprefixfile; }; struct fontinfo { //int is_ttf; /* 0 = bdf, 1= ttf */ char *bdfconv_opt; char *ttf_opt; /* 0 or "-r 72 -p 8" */ char *filename; /* filename including extension */ char *name; int group; /* group-index */ int kerning_min_distance_per_cent; /* 0: do not generate kerning file */ int build_mode; /* Or'd BM_T, BM_H, BM_M, BM_8 */ int font_mode; /* Or'd FM_C and FM_8 */ int map_mode; /* Or'd MM_F, FM_N and FM_R */ char *map_custom; /* e.g. 32,42-58>32 */ char *map_custom_postfix; }; typedef void (*cbfn_t)(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms); struct groupinfo gi[] = { { "U8glib", "fntgrpu8g", "../../../../u8g2.wiki/fntgrpu8g.md", "fntgrpu8g.pre" }, { "X11", "fntgrpx11", "../../../../u8g2.wiki/fntgrpx11.md", "fntgrpx11.pre" }, { "Fontstruct", "fntgrpfontstruct", "../../../../u8g2.wiki/fntgrpfontstruct.md", "fntgrpfontstruct.pre" }, /* 2 */ { "cu12", "fntgrpcu12", "../../../../u8g2.wiki/fntgrpcu12.md", "fntgrpcu12.pre" }, { "Profont", "fntgrpprofont", "../../../../u8g2.wiki/fntgrpprofont.md", "fntgrpprofont.pre" }, /* 4 */ { "Adobe X11", "fntgrpadobex11", "../../../../u8g2.wiki/fntgrpadobex11.md", "fntgrpadobex11.pre" }, { "Unifont", "fntgrpunifont", "../../../../u8g2.wiki/fntgrpunifont.md", "fntgrpunifont.pre" }, /* 6 */ { "Open Game Art", "fntgrpopengameart", "../../../../u8g2.wiki/fntgrpopengameart.md", "fntgrpopengameart.pre" }, /* 7 */ { "Free Universal", "fntgrpfreeuniversal", "../../../../u8g2.wiki/fntgrpfreeuniversal.md", "fntgrpfreeuniversal.pre" }, /* 8 */ { "Old Standard", "fntgrpoldstandard", "../../../../u8g2.wiki/fntgrpoldstandard.md", "fntgrpoldstandard.pre" }, /* 9 */ { "Logisoso", "fntgrplogisoso", "../../../../u8g2.wiki/fntgrplogisoso.md", "fntgrplogisoso.pre" }, /* 10 */ { "Inconsolata", "fntgrpinconsolata", "../../../../u8g2.wiki/fntgrpinconsolata.md", "fntgrpinconsolata.pre" }, /* 11 */ { "Codeman38", "fntgrpcodeman38", "../../../../u8g2.wiki/fntgrpcodeman38.md", "fntgrpcodeman38.pre" }, /* 12 */ { "Academia Sinica","fntgrpacademiasinica", "../../../../u8g2.wiki/fntgrpacademiasinica.md", "fntgrpacademiasinica.pre" }, /* 13 */ { "Oldschool PC Fonts","fntgrpoldschoolpcfonts", "../../../../u8g2.wiki/fntgrpoldschoolpcfonts.md", "fntgrpoldschoolpcfonts.pre" }, /* 14 */ /* 14 */ { "crox", "fntgrpcrox", "../../../../u8g2.wiki/fntgrpcrox.md", "fntgrpcrox.pre" }, /* 15 */ { "efont", "fntgrpefont", "../../../../u8g2.wiki/fntgrpefont.md", "fntgrpefont.pre" }, /* 16 */ { "Tlwg (Thai-Fonts)","fntgrptlwg", "../../../../u8g2.wiki/fntgrptlwg.md", "fntgrptlwg.pre" }, /* 17 */ { "NBP", "fntgrpnbp", "../../../../u8g2.wiki/fntgrpnbp.md", "fntgrpnbp.pre" }, /* 18 */ { "UW ttyp0", "fntgrpttyp0", "../../../../u8g2.wiki/fntgrpttyp0.md", "fntgrpttyp0.pre" }, /* 19 */ { "Siji Icon Font", "fntgrpsiji", "../../../../u8g2.wiki/fntgrpsiji.md", "fntgrpsiji.pre" }, /* 20 */ { "Wqy (Chinese Font)", "fntgrpwqy", "../../../../u8g2.wiki/fntgrpwqy.md", "fntgrpwqy.pre" }, /* 21 */ { "Open Iconic", "fntgrpiconic", "../../../../u8g2.wiki/fntgrpiconic.md", "fntgrpiconic.pre" }, /* 22 */ { "Persian", "fntgrppersian", "../../../../u8g2.wiki/fntgrppersian.md", "fntgrppersian.pre" }, /* 23 */ { "Tom-Thumb", "fntgrptomthumb", "../../../../u8g2.wiki/fntgrptomthumb.md", "fntgrptomthumb.pre" }, /* 24 */ { "Extant", "fntgrpextant", "../../../../u8g2.wiki/fntgrpextant.md", "fntgrpextant.pre" }, /* 25 */ { "MistressEllipsis", "fntgrpmistressellipsis", "../../../../u8g2.wiki/fntgrpmistressellipsis.md", "fntgrpmistressellipsis.pre" }, /* 26 */ { "JayWright", "fntgrpjaywright", "../../../../u8g2.wiki/fntgrpjaywright.md", "fntgrpjaywright.pre" }, /* 27 */ { "Angel", "fntgrpangel", "../../../../u8g2.wiki/fntgrpangel.md", "fntgrpangel.pre" }, /* 28 */ { "JosephKnightcom", "fntgrpjosephknightcom", "../../../../u8g2.wiki/fntgrpjosephknightcom.md", "fntgrpjosephknightcom.pre" }, /* 29 */ { "ChristinaAntoinetteNeofotistou", "fntgrpchristinaneofotistou", "../../../../u8g2.wiki/fntgrpchristinaneofotistou.md", "fntgrpchristinaneofotistou.pre" }, /* 30 */ { "Geoff", "fntgrpgeoff", "../../../../u8g2.wiki/fntgrpgeoff.md", "fntgrpgeoff.pre" }, /* 31 */ { "Tulamide", "fntgrptulamide", "../../../../u8g2.wiki/fntgrptulamide.md", "fntgrptulamide.pre" }, /* 32 */ { "GilesBooth", "fntgrpgilesbooth", "../../../../u8g2.wiki/fntgrpgilesbooth.md", "fntgrpgilesbooth.pre" }, /* 33 */ { "bitfontmaker2", "fntgrpbitfontmaker2", "../../../../u8g2.wiki/fntgrpbitfontmaker2.md", "fntgrpbitfontmaker2.pre" }, /* 34 */ { "JapanYoshi", "fntgrpjapanyoshi", "../../../../u8g2.wiki/fntgrpjapanyoshi.md", "fntgrpjapanyoshi.pre" }, /* 35 */ { "Pentacom", "fntgrppentacom", "../../../../u8g2.wiki/fntgrppentacom.md", "fntgrppentacom.pre" }, /* 36 */ { "dafont", "fntgrpdafont", "../../../../u8g2.wiki/fntgrpdafont.md", "fntgrpdafont.pre" }, /* 37 */ { "lucida", "fntgrplucida", "../../../../u8g2.wiki/fntgrplucida.md", "fntgrplucida.pre" }, /* 38 */ }; #define BM_T 1 /* Transparent = build mode 0 proportional */ #define BM_H 2 /* Common Height = build mode 1 */ #define BM_M 4 /* Monospace = build mode 2 */ #define BM_8 8 /* 8x8 = build mode 3 */ #define FM_C 1 /* u8g2 compressed font */ #define FM_8 2 /* u8x8 uncompressed font */ #define MM_F 1 /* full */ #define MM_R 2 /* reduced */ #define MM_U 4 /* uppercase */ #define MM_N 8 /* numbers */ #define MM_C 16 /* custom */ #define MM_M 32 /* map file */ #define MM_E 64 /* extended 32-701,7838 fb00..fb07 */ /* Greek $370-$3ff _greek Cyrillic $400-$52f _cyrillic Armenian 0530–058F Hebrew 0590–05FF Thai 0E00–0E7F Georgian 10A0–10FF Latin Extended Additional 1E00–1EFF Greek Extended 1F00–1FFF */ struct fontinfo fi[] ={ { 0, 0, "u8glib_4.bdf", "u8glib_4", 0, 0, BM_T|BM_H, FM_C, MM_F|MM_R, "", "" }, { 0, 0, "m2icon_5.bdf", "m2icon_5", 0, 0, BM_T, FM_C, MM_F, "", ""}, { 0, 0, "m2icon_7.bdf", "m2icon_7", 0, 0, BM_T, FM_C, MM_F, "", ""}, { 0, 0, "m2icon_9.bdf", "m2icon_9", 0, 0, BM_T, FM_C, MM_F, "", ""}, { 0, 0, "emoticons21.bdf", "emoticons21", 0, 0, BM_T, FM_C, MM_R, "", ""}, { 0, 0, "battery19.bdf", "battery19", 0, 0, BM_T, FM_C, MM_N, "", ""}, { 0, 0, "freedoomr10r.bdf", "freedoomr10", 0, 0, BM_T|BM_M, FM_C, MM_U, "", ""}, { 0, 0, "freedoomr25n.bdf", "freedoomr25", 0, 0, BM_T|BM_M, FM_C, MM_N, "", ""}, { 0, 0, "7Segments_26x42.bdf", "7Segments_26x42", 0, 0, BM_M, FM_C, MM_N, "", ""}, { 0, 0, "amstrad_cpc_extended.bdf", "amstrad_cpc_extended", 2, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "cursor.bdf", "cursor", 1, 0, BM_T, FM_C, MM_C, "0-223>32", "f" }, { 0, 0, "cursor.bdf", "cursor", 1, 0, BM_T, FM_C, MM_C, "0-80>32", "r" }, { 0, 0, "micro.bdf", "micro", 1, 0, BM_T|BM_M, FM_C, MM_R|MM_N, "", "" }, /* micro does not have the full set */ { 0, 0, "4x6.bdf", "4x6", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "4x6.bdf", "4x6", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "5x7.bdf", "5x7", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "5x7.bdf", "5x7", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "5x7.bdf", "5x7", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "5x8.bdf", "5x8", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "5x8.bdf", "5x8", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "5x8.bdf", "5x8", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "6x10.bdf", "6x10", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "6x12.bdf", "6x12", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "6x12.bdf", "6x12", 1, 0, BM_T|BM_M, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "6x12.bdf", "6x12", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "6x13.bdf", "6x13", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "6x13.bdf", "6x13", 1, 0, BM_T, FM_C, MM_C, "32-128,$590-$5ff,$fb1d-$fb4f", "_hebrew" }, { 0, 0, "6x13.bdf", "6x13", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "6x13B.bdf", "6x13B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "6x13B.bdf", "6x13B", 1, 0, BM_T, FM_C, MM_C, "32-128,$590-$5ff,$fb1d-$fb4f", "_hebrew" }, { 0, 0, "6x13B.bdf", "6x13B", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "6x13O.bdf", "6x13O", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "7x13.bdf", "7x13", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "7x13.bdf", "7x13", 1, 0, BM_T|BM_M, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "7x13.bdf", "7x13", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "7x13B.bdf", "7x13B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "7x13O.bdf", "7x13O", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "7x14.bdf", "7x14", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "7x14B.bdf", "7x14B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "8x13.bdf", "8x13", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "8x13.bdf", "8x13", 1, 0, BM_T|BM_M, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "8x13.bdf", "8x13", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "8x13B.bdf", "8x13B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "8x13O.bdf", "8x13O", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, //#ifdef TMP { 0, 0, "9x15.bdf", "9x15", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "9x15.bdf", "9x15", 1, 0, BM_T|BM_M, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "9x15.bdf", "9x15", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "9x15B.bdf", "9x15B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "9x18.bdf", "9x18", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "9x18B.bdf", "9x18B", 1, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "10x20.bdf", "10x20", 1, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "10x20.bdf", "10x20", 1, 0, BM_T, FM_C, MM_C, "32-128,$370-$3ff", "_greek" }, { 0, 0, "10x20.bdf", "10x20", 1, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "10x20.bdf", "10x20", 1, 35, BM_T, FM_C, MM_C, "32-128,$600-$6ff,$FB50-$FBB1,$FE70-$FEFF,x32-64,x91-96,x123-191,x247,x697-879,x32-$5ff", "_arabic" }, { "-y -2 -th 1 -tv 2", 0, "8x13.bdf", "8x13_1x2", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -2 -th 1 -tv 2", 0, "8x13B.bdf", "8x13B_1x2", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -x -1 -th 1 -tv 2", 0, "7x14.bdf", "7x14_1x2", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -x -1 -th 1 -tv 2", 0, "7x14B.bdf", "7x14B_1x2", 1, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { 0, 0, "siji_with_6x10.bdf", "siji", 20, 0, BM_T, FM_C, MM_C, "32-128,$e000-$ffff", "_6x10" }, { 0, 0, "tom-thumb.bdf", "tom_thumb_4x6", 24, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, 0, "tom-thumb.bdf", "tom_thumb_4x6", 24, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, /* t0 includes the following pages/language support: Greek $370-$3ff _greek Cyrillic $400-$52f _cyrillic Armenian 0530–058F Hebrew 0590–05FF Thai 0E00–0E7F Georgian 10A0–10FF Latin Extended Additional 1E00–1EFF Greek Extended 1F00–1FFF */ { 0, 0, "t0-11-uni.bdf", "t0_11", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-11-uni.bdf", "t0_11", 19, 0, BM_T, FM_C, MM_C, "$0020-$FFF0", "_all" }, { 0, 0, "t0-11b-uni.bdf", "t0_11b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-12-uni.bdf", "t0_12", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-12b-uni.bdf", "t0_12b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-13-uni.bdf", "t0_13", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-13b-uni.bdf", "t0_13b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-14-uni.bdf", "t0_14", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-14b-uni.bdf", "t0_14b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-15-uni.bdf", "t0_15", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-15b-uni.bdf", "t0_15b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-16-uni.bdf", "t0_16", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-16b-uni.bdf", "t0_16b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-17-uni.bdf", "t0_17", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-17b-uni.bdf", "t0_17b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-18-uni.bdf", "t0_18", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-18b-uni.bdf", "t0_18b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-22-uni.bdf", "t0_22", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "t0-22b-uni.bdf", "t0_22b", 19, 0, BM_T|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "open_iconic_all_1x.bdf", "open_iconic_all_1x", 22, 0, BM_T, FM_C, MM_C, "32-400", "" }, { 0, 0, "open_iconic_app_1x.bdf", "open_iconic_app_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_arrow_1x.bdf", "open_iconic_arrow_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_check_1x.bdf", "open_iconic_check_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_email_1x.bdf", "open_iconic_email_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_embedded_1x.bdf", "open_iconic_embedded_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_gui_1x.bdf", "open_iconic_gui_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_human_1x.bdf", "open_iconic_human_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_mime_1x.bdf", "open_iconic_mime_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_other_1x.bdf", "open_iconic_other_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_play_1x.bdf", "open_iconic_play_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_text_1x.bdf", "open_iconic_text_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_thing_1x.bdf", "open_iconic_thing_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_weather_1x.bdf", "open_iconic_weather_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_www_1x.bdf", "open_iconic_www_1x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { "-th 1 -tv 1", 0, "open_iconic_arrow_1x.bdf", "open_iconic_arrow_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 1 -tv 1", 0, "open_iconic_check_1x.bdf", "open_iconic_check_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 1 -tv 1", 0, "open_iconic_embedded_1x.bdf", "open_iconic_embedded_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 1 -tv 1", 0, "open_iconic_play_1x.bdf", "open_iconic_play_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 1 -tv 1", 0, "open_iconic_thing_1x.bdf", "open_iconic_thing_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 1 -tv 1", 0, "open_iconic_weather_1x.bdf", "open_iconic_weather_1x1", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { 0, 0, "open_iconic_all_2x.bdf", "open_iconic_all_2x", 22, 0, BM_T, FM_C, MM_C, "32-400", "" }, { 0, 0, "open_iconic_app_2x.bdf", "open_iconic_app_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_arrow_2x.bdf", "open_iconic_arrow_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_check_2x.bdf", "open_iconic_check_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_email_2x.bdf", "open_iconic_email_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_embedded_2x.bdf", "open_iconic_embedded_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_gui_2x.bdf", "open_iconic_gui_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_human_2x.bdf", "open_iconic_human_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_mime_2x.bdf", "open_iconic_mime_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_other_2x.bdf", "open_iconic_other_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_play_2x.bdf", "open_iconic_play_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_text_2x.bdf", "open_iconic_text_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_thing_2x.bdf", "open_iconic_thing_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_weather_2x.bdf", "open_iconic_weather_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_www_2x.bdf", "open_iconic_www_2x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { "-th 2 -tv 2", 0, "open_iconic_arrow_2x.bdf", "open_iconic_arrow_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 2 -tv 2", 0, "open_iconic_check_2x.bdf", "open_iconic_check_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 2 -tv 2", 0, "open_iconic_embedded_2x.bdf", "open_iconic_embedded_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 2 -tv 2", 0, "open_iconic_play_2x.bdf", "open_iconic_play_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 2 -tv 2", 0, "open_iconic_thing_2x.bdf", "open_iconic_thing_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 2 -tv 2", 0, "open_iconic_weather_2x.bdf", "open_iconic_weather_2x2", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { 0, 0, "open_iconic_all_4x.bdf", "open_iconic_all_4x", 22, 0, BM_T, FM_C, MM_C, "32-400", "" }, { 0, 0, "open_iconic_app_4x.bdf", "open_iconic_app_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_arrow_4x.bdf", "open_iconic_arrow_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_check_4x.bdf", "open_iconic_check_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_email_4x.bdf", "open_iconic_email_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_embedded_4x.bdf", "open_iconic_embedded_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_gui_4x.bdf", "open_iconic_gui_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_human_4x.bdf", "open_iconic_human_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_mime_4x.bdf", "open_iconic_mime_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_other_4x.bdf", "open_iconic_other_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_play_4x.bdf", "open_iconic_play_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_text_4x.bdf", "open_iconic_text_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_thing_4x.bdf", "open_iconic_thing_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_weather_4x.bdf", "open_iconic_weather_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_www_4x.bdf", "open_iconic_www_4x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { "-th 4 -tv 4", 0, "open_iconic_arrow_4x.bdf", "open_iconic_arrow_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 4 -tv 4", 0, "open_iconic_check_4x.bdf", "open_iconic_check_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 4 -tv 4", 0, "open_iconic_embedded_4x.bdf", "open_iconic_embedded_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 4 -tv 4", 0, "open_iconic_play_4x.bdf", "open_iconic_play_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 4 -tv 4", 0, "open_iconic_thing_4x.bdf", "open_iconic_thing_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 4 -tv 4", 0, "open_iconic_weather_4x.bdf", "open_iconic_weather_4x4", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { 0, 0, "open_iconic_all_6x.bdf", "open_iconic_all_6x", 22, 0, BM_T, FM_C, MM_C, "32-400", "" }, { 0, 0, "open_iconic_app_6x.bdf", "open_iconic_app_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_arrow_6x.bdf", "open_iconic_arrow_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_check_6x.bdf", "open_iconic_check_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_email_6x.bdf", "open_iconic_email_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_embedded_6x.bdf", "open_iconic_embedded_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_gui_6x.bdf", "open_iconic_gui_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_human_6x.bdf", "open_iconic_human_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_mime_6x.bdf", "open_iconic_mime_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_other_6x.bdf", "open_iconic_other_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_play_6x.bdf", "open_iconic_play_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_text_6x.bdf", "open_iconic_text_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_thing_6x.bdf", "open_iconic_thing_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_weather_6x.bdf", "open_iconic_weather_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_www_6x.bdf", "open_iconic_www_6x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_all_8x.bdf", "open_iconic_all_8x", 22, 0, BM_T, FM_C, MM_C, "32-400", "" }, { 0, 0, "open_iconic_app_8x.bdf", "open_iconic_app_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_arrow_8x.bdf", "open_iconic_arrow_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_check_8x.bdf", "open_iconic_check_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_email_8x.bdf", "open_iconic_email_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_embedded_8x.bdf", "open_iconic_embedded_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_gui_8x.bdf", "open_iconic_gui_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_human_8x.bdf", "open_iconic_human_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_mime_8x.bdf", "open_iconic_mime_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_other_8x.bdf", "open_iconic_other_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_play_8x.bdf", "open_iconic_play_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_text_8x.bdf", "open_iconic_text_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_thing_8x.bdf", "open_iconic_thing_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_weather_8x.bdf", "open_iconic_weather_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { 0, 0, "open_iconic_www_8x.bdf", "open_iconic_www_8x", 22, 0, BM_T, FM_C, MM_C, "32-300", "" }, { "-th 8 -tv 8", 0, "open_iconic_arrow_8x.bdf", "open_iconic_arrow_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 8 -tv 8", 0, "open_iconic_check_8x.bdf", "open_iconic_check_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 8 -tv 8", 0, "open_iconic_embedded_8x.bdf", "open_iconic_embedded_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 8 -tv 8", 0, "open_iconic_play_8x.bdf", "open_iconic_play_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 8 -tv 8", 0, "open_iconic_thing_8x.bdf", "open_iconic_thing_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { "-th 8 -tv 8", 0, "open_iconic_weather_8x.bdf", "open_iconic_weather_8x8", 22, 0, BM_8, FM_8, MM_C, "32-255", "" }, { 0, 0, "profont10.bdf", "profont10", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont11.bdf", "profont11", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont12.bdf", "profont12", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont15.bdf", "profont15", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont17.bdf", "profont17", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont22.bdf", "profont22", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "profont29.bdf", "profont29", 4, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { "-y 0 -th 2 -tv 3", 0, "profont29.bdf", "profont29_2x3", 4, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, /* Persian */ { 0, "-a -r 72 -p 10", "Samim.ttf", "samim_10", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 12", "Samim.ttf", "samim_12", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 14", "Samim.ttf", "samim_14", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 16", "Samim.ttf", "samim_16", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 10", "Samim-FD.ttf", "samim_fd_10", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 12", "Samim-FD.ttf", "samim_fd_12", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 14", "Samim-FD.ttf", "samim_fd_14", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-a -r 72 -p 16", "Samim-FD.ttf", "samim_fd_16", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 10", "GanjNamehSans-Regular.ttf", "ganj_nameh_sans10", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 12", "GanjNamehSans-Regular.ttf", "ganj_nameh_sans12", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 14", "GanjNamehSans-Regular.ttf", "ganj_nameh_sans14", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 16", "GanjNamehSans-Regular.ttf", "ganj_nameh_sans16", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 8", "IranianSansRegular.ttf", "iranian_sans_8", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 10", "IranianSansRegular.ttf", "iranian_sans_10", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 12", "IranianSansRegular.ttf", "iranian_sans_12", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 14", "IranianSansRegular.ttf", "iranian_sans_14", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, { 0, "-r 72 -p 16", "IranianSansRegular.ttf", "iranian_sans_16", 23, 0, BM_T, FM_C, MM_C, "32-65500", "_all" }, /* NBP */ { 0, "-r 72 -p 16", "MOZART_0.ttf", "mozart_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "MOZART_0.ttf", "mozart_nbp", 18, 0, BM_T|BM_H, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "glasstown_nbp.ttf", "glasstown_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "glasstown_nbp.ttf", "glasstown_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "shylock_nbp.ttf", "shylock_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "shylock_nbp.ttf", "shylock_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "RENT_0.ttf", "roentgen_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "RENT_0.ttf", "roentgen_nbp", 18, 0, BM_T|BM_H, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "CALIBRATE1.ttf", "calibration_gothic_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "CALIBRATE1.ttf", "calibration_gothic_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "smart_patrol_nbp.ttf", "smart_patrol_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "prospero_bold_nbp.ttf", "prospero_bold_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "prospero_nbp.ttf", "prospero_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "BALRG_0.ttf", "balthasar_regular_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 32", "BALTT_0.ttf", "balthasar_titling_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "synchronizer_nbp.ttf", "synchronizer_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "mercutio_basic.ttf", "mercutio_basic_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "mercutio_basic.ttf", "mercutio_basic_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "mercutio_sc.ttf", "mercutio_sc_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "mercutio_sc.ttf", "mercutio_sc_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "MIRANDA.ttf", "miranda_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "nine0.ttf", "nine_by_five_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "nine0.ttf", "nine_by_five_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "ROSEN_0.ttf", "rosencrantz_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "ROSEN_0.ttf", "rosencrantz_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "GUILD_0.ttf", "guildenstern_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "GUILD_0.ttf", "guildenstern_nbp", 18, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "astra0.ttf", "astragal_nbp", 18, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, /* Extant, 25 */ { 0, "-r 72 -p 16", "HabsburgChancery.ttf", "habsburgchancery", 25, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "HabsburgChancery.ttf", "habsburgchancery", 25, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "MissingPlanet.ttf", "missingplanet", 25, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "MissingPlanet.ttf", "missingplanet", 25, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "OrdinaryBasis.ttf", "ordinarybasis", 25, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "OrdinaryBasis.ttf", "ordinarybasis", 25, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "PixelMordred.ttf", "pixelmordred", 25, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "PixelMordred.ttf", "pixelmordred", 25, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "SecretaryHand.ttf", "secretaryhand", 25, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "SecretaryHand.ttf", "secretaryhand", 25, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, /* MistressEllipsis, 26 */ { 0, "-r 72 -p 16", "Beanstalk.ttf", "beanstalk_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "Cube.ttf", "cube_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "Mademoiselle.ttf", "mademoiselle_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "PieceOfCake.ttf", "pieceofcake_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "Press.ttf", "press_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "RePress.ttf", "repress_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "Sticker.ttf", "sticker_mel", 26, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, /* JayWright, 27 */ { 0, "-r 72 -p 16", "CelibateMonk.ttf", "celibatemonk", 27, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "DisrespectfulTeenager.ttf", "disrespectfulteenager", 27, 0, BM_T, FM_C, MM_U, "", "" }, { 0, "-r 72 -p 16", "MichaelMouse.ttf", "michaelmouse", 27, 0, BM_T, FM_C, MM_U, "", "" }, { 0, "-r 72 -p 16", "SandyForest.ttf", "sandyforest", 27, 0, BM_T, FM_C, MM_R|MM_U|MM_N, "", "" }, /* Angel, 28 */ { 0, "-r 72 -p 16", "CupcakeMeToYourLeader.ttf", "cupcakemetoyourleader", 28, 0, BM_T, FM_C, MM_R|MM_U|MM_N, "", "" }, { 0, "-r 72 -p 16", "OldWizard.ttf", "oldwizard", 28, 0, BM_T, FM_C, MM_F|MM_R|MM_U|MM_N, "", "" }, { 0, "-r 72 -p 16", "Squirrel.ttf", "squirrel", 28, 0, BM_T, FM_C, MM_R|MM_U|MM_N, "", "" }, /* JosephKnightcom, 29 */ { 0, "-r 72 -p 16", "DiodeSemiMono.ttf", "diodesemimono", 29, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "Questgiver.ttf", "questgiver", 29, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "Seraphimb1.ttf", "seraphimb1", 29, 0, BM_T, FM_C, MM_R, "", "" }, /* ChristinaAntoinetteNeofotistou, 30 */ { 0, "-r 72 -p 16", "JinxedWizards.ttf", "jinxedwizards", 30, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "LastPriestess.ttf", "lastpriestess", 30, 0, BM_T, FM_C, MM_U|MM_R, "", "" }, /* Geoff, 31 */ { 0, "-r 72 -p 16", "BitCasual.ttf", "bitcasual", 31, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "BitCasual.ttf", "bitcasual", 31, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "Koleeko.ttf", "koleeko", 31, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TenFatGuys.ttf", "tenfatguys", 31, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TenFatGuys.ttf", "tenfatguys", 31, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "TenStamps.ttf", "tenstamps", 31, 0, BM_M, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TenThinGuys.ttf", "tenthinguys", 31, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TenThinGuys.ttf", "tenthinguys", 31, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "TenThinnerGuys.ttf", "tenthinnerguys", 31, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TenThinnerGuys.ttf", "tenthinnerguys", 31, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "TwelveDings.ttf", "twelvedings", 31, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, /* tulamide, 32 */ { 0, "-r 72 -p 16", "Fewture.ttf", "fewture", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "Halftone.ttf", "halftone", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "Nerhoe.ttf", "nerhoe", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "Oskool.ttf", "oskool", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TinyTim.ttf", "tinytim", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "TooseOrnament.ttf", "tooseornament", 32, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, /* GilesBooth, 33*/ { 0, "-r 72 -p 16", "Bauhaus2015.ttf", "bauhaus2015", 33, 0, BM_T, FM_C, MM_N|MM_R, "", "" }, { 0, "-r 72 -p 16", "FindersKeepers.ttf", "finderskeepers", 33, 0, BM_T, FM_C, MM_N|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "SirClivetheBold.ttf", "sirclivethebold", 33, 0, BM_T, FM_C, MM_N|MM_R, "", "" }, { 0, "-r 72 -p 16", "SirClive.ttf", "sirclive", 33, 0, BM_T, FM_C, MM_N|MM_R, "", "" }, /* bm2, 34*/ { 0, "-r 72 -p 16", "Adventurer.ttf", "adventurer", 34, 0, BM_T, FM_C, MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "Adventurer.ttf", "adventurer", 34, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "BracketedBabies.ttf", "bracketedbabies", 34, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "Frikativ.ttf", "frikativ", 34, 0, BM_T, FM_C, MM_F|MM_R, "", "" }, { 0, "-r 72 -p 16", "Frikativ.ttf", "frikativ", 34, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "FancyPixels.ttf", "fancypixels", 34, 0, BM_T, FM_C, MM_F|MM_R, "", "" }, { 0, "-r 72 -p 16", "HEAVYBOTTOM.ttf", "heavybottom", 34, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "IconQuadPix.ttf", "iconquadpix", 34, 0, BM_M, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "LastApprenticeBold.ttf", "lastapprenticebold", 34, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "LastApprenticeThin.ttf", "lastapprenticethin", 34, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "Tallpix.ttf", "tallpix", 34, 0, BM_T, FM_C, MM_R, "", "" }, /* JapanYoshi, 35*/ { 0, "-r 72 -p 16", "BBSesque.ttf", "BBSesque", 35, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "Born2bSportySlab.ttf", "Born2bSportySlab", 35, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "Born2bSportySlab.ttf", "Born2bSportySlab", 35, 0, BM_T, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "Born2bSportyV2.ttf", "Born2bSportyV2", 35, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "CursivePixel.ttf", "CursivePixel", 35, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "Engrish.ttf", "Engrish", 35, 0, BM_T, FM_C, MM_F|MM_R, "", "" }, { 0, "-r 72 -p 16", "ImpactBits.ttf", "ImpactBits", 35, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "IPAandRUSLCD.ttf", "IPAandRUSLCD", 35, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, /* Pentacom, 36*/ { 0, "-r 72 -p 16", "HelvetiPixel.ttf", "HelvetiPixel", 36, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "TimesNewPixel.ttf", "TimesNewPixel", 36, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "BitTypeWriter.ttf", "BitTypeWriter", 36, 0, BM_T, FM_C, MM_R |MM_E, "", "" }, { 0, "-r 72 -p 16", "Georgia7px.ttf", "Georgia7px", 36, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "Wizzard.ttf", "Wizzard", 36, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "HelvetiPixelOutline.ttf", "HelvetiPixelOutline", 36, 0, BM_T, FM_C, MM_R|MM_E, "", "" }, { 0, "-r 72 -p 16", "Untitled16PixelSansSerifBitmapTestFont.ttf", "Untitled16PixelSansSerifBitmap", 36, 0, BM_T, FM_C, MM_R, "", "" }, //#endif /* TMP */ /* dafont, 37*/ { 0, "-r 72 -p 8", "nokiafc22.ttf", "nokiafc22", 37, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-a -r 72 -p 20", "VCR_OSD_MONO_1.001.ttf", "VCR_OSD", 37, 0, BM_T|BM_M, FM_C, MM_N|MM_U|MM_R|MM_F, "", "" }, { 0, "-r 72 -p 16", "Pixellari.ttf", "Pixellari", 37, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 10", "pixelpoiiz.ttf", "pixelpoiiz", 37, 0, BM_T, FM_C, MM_R, "", "" }, { 0, "-r 72 -p 16", "DigitalDisco-Thin.ttf", "DigitalDiscoThin", 37, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "DigitalDisco.ttf", "DigitalDisco", 37, 0, BM_T, FM_C, MM_N|MM_U|MM_R|MM_F|MM_E, "", "" }, { 0, "-r 72 -p 16", "pearfont.ttf", "pearfont", 37, 0, BM_T, FM_C, MM_R, "", "" }, //#ifdef TMP /* thai fonts are not unicode encoded, so map the thai chars to their correct unicode position 128-255>3552 */ { 0, 0, "etl14-thai.bdf", "etl14thai", 17, 0, BM_T, FM_C, MM_C, "32-127,128-255>3552", "" }, { 0, 0, "etl16-thai.bdf", "etl16thai", 17, 0, BM_T, FM_C, MM_C, "32-127,128-255>3552", "" }, { 0, 0, "etl24-thai.bdf", "etl24thai", 17, 0, BM_T, FM_C, MM_C, "32-127,128-255>3552", "" }, /* crox fonts are CP1251 encoded */ { 0, 0, "win_crox1cb.bdf", "crox1cb", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox1c.bdf", "crox1c", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox1hb.bdf", "crox1hb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox1h.bdf", "crox1h", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox1tb.bdf", "crox1tb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox1t.bdf", "crox1t", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2cb.bdf", "crox2cb", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2c.bdf", "crox2c", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2hb.bdf", "crox2hb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2h.bdf", "crox2h", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2tb.bdf", "crox2tb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox2t.bdf", "crox2t", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3cb.bdf", "crox3cb", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3c.bdf", "crox3c", 15,0,BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3hb.bdf", "crox3hb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3h.bdf", "crox3h", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3tb.bdf", "crox3tb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox3t.bdf", "crox3t", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox4hb.bdf", "crox4hb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox4h.bdf", "crox4h", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox4tb.bdf", "crox4tb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox4t.bdf", "crox4t", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox5hb.bdf", "crox5hb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox5h.bdf", "crox5h", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox5tb.bdf", "crox5tb", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "win_crox5t.bdf", "crox5t", 15,0,BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T|BM_H|BM_M, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T|BM_H, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T, FM_C, MM_C, "32-128,$370-$3ff", "_greek" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T, FM_C, MM_C, "32-128,$f00-$fff", "_tibetan" }, { 0, 0, "cu12.bdf", "cu12", 3, 0, BM_T, FM_C, MM_C, "32-128,$590-$5ff,$fb1d-$fb4f", "_hebrew" }, { 0, 0, "cu12.bdf", "cu12", 3, 35, BM_T, FM_C, MM_C, "32-128,$600-$6ff,$FB50-$FBB1,$FE70-$FEFF,x32-64,x91-96,x123-191,x247,x697-879,x32-$5ff", "_arabic" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_R|MM_F|MM_E, "", "" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-255", "_latin" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-701", "_extended" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "9216-9471", "_72_73" }, // takeover from u8glib { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,9216-9471", "_0_72_73" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "9600-9727", "_75" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,9600-9727", "_0_75" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "9728-9855", "_76" }, // takeover from u8glib { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,9728-9855", "_0_76" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "9856-9983", "_77" }, // takeover from u8glib { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,9856-9983", "_0_77" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "9984-10240", "_78_79" }, // takeover from u8glib { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,9984-10240", "_0_78_79" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "11008-11135", "_86" }, // takeover from u8glib { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,11008-11135", "_0_86" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$370-$3ff", "_greek" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$590-$5ff,$fb1d-$fb4f", "_hebrew" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$980-$9ff", "_bengali" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$f00-$fff", "_tibetan" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$600-$6ff,$750-$77f,$fb50-$fdff,$fe70-$feff", "_urdu" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-127,$104-$107,$118-$119,$141-$144,$15a-$15b,$179-$17c,$d3,$f3", "_polish" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "32-128,$900-$97f,$1cd0-$1cff,$a8e0-$a8ff", "_devanagari" }, /* Hindi, issue 584 */ { 0, 0, "unifont.bdf", "unifont", 6, 35, BM_T, FM_C, MM_C, "32-128,$600-$6ff,$FB50-$FBB1,$FE70-$FEFF,x32-64,x91-96,x123-191,x247,x697-879,x32-$5ff", "_arabic" }, /* $20a0-$20bf currency symbols $2103 Circle C- $2109 Circle F $2126 Ohm $2190-$21bb single arrow $21d0-$21d9 double arrow $21e6-$21e9 double arrow $23e9-$23fa music player symbols $2580-$261f various symbols $2654-$2667 chess and cards $2680-$2685 dice $2713-$2718 yes/no $274f-$2752 3d box $1f600-$1f64f emoticons */ { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T|BM_H, FM_C, MM_C, "32-255,$20a0-$20bf,$2103,$2109,$2126,$2190-$21bb,$21d0-$21d9,$21e6-$21e9,$23e9-$23fa,$2580-$261f,$2654-$2667,$2680-$2685,$2713-$2718,$274f-$2752", "_symbols" }, { 0, 0, "unifont_upper.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "$01f600-$01f64f>$20, $01f910-$01f92f>$70, $01f970-$01f971>$90, $01f973-$01f976>$92,$01f97a>$96, $01f9b8-$01f9b9>$97, $01f9d0-$01f9d6>$99", "_emoticons" }, { 0, 0, "unifont_upper.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "$01f400-$01f43f>$20,$01f980-$01f9af>$60", "_animals" }, { 0, 0, "unifont_upper.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "$01f030-$01f093>$20", "_domino" }, { 0, 0, "unifont_upper.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "$01f0a0-$01f0f5>$20", "_cards" }, { 0, 0, "unifont_upper.bdf", "unifont", 6, 0, BM_T, FM_C, MM_C, "$01f310-$01f32c>$20", "_weather" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "chinese3.map", "_chinese3" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "korean1.map", "_korean1" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "korean2.map", "_korean2" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "vietnamese1.map", "_vietnamese1" }, { 0, 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "vietnamese2.map", "_vietnamese2" }, { 0, 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese1.map", "_1" }, { 0, 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese2.map", "_2" }, { 0, 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese3.map", "_3" }, { 0, 0, "gb24st.bdf", "gb24st", 13, 0, BM_T, FM_C, MM_M, "chinese1.map", "_1" }, { 0, 0, "gb24st.bdf", "gb24st", 13, 0, BM_T, FM_C, MM_M, "chinese2.map", "_2" }, { 0, 0, "gb24st.bdf", "gb24st", 13, 0, BM_T, FM_C, MM_M, "chinese3.map", "_3" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese3" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "gb2312.map", "_gb2312" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "gb2312a.map", "_gb2312a" }, { 0, 0, "wenquanyi_9pt.bdf", "wqy12", 21, 0, BM_T, FM_C, MM_M, "gb2312b.map", "_gb2312b" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese3" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "gb2312.map", "_gb2312" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "gb2312a.map", "_gb2312a" }, { 0, 0, "wenquanyi_10pt.bdf", "wqy13", 21, 0, BM_T, FM_C, MM_M, "gb2312b.map", "_gb2312b" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese3" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "gb2312.map", "_gb2312" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "gb2312a.map", "_gb2312a" }, { 0, 0, "wenquanyi_13px.bdf", "wqy14", 21, 0, BM_T, FM_C, MM_M, "gb2312b.map", "_gb2312b" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese3" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "gb2312.map", "_gb2312" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "gb2312a.map", "_gb2312a" }, { 0, 0, "wenquanyi_11pt.bdf", "wqy15", 21, 0, BM_T, FM_C, MM_M, "gb2312b.map", "_gb2312b" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "chinese1.map", "_chinese1" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese3" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "gb2312.map", "_gb2312" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "gb2312a.map", "_gb2312a" }, { 0, 0, "wenquanyi_12pt.bdf", "wqy16", 21, 0, BM_T, FM_C, MM_M, "gb2312b.map", "_gb2312b" }, { 0, 0, "b10.bdf", "b10", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b10.bdf", "b10", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, //#ifdef TMP { 0, 0, "b10_b.bdf", "b10_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b10_b.bdf", "b10_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "f10.bdf", "f10", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f10.bdf", "f10", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "f10_b.bdf", "f10_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f10_b.bdf", "f10_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b12.bdf", "b12", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b12.bdf", "b12", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b12.bdf", "b12", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, { 0, 0, "b12_b.bdf", "b12_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b12_b.bdf", "b12_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b12_b.bdf", "b12_b", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, /* does not work, error in bdf { 0, 0, "b14.bdf", "b14", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b14.bdf", "b14", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b14.bdf", "b14", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, { 0, 0, "b14_b.bdf", "b14_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b14_b.bdf", "b14_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b14_b.bdf", "b14_b", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, */ { 0, 0, "f12.bdf", "f12", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f12.bdf", "f12", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "f12_b.bdf", "f12_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f12_b.bdf", "f12_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b16.bdf", "b16", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b16.bdf", "b16", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b16.bdf", "b16", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, { 0, 0, "b16_b.bdf", "b16_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "b16_b.bdf", "b16_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "b16_b.bdf", "b16_b", 16, 0, BM_T, FM_C, MM_M, "japanese3.map", "_japanese3" }, { 0, 0, "f16.bdf", "f16", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f16.bdf", "f16", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "f16_b.bdf", "f16_b", 16, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, { 0, 0, "f16_b.bdf", "f16_b", 16, 0, BM_T, FM_C, MM_M, "japanese2.map", "_japanese2" }, { 0, 0, "ArtosSans-8.bdf", "artossans8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "ArtosSerif-8.bdf", "artosserif8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "Chroma48Medium-8.bdf", "chroma48medium8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, /* no lowercase */ { 0, 0, "SaikyoSansBold-8.bdf", "saikyosansbold8", 7, 0, BM_8, FM_C|FM_8, MM_U|MM_N, "" , ""}, { 0, 0, "TorusSansBold-8.bdf", "torussansbold8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "VictoriaBold-8.bdf", "victoriabold8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "VictoriaMedium-8.bdf", "victoriamedium8", 7, 0, BM_8, FM_C|FM_8, MM_R|MM_U|MM_N, "" , ""}, { 0, 0, "courB08.bdf", "courB08", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courB10.bdf", "courB10", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courB12.bdf", "courB12", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courB14.bdf", "courB14", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courB18.bdf", "courB18", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courB24.bdf", "courB24", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR08.bdf", "courR08", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR10.bdf", "courR10", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR12.bdf", "courR12", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR14.bdf", "courR14", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR18.bdf", "courR18", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "courR24.bdf", "courR24", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { "-y -1 -th 2 -tv 3", 0, "courB18.bdf", "courB18_2x3", 5, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -th 2 -tv 3", 0, "courR18.bdf", "courR18_2x3", 5, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -2 -th 3 -tv 4", 0, "courB24.bdf", "courB24_3x4", 5, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -2 -th 3 -tv 4", 0, "courR24.bdf", "courR24_3x4", 5, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { 0, 0, "helvB08.bdf", "helvB08", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvB10.bdf", "helvB10", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvB12.bdf", "helvB12", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvB14.bdf", "helvB14", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvB18.bdf", "helvB18", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvB24.bdf", "helvB24", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR08.bdf", "helvR08", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR10.bdf", "helvR10", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR12.bdf", "helvR12", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR14.bdf", "helvR14", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR18.bdf", "helvR18", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "helvR24.bdf", "helvR24", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB08.bdf", "ncenB08", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB10.bdf", "ncenB10", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB12.bdf", "ncenB12", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB14.bdf", "ncenB14", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB18.bdf", "ncenB18", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenB24.bdf", "ncenB24", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR08.bdf", "ncenR08", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR10.bdf", "ncenR10", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR12.bdf", "ncenR12", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR14.bdf", "ncenR14", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR18.bdf", "ncenR18", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "ncenR24.bdf", "ncenR24", 5, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB08.bdf", "timB08", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB10.bdf", "timB10", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB12.bdf", "timB12", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB14.bdf", "timB14", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB18.bdf", "timB18", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timB24.bdf", "timB24", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR08.bdf", "timR08", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR10.bdf", "timR10", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR12.bdf", "timR12", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR14.bdf", "timR14", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR18.bdf", "timR18", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "timR24.bdf", "timR24", 5, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, 0, "lubB08.bdf", "lubB08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB10.bdf", "lubB10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB12.bdf", "lubB12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB14.bdf", "lubB14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB18.bdf", "lubB18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB19.bdf", "lubB19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubB24.bdf", "lubB24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI08.bdf", "lubBI08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI10.bdf", "lubBI10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI12.bdf", "lubBI12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI14.bdf", "lubBI14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI18.bdf", "lubBI18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI19.bdf", "lubBI19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubBI24.bdf", "lubBI24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI08.bdf", "lubI08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI10.bdf", "lubI10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI12.bdf", "lubI12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI14.bdf", "lubI14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI18.bdf", "lubI18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI19.bdf", "lubI19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubI24.bdf", "lubI24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS08.bdf", "luBIS08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS10.bdf", "luBIS10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS12.bdf", "luBIS12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS14.bdf", "luBIS14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS18.bdf", "luBIS18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS19.bdf", "luBIS19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBIS24.bdf", "luBIS24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR08.bdf", "lubR08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR10.bdf", "lubR10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR12.bdf", "lubR12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR14.bdf", "lubR14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR18.bdf", "lubR18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR19.bdf", "lubR19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "lubR24.bdf", "lubR24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS08.bdf", "luBS08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS10.bdf", "luBS10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS12.bdf", "luBS12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS14.bdf", "luBS14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS18.bdf", "luBS18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS19.bdf", "luBS19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luBS24.bdf", "luBS24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS08.bdf", "luIS08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS10.bdf", "luIS10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS12.bdf", "luIS12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS14.bdf", "luIS14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS18.bdf", "luIS18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS19.bdf", "luIS19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luIS24.bdf", "luIS24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS08.bdf", "luRS08", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS10.bdf", "luRS10", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS12.bdf", "luRS12", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS14.bdf", "luRS14", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS18.bdf", "luRS18", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS19.bdf", "luRS19", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, { 0, 0, "luRS24.bdf", "luRS24", 38, 0, BM_T, FM_C, MM_F|MM_R|MM_N|MM_E, "", "" }, /* Adobe symb skipped... */ { 0, "-r 72 -p 8", "baby.ttf", "baby", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "blipfest_07.ttf", "blipfest_07", 2, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "chikita.ttf", "chikita", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "lucasfont_alternate.ttf", "lucasfont_alternate",2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "p01type.ttf", "p01type", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "pixelle_micro.ttf", "pixelle_micro", 2, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "robot_de_niro.ttf", "robot_de_niro", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 8", "trixel_square.ttf", "trixel_square", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "haxrcorp4089.ttf", "haxrcorp4089", 2, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "haxrcorp4089.ttf", "haxrcorp4089", 2, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-r 72 -p 24", "bubble.ttf", "bubble", 2, 0, BM_T, FM_C, MM_R|MM_N, "", "" }, { 0, "-r 72 -p 36", "cardimon-pixel.ttf", "cardimon_pixel", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 32", "maniac.ttf", "maniac", 2, 0, BM_T, FM_C, MM_E|MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 32", "lucasarts-scumm-subtitle-roman-outline.ttf", "lucasarts_scumm_subtitle_o", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-r 72 -p 16", "lucasarts-scumm-subtitle-roman.ttf", "lucasarts_scumm_subtitle_r", 2, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { "-y 1 -th 2 -tv 2", "-r 72 -p 32", "lucasarts-scumm-subtitle-roman-outline.ttf", "lucasarts_scumm_subtitle_o_2x2", 2, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y 0 -th 2 -tv 2", "-r 72 -p 16", "lucasarts-scumm-subtitle-roman.ttf", "lucasarts_scumm_subtitle_r_2x2", 2, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, /* Free Universal Bold ./do_fontsize_a_v2.sh 16 ../ttf/fu/FreeUniversal-Bold.ttf fub11 ./do_fontsize_a_v2.sh 20 ../ttf/fu/FreeUniversal-Bold.ttf fub14 ./do_fontsize_a_v2.sh 23 ../ttf/fu/FreeUniversal-Bold.ttf fub17 ./do_fontsize_a_v2.sh 27 ../ttf/fu/FreeUniversal-Bold.ttf fub20 ./do_fontsize_a_v2.sh 34 ../ttf/fu/FreeUniversal-Bold.ttf fub25 ./do_fontsize_a_v2.sh 40 ../ttf/fu/FreeUniversal-Bold.ttf fub30 ./do_fontsize_a_v2.sh 49 ../ttf/fu/FreeUniversal-Bold.ttf fub35 ./do_fontsize_a_v2.sh 58 ../ttf/fu/FreeUniversal-Bold.ttf fub42 ./do_fontsize_a_v2.sh 68 ../ttf/fu/FreeUniversal-Bold.ttf fub49 */ { 0, "-a -r 72 -p 16", "FreeUniversal-Bold.ttf", "fub11", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 20", "FreeUniversal-Bold.ttf", "fub14", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 23", "FreeUniversal-Bold.ttf", "fub17", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 27", "FreeUniversal-Bold.ttf", "fub20", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 34", "FreeUniversal-Bold.ttf", "fub25", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 40", "FreeUniversal-Bold.ttf", "fub30", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 49", "FreeUniversal-Bold.ttf", "fub35", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 58", "FreeUniversal-Bold.ttf", "fub42", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 68", "FreeUniversal-Bold.ttf", "fub49", 8, 0, BM_T, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 16", "FreeUniversal-Bold.ttf", "fub11", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 20", "FreeUniversal-Bold.ttf", "fub14", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 23", "FreeUniversal-Bold.ttf", "fub17", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 27", "FreeUniversal-Bold.ttf", "fub20", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 34", "FreeUniversal-Bold.ttf", "fub25", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 40", "FreeUniversal-Bold.ttf", "fub30", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 49", "FreeUniversal-Bold.ttf", "fub35", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 58", "FreeUniversal-Bold.ttf", "fub42", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2031-$3000", "_symbol" }, // per mill sign does not fit { 0, "-a -r 72 -p 68", "FreeUniversal-Bold.ttf", "fub49", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2031-$3000", "_symbol" }, // per mill sign does not fit /* Free Universal Regular ./do_fontsize_a_v2.sh 15 ../ttf/fu/FreeUniversal-Regular.ttf fur11 ./do_fontsize_a_v2.sh 19 ../ttf/fu/FreeUniversal-Regular.ttf fur14 ./do_fontsize_a_v2.sh 23 ../ttf/fu/FreeUniversal-Regular.ttf fur17 ./do_fontsize_a_v2.sh 28 ../ttf/fu/FreeUniversal-Regular.ttf fur20 ./do_fontsize_a_v2.sh 34 ../ttf/fu/FreeUniversal-Regular.ttf fur25 ./do_fontsize_a_v2.sh 40 ../ttf/fu/FreeUniversal-Regular.ttf fur30 ./do_fontsize_a_v2.sh 48 ../ttf/fu/FreeUniversal-Regular.ttf fur35 ./do_fontsize_a_v2.sh 58 ../ttf/fu/FreeUniversal-Regular.ttf fur42 ./do_fontsize_a_v2.sh 68 ../ttf/fu/FreeUniversal-Regular.ttf fur49 */ { 0, "-a -r 72 -p 15", "FreeUniversal-Regular.ttf", "fur11", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 19", "FreeUniversal-Regular.ttf", "fur14", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 23", "FreeUniversal-Regular.ttf", "fur17", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 28", "FreeUniversal-Regular.ttf", "fur20", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 34", "FreeUniversal-Regular.ttf", "fur25", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 40", "FreeUniversal-Regular.ttf", "fur30", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 48", "FreeUniversal-Regular.ttf", "fur35", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 58", "FreeUniversal-Regular.ttf", "fur42", 8, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 68", "FreeUniversal-Regular.ttf", "fur49", 8, 0, BM_T, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 16", "FreeUniversal-Regular.ttf", "fur11", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 19", "FreeUniversal-Regular.ttf", "fur14", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 23", "FreeUniversal-Regular.ttf", "fur17", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 28", "FreeUniversal-Regular.ttf", "fur20", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 34", "FreeUniversal-Regular.ttf", "fur25", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 40", "FreeUniversal-Regular.ttf", "fur30", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 48", "FreeUniversal-Regular.ttf", "fur35", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2030-$3000", "_symbol" }, { 0, "-a -r 72 -p 58", "FreeUniversal-Regular.ttf", "fur42", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2031-$3000", "_symbol" }, // per mill sign does not fit { 0, "-a -r 72 -p 68", "FreeUniversal-Regular.ttf", "fur49", 8, 0, BM_T, FM_C, MM_C, "32,35-57,$300-$3ff,$2031-$3000", "_symbol" }, // per mill sign does not fit /* ./do_fontsize_a_v2.sh 25 ../ttf/os/OldStandard-Bold.ttf osb18 ./do_fontsize_a_v2.sh 28 ../ttf/os/OldStandard-Bold.ttf osb21 ./do_fontsize_a_v2.sh 34 ../ttf/os/OldStandard-Bold.ttf osb26 ./do_fontsize_a_v2.sh 38 ../ttf/os/OldStandard-Bold.ttf osb29 ./do_fontsize_a_v2.sh 48 ../ttf/os/OldStandard-Bold.ttf osb35 ./do_fontsize_a_v2.sh 55 ../ttf/os/OldStandard-Bold.ttf osb41 */ /* bugfix 14 Jul 2017, this is the old (and wrong) code: { 0, "-a -r 72 -p 25", "OldStandard-Regular.ttf", "osb18", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 28", "OldStandard-Regular.ttf", "osb21", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 34", "OldStandard-Regular.ttf", "osb26", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 38", "OldStandard-Regular.ttf", "osb29", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 48", "OldStandard-Regular.ttf", "osb35", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 55", "OldStandard-Regular.ttf", "osb41", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, */ { 0, "-a -r 72 -p 25", "OldStandard-Bold.ttf", "osb18", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 28", "OldStandard-Bold.ttf", "osb21", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 34", "OldStandard-Bold.ttf", "osb26", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 38", "OldStandard-Bold.ttf", "osb29", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 48", "OldStandard-Bold.ttf", "osb35", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 55", "OldStandard-Bold.ttf", "osb41", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, /* ./do_fontsize_a_v2.sh 26 ../ttf/os/OldStandard-Regular.ttf osr18 ./do_fontsize_a_v2.sh 29 ../ttf/os/OldStandard-Regular.ttf osr21 ./do_fontsize_a_v2.sh 36 ../ttf/os/OldStandard-Regular.ttf osr26 ./do_fontsize_a_v2.sh 41 ../ttf/os/OldStandard-Regular.ttf osr29 ./do_fontsize_a_v2.sh 49 ../ttf/os/OldStandard-Regular.ttf osr35 ./do_fontsize_a_v2.sh 57 ../ttf/os/OldStandard-Regular.ttf osr41 */ { 0, "-a -r 72 -p 26", "OldStandard-Regular.ttf", "osr18", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 29", "OldStandard-Regular.ttf", "osr21", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 36", "OldStandard-Regular.ttf", "osr26", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 41", "OldStandard-Regular.ttf", "osr29", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 49", "OldStandard-Regular.ttf", "osr35", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 57", "OldStandard-Regular.ttf", "osr41", 9, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, /* inconsolata ./do_fontsize_a_mono_v2.sh 22 ../ttf/in/inr.otf inr16 ./do_fontsize_a_mono_v2.sh 26 ../ttf/in/inr.otf inr19 ./do_fontsize_a_mono_v2.sh 30 ../ttf/in/inr.otf inr21 ./do_fontsize_a_mono_v2.sh 33 ../ttf/in/inr.otf inr24 ./do_fontsize_a_mono_v2.sh 36 ../ttf/in/inr.otf inr27 ./do_fontsize_a_mono_v2.sh 40 ../ttf/in/inr.otf inr30 ./do_fontsize_a_mono_v2.sh 44 ../ttf/in/inr.otf inr33 ./do_fontsize_a_mono_v2.sh 51 ../ttf/in/inr.otf inr38 ./do_fontsize_a_mono_v2.sh 57 ../ttf/in/inr.otf inr42 ./do_fontsize_a_mono_v2.sh 62 ../ttf/in/inr.otf inr46 ./do_fontsize_a_mono_v2.sh 67 ../ttf/in/inr.otf inr49 ./do_fontsize_a_mono_v2.sh 72 ../ttf/in/inr.otf inr53 ./do_fontsize_a_mono_v2.sh 78 ../ttf/in/inr.otf inr57 ./do_fontsize_a_mono_v2.sh 82 ../ttf/in/inr.otf inr62 */ { 0, "-a -r 72 -p 22", "inr.otf", "inr16", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 26", "inr.otf", "inr19", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 30", "inr.otf", "inr21", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 33", "inr.otf", "inr24", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 33", "inr.otf", "inr24", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 36", "inr.otf", "inr27", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 36", "inr.otf", "inr27", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 40", "inr.otf", "inr30", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 40", "inr.otf", "inr30", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 44", "inr.otf", "inr33", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 44", "inr.otf", "inr33", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 51", "inr.otf", "inr38", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 51", "inr.otf", "inr38", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 57", "inr.otf", "inr42", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 57", "inr.otf", "inr42", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 62", "inr.otf", "inr46", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 62", "inr.otf", "inr46", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 67", "inr.otf", "inr49", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 67", "inr.otf", "inr49", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 72", "inr.otf", "inr53", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 72", "inr.otf", "inr53", 11, 0, BM_T, FM_C, MM_C, "32-128,$400-$52f", "_cyrillic" }, { 0, "-a -r 72 -p 78", "inr.otf", "inr57", 11, 0, BM_M, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 82", "inr.otf", "inr62", 11, 0, BM_M, FM_C, MM_N, "", "" }, { "-y -1 -x 1 -th 2 -tv 4", "-a -r 72 -p 30", "inr.otf", "inr21_2x4", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -x 2 -th 3 -tv 6", "-a -r 72 -p 44", "inr.otf", "inr33_3x6", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y 0 -x 3 -th 4 -tv 8", "-a -r 72 -p 62", "inr.otf", "inr46_4x8", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, /* ./do_fontsize_a_mono_v2.sh 22 ../ttf/in/inb.otf inb16 ./do_fontsize_a_mono_v2.sh 25 ../ttf/in/inb.otf inb19 ./do_fontsize_a_mono_v2.sh 30 ../ttf/in/inb.otf inb21 ./do_fontsize_a_mono_v2.sh 33 ../ttf/in/inb.otf inb24 ./do_fontsize_a_mono_v2.sh 36 ../ttf/in/inb.otf inb27 ./do_fontsize_a_mono_v2.sh 40 ../ttf/in/inb.otf inb30 ./do_fontsize_a_mono_v2.sh 44 ../ttf/in/inb.otf inb33 ./do_fontsize_a_mono_v2.sh 51 ../ttf/in/inb.otf inb38 ./do_fontsize_a_mono_v2.sh 57 ../ttf/in/inb.otf inb42 ./do_fontsize_a_mono_v2.sh 62 ../ttf/in/inb.otf inb46 ./do_fontsize_a_mono_v2.sh 66 ../ttf/in/inb.otf inb49 ./do_fontsize_a_mono_v2.sh 71 ../ttf/in/inb.otf inb53 ./do_fontsize_a_mono_v2.sh 78 ../ttf/in/inb.otf inb57 ./do_fontsize_a_mono_v2.sh 84 ../ttf/in/inb.otf inb63 */ { 0, "-a -r 72 -p 22", "inb.otf", "inb16", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 25", "inb.otf", "inb19", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 30", "inb.otf", "inb21", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 33", "inb.otf", "inb24", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 36", "inb.otf", "inb27", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 40", "inb.otf", "inb30", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 44", "inb.otf", "inb33", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 51", "inb.otf", "inb38", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 57", "inb.otf", "inb42", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 62", "inb.otf", "inb46", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 66", "inb.otf", "inb49", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 71", "inb.otf", "inb53", 11, 0, BM_M, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 78", "inb.otf", "inb57", 11, 0, BM_M, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 84", "inb.otf", "inb63", 11, 0, BM_M, FM_C, MM_N, "", "" }, { "-y -1 -x 1 -th 2 -tv 4", "-a -r 72 -p 30", "inb.otf", "inb21_2x4", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -x 2 -th 3 -tv 6", "-a -r 72 -p 44", "inb.otf", "inb33_3x6", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y 0 -x 3 -th 4 -tv 8", "-a -r 72 -p 62", "inb.otf", "inb46_4x8", 11, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, /* Logisoso ./do_fontsize_a_v2.sh 23 ../ttf/log/Logisoso.ttf logisoso16 ./do_fontsize_a_v2.sh 27 ../ttf/log/Logisoso.ttf logisoso18 ./do_fontsize_a_v2.sh 30 ../ttf/log/Logisoso.ttf logisoso20 ./do_fontsize_a_v2.sh 32 ../ttf/log/Logisoso.ttf logisoso22 ./do_fontsize_a_v2.sh 34 ../ttf/log/Logisoso.ttf logisoso24 ./do_fontsize_a_v2.sh 38 ../ttf/log/Logisoso.ttf logisoso26 ./do_fontsize_a_v2.sh 40 ../ttf/log/Logisoso.ttf logisoso28 ./do_fontsize_a_no_64_v2.sh 43 ../ttf/log/Logisoso.ttf logisoso30 ./do_fontsize_a_no_64_v2.sh 45 ../ttf/log/Logisoso.ttf logisoso32 ./do_fontsize_a_no_64_v2.sh 49 ../ttf/log/Logisoso.ttf logisoso34 ./do_fontsize_a_no_64_v2.sh 54 ../ttf/log/Logisoso.ttf logisoso38 ./do_fontsize_a_no_64_v2.sh 60 ../ttf/log/Logisoso.ttf logisoso42 ./do_fontsize_a_no_64_v2.sh 66 ../ttf/log/Logisoso.ttf logisoso46 ./do_fontsize_a_no_64_v2.sh 71 ../ttf/log/Logisoso.ttf logisoso50 ./do_fontsize_a_no_64_v2.sh 77 ../ttf/log/Logisoso.ttf logisoso54 ./do_fontsize_a_no_64_v2.sh 83 ../ttf/log/Logisoso.ttf logisoso58 ./do_fontsize_a_no_64_v2.sh 89 ../ttf/log/Logisoso.ttf logisoso62 */ { 0, "-a -r 72 -p 23", "Logisoso.ttf", "logisoso16", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 27", "Logisoso.ttf", "logisoso18", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 30", "Logisoso.ttf", "logisoso20", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 32", "Logisoso.ttf", "logisoso22", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 34", "Logisoso.ttf", "logisoso24", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 38", "Logisoso.ttf", "logisoso26", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 40", "Logisoso.ttf", "logisoso28", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 43", "Logisoso.ttf", "logisoso30", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 45", "Logisoso.ttf", "logisoso32", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 49", "Logisoso.ttf", "logisoso34", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 54", "Logisoso.ttf", "logisoso38", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 60", "Logisoso.ttf", "logisoso42", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 66", "Logisoso.ttf", "logisoso46", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 71", "Logisoso.ttf", "logisoso50", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 77", "Logisoso.ttf", "logisoso54", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 83", "Logisoso.ttf", "logisoso58", 10, 0, BM_T, FM_C, MM_F|MM_R|MM_N, "", "" }, { 0, "-a -r 72 -p 89", "Logisoso.ttf", "logisoso62", 10, 0, BM_T, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 110", "Logisoso.ttf", "logisoso78", 10, 0, BM_T, FM_C, MM_N, "", "" }, { 0, "-a -r 72 -p 131", "Logisoso.ttf", "logisoso92", 10, 0, BM_T, FM_C, MM_N, "", "" }, { 0, "-r 72 -p 8", "PressStart2P.ttf", "pressstart2p", 12, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, { 0, "-r 72 -p 8", "pcsenior.ttf", "pcsenior", 12, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, /* PxPlus_IBM_CGAthin.ttf PxPlus_IBM_CGA.ttf PxPlus_TandyNew_TV.ttf */ { 0, "-r 72 -p 8", "PxPlus_IBM_CGAthin.ttf", "pxplusibmcgathin", 14, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, { 0, "-r 72 -p 8", "PxPlus_IBM_CGA.ttf", "pxplusibmcga", 14, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, { 0, "-r 72 -p 8", "PxPlus_TandyNew_TV.ttf", "pxplustandynewtv", 14, 0, BM_8, FM_C|FM_8, MM_F|MM_R|MM_U|MM_N, "" , ""}, { 0, "-r 72 -p 8", "PxPlus_TandyNew_TV.ttf", "pxplustandynewtv", 14, 0, BM_T|BM_8, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "PxPlus_IBM_VGA9.ttf", "pxplusibmvga9", 14, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "" , ""}, { 0, "-r 72 -p 16", "PxPlus_IBM_VGA9.ttf", "pxplusibmvga9", 14, 0, BM_T|BM_M, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "PxPlus_IBM_VGA8.ttf", "pxplusibmvga8", 14, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "" , ""}, { 0, "-r 72 -p 16", "PxPlus_IBM_VGA8.ttf", "pxplusibmvga8", 14, 0, BM_T|BM_M, FM_C, MM_C, "32-$ffff", "_all" }, { 0, "-r 72 -p 16", "Px437_Wyse700a.ttf", "px437wyse700a", 14, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "" , ""}, { 0, "-r 72 -p 16", "Px437_Wyse700b.ttf", "px437wyse700b", 14, 0, BM_T|BM_M, FM_C, MM_F|MM_R|MM_N, "" , ""}, //#endif /* TMP */ { "-y -1 -th 2 -tv 2", "-r 72 -p 16", "Px437_Wyse700a.ttf", "px437wyse700a_2x2", 14, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, { "-y -1 -th 2 -tv 2", "-r 72 -p 16", "Px437_Wyse700b.ttf", "px437wyse700b_2x2", 14, 0, BM_8, FM_8, MM_F|MM_R|MM_N, "" , ""}, }; char *bdf_path = "../bdf/"; char *bdfconv_path = "../bdfconv/bdfconv"; char *otf2bdf_path = "../otf2bdf/otf2bdf"; FILE *u8g2_font_list_fp; FILE *u8x8_font_list_fp; FILE *keywords_fp; char *u8g2_prototypes = NULL; char *u8x8_prototypes = NULL; char *u8g2_fonts_filename = "../../../csrc/u8g2_fonts.c"; char *u8x8_fonts_filename = "../../../csrc/u8x8_fonts.c"; char target_font_identifier[1024]; char otf_cmd[2048]; char bdf_cmd[2048]; char font_prototype[2048]; char tga_filename[2048]; char convert_cmd[2048]; int current_font_group_index; char current_font_name[256] = ""; FILE *current_md_file; int current_capital_A_size; const char *fntlistallpath = "../../../../u8g2.wiki/fntlistall.md"; FILE *fntlistall; const char *fntlistmonopath = "../../../../u8g2.wiki/fntlistmono.md"; FILE *fntlistmono; const char *fntlist8x8path = "../../../../u8g2.wiki/fntlist8x8.md"; FILE *fntlist8x8; #ifdef BUILD2 u8g2_t u8g2; int u8x8_fnt_cnt = 0; int u8g2_fnt_cnt = 0; extern void do_font_loop(cbfn_t cb); /*===================================================================*/ /* word cloud */ #define WORD_CLOUD_MAX_X 600 struct _box_t { uint32_t w, h; }; typedef struct _box_t box_t; struct _pos_t { uint32_t x, y; }; typedef struct _pos_t pos_t; struct _pbox_t // placed box { pos_t pos; int box_idx; }; typedef struct _pbox_t pbox_t; #define BOX_LIST_MAX 500 box_t box_list[BOX_LIST_MAX]; char box_word[BOX_LIST_MAX][64]; const uint8_t *box_font[BOX_LIST_MAX]; int box_cnt = 0; int box_index[BOX_LIST_MAX]; #define PLACE_OPTION_MAX 1000 int place_option_cnt = 0; pos_t place_option_list[PLACE_OPTION_MAX]; #define PLACED_BOX_MAX 1000 int placed_box_cnt = 0; pbox_t placed_box_list[PLACED_BOX_MAX]; uint32_t placed_box_area_max_x; uint32_t placed_box_area_max_y; uint32_t placed_box_area_value; /*============================================*/ int place_option_find(pos_t *p) { int i; for( i = 0; i < place_option_cnt; i++ ) { if ( place_option_list[i].x == p->x && place_option_list[i].y == p->y) return i; // place option already exists } return -1; } void place_option_add(pos_t *p) { int i; assert(place_option_cnt < PLACE_OPTION_MAX); if ( place_option_find(p) >= 0 ) return; // place option already exists // the placement option also must not be part of any existing box for( i = 2; i < placed_box_cnt; i++ ) { if ( p->x >= placed_box_list[i].pos.x && p->x < placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w ) if ( p->y >= placed_box_list[i].pos.y && p->y < placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h ) return; // place option would be inside an existing box } // place option does not exist, add new place option place_option_list[place_option_cnt] = *p; place_option_cnt++; } void place_option_by_xy(uint32_t x, uint32_t y) { pos_t p; p.x = x; p.y = y; place_option_add(&p); } void place_option_delete(int idx) { if ( idx < 0 || idx >= place_option_cnt ) return; for( ; idx+1 < place_option_cnt; idx++ ) { place_option_list[idx] = place_option_list[idx+1]; } place_option_cnt--; } /*============================================*/ // p is copyied, b only the address is stored pbox_t *placed_box_push(pos_t *p, int box_idx) { assert(placed_box_cnt < PLACED_BOX_MAX); // place the new box placed_box_list[placed_box_cnt].pos = *p; placed_box_list[placed_box_cnt].box_idx = box_idx; placed_box_cnt++; return placed_box_list+placed_box_cnt-1; } void placed_box_pop(void) { assert(placed_box_cnt > 0); placed_box_cnt--; } uint32_t placed_box_calculate_max_area(void) { int i; placed_box_area_max_y = 0; placed_box_area_max_x = 0; for( i = 2; i < placed_box_cnt; i++ ) { if ( placed_box_area_max_y < placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h ) placed_box_area_max_y = placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h; if ( placed_box_area_max_x < placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w ) placed_box_area_max_x = placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w; } if ( placed_box_area_max_x > WORD_CLOUD_MAX_X ) // weight of y is higher, so this should give a more wider picture placed_box_area_value = placed_box_area_max_x*5 + placed_box_area_max_y ; else // weight of y is higher, so this should give a more wider picture placed_box_area_value = placed_box_area_max_x + placed_box_area_max_y *5; return placed_box_area_value; } /*============================================*/ int is_intersection(pos_t *p1, box_t *b1, pos_t *p2, box_t *b2) { pos_t q1 = *p1; pos_t q2 = *p2; q1.x += b1->w; q1.y += b1->h; q2.x += b2->w; q2.y += b2->h; if ( p1->x >= q2.x || q1.x <= p2->x ) return 0; if ( p1->y >= q2.y || q1.y <= p2->y ) return 0; return 1; } int is_intersection_with_placed_box(pos_t *p1, box_t *b1, int idx) { return is_intersection(p1, b1, &(placed_box_list[idx].pos), box_list+placed_box_list[idx].box_idx ); } int is_any_intersection(pos_t *p1, box_t *b1) { int i; // start with the third box, because the first two are boundary boxes for( i = 2; i < placed_box_cnt; i++ ) { if ( is_intersection_with_placed_box(p1, b1, i) != 0 ) return 1; } return 0; } // add new place options by a give pbox void place_option_by_pbox(pbox_t *pbox) { int i, found_i; uint32_t y, x; uint32_t max_y, max_x; // from the lower left corner, search towards the left until another box is hit. y = pbox->pos.y + box_list[pbox->box_idx].h; max_x = 0; found_i = -1; for( i = 0; i < placed_box_cnt; i++ ) { if ( placed_box_list+i != pbox ) // do not check ourself { if ( placed_box_list[i].pos.x <= pbox->pos.x ) { if ( y >= placed_box_list[i].pos.y && y < placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h ) { // left box found, but is it max? // must use >= here, because the initial boxes have zero area if ( max_x <= placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w ) { max_x = placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w; found_i = i; } } } } } if (found_i >= 0) place_option_by_xy(max_x, y); // from the upper right corner, search towards the top until another box is hit. x = pbox->pos.x + box_list[pbox->box_idx].w; max_y = 0; found_i = -1; for( i = 0; i < placed_box_cnt; i++ ) { if ( placed_box_list+i != pbox ) // do not check ourself { if ( placed_box_list[i].pos.y <= pbox->pos.y ) { if ( x >= placed_box_list[i].pos.x && x < placed_box_list[i].pos.x + box_list[placed_box_list[i].box_idx].w ) { // upper box found, but is it the next ? // must use >= here, because the initial boxes have zero area if ( max_y <= placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h ) { max_y = placed_box_list[i].pos.y + box_list[placed_box_list[i].box_idx].h; found_i = i; } } } } } if (found_i >= 0) place_option_by_xy(x, max_y); } void add_all_place_options(void) { int i; //place_option_cnt = 0; // clear the place option list for( i = 2; i < placed_box_cnt; i++ ) { place_option_by_pbox(placed_box_list+i); } } void show(void) { pos_t p; box_t b; int i; b.w = 1; b.h = 1; for( p.y = 0; p.y < 30; p.y++ ) { for( p.x = 0; p.x < 60; p.x++ ) { for( i = 0; i < place_option_cnt; i++ ) { if ( place_option_list[i].x == p.x && place_option_list[i].y == p.y ) { break; } } if ( i < place_option_cnt ) { printf("*"); } else { for( i = 0; i < placed_box_cnt; i++ ) { if ( is_intersection_with_placed_box(&p, &b, i) != 0 ) break; } if ( i < placed_box_cnt ) { printf("%c", i+'a'); } else { printf(" "); } } } printf("\n"); } } void init(void) { pos_t p; box_list[0].w = 0x0ffffffff; box_list[0].h = 0; box_list[1].w = 0; box_list[1].h = 0x0ffffffff; box_cnt = 2; place_option_cnt = 0; placed_box_cnt = 0; p.x = 0; p.y = 0; placed_box_push(&p, 0); p.x = 0; p.y = 0; placed_box_push(&p, 1); // create one place option at the upper left place_option_by_xy(0, 0); } void do_best_place(int box_idx) { int i; int found_i; pbox_t *pbox; uint32_t value; uint32_t lowest_value; found_i = -1; lowest_value = 0x0ffffffff; for( i = 0; i < place_option_cnt; i++ ) { // check whether this placement would generate an intersection if ( is_any_intersection(place_option_list+i, box_list+box_idx) == 0 ) { // place the box at the position pbox = placed_box_push(place_option_list+i, box_idx); value = placed_box_calculate_max_area(); /* if ( value == 0x0ffffffff ) { value = pbox->pos.y; } else */ { value *= 8; value += pbox->pos.x; value += pbox->pos.y; } // greedy algorithm: We search for the lowest area increase if ( lowest_value > value ) { lowest_value = value ; found_i = i; } placed_box_pop(); } } if ( found_i >= 0 ) { // now permanently place the box pbox = placed_box_push(place_option_list+found_i, box_idx); // delete the position from the place option list place_option_delete(found_i); // calculate new place options with the new box //place_option_by_pbox(pbox); // recalculate all place options add_all_place_options(); } else { //assert(found_i >= 0 ); } } /* Linear Congruential Generator (LCG) z = (a*z + c) % m; m = 256 (8 Bit) for period: a-1: dividable by 2 a-1: multiple of 4 c: not dividable by 2 c = 17 a-1 = 64 --> a = 65 */ uint8_t cloud_z = 127; // start value uint8_t cloud_rnd(void) { /* cloud_z++; cloud_z = (uint8_t)((uint16_t)65*(uint16_t)cloud_z + (uint16_t)17); return (uint8_t)cloud_z; */ return rand() & 255; } //u8g2_IsAllValidUTF8 char *cloud_utf8[] = { "µC" "Numérique" "像素", "屏幕", "图形", "Ψηφιακή", "Οθόνη", "Γραφικά", "アイコン、", "ビットマップ", "キャラクター、", "전자", "엔지니어", "장치", "하드웨어", "Ingeniør", "Skærm", "Gerät", "Sprzęt", "Računar", "Ugrađen", "Grafică", "экран", "Графика", "Значок", "Фонт", "екран", "рачунар", "уграђен", "พิกเซล", "หน้าจอ", "กราฟิก", "Näyttö", "ĂăĚěŇň", "ÄäÖöÜü", "Ææ", "E=mc²", "Pixel", "Screen", "Graphics", "Icon", "Bitmap", "Character", "Glyph", "Font", "Display", "Computer", "Embedded", "Electronics", "Engineer", "Device", "Hardware", "Software", "Science", "Digital", "Arduino", "U8g2" }; char *cloud_str[] = { "Pixel", "Screen", "Graphics", "Icon", "Bitmap", "Character", "Glyph", "Font", "Display", "Computer", "Embedded", "Electronics", "Engineer", "Device", "Hardware", "Software", "Science", "Digital", "Arduino", "U8g2" }; char *cloud_simple[] = { "U8g2", "Abc", "XYZ", "Aa", "Xy" }; void cloud_add(u8g2_t *u8g2, const uint8_t *font, char *word) { u8g2_uint_t extra = 8; u8g2_SetFont(u8g2, font); box_list[box_cnt].w = u8g2_GetUTF8Width(u8g2, word) + extra; box_list[box_cnt].h = u8g2_GetAscent(u8g2) - u8g2_GetDescent(u8g2) + extra; strcpy(box_word[box_cnt], word); //puts(word); box_font[box_cnt] = font; box_cnt++; } void cloud_auto_add(u8g2_t *u8g2, const uint8_t *font) { int i, n, cnt; u8g2_SetFont(u8g2, font); if ( u8g2_GetAscent(u8g2) - u8g2_GetDescent(u8g2) > 30 ) { n = sizeof(cloud_simple)/sizeof(*cloud_simple); cnt = 0; for( i = 0; i < n; i++ ) { if ( u8g2_IsAllValidUTF8(u8g2, cloud_simple[i]) != 0 ) { cnt++; } } if ( cnt > 0 ) { cnt = cloud_rnd() % cnt; for( i = 0; i < n; i++ ) { if ( u8g2_IsAllValidUTF8(u8g2, cloud_simple[i]) != 0 ) { if ( cnt == 0 ) break; cnt--; } } } if ( i < n ) { cloud_add(u8g2, font, cloud_simple[i]); return; } } n = sizeof(cloud_utf8)/sizeof(*cloud_utf8); //printf("n=%d\n", n); cnt = 0; for( i = 0; i < n; i++ ) { if ( u8g2_IsAllValidUTF8(u8g2, cloud_utf8[i]) != 0 ) { cnt++; } } if ( cnt > 0 ) { cnt = cloud_rnd() % cnt; for( i = 0; i < n; i++ ) { if ( u8g2_IsAllValidUTF8(u8g2, cloud_utf8[i]) != 0 ) { if ( cnt == 0 ) break; cnt--; } } } else { i = n; } if ( i < n ) { cloud_add(u8g2, font, cloud_utf8[i]); return; } n = sizeof(cloud_str)/sizeof(*cloud_str); //printf("n=%d\n", n); i = cloud_rnd() % n; cloud_add(u8g2, font, cloud_str[i]); } void cloud_init(void) { init(); } void cloud_calculate(uint8_t z) { int i; int a, b, t; cloud_z = z; srand(z); for( i = 0; i < box_cnt; i++ ) { box_index[i] = i; } for ( i = 0; i < box_cnt / 2; i++ ) { a = cloud_rnd() % (box_cnt-2); a += 2; b = cloud_rnd() % (box_cnt-2); b += 2; t = box_index[a]; box_index[a] = box_index[b]; box_index[b] = t; } for( i = 2; i < box_cnt; i++ ) do_best_place(box_index[i]); } void cloud_draw(u8g2_t *u8g2) { int i; for( i = 2; i < placed_box_cnt; i++ ) { u8g2_SetFont(u8g2, box_font[placed_box_list[i].box_idx]); u8g2_SetFontMode(u8g2, 1); u8g2_DrawUTF8(u8g2, placed_box_list[i].pos.x, placed_box_list[i].pos.y, box_word[placed_box_list[i].box_idx]); } } /*===================================================================*/ void overview_draw_line(int i, uint16_t encoding_start, uint16_t x, uint16_t y, uint16_t w, uint16_t glyphs_per_line) { int j; u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); for( j = 0; j < glyphs_per_line; j++) { if ( u8g2_IsGlyph(&u8g2, encoding_start + j) != 0 ) { u8g2_DrawGlyph(&u8g2, x+j*w, y, encoding_start + j); } } } int is_overview_line_empty(uint16_t encoding_start) { int j; for( j = 0; j < 16; j++) { if ( u8g2_IsGlyph(&u8g2, encoding_start + j) != 0 ) { return 0; } } return 1; } void overview_draw_table(int i, uint16_t x, uint16_t y) { int cw, ch; int line, h; uint16_t encoding; uint16_t glyphs_per_line = 16; int size; static char s[256]; h = 13; u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); u8g2_SetFontMode(&u8g2, 1); ch = u8g2_GetMaxCharHeight(&u8g2); cw = u8g2_GetMaxCharWidth(&u8g2); sprintf(s, "BBX Width %d, Height %d, Capital A %d", u8g2_GetMaxCharWidth(&u8g2), u8g2_GetMaxCharHeight(&u8g2), u8g2_GetAscent(&u8g2)); u8g2_SetFont(&u8g2, u8g2_font_7x13_tr); u8g2_DrawStr(&u8g2, 0, h, u8g2_font_names[u8g2_fnt_cnt]); u8g2_DrawStr(&u8g2, 0, h*2, s); size = u8g2_GetFontSize(u8g2_font_list[u8g2_fnt_cnt]); if ( size > 100000 ) glyphs_per_line = 32; sprintf(s, "Font Data Size: %d Bytes", size); u8g2_DrawStr(&u8g2, 0, h*3, s); u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); ch = u8g2_GetMaxCharHeight(&u8g2); cw = u8g2_GetMaxCharWidth(&u8g2); if ( ch < h ) ch = h; y = h*3+ch+1; line = 0; for(;;) { encoding = line*glyphs_per_line; if ( is_overview_line_empty(encoding) == 0 ) { u8g2_SetFont(&u8g2, u8g2_font_7x13_tr); sprintf(s, "%5d/%04x ", encoding, encoding); x = u8g2_DrawStr(&u8g2, 0, y, s); overview_draw_line(i, encoding, x, y, cw+1, glyphs_per_line); y += ch; } line++; if ( line > 0xfff ) break; } if ( u8g2_IsGlyph(&u8g2, 'A') != 0 && u8g2_IsGlyph(&u8g2, 'z') != 0 ) { y++; // y -= ch; u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); //y += u8g2_GetMaxCharHeight(&u8g2); u8g2_DrawStr(&u8g2, 0, y, "The quick brown fox"); y += u8g2_GetMaxCharHeight(&u8g2); u8g2_DrawStr(&u8g2, 0, y, "jumps over the lazy dog."); } //u8g2_DrawStr(&u8g2, 0, y, "Woven silk pyjamas exchanged for blue quartz"); } void overviewpic(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { int cw, ch; if ( fm == FM_8 ) { int cw; int ch; printf("8x8 font overview picture %s\n", target_font_identifier); u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); //u8x8_ClearDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetFont(u8g2_GetU8x8(&u8g2), u8x8_font_amstrad_cpc_extended_r); u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0, 0, target_font_identifier); u8x8_SetFont(u8g2_GetU8x8(&u8g2), u8x8_font_list[u8x8_fnt_cnt]); cw = u8x8_GetFontCharWidth(u8g2_GetU8x8(&u8g2)); ch = u8x8_GetFontCharHeight(u8g2_GetU8x8(&u8g2)); { uint8_t x; uint8_t y; static char s[32]; for( y = 0; y < 16; y++ ) { u8x8_SetFont(u8g2_GetU8x8(&u8g2), u8x8_font_amstrad_cpc_extended_r); sprintf(s, "%3d/%02x ", y*16, y*16); u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0, (y+2)*ch, s); u8x8_SetFont(u8g2_GetU8x8(&u8g2), u8x8_font_list[u8x8_fnt_cnt]); for( x = 0; x < 16; x++ ) { u8x8_DrawGlyph(u8g2_GetU8x8(&u8g2), x*(cw+1)+7,(y+2)*ch, y*16+x); } } } if ( mm != MM_N ) u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0,(16+2)*ch, "The quick brown fox jumps over the lazy dog."); tga_save("font.tga"); sprintf(convert_cmd, "convert font.tga -trim %s.png", target_font_identifier ); system(convert_cmd); u8x8_fnt_cnt++; } else if ( fm == FM_C ) { printf("overview picture %s\n", target_font_identifier); u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); //u8g2_SetFont(&u8g2, u8g2_font_helvB14_tr); u8g2_FirstPage(&u8g2); do { overview_draw_table(i, 0, 60); //overviewline(i, '@', 0, 80, cw); } while( u8g2_NextPage(&u8g2) ); strcpy(tga_filename, target_font_identifier); strcat(tga_filename, ".tga"); tga_save("font.tga"); sprintf(convert_cmd, "convert font.tga -trim %s.png", target_font_identifier ); system(convert_cmd); u8g2_fnt_cnt++; } } void overviewshortpic(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { int cw, ch; if ( fm == FM_8 ) { printf("8x8 font short overview picture %s\n", target_font_identifier); u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); //u8x8_ClearDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetFont(u8g2_GetU8x8(&u8g2), u8x8_font_list[u8x8_fnt_cnt]); if ( mm == MM_N ) u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0, 0, "1234567890"); else if ( mm == MM_U ) u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0, 0, "ABCDEF 123"); else u8x8_DrawString(u8g2_GetU8x8(&u8g2), 0, 0, "Abcdefg 123"); tga_save("font.tga"); sprintf(convert_cmd, "convert font.tga -trim %s_short.png", target_font_identifier ); system(convert_cmd); u8x8_fnt_cnt++; } else if ( fm == FM_C ) { printf("short overview picture %s\n", target_font_identifier); u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); //u8g2_SetFont(&u8g2, u8g2_font_helvB14_tr); u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); ch = u8g2_GetMaxCharHeight(&u8g2); cw = u8g2_GetMaxCharWidth(&u8g2); u8g2_FirstPage(&u8g2); do { if ( mm == MM_N ) u8g2_DrawStr(&u8g2, 0, ch, "1234567890"); else if ( mm == MM_U ) u8g2_DrawStr(&u8g2, 0, ch, "ABCDEF 123"); else u8g2_DrawStr(&u8g2, 0, ch, "Abcdefg 123"); } while( u8g2_NextPage(&u8g2) ); tga_save("font.tga"); sprintf(convert_cmd, "convert font.tga -trim %s_short.png", target_font_identifier ); system(convert_cmd); u8g2_fnt_cnt++; } } int font_found_for_this_size = 0; int mfont_found_for_this_size = 0; void generate_font_list(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { if ( fm == FM_8 ) { if ( current_capital_A_size == 8 ) { fprintf(fntlist8x8, "![fntpic/%s_short.png](fntpic/%s_short.png) ", target_font_identifier, target_font_identifier); fprintf(fntlist8x8, "%s ", target_font_identifier); fprintf(fntlist8x8, " [%s](%s)\n\n", gi[fi[i].group].groupname, gi[fi[i].group].reference); u8x8_fnt_cnt++; } } else if ( fm == FM_C ) { u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); if ( u8g2_font_list[u8g2_fnt_cnt] != NULL ) { u8g2_SetFont(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); u8g2_SetFontDirection(&u8g2, 0); if ( current_capital_A_size == u8g2.font_info.ascent_A ) { if ( font_found_for_this_size == 0 ) { fprintf(fntlistall, "\n## %d Pixel Height\n\n", current_capital_A_size); printf("listall: == %d ==\n", current_capital_A_size); } font_found_for_this_size = 1; fprintf(fntlistall, "![fntpic/%s_short.png](fntpic/%s_short.png) ", target_font_identifier, target_font_identifier); fprintf(fntlistall, "%s ", target_font_identifier); fprintf(fntlistall, " [%s](%s)\n\n", gi[fi[i].group].groupname, gi[fi[i].group].reference); //printf("%d: %s %s\n", current_capital_A_size, target_font_identifier, gi[fi[i].group].groupname); } if ( bm == BM_M || bm == BM_8 ) { if ( current_capital_A_size == u8g2.font_info.ascent_A ) { if ( mfont_found_for_this_size == 0 ) { fprintf(fntlistmono, "\n## %d Pixel Height\n\n", current_capital_A_size); printf("listmono: == %d ==\n", current_capital_A_size); } mfont_found_for_this_size = 1; fprintf(fntlistmono, "![fntpic/%s_short.png](fntpic/%s_short.png) ", target_font_identifier, target_font_identifier); fprintf(fntlistmono, "%s ", target_font_identifier); fprintf(fntlistmono, " [%s](%s)\n\n", gi[fi[i].group].groupname, gi[fi[i].group].reference); } } u8g2_fnt_cnt++; } } } void do_font_list(cbfn_t cb) { file_copy("fntlistall.pre", fntlistallpath); fntlistall = fopen(fntlistallpath, "r+"); fseek(fntlistall, 0L, SEEK_END); fntlistmono = fopen(fntlistmonopath, "w"); fntlist8x8 = fopen(fntlist8x8path, "w"); fprintf(fntlistall, "# All U8g2 Fonts, Capital A Height\n\n"); fprintf(fntlistmono, "# Monospaced and 8x8 Fonts for U8g2, Capital A Height\n\n"); fprintf(fntlist8x8, "# Fonts for U8x8\n\n"); for( current_capital_A_size = 2; current_capital_A_size < 100; current_capital_A_size++ ) { font_found_for_this_size = 0; mfont_found_for_this_size = 0; u8x8_fnt_cnt = 0; u8g2_fnt_cnt = 0; do_font_loop(cb); } fclose(fntlistall); fclose(fntlistmono); fclose(fntlist8x8); } #endif void bdfconv(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { if ( fi[i].ttf_opt != NULL ) { strcpy(otf_cmd, otf2bdf_path); strcat(otf_cmd, " "); strcat(otf_cmd, fi[i].ttf_opt); strcat(otf_cmd, " ../ttf/"); strcat(otf_cmd, fi[i].filename); strcat(otf_cmd, " -o tmp.bdf"); printf("%s\n", otf_cmd); system(otf_cmd); } strcpy(bdf_cmd, bdfconv_path); strcat(bdf_cmd, " "); if ( fi[i].bdfconv_opt != 0 ) { strcat(bdf_cmd, fi[i].bdfconv_opt); strcat(bdf_cmd, " "); } if ( fm == FM_C ) strcat(bdf_cmd, " -f 1"); if ( fm == FM_8 ) strcat(bdf_cmd, " -f 2"); if ( bm == BM_T ) strcat(bdf_cmd, " -b 0"); if ( bm == BM_H ) strcat(bdf_cmd, " -b 1"); if ( bm == BM_M ) strcat(bdf_cmd, " -b 2"); if ( bm == BM_8 ) strcat(bdf_cmd, " -b 3"); if ( mm == MM_F ) strcat(bdf_cmd, " -m '32-255>32'"); if ( mm == MM_R ) strcat(bdf_cmd, " -m '32-127>32'"); if ( mm == MM_N ) strcat(bdf_cmd, " -m '32,42-58>42'"); if ( mm == MM_U ) strcat(bdf_cmd, " -m '32-95>32'"); if ( mm == MM_E ) strcat(bdf_cmd, " -m '32-701>32,7838,64256-64263'"); if ( mm == MM_C ) { strcat(bdf_cmd, " -m '"); strcat(bdf_cmd, fi[i].map_custom); strcat(bdf_cmd, "'"); } if ( mm == MM_M ) { strcat(bdf_cmd, " -M '"); strcat(bdf_cmd, fi[i].map_custom); strcat(bdf_cmd, "'"); } strcat(bdf_cmd, " "); if ( fi[i].ttf_opt != NULL ) { strcat(bdf_cmd, "tmp.bdf"); } else { strcat(bdf_cmd, bdf_path); strcat(bdf_cmd, fi[i].filename); } strcat(bdf_cmd, " -n "); strcat(bdf_cmd, target_font_identifier); strcat(bdf_cmd, " -o "); //strcat(bdf_cmd, target_font_identifier); strcat(bdf_cmd, "font"); strcat(bdf_cmd, ".c"); /* if ( fi[i].kerning_min_distance_per_cent > 0 ) { strcat(bdf_cmd, " -k "); strcat(bdf_cmd, target_font_identifier); strcat(bdf_cmd, "_k.c"); strcat(bdf_cmd, " -p "); sprintf(bdf_cmd+strlen(bdf_cmd), "%d", fi[i].kerning_min_distance_per_cent); } */ /* fprintf(out_fp, "const uint8_t %s[%d] U8X8_FONT_SECTION(\"%s\") \n", fontname, bf->target_cnt, fontname); fprintf(out_fp, "const uint8_t %s[%d] U8G2_FONT_SECTION(\"%s\") \n", fontname, bf->target_cnt, fontname); */ strcpy(font_prototype, "extern const uint8_t "); strcat(font_prototype, target_font_identifier); strcat(font_prototype, "[]"); if ( fm == FM_8 ) { strcat(bdf_cmd, " && cat font.c >>"); strcat(bdf_cmd, u8x8_fonts_filename); strcat(font_prototype, " U8X8_FONT_SECTION(\""); strcat(font_prototype, target_font_identifier); strcat(font_prototype, "\");\n"); add_to_str(&u8x8_prototypes, font_prototype); } else { strcat(bdf_cmd, " && cat font.c >>"); strcat(bdf_cmd, u8g2_fonts_filename); strcat(font_prototype, " U8G2_FONT_SECTION(\""); strcat(font_prototype, target_font_identifier); strcat(font_prototype, "\");\n"); add_to_str(&u8g2_prototypes, font_prototype); } printf("%s\n", bdf_cmd); system(bdf_cmd); strcpy(bdf_cmd, "cp font.c ./single_font_files/"); strcat(bdf_cmd, target_font_identifier); strcat(bdf_cmd, ".c"); system(bdf_cmd); } void fontlist_identifier(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { if ( fm == FM_C ) { fprintf(u8g2_font_list_fp, " %s,\n", target_font_identifier); } if ( fm == FM_8 ) { fprintf(u8x8_font_list_fp, " %s,\n", target_font_identifier); } } void fontlist_name(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { if ( fm == FM_C ) { fprintf(u8g2_font_list_fp, " \"%s\",\n", target_font_identifier); } if ( fm == FM_8 ) { fprintf(u8x8_font_list_fp, " \"%s\",\n", target_font_identifier); } fprintf(keywords_fp, "%s\tLITERAL1\n", target_font_identifier); } void generate_font_group_md(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { static int _i = 0; static int _fm = 0; static int _bm = 0; if ( fi[i].group == current_font_group_index ) { if ( strcmp( current_font_name, fi[i].name ) != 0 ) { strcpy(current_font_name, fi[i].name); fprintf(current_md_file, "\n"); fprintf(current_md_file, "## %s\n", current_font_name); printf("## %s\n", current_font_name); } else { if ( _i == i && _fm == fm && _bm == bm ) { } else { fprintf(current_md_file, "\n"); } } fprintf(current_md_file, "![fntpic/%s.png](fntpic/%s.png)\n", target_font_identifier, target_font_identifier); _i = i; _fm = fm; _bm = bm; printf( "%s %s\n", gi[current_font_group_index].mdfile, target_font_identifier); } } #ifdef BUILD2 void generate_font_group_word_cloud(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms) { static int _i = 0; static int _fm = 0; static int _bm = 0; if ( fi[i].group == current_font_group_index && fm == FM_C ) { if ( strcmp( current_font_name, fi[i].name ) != 0 ) { strcpy(current_font_name, fi[i].name); //fprintf(current_md_file, "\n"); //fprintf(current_md_file, "## %s\n", current_font_name); //printf("## %s\n", current_font_name); } else { if ( _i == i && _fm == fm && _bm == bm ) { } else { // printf( "group %s, %s, font %s %s\n", gi[current_font_group_index].groupname, gi[current_font_group_index].reference, fi[i].name, target_font_identifier); //fprintf(current_md_file, "\n"); } } //fprintf(current_md_file, "![fntpic/%s.png](fntpic/%s.png)\n", target_font_identifier, target_font_identifier); if ( _i == i ) { // } else { //u8g2_font_list[u8g2_fnt_cnt] cloud_auto_add(&u8g2, u8g2_font_list[u8g2_fnt_cnt]); //printf( "%d: group %s, %s, font %s %s %d %s\n", i, gi[current_font_group_index].groupname, gi[current_font_group_index].reference, fi[i].name, target_font_identifier, u8g2_fnt_cnt, u8g2_font_names[u8g2_fnt_cnt]); } _i = i; _fm = fm; _bm = bm; } if ( fm == FM_C ) { u8g2_fnt_cnt++; } } #endif void gen_font(int i, int fm, char *fms, int bm, char *bms, int mm, char *mms, cbfn_t cb ) { if ( fm == FM_8 ) if ( bm != BM_8 ) return; strcpy(target_font_identifier, fms); strcat(target_font_identifier, "_font_"); strcat(target_font_identifier, fi[i].name); if ( bms[0] != '\0' || mms[0] != '\0' ) { strcat(target_font_identifier, "_"); strcat(target_font_identifier, bms); strcat(target_font_identifier, mms); } cb(i, fm,fms,bm,bms,mm,mms); } void map_font(int i, int fm, char *fms, int bm, char *bms, cbfn_t cb) { if ( (fi[i].map_mode & MM_F) != 0 ) gen_font(i, fm, fms, bm, bms, MM_F, "f", cb); if ( (fi[i].map_mode & MM_R) != 0 ) gen_font(i, fm, fms, bm, bms, MM_R, "r", cb); if ( (fi[i].map_mode & MM_N) != 0 ) gen_font(i, fm, fms, bm, bms, MM_N, "n", cb); if ( (fi[i].map_mode & MM_U) != 0 ) gen_font(i, fm, fms, bm, bms, MM_U, "u", cb); if ( (fi[i].map_mode & MM_C) != 0 ) gen_font(i, fm, fms, bm, bms, MM_C, fi[i].map_custom_postfix, cb); if ( (fi[i].map_mode & MM_M) != 0 ) gen_font(i, fm, fms, bm, bms, MM_M, fi[i].map_custom_postfix, cb); if ( (fi[i].map_mode & MM_E) != 0 ) gen_font(i, fm, fms, bm, bms, MM_E, "e", cb); } void build_font(int i, int fm, char *fms, cbfn_t cb) { if ( (fi[i].build_mode & BM_T) != 0 ) map_font(i, fm, fms, BM_T, "t", cb); if ( (fi[i].build_mode & BM_H) != 0 ) map_font(i, fm, fms, BM_H, "h", cb); if ( (fi[i].build_mode & BM_M) != 0 ) map_font(i, fm, fms, BM_M, "m", cb); if ( (fi[i].build_mode & BM_8) != 0 ) { if ( fm == FM_8 ) map_font(i, fm, fms, BM_8, "", cb); else map_font(i, fm, fms, BM_8, "8", cb); } } void process_font(int i, cbfn_t cb) { FILE *fp; static char s[1024]; if ( fi[i].ttf_opt == 0 ) { strcpy(s,bdf_path); } else { strcpy(s,"../ttf/"); } strcat(s, fi[i].filename); fp = fopen(s, "r"); if ( fp == NULL ) { printf("font %s missing\n",s ); return; } fclose(fp); if ( (fi[i].font_mode & FM_C) != 0 ) build_font(i, FM_C, "u8g2", cb); if ( (fi[i].font_mode & FM_8) != 0 ) build_font(i, FM_8, "u8x8", cb); } void do_font_loop(cbfn_t cb) { int i, cnt; cnt = sizeof(fi)/sizeof(*fi); for( i = 0; i < cnt; i++ ) { process_font(i, cb); } } void do_font_groups(cbfn_t cb) { int cnt; cnt = sizeof(gi)/sizeof(*gi); for( current_font_group_index = 0; current_font_group_index < cnt; current_font_group_index++ ) { file_copy(gi[current_font_group_index].mdprefixfile, gi[current_font_group_index].mdfile); current_md_file = fopen(gi[current_font_group_index].mdfile, "a"); fprintf(current_md_file, "\n"); strcpy(current_font_name, "."); #ifdef BUILD2 u8g2_fnt_cnt = 0; u8x8_fnt_cnt = 0; #endif do_font_loop(cb); fclose(current_md_file); } } void do_font_groups_wc(cbfn_t cb) { int cnt; cnt = sizeof(gi)/sizeof(*gi); for( current_font_group_index = 0; current_font_group_index < cnt; current_font_group_index++ ) { #ifdef BUILD2 u8g2_fnt_cnt = 0; u8x8_fnt_cnt = 0; u8g2_SetupBuffer_TGA(&u8g2, &u8g2_cb_r0); u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); u8g2_SetFontPosTop(&u8g2); cloud_init(); do_font_loop(cb); cloud_calculate(4); u8g2_FirstPage(&u8g2); do { cloud_draw(&u8g2); } while( u8g2_NextPage(&u8g2) ); tga_save("font.tga"); sprintf(convert_cmd, "convert font.tga -trim %s_word_cloud.png", gi[current_font_group_index].reference ); system(convert_cmd); printf("Group end %s\n", gi[current_font_group_index].reference); #endif } } int main(void) { //unlink(u8x8_fonts_filename); //unlink(u8g2_fonts_filename); #ifndef BUILD2 if ( file_copy("u8x8_fonts.pre", u8x8_fonts_filename) == 0 ) return 0; if ( file_copy("u8g2_fonts.pre", u8g2_fonts_filename) == 0 ) return 0; if ( file_copy("keywords.pre", "keywords.txt") == 0 ) return 0; do_font_loop(bdfconv); u8g2_font_list_fp = fopen("u8g2_font_list.c", "w"); u8x8_font_list_fp = fopen("u8x8_font_list.c", "w"); keywords_fp = fopen("keywords.txt", "a"); fprintf(u8g2_font_list_fp, "/* u8g2_font_list.c */\n"); fprintf(u8x8_font_list_fp, "/* u8x8_font_list.c */\n"); fprintf(u8g2_font_list_fp, "#include \"u8g2.h\"\n"); fprintf(u8x8_font_list_fp, "#include \"u8g2.h\"\n"); fprintf(u8g2_font_list_fp, "const uint8_t *u8g2_font_list[] = {\n"); fprintf(u8x8_font_list_fp, "const uint8_t *u8x8_font_list[] = {\n"); do_font_loop(fontlist_identifier); fprintf(u8g2_font_list_fp, " NULL\n};\n"); fprintf(u8x8_font_list_fp, " NULL\n};\n"); fprintf(u8g2_font_list_fp, "char *u8g2_font_names[] = {\n"); fprintf(u8x8_font_list_fp, "char *u8x8_font_names[] = {\n"); do_font_loop(fontlist_name); fprintf(u8g2_font_list_fp, " NULL\n};\n"); fprintf(u8x8_font_list_fp, " NULL\n};\n"); fclose(u8g2_font_list_fp); fclose(u8x8_font_list_fp); fclose(keywords_fp); printf("update u8g2.h\n"); insert_into_file("../../../csrc/u8g2.h", u8g2_prototypes, "/* start font list */", "/* end font list */"); printf("update u8x8.h\n"); insert_into_file("../../../csrc/u8x8.h", u8x8_prototypes, "/* start font list */", "/* end font list */"); unlink("font.c"); do_font_groups(generate_font_group_md); #endif #ifdef BUILD2 u8g2_fnt_cnt = 0; u8x8_fnt_cnt = 0; do_font_loop(overviewpic); u8g2_fnt_cnt = 0; u8x8_fnt_cnt = 0; do_font_loop(overviewshortpic); do_font_list(generate_font_list); do_font_groups_wc(generate_font_group_word_cloud); #endif return 0; }