summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2006-05-16 22:55:46 +0000
committerBen Harris <bjh21@bjh21.me.uk>2006-05-16 22:55:46 +0000
commit8916e612525cfa56a57fe8f8144112c5b8fbb9e3 (patch)
treeae2072fbbedf09d1653c217b7020c51d969686c0
parent7e3fe1d70c5d32762151f5d6c1369800ceefbe93 (diff)
downloadhalibut-8916e612525cfa56a57fe8f8144112c5b8fbb9e3.zip
halibut-8916e612525cfa56a57fe8f8144112c5b8fbb9e3.tar.gz
halibut-8916e612525cfa56a57fe8f8144112c5b8fbb9e3.tar.bz2
halibut-8916e612525cfa56a57fe8f8144112c5b8fbb9e3.tar.xz
On Level 2 implementations, use setpagedevice to select the correct page size.
[originally from svn r6689]
-rw-r--r--bk_ps.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/bk_ps.c b/bk_ps.c
index 61a7993..7c0fbb8 100644
--- a/bk_ps.c
+++ b/bk_ps.c
@@ -99,6 +99,18 @@ void ps_backend(paragraph *sourceform, keywordlist *keywords,
if (p->type == para_VersionID)
ps_comment(fp, "% ", p->words);
+ /*
+ * Request the correct page size. We might want to bracket this
+ * with "%%BeginFeature: *PageSize A4" or similar, and "%%EndFeature",
+ * but that would require us to have a way of getting the name of
+ * the page size given its dimensions.
+ */
+ fprintf(fp, "/setpagedevice where {\n");
+ fprintf(fp, " pop 2 dict dup /PageSize [%g %g] put setpagedevice\n",
+ doc->paper_width / FUNITS_PER_PT,
+ doc->paper_height / FUNITS_PER_PT);
+ fprintf(fp, "} if\n");
+
for (fe = doc->fonts->head; fe; fe = fe->next) {
/* XXX This may request the same font multiple times. */
if (fe->font->info->fp) {