From 2612c20b725319833caeef36ccf4240f34e0e24b Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 14 Mar 2018 17:52:17 +0100 Subject: Add simple CJK font creation. Create a non-embedded CJK font using UTF-16 encoding. This can be used in mutool create like so: %%CJKFont Ming GB1 BT /Ming 10 Tf 100 100 Td <4F60 597D> Tj ET --- platform/java/mupdf_native.c | 22 ++++++++++++++++++++++ platform/java/mupdf_native.h | 16 ++++++++++++++++ platform/java/src/com/artifex/mupdf/fitz/Font.java | 5 +++++ .../src/com/artifex/mupdf/fitz/PDFDocument.java | 1 + 4 files changed, 44 insertions(+) (limited to 'platform/java') diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 7235d50e..31f76d7b 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -7053,6 +7053,28 @@ FUN(PDFDocument_addFont)(JNIEnv *env, jobject self, jobject jfont) return to_PDFObject_safe_own(ctx, env, self, ind); } +JNIEXPORT jobject JNICALL +FUN(PDFDocument_addCJKFont)(JNIEnv *env, jobject self, jobject jfont, jint ordering) +{ + fz_context *ctx = get_context(env); + pdf_document *pdf = from_PDFDocument(env, self); + fz_font *font = from_Font(env, jfont); + pdf_obj *ind = NULL; + + if (!ctx || !pdf) return NULL; + if (!font) { jni_throw_arg(env, "font must not be null"); return NULL; } + + fz_try(ctx) + ind = pdf_add_cjk_font(ctx, pdf, font, ordering); + fz_catch(ctx) + { + jni_rethrow(env, ctx); + return NULL; + } + + return to_PDFObject_safe_own(ctx, env, self, ind); +} + JNIEXPORT jobject JNICALL FUN(PDFDocument_addSimpleFont)(JNIEnv *env, jobject self, jobject jfont) { diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h index 8bfe3480..42d54345 100644 --- a/platform/java/mupdf_native.h +++ b/platform/java/mupdf_native.h @@ -889,6 +889,14 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +#undef com_artifex_mupdf_fitz_Font_CN +#define com_artifex_mupdf_fitz_Font_CN 0L +#undef com_artifex_mupdf_fitz_Font_TW +#define com_artifex_mupdf_fitz_Font_TW 1L +#undef com_artifex_mupdf_fitz_Font_JP +#define com_artifex_mupdf_fitz_Font_JP 2L +#undef com_artifex_mupdf_fitz_Font_KR +#define com_artifex_mupdf_fitz_Font_KR 3L /* * Class: com_artifex_mupdf_fitz_Font * Method: finalize @@ -1902,6 +1910,14 @@ JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_addImage JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_addSimpleFont (JNIEnv *, jobject, jobject); +/* + * Class: com_artifex_mupdf_fitz_PDFDocument + * Method: addCJKFont + * Signature: (Lcom/artifex/mupdf/fitz/Font;I)Lcom/artifex/mupdf/fitz/PDFObject; + */ +JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_addCJKFont + (JNIEnv *, jobject, jobject, jint); + /* * Class: com_artifex_mupdf_fitz_PDFDocument * Method: addFont diff --git a/platform/java/src/com/artifex/mupdf/fitz/Font.java b/platform/java/src/com/artifex/mupdf/fitz/Font.java index 9eb6f61a..2910d543 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/Font.java +++ b/platform/java/src/com/artifex/mupdf/fitz/Font.java @@ -6,6 +6,11 @@ public class Font Context.init(); } + public static final int CN = 0; + public static final int TW = 1; + public static final int JP = 2; + public static final int KR = 3; + private long pointer; protected native void finalize(); diff --git a/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java b/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java index 945294f3..b650df52 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java +++ b/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java @@ -97,6 +97,7 @@ public class PDFDocument extends Document public native void deletePage(int at); public native PDFObject addImage(Image image); public native PDFObject addSimpleFont(Font font); + public native PDFObject addCJKFont(Font font, int ordering); public native PDFObject addFont(Font font); public native boolean hasUnsavedChanges(); public native boolean canBeSavedIncrementally(); -- cgit v1.2.3