X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/255b7ff3a0fcea3fb9f041c4ce371ef8ca66e5fa..b17a4ef35f3eb56057d51501241fc0bbdf80fa4d:/bk_pdf.c diff --git a/bk_pdf.c b/bk_pdf.c index 0a9336b..2697b16 100644 --- a/bk_pdf.c +++ b/bk_pdf.c @@ -133,7 +133,7 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, objtext(resources, "<<\n/Font <<\n"); for (fe = doc->fonts->head; fe; fe = fe->next) { char fname[40]; - int i; + int i, prev; object *font; sprintf(fname, "f%d", font_index++); @@ -157,9 +157,13 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, char buf[20]; if (!fe->vector[i]) continue; - sprintf(buf, "\n%d /", i); - objtext(font, buf); - objtext(font, fe->vector[i] ? fe->vector[i] : ".notdef"); + if (i != prev + 1) { + sprintf(buf, "\n%d", i); + objtext(font, buf); + } + objtext(font, i % 8 ? "/" : "\n/"); + objtext(font, fe->vector[i]); + prev = i; } objtext(font, "\n]\n>>\n"); @@ -228,7 +232,20 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, objtext(fontdesc, buf); sprintf(buf, "/StemV %g\n", fi->stemv); objtext(fontdesc, buf); - objtext(fontdesc, ">>\n"); + if (fi->fp) { + object *fontfile = new_object(&olist); + char buf[513]; + size_t len; + rewind(fi->fp); + do { + len = fread(buf, 1, sizeof(buf)-1, fi->fp); + buf[len] = 0; + objstream(fontfile, buf); + } while (len == sizeof(buf)-1); + objtext(fontdesc, "/FontFile "); + objref(fontdesc, fontfile); + } + objtext(fontdesc, "\n>>\n"); } objtext(font, "\n>>\n");