=================================================================== RCS file: /cvs/mandoc/term_ps.c,v retrieving revision 1.68 retrieving revision 1.71 diff -u -p -r1.68 -r1.71 --- mandoc/term_ps.c 2014/10/28 17:36:19 1.68 +++ mandoc/term_ps.c 2014/12/19 17:12:04 1.71 @@ -1,4 +1,4 @@ -/* $Id: term_ps.c,v 1.68 2014/10/28 17:36:19 schwarze Exp $ */ +/* $Id: term_ps.c,v 1.71 2014/12/19 17:12:04 schwarze Exp $ */ /* * Copyright (c) 2010, 2011 Kristaps Dzonsons * Copyright (c) 2014 Ingo Schwarze @@ -27,11 +27,10 @@ #include #include -#include "mandoc.h" #include "mandoc_aux.h" #include "out.h" -#include "main.h" #include "term.h" +#include "main.h" /* These work the buffer used by the header and footer. */ #define PS_BUFSLOP 128 @@ -541,6 +540,9 @@ pspdf_alloc(const struct mchars *mchars, char *outopts p = mandoc_calloc(1, sizeof(struct termp)); p->symtab = mchars; p->enc = TERMENC_ASCII; + p->fontq = mandoc_reallocarray(NULL, + (p->fontsz = 8), sizeof(enum termfont)); + p->fontq[0] = p->fontl = TERMFONT_NONE; p->ps = mandoc_calloc(1, sizeof(struct termp_ps)); p->advance = ps_advance; @@ -635,12 +637,14 @@ ps_setwidth(struct termp *p, int iop, size_t width) size_t lastwidth; lastwidth = p->ps->width; - if (0 < iop) + if (iop > 0) p->ps->width += width; - else if (0 > iop) + else if (iop == 0) + p->ps->width = width ? width : p->ps->lastwidth; + else if (p->ps->width > width) p->ps->width -= width; else - p->ps->width = width ? width : p->ps->lastwidth; + p->ps->width = 0; p->ps->lastwidth = lastwidth; }