mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge pull request #641 from houqp/new_ui_code
merge latest changes from master branch
This commit is contained in:
62
Makefile
62
Makefile
@@ -8,8 +8,8 @@ DJVUDIR=djvulibre
|
||||
KPVCRLIBDIR=kpvcrlib
|
||||
CRENGINEDIR=$(KPVCRLIBDIR)/crengine
|
||||
|
||||
FREETYPEDIR=$(MUPDFDIR)/thirdparty/freetype-2.4.10
|
||||
JPEGDIR=$(MUPDFDIR)/thirdparty/jpeg-9
|
||||
FREETYPEDIR=$(MUPDFDIR)/thirdparty/freetype
|
||||
JPEGDIR=$(MUPDFDIR)/thirdparty/jpeg
|
||||
LFSDIR=luafilesystem
|
||||
|
||||
POPENNSDIR=popen-noshell
|
||||
@@ -96,6 +96,7 @@ K2PDFOPT_CFLAGS=-I$(K2PDFOPTLIBDIR)/willuslib -I$(K2PDFOPTLIBDIR)/k2pdfoptlib -I
|
||||
MUPDFLIBS := $(MUPDFLIBDIR)/libfitz.a
|
||||
DJVULIBS := $(DJVUDIR)/build/libdjvu/.libs/libdjvulibre.so \
|
||||
$(LIBDIR)/libdjvulibre.so
|
||||
DJVULIB := $(LIBDIR)/libdjvulibre.so.21
|
||||
DJVULIBDIR := $(DJVUDIR)/build/libdjvu/.libs/
|
||||
CRENGINELIBS := $(CRENGINEDIR)/crengine/libcrengine.a \
|
||||
$(CRENGINEDIR)/thirdparty/chmlib/libchmlib.a \
|
||||
@@ -111,7 +112,7 @@ THIRDPARTYLIBS := $(MUPDFLIBDIR)/libfreetype.a \
|
||||
#$(MUPDFLIBDIR)/libjpeg.a \
|
||||
#$(CRENGINEDIR)/thirdparty/libjpeg/libjpeg.a \
|
||||
|
||||
LUALIB := $(LUADIR)/src/libluajit.a
|
||||
LUALIB := $(LIBDIR)/libluajit-5.1.so.2
|
||||
|
||||
POPENNSLIB := $(POPENNSDIR)/libpopen_noshell.a
|
||||
|
||||
@@ -136,18 +137,18 @@ kpdfview: kpdfview.o einkfb.o pdf.o blitbuffer.o drawcontext.o koptcontext.o inp
|
||||
ft.o \
|
||||
lfs.o \
|
||||
mupdfimg.o \
|
||||
$(MUPDFLIBS) \
|
||||
$(THIRDPARTYLIBS) \
|
||||
$(LUALIB) \
|
||||
djvu.o \
|
||||
pic.o \
|
||||
pic_jpeg.o \
|
||||
$(MUPDFLIBS) \
|
||||
$(THIRDPARTYLIBS) \
|
||||
djvu.o \
|
||||
cre.o \
|
||||
$(CRENGINELIBS) \
|
||||
$(STATICLIBSTDCPP) \
|
||||
$(LDFLAGS) \
|
||||
-Wl,-rpath=$(LIBDIR)/ \
|
||||
-o $@ \
|
||||
-lm -ldl -lpthread -lk2pdfopt -ldjvulibre -ljpeg -L$(MUPDFLIBDIR) -L$(LIBDIR)\
|
||||
-lm -ldl -lpthread -lk2pdfopt -ldjvulibre -lluajit-5.1 -L$(MUPDFLIBDIR) -L$(LIBDIR)\
|
||||
$(EMU_LDFLAGS) \
|
||||
$(DYNAMICLIBSTDCPP)
|
||||
|
||||
@@ -193,26 +194,19 @@ fetchthirdparty:
|
||||
test -d $(LUADIR) && (cd $(LUADIR); git checkout .) || echo warn: $(LUADIR) folder not found
|
||||
git submodule init
|
||||
git submodule update
|
||||
cd mupdf && (git submodule init; git submodule update)
|
||||
ln -sf kpvcrlib/crengine/cr3gui/data data
|
||||
test -e data/cr3.css || ln kpvcrlib/cr3.css data/
|
||||
test -d fonts || ln -sf $(TTF_FONTS_DIR) fonts
|
||||
test -d history || mkdir history
|
||||
test -d clipboard || mkdir clipboard
|
||||
# CREngine patch: disable fontconfig
|
||||
grep USE_FONTCONFIG $(CRENGINEDIR)/crengine/include/crsetup.h && grep -v USE_FONTCONFIG $(CRENGINEDIR)/crengine/include/crsetup.h > /tmp/new && mv /tmp/new $(CRENGINEDIR)/crengine/include/crsetup.h || echo "USE_FONTCONFIG already disabled"
|
||||
test -f mupdf-thirdparty.zip || wget http://www.mupdf.com/download/mupdf-thirdparty.zip
|
||||
# CREngine patch: change child nodes' type face
|
||||
# @TODO replace this dirty hack 24.04 2012 (houqp)
|
||||
cd kpvcrlib/crengine/crengine/src && \
|
||||
patch -N -p0 < ../../../lvrend_node_type_face.patch && \
|
||||
patch -N -p3 < ../../../lvdocview-getCurrentPageLinks.patch || true
|
||||
unzip mupdf-thirdparty.zip -d mupdf
|
||||
# check mupdf's thirdparty libs' version, if not matched, remove the old one
|
||||
# run make fetchthirdparty again to get the latest thirdparty libs.
|
||||
test -d $(FREETYPEDIR) || ( echo "error: mupdf's thirdparty libs' version not match" ; \
|
||||
rm -rf mupdf-thirdparty.zip ; exit 1 )
|
||||
# dirty patch in MuPDF's thirdparty lib for CREngine
|
||||
cd mupdf/thirdparty/jpeg-*/ && \
|
||||
patch -N -p0 < ../../../kpvcrlib/jpeg_compress_struct_size.patch &&\
|
||||
patch -N -p0 < ../../../kpvcrlib/jpeg_decompress_struct_size.patch
|
||||
# MuPDF patch: use external fonts
|
||||
cd mupdf && patch -N -p1 < ../mupdf.patch
|
||||
test -f popen-noshell/popen_noshell.c || svn co http://popen-noshell.googlecode.com/svn/trunk/ popen-noshell
|
||||
@@ -232,24 +226,18 @@ cleanthirdparty:
|
||||
test -d $(CRENGINEDIR)/crengine && ($(MAKE) -C $(CRENGINEDIR)/crengine clean) || echo warn: chmlib folder not found
|
||||
test -d $(KPVCRLIBDIR) && ($(MAKE) -C $(KPVCRLIBDIR) clean) || echo warn: chmlib folder not found
|
||||
rm -rf $(DJVUDIR)/build
|
||||
rm -f $(MUPDFDIR)/fontdump.host
|
||||
rm -f $(MUPDFDIR)/cmapdump.host
|
||||
$(MAKE) -C $(POPENNSDIR) clean
|
||||
$(MAKE) -C $(K2PDFOPTLIBDIR) clean
|
||||
|
||||
$(MUPDFDIR)/fontdump.host:
|
||||
CFLAGS="$(HOSTCFLAGS)" $(MAKE) -C mupdf build="release" CC="$(HOSTCC)" $(MUPDFTARGET)/fontdump
|
||||
cp -a $(MUPDFLIBDIR)/fontdump $(MUPDFDIR)/fontdump.host
|
||||
$(MAKE) -C mupdf clean
|
||||
|
||||
$(MUPDFDIR)/cmapdump.host:
|
||||
CFLAGS="$(HOSTCFLAGS)" $(MAKE) -C mupdf build="release" CC="$(HOSTCC)" $(MUPDFTARGET)/cmapdump
|
||||
cp -a $(MUPDFLIBDIR)/cmapdump $(MUPDFDIR)/cmapdump.host
|
||||
$(MAKE) -C mupdf clean
|
||||
|
||||
$(MUPDFLIBS) $(THIRDPARTYLIBS): $(MUPDFDIR)/cmapdump.host $(MUPDFDIR)/fontdump.host
|
||||
$(MUPDFLIBS) $(THIRDPARTYLIBS):
|
||||
# build only thirdparty libs, libfitz and pdf utils, which will care for libmupdf.a being built
|
||||
CFLAGS="$(CFLAGS) -DNOBUILTINFONT" $(MAKE) -C mupdf build="release" CC="$(CC)" CMAPDUMP=cmapdump.host FONTDUMP=fontdump.host MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1
|
||||
ifdef EMULATE_READER
|
||||
$(MAKE) -C mupdf XCFLAGS="$(CFLAGS) -DNOBUILTINFONT" build="release" CC="$(CC)" MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1 NOX11=yes
|
||||
else
|
||||
# generate data headers
|
||||
$(MAKE) -C mupdf generate build="release"
|
||||
$(MAKE) -C mupdf XCFLAGS="$(CFLAGS) -DNOBUILTINFONT" build="release" CC="$(CC)" MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1 NOX11=yes CROSSCOMPILE=yes OS=Kindle
|
||||
endif
|
||||
|
||||
$(DJVULIBS):
|
||||
mkdir -p $(DJVUDIR)/build
|
||||
@@ -269,11 +257,14 @@ $(CRENGINELIBS):
|
||||
|
||||
$(LUALIB):
|
||||
ifdef EMULATE_READER
|
||||
$(MAKE) -C $(LUADIR) BUILDMODE=static
|
||||
$(MAKE) -C $(LUADIR) BUILDMODE=shared
|
||||
else
|
||||
# To recap: build its TARGET_CC from CROSS+CC, so we need HOSTCC in CC. Build its HOST/TARGET_CFLAGS based on CFLAGS, so we need a neutral CFLAGS without arch
|
||||
$(MAKE) -C $(LUADIR) BUILDMODE=static CC="$(HOSTCC)" HOST_CC="$(HOSTCC) -m32" CFLAGS="$(BASE_CFLAGS)" HOST_CFLAGS="$(HOSTCFLAGS)" TARGET_CFLAGS="$(CFLAGS)" CROSS="$(CHOST)-" TARGET_FLAGS="-DLUAJIT_NO_LOG2 -DLUAJIT_NO_EXP2"
|
||||
$(MAKE) -C $(LUADIR) BUILDMODE=shared CC="$(HOSTCC)" HOST_CC="$(HOSTCC) -m32" CFLAGS="$(BASE_CFLAGS)" HOST_CFLAGS="$(HOSTCFLAGS)" TARGET_CFLAGS="$(CFLAGS)" CROSS="$(CHOST)-" TARGET_FLAGS="-DLUAJIT_NO_LOG2 -DLUAJIT_NO_EXP2"
|
||||
endif
|
||||
test -d $(LIBDIR) || mkdir $(LIBDIR)
|
||||
cp -a $(LUADIR)/src/libluajit.so* $(LUALIB)
|
||||
ln -s libluajit-5.1.so.2 $(LIBDIR)/libluajit-5.1.so
|
||||
|
||||
$(POPENNSLIB):
|
||||
$(MAKE) -C $(POPENNSDIR) CC="$(CC)" AR="$(AR)"
|
||||
@@ -299,10 +290,11 @@ customupdate: all
|
||||
mkdir -p $(INSTALL_DIR)/{history,screenshots,clipboard,libs}
|
||||
cp -p README.md COPYING kpdfview extr kpdf.sh $(LUA_FILES) $(INSTALL_DIR)
|
||||
mkdir $(INSTALL_DIR)/data
|
||||
cp -L libs/libdjvulibre.so.21 $(K2PDFOPTLIB) $(INSTALL_DIR)/libs
|
||||
cp -L $(DJVULIB) $(LUALIB) $(K2PDFOPTLIB) $(INSTALL_DIR)/libs
|
||||
$(STRIP) --strip-unneeded $(INSTALL_DIR)/libs/*
|
||||
cp -rpL data/*.css $(INSTALL_DIR)/data
|
||||
cp -rpL fonts $(INSTALL_DIR)
|
||||
rm $(INSTALL_DIR)/fonts/droid/DroidSansFallback.ttf
|
||||
cp -r git-rev resources $(INSTALL_DIR)
|
||||
cp -rpL frontend $(INSTALL_DIR)
|
||||
mkdir $(INSTALL_DIR)/fonts/host
|
||||
|
||||
32
einkfb.c
32
einkfb.c
@@ -15,7 +15,6 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
@@ -24,6 +23,11 @@
|
||||
|
||||
#include "einkfb.h"
|
||||
|
||||
#ifdef EMULATE_READER
|
||||
int emu_w = EMULATE_READER_W;
|
||||
int emu_h = EMULATE_READER_H;
|
||||
#endif
|
||||
|
||||
static int openFrameBuffer(lua_State *L) {
|
||||
const char *fb_device = luaL_checkstring(L, 1);
|
||||
FBInfo *fb = (FBInfo*) lua_newuserdata(L, sizeof(FBInfo));
|
||||
@@ -114,14 +118,14 @@ static int openFrameBuffer(lua_State *L) {
|
||||
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
|
||||
return luaL_error(L, "cannot initialize SDL.");
|
||||
}
|
||||
if(!(fb->screen = SDL_SetVideoMode(EMULATE_READER_W, EMULATE_READER_H, 32, SDL_HWSURFACE))) {
|
||||
if(!(fb->screen = SDL_SetVideoMode(emu_w, emu_h, 32, SDL_HWSURFACE))) {
|
||||
return luaL_error(L, "can't get video surface %dx%d for 32bpp.",
|
||||
EMULATE_READER_W, EMULATE_READER_H);
|
||||
emu_w, emu_h);
|
||||
}
|
||||
fb->vinfo.xres = EMULATE_READER_W;
|
||||
fb->vinfo.yres = EMULATE_READER_H;
|
||||
fb->buf->pitch = (EMULATE_READER_W + 1) / 2;
|
||||
fb->buf->data = calloc(fb->buf->pitch * EMULATE_READER_H, sizeof(char));
|
||||
fb->vinfo.xres = emu_w;
|
||||
fb->vinfo.yres = emu_h;
|
||||
fb->buf->pitch = (emu_w + 1) / 2;
|
||||
fb->buf->data = calloc(fb->buf->pitch * emu_h, sizeof(char));
|
||||
if(fb->buf->data == NULL) {
|
||||
return luaL_error(L, "cannot get framebuffer emu memory");
|
||||
}
|
||||
@@ -342,7 +346,6 @@ static int einkUpdate(lua_State *L) {
|
||||
/* NOTICE!!! You must close and reopen framebuffer after called this method.
|
||||
* Otherwise, screen resolution will not be updated! */
|
||||
static int einkSetOrientation(lua_State *L) {
|
||||
#ifndef EMULATE_READER
|
||||
FBInfo *fb = (FBInfo*) luaL_checkudata(L, 1, "einkfb");
|
||||
int mode = luaL_optint(L, 2, 0);
|
||||
|
||||
@@ -367,12 +370,22 @@ static int einkSetOrientation(lua_State *L) {
|
||||
* +--------------+
|
||||
* 0
|
||||
* */
|
||||
#ifndef EMULATE_READER
|
||||
if (mode == 1)
|
||||
mode = 2;
|
||||
else if (mode == 2)
|
||||
mode = 1;
|
||||
|
||||
ioctl(fb->fd, FBIO_EINK_SET_DISPLAY_ORIENTATION, mode);
|
||||
#else
|
||||
if (mode == 0 || mode == 2) {
|
||||
emu_w = EMULATE_READER_W;
|
||||
emu_h = EMULATE_READER_H;
|
||||
}
|
||||
else if (mode == 1 || mode == 3) {
|
||||
emu_w = EMULATE_READER_H;
|
||||
emu_h = EMULATE_READER_W;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@@ -390,6 +403,9 @@ static int einkGetOrientation(lua_State *L) {
|
||||
mode = 1;
|
||||
else if (mode == 1)
|
||||
mode = 2;
|
||||
#else
|
||||
if (emu_w == EMULATE_READER_H || emu_h == EMULATE_READER_W)
|
||||
mode = 1;
|
||||
#endif
|
||||
lua_pushinteger(L, mode);
|
||||
return 1;
|
||||
|
||||
@@ -3,7 +3,7 @@ require "settings" -- for DEBUG()
|
||||
Font = {
|
||||
fontmap = {
|
||||
-- default font for menu contents
|
||||
cfont = "droid/DroidSans.ttf",
|
||||
cfont = "droid/DroidSansFallbackFull.ttf",
|
||||
-- default font for title
|
||||
tfont = "NimbusSanL-BoldItal.cff",
|
||||
-- default font for footer
|
||||
|
||||
3
kpdf.sh
3
kpdf.sh
@@ -21,9 +21,8 @@ fi
|
||||
# stop cvm
|
||||
killall -stop cvm
|
||||
|
||||
export LD_LIBRARY_PATH=`pwd`/libs
|
||||
# finally call reader
|
||||
./reader.lua "$1" 2> /mnt/us/kindlepdfviewer/crash.log || cat /mnt/us/kindlepdfviewer/crash.log
|
||||
./reader.lua "$1" 2> crash.log
|
||||
|
||||
# unmount system fonts
|
||||
if grep /mnt/us/kindlepdfviewer/fonts/host /proc/mounts; then
|
||||
|
||||
@@ -9,14 +9,14 @@ SET(CR_3RDPARTY_DIR crengine/thirdparty)
|
||||
SET(CR3_PNG 1)
|
||||
#SET(CR3_JPEG 1)
|
||||
|
||||
SET(FREETYPE_INCLUDE_DIRS ${MUPDF_3RDPARTY_DIR}/freetype-2.4.10/include)
|
||||
SET(FREETYPE_INCLUDE_DIRS ${MUPDF_3RDPARTY_DIR}/freetype/include)
|
||||
#SET(FREETYPE_INCLUDE_DIRS ${CR_3RDPARTY_DIR}/freetype/include)
|
||||
SET(ANTIWORD_INCLUDE_DIR ${CR_3RDPARTY_DIR}/antiword)
|
||||
SET(CHM_INCLUDE_DIRS ${CR_3RDPARTY_DIR}/chmlib)
|
||||
SET(PNG_INCLUDE_DIR ${CR_3RDPARTY_DIR}/libpng)
|
||||
SET(ZLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/zlib-1.2.7)
|
||||
SET(ZLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/zlib)
|
||||
#SET(ZLIB_INCLUDE_DIR ${CR_3RDPARTY_DIR}/zlib)
|
||||
SET(JPEGLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/jpeg-9)
|
||||
SET(JPEGLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/jpeg)
|
||||
#SET(JPEGLIB_INCLUDE_DIR ${CR_3RDPARTY_DIR}/libjpeg)
|
||||
SET(JCONFIG_INCLUDE_DIR ${MUPDF_DIR}/scripts)
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
--- jcapimin.c 2012-04-04 00:02:30.000000000 +0800
|
||||
+++ jcapimin-patched.c 2012-04-04 00:02:26.000000000 +0800
|
||||
@@ -36,9 +36,9 @@
|
||||
cinfo->mem = NULL; /* so jpeg_destroy knows mem mgr not called */
|
||||
if (version != JPEG_LIB_VERSION)
|
||||
ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
|
||||
- if (structsize != SIZEOF(struct jpeg_compress_struct))
|
||||
- ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE,
|
||||
- (int) SIZEOF(struct jpeg_compress_struct), (int) structsize);
|
||||
+ /*if (structsize != SIZEOF(struct jpeg_compress_struct))*/
|
||||
+ /*ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, */
|
||||
+ /*(int) SIZEOF(struct jpeg_compress_struct), (int) structsize);*/
|
||||
|
||||
/* For debugging purposes, we zero the whole master structure.
|
||||
* But the application has already set the err pointer, and may have set
|
||||
@@ -1,15 +0,0 @@
|
||||
--- jdapimin.c 2012-04-04 01:09:00.000000000 +0800
|
||||
+++ jdapimin-patched.c 2012-04-04 01:42:44.000000000 +0800
|
||||
@@ -36,9 +36,9 @@
|
||||
cinfo->mem = NULL; /* so jpeg_destroy knows mem mgr not called */
|
||||
if (version != JPEG_LIB_VERSION)
|
||||
ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
|
||||
- if (structsize != SIZEOF(struct jpeg_decompress_struct))
|
||||
- ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE,
|
||||
- (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);
|
||||
+ /*if (structsize != SIZEOF(struct jpeg_decompress_struct))*/
|
||||
+ /*ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, */
|
||||
+ /*(int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);*/
|
||||
|
||||
/* For debugging purposes, we zero the whole master structure.
|
||||
* But the application has already set the err pointer, and may have set
|
||||
Submodule luajit-2.0 updated: 5bd133d6c8...eb6f890ebd
2
mupdf
2
mupdf
Submodule mupdf updated: bdb6b688a2...05219d086a
48
mupdf.patch
48
mupdf.patch
@@ -1,62 +1,60 @@
|
||||
diff --git a/pdf/pdf_font.c b/pdf/pdf_font.c
|
||||
index 5e54e0b..38bd1d8 100644
|
||||
index 33a1a65..c2fdee3 100644
|
||||
--- a/pdf/pdf_font.c
|
||||
+++ b/pdf/pdf_font.c
|
||||
@@ -182,8 +182,13 @@ pdf_load_builtin_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontname)
|
||||
@@ -185,7 +185,12 @@ pdf_load_builtin_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontname)
|
||||
if (!data)
|
||||
fz_throw(ctx, "cannot find builtin font: '%s'", fontname);
|
||||
|
||||
|
||||
+#ifndef NOBUILTINFONT
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 1);
|
||||
/* RJW: "cannot load freetype font from memory" */
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 1);
|
||||
+#else
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 1);
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1);
|
||||
+ free(data);
|
||||
+#endif
|
||||
|
||||
|
||||
if (!strcmp(fontname, "Symbol") || !strcmp(fontname, "ZapfDingbats"))
|
||||
fontdesc->flags |= PDF_FD_SYMBOLIC;
|
||||
@@ -199,8 +204,13 @@ pdf_load_substitute_font(fz_context *ctx, pdf_font_desc *fontdesc, int mono, int
|
||||
@@ -201,7 +206,12 @@ pdf_load_substitute_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontnam
|
||||
if (!data)
|
||||
fz_throw(ctx, "cannot find substitute font");
|
||||
|
||||
|
||||
+#ifndef NOBUILTINFONT
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 1);
|
||||
/* RJW: "cannot load freetype font from memory" */
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 1);
|
||||
+#else
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 1);
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1);
|
||||
+ free(data);
|
||||
+#endif
|
||||
|
||||
|
||||
fontdesc->font->ft_substitute = 1;
|
||||
fontdesc->font->ft_bold = bold && !ft_is_bold(fontdesc->font->ft_face);
|
||||
@@ -218,7 +228,12 @@ pdf_load_substitute_cjk_font(fz_context *ctx, pdf_font_desc *fontdesc, int ros,
|
||||
@@ -219,7 +229,12 @@ pdf_load_substitute_cjk_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fon
|
||||
fz_throw(ctx, "cannot find builtin CJK font");
|
||||
|
||||
|
||||
/* a glyph bbox cache is too big for droid sans fallback (51k glyphs!) */
|
||||
+#ifndef NOBUILTINFONT
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 0);
|
||||
fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 0);
|
||||
+#else
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 0);
|
||||
+ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1);
|
||||
+ free(data);
|
||||
+#endif
|
||||
/* RJW: "cannot load builtin CJK font" */
|
||||
|
||||
|
||||
fontdesc->font->ft_substitute = 1;
|
||||
}
|
||||
diff --git a/pdf/pdf_fontfile.c b/pdf/pdf_fontfile.c
|
||||
index 543ce76..a076033 100644
|
||||
index 99565da..a91380f 100644
|
||||
--- a/pdf/pdf_fontfile.c
|
||||
+++ b/pdf/pdf_fontfile.c
|
||||
@@ -1,6 +1,8 @@
|
||||
#include "fitz.h"
|
||||
#include "mupdf.h"
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
Set NODROIDFONT to use the base 14 fonts as substitute fonts.
|
||||
*/
|
||||
|
||||
+#ifndef NOBUILTINFONT
|
||||
+
|
||||
#ifdef NOCJK
|
||||
#define NOCJKFONT
|
||||
#endif
|
||||
@@ -129,3 +131,112 @@ pdf_find_substitute_cjk_font(int ros, int serif, unsigned int *len)
|
||||
@@ -152,3 +154,112 @@ pdf_lookup_substitute_cjk_font(int ros, int serif, unsigned int *len)
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ function escape_tex_specialchars()
|
||||
|
||||
function usage()
|
||||
{
|
||||
echo "Usage: $progname -o file.pdf file1.djvu [file2.mp3] ..."
|
||||
echo "Usage: $progname -o file.pdf [-a author] file1.djvu [file2.mp3] ..."
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -43,9 +43,13 @@ declare -a infiles=()
|
||||
declare -a infiles_texclean=()
|
||||
declare -a infilesize=()
|
||||
declare -i infcount=0 outfcount=0 totalsize=0
|
||||
declare author=""
|
||||
|
||||
while getopts ":o:" opt; do
|
||||
while getopts ":o:a:" opt; do
|
||||
case $opt in
|
||||
a)
|
||||
author="$OPTARG"
|
||||
;;
|
||||
o)
|
||||
outfile=$(readlink -f "$OPTARG")
|
||||
((outfcount++))
|
||||
@@ -96,6 +100,9 @@ cd $workdir
|
||||
echo -E "\documentclass{book}" >> tmp.tex
|
||||
echo -E "\usepackage[margin={1mm},papersize={9cm,12cm}]{geometry}" >> tmp.tex
|
||||
echo -E "\usepackage{hyperref,attachfile}" >> tmp.tex
|
||||
if [ ! -z "$author" ] ; then
|
||||
echo -E "\AtBeginDocument{\hypersetup{pdfauthor={$author}}}" >> tmp.tex
|
||||
fi
|
||||
echo -E "\begin{document}" >> tmp.tex
|
||||
echo -E "\tolerance=10000\pagestyle{empty}\fontsize{7}{13}\selectfont" >> tmp.tex
|
||||
|
||||
|
||||
Reference in New Issue
Block a user