aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/term_ps.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-07-04 20:17:42 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-07-04 20:17:42 +0000
commita678be049e5af47b549a64dc1c273f0f0974bf0d (patch)
treef4ff86e6d37e007a13665d1571c79a363bb5086e /term_ps.c
parent0ad96c60deb904c6db9518ef1c03796c9abf4a7b (diff)
downloadmandoc-a678be049e5af47b549a64dc1c273f0f0974bf0d.tar.gz
mandoc-a678be049e5af47b549a64dc1c273f0f0974bf0d.tar.zst
mandoc-a678be049e5af47b549a64dc1c273f0f0974bf0d.zip
gv(1) doesn't remember the last set font when displaying new pages, so
print it out for each new page. This also prevents superfluous printings of the font before the %%Page: comment has been displayed.
Diffstat (limited to 'term_ps.c')
-rw-r--r--term_ps.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/term_ps.c b/term_ps.c
index 9dacb269..5b025ddd 100644
--- a/term_ps.c
+++ b/term_ps.c
@@ -1,4 +1,4 @@
-/* $Id: term_ps.c,v 1.31 2010/07/04 20:06:59 kristaps Exp $ */
+/* $Id: term_ps.c,v 1.32 2010/07/04 20:17:42 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -657,23 +657,32 @@ static void
ps_pletter(struct termp *p, int c)
{
int f;
-
+
/*
- * If we're not in a PostScript "word" context, then open one
- * now at the current cursor.
+ * If we haven't opened a page context, then output that we're
+ * in a new page and make sure the font is correctly set.
*/
- if (PS_NEWPAGE & p->engine.ps.flags)
+ if (PS_NEWPAGE & p->engine.ps.flags) {
printf("%%%%Page: %zu %zu\n",
p->engine.ps.pages + 1,
p->engine.ps.pages + 1);
+ ps_printf(p, "/%s %zu selectfont\n",
+ fonts[(int)p->engine.ps.lastf].name,
+ p->engine.ps.scale);
+ p->engine.ps.flags &= ~PS_NEWPAGE;
+ }
+
+ /*
+ * If we're not in a PostScript "word" context, then open one
+ * now at the current cursor.
+ */
if ( ! (PS_INLINE & p->engine.ps.flags)) {
ps_printf(p, "%zu %zu moveto\n(",
AFM2PNT(p, p->engine.ps.pscol),
AFM2PNT(p, p->engine.ps.psrow));
p->engine.ps.flags |= PS_INLINE;
- p->engine.ps.flags &= ~PS_NEWPAGE;
}
assert( ! (PS_NEWPAGE & p->engine.ps.flags));
@@ -875,9 +884,18 @@ ps_setfont(struct termp *p, enum termfont f)
{
assert(f < TERMFONT__MAX);
+ p->engine.ps.lastf = f;
+
+ /*
+ * If we're still at the top of the page, let the font-setting
+ * be delayed until we actually have stuff to print.
+ */
+
+ if (PS_NEWPAGE & p->engine.ps.flags)
+ return;
+
ps_printf(p, "/%s %zu selectfont\n",
fonts[(int)f].name, p->engine.ps.scale);
- p->engine.ps.lastf = f;
}