summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2011-04-06 15:43:43 +0200
committerTor Andersson <tor.andersson@artifex.com>2011-04-06 15:43:43 +0200
commitd1ca1560865a196d1caa10a27110880b58905db3 (patch)
tree43ef49c5dbe0c544aae7fc44a9470794c43e825c /scripts
parente516feff18c3223a597ba23cbefba01b042c70bd (diff)
downloadmupdf-d1ca1560865a196d1caa10a27110880b58905db3.tar.xz
pdf: Change how CMap and font data files are generated and compiled.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/cmapdump.c22
-rw-r--r--scripts/fontdump.c29
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);
}