#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <libgen.h>
#include <ft2build.h>
#include FT_FREETYPE_H
FT_Face face;
-void
-dump_image (int pixel_size, int index)
+int
+dump_image (int pixel_size, int index, int code, int full)
{
int err = FT_Load_Glyph (face, index, FT_LOAD_RENDER | FT_LOAD_MONOCHROME);
int i,j, size;
unsigned char *buf;
if (err)
- return;
+ return -1;
size = face->glyph->bitmap.rows * face->glyph->bitmap.width;
if (! size)
- return;
+ return -1;
buf = (unsigned char *) face->glyph->bitmap.buffer;
- printf ("(#x%02X \"P4 %d %d ",
- index, face->glyph->bitmap.width, face->glyph->bitmap.rows);
+ printf ("(#x%04X \"P4 %d %d ",
+ code, face->glyph->bitmap.width, face->glyph->bitmap.rows);
for (i = 0; i < face->glyph->bitmap.rows; i++)
for (j = 0; j < (face->glyph->bitmap.width + 7) / 8; j++)
{
printf("\\%o", buf[i * face->glyph->bitmap.pitch + j]);
}
printf ("\")\n");
+ return 0;
}
/* Format MSG by FMT and print the result to the stderr, and exit. */
int err;
int i;
int pixel_size = DEFAULT_PIXEL_SIZE;
+ FT_Uint *raw_table;
+ FT_UInt unicode_table[0x80];
+ int max_glyph_id;
if (argc != 2)
FATAL_ERROR ("%s\n", "Usage: otfimage [ X-OPTION ... ] OTF-FILE");
pixel_size = i;
}
+ for (i = 0, max_glyph_id = 0; i < 0x10000; i++)
+ if (FT_Load_Glyph (face, i, FT_LOAD_RENDER | FT_LOAD_MONOCHROME)
+
+
+ for (i = 0x0D00; i < 0x0D80; i++)
+ {
+ unicode_table[i - 0x0D00] = FT_Get_Char_Index (face, (FT_ULong) i);
+ if (unicode_table[i - 0x0D00])
+ printf ("%04X->%04X\n", i, unicode_table[i - 0x0D00]);
+ }
+
+ for (i = 0; i < 0x80; i++)
+ if (unicode_table[i])
+ dump_image (pixel_size, unicode_table[i], 0x0D00 + i, 1);
for (i = 0; i < 0x10000; i++)
- dump_image (pixel_size, i);
+ dump_image (pixel_size, i, 0x0E00 + i, 0);
+
exit (0);
}