diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2011-04-06 15:43:43 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2011-04-06 15:43:43 +0200 |
commit | d1ca1560865a196d1caa10a27110880b58905db3 (patch) | |
tree | 43ef49c5dbe0c544aae7fc44a9470794c43e825c /scripts | |
parent | e516feff18c3223a597ba23cbefba01b042c70bd (diff) | |
download | mupdf-d1ca1560865a196d1caa10a27110880b58905db3.tar.xz |
pdf: Change how CMap and font data files are generated and compiled.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/cmapdump.c | 22 | ||||
-rw-r--r-- | scripts/fontdump.c | 29 |
2 files changed, 30 insertions, 21 deletions
diff --git a/scripts/cmapdump.c b/scripts/cmapdump.c index 94f3c140..16ef1b8a 100644 --- a/scripts/cmapdump.c +++ b/scripts/cmapdump.c @@ -52,9 +52,7 @@ main(int argc, char **argv) return 1; } - fprintf(fo, "#include \"fitz.h\"\n"); - fprintf(fo, "#include \"mupdf.h\"\n"); - fprintf(fo, "\n"); + fprintf(fo, "/* This is an automatically generated file. Do not edit. */\n"); for (i = 2; i < argc; i++) { @@ -86,7 +84,9 @@ main(int argc, char **argv) return 1; } - fprintf(fo, "static const pdf_range pdf_cmap_%s_ranges[] = {", name); + fprintf(fo, "\n/* %s */\n\n", cmap->cmap_name); + + fprintf(fo, "static const pdf_range cmap_%s_ranges[] = {", name); if (cmap->rlen == 0) { fprintf(fo, " {0,%d,0}", PDF_CMAP_RANGE); @@ -102,11 +102,11 @@ main(int argc, char **argv) if (cmap->tlen == 0) { - fprintf(fo, "static const unsigned short pdf_cmap_%s_table[] = { 0 };\n\n", name); + fprintf(fo, "static const unsigned short cmap_%s_table[] = { 0 };\n\n", name); } else { - fprintf(fo, "static const unsigned short pdf_cmap_%s_table[%d] = {", + fprintf(fo, "static const unsigned short cmap_%s_table[%d] = {", name, cmap->tlen); for (k = 0; k < cmap->tlen; k++) { @@ -117,7 +117,7 @@ main(int argc, char **argv) fprintf(fo, "\n};\n\n"); } - fprintf(fo, "pdf_cmap pdf_cmap_%s = {\n", name); + fprintf(fo, "static pdf_cmap cmap_%s = {\n", name); fprintf(fo, "\t-1, "); fprintf(fo, "\"%s\", ", cmap->cmap_name); fprintf(fo, "\"%s\", 0, ", cmap->usecmap_name); @@ -134,13 +134,15 @@ main(int argc, char **argv) } fprintf(fo, " },\n"); - fprintf(fo, "\t%d, %d, (pdf_range*) pdf_cmap_%s_ranges,\n", + fprintf(fo, "\t%d, %d, (pdf_range*) cmap_%s_ranges,\n", cmap->rlen, cmap->rlen, name); - fprintf(fo, "\t%d, %d, (unsigned short*) pdf_cmap_%s_table,\n", + fprintf(fo, "\t%d, %d, (unsigned short*) cmap_%s_table,\n", cmap->tlen, cmap->tlen, name); - fprintf(fo, "};\n\n"); + fprintf(fo, "};\n"); + + printf("\t{\"%s\",&cmap_%s},\n", cmap->cmap_name, name); fz_close(fi); } diff --git a/scripts/fontdump.c b/scripts/fontdump.c index 37572bea..e40bf4ab 100644 --- a/scripts/fontdump.c +++ b/scripts/fontdump.c @@ -28,7 +28,8 @@ main(int argc, char **argv) { FILE *fo; FILE *fi; - char name[256]; + char fontname[256]; + char origname[256]; char *basename; char *p; int i, len; @@ -50,7 +51,7 @@ main(int argc, char **argv) fprintf(fo, "#if defined(__linux__) || defined(__FreeBSD__)\n"); fprintf(fo, "#define HAVE_INCBIN\n"); fprintf(fo, "#endif\n"); - fprintf(fo, "#endif\n\n"); + fprintf(fo, "#endif\n"); for (i = 2; i < argc; i++) { @@ -69,11 +70,16 @@ main(int argc, char **argv) basename++; else basename = argv[i]; - strcpy(name, basename); - p = name; + + strcpy(origname, basename); + p = strrchr(origname, '.'); + if (p) *p = 0; + strcpy(fontname, origname); + + p = fontname; while (*p) { - if ((*p == '/') || (*p == '.') || (*p == '\\') || (*p == '-')) + if (*p == '/' || *p == '.' || *p == '\\' || *p == '-') *p = '_'; p ++; } @@ -82,18 +88,19 @@ main(int argc, char **argv) len = ftell(fi); fseek(fi, 0, SEEK_SET); - fprintf(fo, "const unsigned int pdf_font_%s_len = %d;\n", name, len); + printf("\t{\"%s\",pdf_font_%s,%d},\n", origname, fontname, len); - fprintf(fo, "#ifdef HAVE_INCBIN\n"); - fprintf(fo, "asm(\".globl pdf_font_%s_buf\");\n", name); + fprintf(fo, "\n#ifdef HAVE_INCBIN\n"); + fprintf(fo, "extern const unsigned char pdf_font_%s[%d];\n", fontname, len); + fprintf(fo, "asm(\".globl pdf_font_%s\");\n", fontname); fprintf(fo, "asm(\".balign 8\");\n"); - fprintf(fo, "asm(\"pdf_font_%s_buf:\");\n", name); + fprintf(fo, "asm(\"pdf_font_%s:\");\n", fontname); fprintf(fo, "asm(\".incbin \\\"%s\\\"\");\n", argv[i]); fprintf(fo, "#else\n"); - fprintf(fo, "const unsigned char pdf_font_%s_buf[%d] = {\n", name, len); + fprintf(fo, "static const unsigned char pdf_font_%s[%d] = {\n", fontname, len); hexdump(fo, fi); fprintf(fo, "};\n"); - fprintf(fo, "#endif\n\n"); + fprintf(fo, "#endif\n"); fclose(fi); } |