diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2018-03-15 11:55:06 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-03-16 14:51:41 +0100 |
commit | 1cd2046b3cce264a3d13481652868fd1c31537fc (patch) | |
tree | 8ba181113cc22f2ffe4ba1a3ed549926b747bc8c /source/tools/pdfcreate.c | |
parent | 2612c20b725319833caeef36ccf4240f34e0e24b (diff) | |
download | mupdf-1cd2046b3cce264a3d13481652868fd1c31537fc.tar.xz |
Add simple fonts with 8-bit greek and cyrillic encodings.
Use KOI8-U for Cyrillic, and ISO 8859-7 for Greek.
Use with 'mutool create' using an extra argument to the %%Font directive:
%%Font TmRmC Times-Roman Cyrillic
BT
/TmRmC 16 Tf 10 10 Td
<fa c4 d2 c1 d7 d3 d4 d7 d5 ca d4 c5 21> Tj
ET
The alternatives are "Latin", "Greek", and "Cyrillic".
Diffstat (limited to 'source/tools/pdfcreate.c')
-rw-r--r-- | source/tools/pdfcreate.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/source/tools/pdfcreate.c b/source/tools/pdfcreate.c index 93dff5fb..032f32d5 100644 --- a/source/tools/pdfcreate.c +++ b/source/tools/pdfcreate.c @@ -32,10 +32,10 @@ static void usage(void) static fz_context *ctx = NULL; static pdf_document *doc = NULL; -static void add_font_res(pdf_obj *resources, char *name, char *path) +static void add_font_res(pdf_obj *resources, char *name, char *path, char *encname) { const unsigned char *data; - int size; + int size, enc; fz_font *font; pdf_obj *subres, *ref; @@ -52,7 +52,15 @@ static void add_font_res(pdf_obj *resources, char *name, char *path) pdf_dict_put_drop(ctx, resources, PDF_NAME_Font, subres); } - ref = pdf_add_simple_font(ctx, doc, font); + enc = PDF_SIMPLE_ENCODING_LATIN; + if (encname) + { + if (!strcmp(encname, "Latin")) enc = PDF_SIMPLE_ENCODING_LATIN; + else if (!strcmp(encname, "Greek")) enc = PDF_SIMPLE_ENCODING_GREEK; + else if (!strcmp(encname, "Cyrillic")) enc = PDF_SIMPLE_ENCODING_CYRILLIC; + } + + ref = pdf_add_simple_font(ctx, doc, font, enc); pdf_dict_puts(ctx, subres, name, ref); pdf_drop_obj(ctx, ref); @@ -125,7 +133,7 @@ static void create_page(char *input) int rotate = 0; char line[4096]; - char *s, *p; + char *s, *t, *p; fz_stream *stm; fz_buffer *contents; @@ -156,7 +164,8 @@ static void create_page(char *input) else if (!strcmp(s, "%%Font")) { s = fz_strsep(&p, " "); - add_font_res(resources, s, p); + t = fz_strsep(&p, " "); + add_font_res(resources, s, t, p); } else if (!strcmp(s, "%%CJKFont")) { |