summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2012-09-21 12:04:30 +0200
committerRobin Watts <robin.watts@artifex.com>2012-09-21 11:52:59 +0100
commit1d2617d41ac32074403c1b6e7d941f90a249d6ca (patch)
tree40f998b4ab9fe651d7653d60e81dbcd161e6e386
parentf391ed7e08bf99a3a5b1b0f2cf3732f50b170d81 (diff)
downloadmupdf-1d2617d41ac32074403c1b6e7d941f90a249d6ca.tar.xz
Add ifdef option to embed either the small or full CJK fallback font.
The default is to embed the full font.
-rw-r--r--Makefile5
-rw-r--r--pdf/pdf_fontfile.c23
-rw-r--r--win32/generate.bat2
3 files changed, 29 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 9ce2be45..6fd0b23e 100644
--- a/Makefile
+++ b/Makefile
@@ -118,6 +118,7 @@ CMAP_KOREA_SRC := $(wildcard cmaps/korea/*)
FONT_BASE14_SRC := $(wildcard fonts/*.cff)
FONT_DROID_SRC := fonts/droid/DroidSans.ttf fonts/droid/DroidSansMono.ttf
FONT_CJK_SRC := fonts/droid/DroidSansFallback.ttf
+FONT_CJK_FULL_SRC := fonts/droid/DroidSansFallbackFull.ttf
JAVASCRIPT_SRC := pdf/pdf_util.js
$(GEN)/cmap_cns.h : $(CMAP_CNS_SRC)
@@ -135,12 +136,14 @@ $(GEN)/font_droid.h : $(FONT_DROID_SRC)
$(QUIET_GEN) ./$(FONTDUMP) $@ $(FONT_DROID_SRC)
$(GEN)/font_cjk.h : $(FONT_CJK_SRC)
$(QUIET_GEN) ./$(FONTDUMP) $@ $(FONT_CJK_SRC)
+$(GEN)/font_cjk_full.h : $(FONT_CJK_FULL_SRC)
+ $(QUIET_GEN) ./$(FONTDUMP) $@ $(FONT_CJK_FULL_SRC)
$(GEN)/js_util.h : $(JAVASCRIPT_SRC)
$(QUIET_GEN) ./$(CQUOTE) $@ $(JAVASCRIPT_SRC)
CMAP_HDR := $(addprefix $(GEN)/, cmap_cns.h cmap_gb.h cmap_japan.h cmap_korea.h)
-FONT_HDR := $(GEN)/font_base14.h $(GEN)/font_droid.h $(GEN)/font_cjk.h
+FONT_HDR := $(GEN)/font_base14.h $(GEN)/font_droid.h $(GEN)/font_cjk.h $(GEN)/font_cjk_full.h
JAVASCRIPT_HDR := $(GEN)/js_util.h
ifeq "$(CROSSCOMPILE)" ""
diff --git a/pdf/pdf_fontfile.c b/pdf/pdf_fontfile.c
index b67d8a32..99565da5 100644
--- a/pdf/pdf_fontfile.c
+++ b/pdf/pdf_fontfile.c
@@ -1,6 +1,20 @@
#include "fitz-internal.h"
#include "mupdf-internal.h"
+/*
+ Which fonts are embedded is based on a few preprocessor definitions.
+
+ The base 14 fonts are always embedded.
+ For font substitution we embed DroidSans which has good glyph coverage.
+ For CJK font substitution we embed DroidSansFallback.
+
+ Set NOCJK to skip all CJK support (this also omits embedding the CJK CMaps)
+ Set NOCJKFONT to skip the embedded CJK font.
+ Set NOCJKFULL to embed a smaller CJK font without CJK Extension A support.
+
+ Set NODROIDFONT to use the base 14 fonts as substitute fonts.
+*/
+
#ifdef NOCJK
#define NOCJKFONT
#endif
@@ -12,8 +26,12 @@
#endif
#ifndef NOCJKFONT
+#ifndef NOCJKFULL
+#include "../generated/font_cjk_full.h"
+#else
#include "../generated/font_cjk.h"
#endif
+#endif
unsigned char *
pdf_lookup_builtin_font(char *name, unsigned int *len)
@@ -122,8 +140,13 @@ unsigned char *
pdf_lookup_substitute_cjk_font(int ros, int serif, unsigned int *len)
{
#ifndef NOCJKFONT
+#ifndef NOCJKFULL
+ *len = sizeof pdf_font_DroidSansFallbackFull;
+ return (unsigned char*) pdf_font_DroidSansFallbackFull;
+#else
*len = sizeof pdf_font_DroidSansFallback;
return (unsigned char*) pdf_font_DroidSansFallback;
+#endif
#else
*len = 0;
return NULL;
diff --git a/win32/generate.bat b/win32/generate.bat
index 78393359..fa6c6d51 100644
--- a/win32/generate.bat
+++ b/win32/generate.bat
@@ -17,6 +17,8 @@ if not exist generated/font_droid.h fontdump.exe generated/font_droid.h fonts/dr
if not exist generated/font_cjk.h fontdump.exe generated/font_cjk.h fonts/droid/DroidSansFallback.ttf
+if not exist generated/font_cjk_full.h fontdump.exe generated/font_cjk_full.h fonts/droid/DroidSansFallbackFull.ttf
+
if not exist generated/cmap_cns.h cmapdump.exe generated/cmap_cns.h cmaps/cns/Adobe-CNS1-UCS2 cmaps/cns/Adobe-CNS1-0 cmaps/cns/Adobe-CNS1-1 cmaps/cns/Adobe-CNS1-2 cmaps/cns/Adobe-CNS1-3 cmaps/cns/Adobe-CNS1-4 cmaps/cns/Adobe-CNS1-5 cmaps/cns/Adobe-CNS1-6 cmaps/cns/B5-H cmaps/cns/B5-V cmaps/cns/B5pc-H cmaps/cns/B5pc-V cmaps/cns/CNS-EUC-H cmaps/cns/CNS-EUC-V cmaps/cns/CNS1-H cmaps/cns/CNS1-V cmaps/cns/CNS2-H cmaps/cns/CNS2-V cmaps/cns/ETen-B5-H cmaps/cns/ETen-B5-V cmaps/cns/ETenms-B5-H cmaps/cns/ETenms-B5-V cmaps/cns/ETHK-B5-H cmaps/cns/ETHK-B5-V cmaps/cns/HKdla-B5-H cmaps/cns/HKdla-B5-V cmaps/cns/HKdlb-B5-H cmaps/cns/HKdlb-B5-V cmaps/cns/HKgccs-B5-H cmaps/cns/HKgccs-B5-V cmaps/cns/HKm314-B5-H cmaps/cns/HKm314-B5-V cmaps/cns/HKm471-B5-H cmaps/cns/HKm471-B5-V cmaps/cns/HKscs-B5-H cmaps/cns/HKscs-B5-V cmaps/cns/UniCNS-UCS2-H cmaps/cns/UniCNS-UCS2-V cmaps/cns/UniCNS-UTF16-H cmaps/cns/UniCNS-UTF16-V
if not exist generated/cmap_gb.h cmapdump.exe generated/cmap_gb.h cmaps/gb/Adobe-GB1-UCS2 cmaps/gb/Adobe-GB1-0 cmaps/gb/Adobe-GB1-1 cmaps/gb/Adobe-GB1-2 cmaps/gb/Adobe-GB1-3 cmaps/gb/Adobe-GB1-4 cmaps/gb/Adobe-GB1-5 cmaps/gb/GB-EUC-H cmaps/gb/GB-EUC-V cmaps/gb/GB-H cmaps/gb/GB-V cmaps/gb/GBK-EUC-H cmaps/gb/GBK-EUC-V cmaps/gb/GBK2K-H cmaps/gb/GBK2K-V cmaps/gb/GBKp-EUC-H cmaps/gb/GBKp-EUC-V cmaps/gb/GBpc-EUC-H cmaps/gb/GBpc-EUC-V cmaps/gb/GBT-EUC-H cmaps/gb/GBT-EUC-V cmaps/gb/GBT-H cmaps/gb/GBT-V cmaps/gb/GBTpc-EUC-H cmaps/gb/GBTpc-EUC-V cmaps/gb/UniGB-UCS2-H cmaps/gb/UniGB-UCS2-V cmaps/gb/UniGB-UTF16-H cmaps/gb/UniGB-UTF16-V