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 | 5dbcea4594d8b16bf100320bc68f4bc0892bda30 (patch) | |
tree | 9ce6cd6402c1bd1ecc68219d6a32f3746d39306d /term_ps.c | |
parent | a6dcadc095a90f39dc0c4f1edd94608d4488f665 (diff) | |
download | mandoc-5dbcea4594d8b16bf100320bc68f4bc0892bda30.tar.gz |
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.c | 30 |
1 files changed, 24 insertions, 6 deletions
@@ -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; } |