summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jamfile20
-rw-r--r--TODO3
-rw-r--r--apps/mozilla/moz_main.c15
-rw-r--r--apps/mozilla/moz_winres.rc2
-rw-r--r--include/mupdf/base14.h60
-rw-r--r--include/mupdf/rsrc.h20
-rw-r--r--mupdf/pdf_fontagl.c4
-rw-r--r--mupdf/pdf_fontenc.c22
-rw-r--r--mupdf/pdf_fontfile.c100
9 files changed, 130 insertions, 116 deletions
diff --git a/Jamfile b/Jamfile
index 4680ed53..2b480bd6 100644
--- a/Jamfile
+++ b/Jamfile
@@ -69,7 +69,7 @@ rule WindRes
Clean clean : $(<) ;
}
-actions HexDump { xxd -i $(>) > $(<) }
+actions HexDump { xxd -i $(>) | sed -e 's/unsigned/const unsigned/' > $(<) }
actions WindRes { windres -i $(>) -o $(<) --include-dir=$(>:D) }
rule XCopy
@@ -263,16 +263,6 @@ Library libmupdf :
;
-
-# --------------------------------------------------------------------------
-
-SubDir TOP apps common ;
-
-Library libpdfapp :
- pdfapp.c
- ;
-
-
# --------------------------------------------------------------------------
#
# Build simple portable apps
@@ -300,6 +290,12 @@ for APP in $(APPLIST)
# Build non-portable GUI frontend apps
#
+SubDir TOP apps common ;
+
+Library libpdfapp :
+ pdfapp.c
+ ;
+
if $(OS) = MINGW
{
SubDir TOP apps windows ;
@@ -381,6 +377,8 @@ if $(OS) = MINGW
# Documenatation
#
+SubDir TOP ;
+
InstallFile $(BINDIR) : PUBLIC ;
InstallFile $(BINDIR) : CHANGES ;
diff --git a/TODO b/TODO
index 35e7e9a8..a9e7e23c 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,6 @@
+lazy nametree
+lazy pagetree
+
cmap one-to-many mapping
builtin standard cmap files
put unicode strings in text object, not font
diff --git a/apps/mozilla/moz_main.c b/apps/mozilla/moz_main.c
index afffbe86..f09fddff 100644
--- a/apps/mozilla/moz_main.c
+++ b/apps/mozilla/moz_main.c
@@ -97,11 +97,6 @@ void pdfmoz_open(pdfmoz_t *moz, char *filename)
{
if (!strncmp(error->msg, "ioerror", 7))
pdfmoz_error(moz, error);
- pdfmoz_warn(moz,
- "There was a problem with file \"%s\".\n"
- "It may be corrupted, or generated by broken software.\n\n"
- "%s\n\nTrying to continue anyway...",
- filename, error->msg);
error = pdf_repairxref(moz->xref, filename);
if (error)
pdfmoz_error(moz, error);
@@ -474,8 +469,12 @@ MozWinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &rc, GetStockBrush(WHITE_BRUSH));
- DrawText(hdc, moz->error, strlen(moz->error), &rc,
- DT_SINGLELINE|DT_CENTER|DT_VCENTER);
+rc.top += 10;
+rc.bottom -= 10;
+rc.left += 10;
+rc.right -= 10;
+ DrawText(hdc, moz->error, strlen(moz->error), &rc, 0);
+// DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hwnd, &ps);
}
if (msg == WM_MOUSEMOVE)
@@ -823,7 +822,7 @@ NPP_StreamAsFile(NPP inst, NPStream* stream, const char* fname)
void
NPP_Print(NPP inst, NPPrint* platformPrint)
{
- MSG("NPP_Print");
+ MSG("Sorry, printing is not supported.");
}
int16
diff --git a/apps/mozilla/moz_winres.rc b/apps/mozilla/moz_winres.rc
index 736efb5e..189d3aea 100644
--- a/apps/mozilla/moz_winres.rc
+++ b/apps/mozilla/moz_winres.rc
@@ -12,7 +12,7 @@ BEGIN
VALUE "ProductName", "GhostPDF Plug-in\0"
VALUE "OriginalFilename", "npmupdf.dll\0"
VALUE "FileDescription", "The GhostPDF plugin allows you to browse PDF files with a simple light-weight scrolling interface.<br>See <a href=""http://ghostpdf.com/new.html"">ghostpdf.com</a> for more information.\0"
- VALUE "MIMEType", "application/pdf|application/mupdf\0"
+ VALUE "MIMEType", "application/pdf|application/x-mupdf\0"
VALUE "FileExtents", "pdf|foo"
VALUE "FileOpenName", "Acrobat PDF File|Acrobat PDF File"
END
diff --git a/include/mupdf/base14.h b/include/mupdf/base14.h
index f1668d53..aee2d114 100644
--- a/include/mupdf/base14.h
+++ b/include/mupdf/base14.h
@@ -1,30 +1,30 @@
-extern unsigned char fonts_Dingbats_cff[];
-extern unsigned int fonts_Dingbats_cff_len;
-extern unsigned char fonts_NimbusMonL_Bold_cff[];
-extern unsigned int fonts_NimbusMonL_Bold_cff_len;
-extern unsigned char fonts_NimbusMonL_BoldObli_cff[];
-extern unsigned int fonts_NimbusMonL_BoldObli_cff_len;
-extern unsigned char fonts_NimbusMonL_Regu_cff[];
-extern unsigned int fonts_NimbusMonL_Regu_cff_len;
-extern unsigned char fonts_NimbusMonL_ReguObli_cff[];
-extern unsigned int fonts_NimbusMonL_ReguObli_cff_len;
-extern unsigned char fonts_NimbusRomNo9L_Medi_cff[];
-extern unsigned int fonts_NimbusRomNo9L_Medi_cff_len;
-extern unsigned char fonts_NimbusRomNo9L_MediItal_cff[];
-extern unsigned int fonts_NimbusRomNo9L_MediItal_cff_len;
-extern unsigned char fonts_NimbusRomNo9L_Regu_cff[];
-extern unsigned int fonts_NimbusRomNo9L_Regu_cff_len;
-extern unsigned char fonts_NimbusRomNo9L_ReguItal_cff[];
-extern unsigned int fonts_NimbusRomNo9L_ReguItal_cff_len;
-extern unsigned char fonts_NimbusSanL_Bold_cff[];
-extern unsigned int fonts_NimbusSanL_Bold_cff_len;
-extern unsigned char fonts_NimbusSanL_BoldItal_cff[];
-extern unsigned int fonts_NimbusSanL_BoldItal_cff_len;
-extern unsigned char fonts_NimbusSanL_Regu_cff[];
-extern unsigned int fonts_NimbusSanL_Regu_cff_len;
-extern unsigned char fonts_NimbusSanL_ReguItal_cff[];
-extern unsigned int fonts_NimbusSanL_ReguItal_cff_len;
-extern unsigned char fonts_StandardSymL_cff[];
-extern unsigned int fonts_StandardSymL_cff_len;
-extern unsigned char fonts_URWChanceryL_MediItal_cff[];
-extern unsigned int fonts_URWChanceryL_MediItal_cff_len;
+extern const unsigned char fonts_Dingbats_cff[];
+extern const unsigned int fonts_Dingbats_cff_len;
+extern const unsigned char fonts_NimbusMonL_Bold_cff[];
+extern const unsigned int fonts_NimbusMonL_Bold_cff_len;
+extern const unsigned char fonts_NimbusMonL_BoldObli_cff[];
+extern const unsigned int fonts_NimbusMonL_BoldObli_cff_len;
+extern const unsigned char fonts_NimbusMonL_Regu_cff[];
+extern const unsigned int fonts_NimbusMonL_Regu_cff_len;
+extern const unsigned char fonts_NimbusMonL_ReguObli_cff[];
+extern const unsigned int fonts_NimbusMonL_ReguObli_cff_len;
+extern const unsigned char fonts_NimbusRomNo9L_Medi_cff[];
+extern const unsigned int fonts_NimbusRomNo9L_Medi_cff_len;
+extern const unsigned char fonts_NimbusRomNo9L_MediItal_cff[];
+extern const unsigned int fonts_NimbusRomNo9L_MediItal_cff_len;
+extern const unsigned char fonts_NimbusRomNo9L_Regu_cff[];
+extern const unsigned int fonts_NimbusRomNo9L_Regu_cff_len;
+extern const unsigned char fonts_NimbusRomNo9L_ReguItal_cff[];
+extern const unsigned int fonts_NimbusRomNo9L_ReguItal_cff_len;
+extern const unsigned char fonts_NimbusSanL_Bold_cff[];
+extern const unsigned int fonts_NimbusSanL_Bold_cff_len;
+extern const unsigned char fonts_NimbusSanL_BoldItal_cff[];
+extern const unsigned int fonts_NimbusSanL_BoldItal_cff_len;
+extern const unsigned char fonts_NimbusSanL_Regu_cff[];
+extern const unsigned int fonts_NimbusSanL_Regu_cff_len;
+extern const unsigned char fonts_NimbusSanL_ReguItal_cff[];
+extern const unsigned int fonts_NimbusSanL_ReguItal_cff_len;
+extern const unsigned char fonts_StandardSymL_cff[];
+extern const unsigned int fonts_StandardSymL_cff_len;
+extern const unsigned char fonts_URWChanceryL_MediItal_cff[];
+extern const unsigned int fonts_URWChanceryL_MediItal_cff_len;
diff --git a/include/mupdf/rsrc.h b/include/mupdf/rsrc.h
index 34aefea2..5b78a1e8 100644
--- a/include/mupdf/rsrc.h
+++ b/include/mupdf/rsrc.h
@@ -144,20 +144,20 @@ fz_error *pdf_loadtile(fz_image *image, fz_pixmap *tile);
*/
struct pdf_aglpair { char *name; unsigned short code; };
-extern struct pdf_aglpair pdf_adobeglyphlist[];
-extern int pdf_adobeglyphlen;
+extern const struct pdf_aglpair pdf_adobeglyphlist[];
+extern const int pdf_adobeglyphlen;
void pdf_loadencoding(char **estrings, char *encoding);
int pdf_lookupagl(char *name);
-extern unsigned short pdf_docencoding[256];
-extern char *pdf_macroman[256];
-extern char *pdf_macexpert[256];
-extern char *pdf_winansi[256];
-extern char *pdf_standard[256];
-extern char *pdf_expert[256];
-extern char *pdf_symbol[256];
-extern char *pdf_zapfdingbats[256];
+extern const unsigned short pdf_docencoding[256];
+extern const char * const pdf_macroman[256];
+extern const char * const pdf_macexpert[256];
+extern const char * const pdf_winansi[256];
+extern const char * const pdf_standard[256];
+extern const char * const pdf_expert[256];
+extern const char * const pdf_symbol[256];
+extern const char * const pdf_zapfdingbats[256];
typedef struct pdf_font_s pdf_font;
diff --git a/mupdf/pdf_fontagl.c b/mupdf/pdf_fontagl.c
index de4156a2..6697ce11 100644
--- a/mupdf/pdf_fontagl.c
+++ b/mupdf/pdf_fontagl.c
@@ -38,7 +38,7 @@ int pdf_lookupagl(char *name)
return -1;
}
-struct pdf_aglpair pdf_adobeglyphlist[] =
+const struct pdf_aglpair pdf_adobeglyphlist[] =
{
{"A",0x0041},
@@ -4328,5 +4328,5 @@ struct pdf_aglpair pdf_adobeglyphlist[] =
*/
};
-int pdf_adobeglyphlen = (sizeof(pdf_adobeglyphlist) / sizeof(struct pdf_aglpair));
+const int pdf_adobeglyphlen = (sizeof(pdf_adobeglyphlist) / sizeof(struct pdf_aglpair));
diff --git a/mupdf/pdf_fontenc.c b/mupdf/pdf_fontenc.c
index 7de7b5e9..d3726675 100644
--- a/mupdf/pdf_fontenc.c
+++ b/mupdf/pdf_fontenc.c
@@ -13,18 +13,18 @@ void pdf_loadencoding(char **estrings, char *encoding)
int i;
if (!strcmp(encoding, "MacRomanEncoding"))
- bstrings = pdf_macroman;
+ bstrings = (char**) pdf_macroman;
if (!strcmp(encoding, "MacExpertEncoding"))
- bstrings = pdf_macexpert;
+ bstrings = (char**) pdf_macexpert;
if (!strcmp(encoding, "WinAnsiEncoding"))
- bstrings = pdf_winansi;
+ bstrings = (char**) pdf_winansi;
if (bstrings)
for (i = 0; i < 256; i++)
estrings[i] = bstrings[i];
}
-unsigned short pdf_docencoding[256] =
+const unsigned short pdf_docencoding[256] =
{
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -60,7 +60,7 @@ unsigned short pdf_docencoding[256] =
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
};
-char *pdf_macroman[256] = { _notdef, _notdef,
+const char * const pdf_macroman[256] = { _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -100,7 +100,7 @@ char *pdf_macroman[256] = { _notdef, _notdef,
"Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve",
"dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron" };
-char *pdf_macexpert[256] = { _notdef, _notdef,
+const char * const pdf_macexpert[256] = { _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -153,7 +153,7 @@ char *pdf_macexpert[256] = { _notdef, _notdef,
"msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall",
"Ringsmall", _notdef, _notdef, _notdef, _notdef };
-char *pdf_winansi[256] = { _notdef, _notdef, _notdef,
+const char * const pdf_winansi[256] = { _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -196,7 +196,7 @@ char *pdf_winansi[256] = { _notdef, _notdef, _notdef,
#if 0
-char *pdf_standard[256] = { _notdef, _notdef,
+const char * const pdf_standard[256] = { _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -236,7 +236,7 @@ char *pdf_standard[256] = { _notdef, _notdef,
_notdef, "dotlessi", _notdef, _notdef, "lslash", "oslash",
"oe", "germandbls", _notdef, _notdef, _notdef, _notdef };
-char *pdf_expert[256] = { _notdef, _notdef, _notdef,
+const char * const pdf_expert[256] = { _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -289,7 +289,7 @@ char *pdf_expert[256] = { _notdef, _notdef, _notdef,
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall",
"Thornsmall", "Ydieresissmall" };
-char *pdf_symbol[256] = { _notdef, _notdef, _notdef,
+const char * const pdf_symbol[256] = { _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
@@ -336,7 +336,7 @@ char *pdf_symbol[256] = { _notdef, _notdef, _notdef,
"bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid",
"bracerightbt", _notdef };
-char *pdf_zapfdingbats[256] = { _notdef, _notdef,
+const char * const pdf_zapfdingbats[256] = { _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
_notdef, _notdef, _notdef, _notdef, _notdef, _notdef,
diff --git a/mupdf/pdf_fontfile.c b/mupdf/pdf_fontfile.c
index 7ca24c8f..b90c71c0 100644
--- a/mupdf/pdf_fontfile.c
+++ b/mupdf/pdf_fontfile.c
@@ -21,53 +21,66 @@ enum
FD_FORCEBOLD = 1 << 18
};
-static char *basenames[15] =
+static const struct
{
- "Courier",
- "Courier-Bold",
- "Courier-Oblique",
- "Courier-BoldOblique",
- "Helvetica",
- "Helvetica-Bold",
- "Helvetica-Oblique",
- "Helvetica-BoldOblique",
- "Times-Roman",
- "Times-Bold",
- "Times-Italic",
- "Times-BoldItalic",
- "Symbol",
- "ZapfDingbats",
- "Chancery"
-};
-
-static void loadfontdata(int i, unsigned char **d, unsigned int *l)
+ const char *name;
+ const unsigned char *cff;
+ const unsigned int *len;
+} basefonts[15] =
{
- switch (i)
- {
- case 0: *d=fonts_NimbusMonL_Regu_cff;*l=fonts_NimbusMonL_Regu_cff_len;break;
- case 1: *d=fonts_NimbusMonL_Bold_cff;*l=fonts_NimbusMonL_Bold_cff_len;break;
- case 2: *d=fonts_NimbusMonL_ReguObli_cff;*l=fonts_NimbusMonL_ReguObli_cff_len;break;
- case 3: *d=fonts_NimbusMonL_BoldObli_cff;*l=fonts_NimbusMonL_BoldObli_cff_len;break;
- case 4: *d=fonts_NimbusSanL_Regu_cff;*l=fonts_NimbusSanL_Regu_cff_len;break;
- case 5: *d=fonts_NimbusSanL_Bold_cff;*l=fonts_NimbusSanL_Bold_cff_len;break;
- case 6: *d=fonts_NimbusSanL_ReguItal_cff;*l=fonts_NimbusSanL_ReguItal_cff_len;break;
- case 7: *d=fonts_NimbusSanL_BoldItal_cff;*l=fonts_NimbusSanL_BoldItal_cff_len;break;
- case 8: *d=fonts_NimbusRomNo9L_Regu_cff;*l=fonts_NimbusRomNo9L_Regu_cff_len;break;
- case 9: *d=fonts_NimbusRomNo9L_Medi_cff;*l=fonts_NimbusRomNo9L_Medi_cff_len;break;
- case 10: *d=fonts_NimbusRomNo9L_ReguItal_cff;*l=fonts_NimbusRomNo9L_ReguItal_cff_len;break;
- case 11: *d=fonts_NimbusRomNo9L_MediItal_cff;*l=fonts_NimbusRomNo9L_MediItal_cff_len;break;
- case 12: *d=fonts_StandardSymL_cff;*l=fonts_StandardSymL_cff_len;break;
- case 13: *d=fonts_Dingbats_cff;*l=fonts_Dingbats_cff_len;break;
- default: *d=fonts_URWChanceryL_MediItal_cff;*l=fonts_URWChanceryL_MediItal_cff_len;break;
- }
-}
+ { "Courier",
+ fonts_NimbusMonL_Regu_cff,
+ &fonts_NimbusMonL_Regu_cff_len },
+ { "Courier-Bold",
+ fonts_NimbusMonL_Bold_cff,
+ &fonts_NimbusMonL_Bold_cff_len },
+ { "Courier-Oblique",
+ fonts_NimbusMonL_ReguObli_cff,
+ &fonts_NimbusMonL_ReguObli_cff_len },
+ { "Courier-BoldOblique",
+ fonts_NimbusMonL_BoldObli_cff,
+ &fonts_NimbusMonL_BoldObli_cff_len },
+ { "Helvetica",
+ fonts_NimbusSanL_Regu_cff,
+ &fonts_NimbusSanL_Regu_cff_len },
+ { "Helvetica-Bold",
+ fonts_NimbusSanL_Bold_cff,
+ &fonts_NimbusSanL_Bold_cff_len },
+ { "Helvetica-Oblique",
+ fonts_NimbusSanL_ReguItal_cff,
+ &fonts_NimbusSanL_ReguItal_cff_len },
+ { "Helvetica-BoldOblique",
+ fonts_NimbusSanL_BoldItal_cff,
+ &fonts_NimbusSanL_BoldItal_cff_len },
+ { "Times-Roman",
+ fonts_NimbusRomNo9L_Regu_cff,
+ &fonts_NimbusRomNo9L_Regu_cff_len },
+ { "Times-Bold",
+ fonts_NimbusRomNo9L_Medi_cff,
+ &fonts_NimbusRomNo9L_Medi_cff_len },
+ { "Times-Italic",
+ fonts_NimbusRomNo9L_ReguItal_cff,
+ &fonts_NimbusRomNo9L_ReguItal_cff_len },
+ { "Times-BoldItalic",
+ fonts_NimbusRomNo9L_MediItal_cff,
+ &fonts_NimbusRomNo9L_MediItal_cff_len },
+ { "Symbol",
+ fonts_StandardSymL_cff,
+ &fonts_StandardSymL_cff_len },
+ { "ZapfDingbats",
+ fonts_Dingbats_cff,
+ &fonts_Dingbats_cff_len },
+ { "Chancery",
+ fonts_URWChanceryL_MediItal_cff,
+ &fonts_URWChanceryL_MediItal_cff_len }
+};
enum { CNS, GB, Japan, Korea };
enum { MINCHO, GOTHIC };
struct subent { int csi; int kind; char *name; };
-static struct subent fontsubs[] =
+static const struct subent fontsubs[] =
{
{ CNS, MINCHO, "bkai00mp.ttf" },
{ CNS, GOTHIC, "bsmi00lp.ttf" },
@@ -131,7 +144,7 @@ pdf_loadbuiltinfont(pdf_font *font, char *fontname)
return error;
for (i = 0; i < 15; i++)
- if (!strcmp(fontname, basenames[i]))
+ if (!strcmp(fontname, basefonts[i].name))
goto found;
return fz_throw("font not found: %s", fontname);
@@ -139,7 +152,8 @@ pdf_loadbuiltinfont(pdf_font *font, char *fontname)
found:
pdf_logfont("load builtin font %s\n", fontname);
- loadfontdata(i, &data, &len);
+ data = (unsigned char *) basefonts[i].cff;
+ len = *basefonts[i].len;
e = FT_New_Memory_Face(ftlib, data, len, 0, (FT_Face*)&font->ftface);
if (e)
@@ -151,7 +165,7 @@ found:
static int
findcidfont(char *filename, char *path, int pathlen)
{
- static char *dirs[] =
+ static const char *dirs[] =
{
"$/.fonts",
"$/Library/Fonts",
@@ -193,7 +207,7 @@ findcidfont(char *filename, char *path, int pathlen)
if (!home)
home = "/";
- for (dirp = dirs; *dirp; dirp++)
+ for (dirp = (char**)dirs; *dirp; dirp++)
{
dir = *dirp;
if (dir[0] == '$')