diff options
-rw-r--r-- | Jamfile | 20 | ||||
-rw-r--r-- | TODO | 3 | ||||
-rw-r--r-- | apps/mozilla/moz_main.c | 15 | ||||
-rw-r--r-- | apps/mozilla/moz_winres.rc | 2 | ||||
-rw-r--r-- | include/mupdf/base14.h | 60 | ||||
-rw-r--r-- | include/mupdf/rsrc.h | 20 | ||||
-rw-r--r-- | mupdf/pdf_fontagl.c | 4 | ||||
-rw-r--r-- | mupdf/pdf_fontenc.c | 22 | ||||
-rw-r--r-- | mupdf/pdf_fontfile.c | 100 |
9 files changed, 130 insertions, 116 deletions
@@ -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 ; @@ -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] == '$') |