When calculating the with of spanned columns, which for example matters
authorschwarze <schwarze@openbsd.org>
Fri, 8 Apr 2022 16:53:40 +0000 (16:53 +0000)
committerschwarze <schwarze@openbsd.org>
Fri, 8 Apr 2022 16:53:40 +0000 (16:53 +0000)
for centering text spanning multiple tbl(7) columns, correctly account
for the spacing between columns instead of wrongly assuming the default
spacing of 3n.

Patch from Simon Branch <simonmbranch at gmail dot com>.

usr.bin/mandoc/tbl_term.c

index 3350426..c054fde 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tbl_term.c,v 1.63 2021/08/10 12:36:42 schwarze Exp $ */
+/*     $OpenBSD: tbl_term.c,v 1.64 2022/04/08 16:53:40 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011-2021 Ingo Schwarze <schwarze@openbsd.org>
@@ -818,8 +818,11 @@ tbl_literal(struct termp *tp, const struct tbl_dat *dp,
        width = col->width;
        ic = dp->layout->col;
        hspans = dp->hspans;
-       while (hspans--)
-               width += tp->tbl.cols[++ic].width + 3;
+       while (hspans--) {
+               width += tp->tbl.cols[ic].spacing;
+               ic++;
+               width += tp->tbl.cols[ic].width;
+       }
 
        padr = width > len ? width - len : 0;
        padl = 0;