gbranden pushed a commit to branch master
in repository groff.

commit 166ff2e02b80af29ad45af362f1cce487e093408
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Mon Aug 11 19:08:11 2025 -0500

    [tbl]: Fix Savannah #67420 (boxed utf8 TH tables).
    
    * src/preproc/tbl/table.cpp (table::print_single_hrule): When drawing a
      horizontal rule in a boxed table, also draw vertical rules at the
      table edges in nroff mode such that grotty(1) correctly detects
      horizontal and vertical rule intersections, producing correct
      box-drawing glyphs on the "utf8" device.
    
    Fixes <https://savannah.gnu.org/bugs/?67420>.  This bug could be
    characterized as an incomplete feature requiring cooperation between tbl
    and grotty.  One could date the problem back to the introduction of
    "utf8" output device support in January 2000 (released in groff 1.16,
    May 2000), or the addition of Unicode box-drawing character support to
    represent rule intersections in grotty in July 2003 (released in groff
    1.19.1, May 2004).
---
 ChangeLog                 | 16 ++++++++++++++++
 src/preproc/tbl/table.cpp |  4 ++++
 2 files changed, 20 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 67dbfc990..84213a03e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2025-08-11  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * src/preproc/tbl/table.cpp (table::print_single_hrule): When
+       drawing a horizontal rule in a boxed table, also draw vertical
+       rules at the table edges in nroff mode such that grotty(1)
+       correctly detects horizontal and vertical rule intersections,
+       producing correct box-drawing glyphs on the "utf8" device.
+
+       Fixes <https://savannah.gnu.org/bugs/?67420>.  This bug could be
+       characterized as an incomplete feature requiring cooperation
+       between tbl and grotty.  One could date the problem back to the
+       introduction of "utf8" output device support in January 2000
+       {released in groff 1.16, May 2000}, or the addition of Unicode
+       box-drawing character support to represent rule intersections in
+       grotty in July 2003 (released in groff 1.19.1, May 2004).
+
 2025-08-11  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        * src/preproc/tbl/tests/boxed-TH-tables-work-on-utf8-device.sh:
diff --git a/src/preproc/tbl/table.cpp b/src/preproc/tbl/table.cpp
index e19c921fe..8e89eb0e6 100644
--- a/src/preproc/tbl/table.cpp
+++ b/src/preproc/tbl/table.cpp
@@ -2557,6 +2557,8 @@ void table::print_single_hrule(int r)
   prints(".if t "
         "\\v'" BODY_DEPTH "'"
         "\\s[\\n[" LINESIZE_REG "]]\\c\n");
+  if ((r > 0) && (flags & (BOX | DOUBLEBOX | ALLBOX)))
+    prints(".if n \\Z@\\r\\D'l 0 2v'@\\c\n");
   if (r > nrows - 1)
     prints("\\D'l |\\n[TW]u 0'\\c");
   else {
@@ -2591,6 +2593,8 @@ void table::print_single_hrule(int r)
     }
   }
   prints("\\c\n");
+  if ((r > 0) && (flags & (BOX | DOUBLEBOX | ALLBOX)))
+    prints(".if n \\Z@\\r\\D'l 0 2v'@\\c\n");
   prints(".ie t \\s0\n"
         ".el   \\&\n");
   prints(".ls\n"

_______________________________________________
groff-commit mailing list
groff-commit@gnu.org
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to