From 1d2617d41ac32074403c1b6e7d941f90a249d6ca Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 21 Sep 2012 12:04:30 +0200 Subject: Add ifdef option to embed either the small or full CJK fallback font. The default is to embed the full font. --- Makefile | 5 ++++- pdf/pdf_fontfile.c | 23 +++++++++++++++++++++++ win32/generate.bat | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3