6 #define DEFAULT_PIXEL_SIZE 16
11 dump_image (int pixel_size, int index, int code, int full)
13 int err = FT_Load_Glyph (face, index, FT_LOAD_RENDER | FT_LOAD_MONOCHROME);
19 size = face->glyph->bitmap.rows * face->glyph->bitmap.width;
22 buf = (unsigned char *) face->glyph->bitmap.buffer;
23 printf ("(#x%04X \"P4 %d %d ",
24 code, face->glyph->bitmap.width, face->glyph->bitmap.rows);
25 for (i = 0; i < face->glyph->bitmap.rows; i++)
26 for (j = 0; j < (face->glyph->bitmap.width + 7) / 8; j++)
28 printf("\\%o", buf[i * face->glyph->bitmap.pitch + j]);
34 /* Format MSG by FMT and print the result to the stderr, and exit. */
36 #define FATAL_ERROR(fmt, arg) \
38 fprintf (stderr, fmt, arg); \
43 main (int argc, char **argv)
48 int pixel_size = DEFAULT_PIXEL_SIZE;
50 FT_UInt unicode_table[0x80];
54 FATAL_ERROR ("%s\n", "Usage: otfimage [ X-OPTION ... ] OTF-FILE");
56 if ((err = FT_Init_FreeType (&library)))
57 FATAL_ERROR ("%s\n", "FT_Init_FreeType: error");
58 err = FT_New_Face (library, argv[1], 0, &face);
59 if (err == FT_Err_Unknown_File_Format)
60 FATAL_ERROR ("%s\n", "FT_New_Face: unknown file format");
62 FATAL_ERROR ("%s\n", "FT_New_Face: unknown error");
63 if ((err = FT_Set_Pixel_Sizes (face, 0, pixel_size)))
64 FATAL_ERROR ("%s\n", "FT_Set_Pixel_Sizes: error");
67 char *str = getenv ("PIXEL_SIZE");
69 if (str && (i = atoi (str)) > 0)
73 for (i = 0, max_glyph_id = 0; i < 0x10000; i++)
74 if (FT_Load_Glyph (face, i, FT_LOAD_RENDER | FT_LOAD_MONOCHROME)
77 for (i = 0x0D00; i < 0x0D80; i++)
79 unicode_table[i - 0x0D00] = FT_Get_Char_Index (face, (FT_ULong) i);
80 if (unicode_table[i - 0x0D00])
81 printf ("%04X->%04X\n", i, unicode_table[i - 0x0D00]);
84 for (i = 0; i < 0x80; i++)
86 dump_image (pixel_size, unicode_table[i], 0x0D00 + i, 1);
87 for (i = 0; i < 0x10000; i++)
88 dump_image (pixel_size, i, 0x0E00 + i, 0);