#include #include #include #include char * readFile(const char *filename) { long file_size; char *text; FILE *file = fopen(filename, "rb"); if(!file) { printf("Cannot open file <%s>\n", filename); exit(1); } fseek(file, 0, SEEK_END); file_size = ftell(file); fseek(file, 0, SEEK_SET); text = (char *)malloc(file_size + 1); fread(text, file_size, 1, file); text[file_size] = '\0'; return text; } void renderFile(char *filename, char *text, char *fontlist) { gdImagePtr im; FILE *fp; int brect[8], i; int fg, x, y; double ptsize, angle; im = gdImageCreateTrueColor(640, 640); fg = gdTrueColorAlpha(0, 0, 255, 0); ptsize = 60; angle = G_PI / 4; x = 1; y = 400; if (gdImageStringPangoFT(im, brect, fg, fontlist, ptsize, angle, x, y, text)) { fprintf(stderr, "gdImageStringPangoFT failed"); } fp = fopen(filename, "wb"); gdImagePng(im, fp); fclose(fp); gdImageDestroy(im); for (i=0; i<8; i++) { fprintf(stdout, "brect[%d]: %d\n", i, brect[i]); } } int main(int argc, char *args[]) { char *text; gdPangoInit(); text = readFile("english.txt"); renderFile("en.png", text, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"); text = readFile("japanese.txt"); renderFile("ja.png", text, "/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf"); return 0; }