diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-07-04 20:17:42 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-07-04 20:17:42 +0000 |
commit | a678be049e5af47b549a64dc1c273f0f0974bf0d (patch) | |
tree | f4ff86e6d37e007a13665d1571c79a363bb5086e | |
parent | 0ad96c60deb904c6db9518ef1c03796c9abf4a7b (diff) | |
download | mandoc-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.
-rw-r--r-- | term_ps.c | 32 |
1 files changed, 25 insertions, 7 deletions
@@ -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; } |