aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/man_html.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2022-07-05 21:25:29 +0000
committerIngo Schwarze <schwarze@openbsd.org>2022-07-05 21:25:29 +0000
commit8bee07458b84a3c97d980af8bc26fbd8d9b72eab (patch)
treefddf846e6fb1cd89dfdc50d8affca7625aff709a /man_html.c
parentae49b31649e571ceb182e182bc1eeff17e7b16ae (diff)
downloadmandoc-8bee07458b84a3c97d980af8bc26fbd8d9b72eab.tar.gz
mandoc-8bee07458b84a3c97d980af8bc26fbd8d9b72eab.tar.zst
mandoc-8bee07458b84a3c97d980af8bc26fbd8d9b72eab.zip
Finally get rid of the archaic <table> markup for header and footer lines
and use flexbox CSS instead. Improve accessibility by adding role and aria-label attributes to these header and footer lines. Using ideas from both Anna Vyalkova <cyber at sysrq dot in> and myself. As a welcome side effect, this also resolves the long-standing issue that the rendering was always 65em wide, requiring horizontal scrolling when the window was narrower. Now, rendering nicely adapts to browser windows of arbitrary narrowness.
Diffstat (limited to 'man_html.c')
-rw-r--r--man_html.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/man_html.c b/man_html.c
index 1eeaadf2..19337a10 100644
--- a/man_html.c
+++ b/man_html.c
@@ -1,6 +1,6 @@
-/* $Id: man_html.c,v 1.181 2022/07/04 14:37:33 schwarze Exp $ */
+/* $Id: man_html.c,v 1.182 2022/07/05 21:25:29 schwarze Exp $ */
/*
- * Copyright (c) 2013-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2013-2015,2017-2020,2022 Ingo Schwarze <schwarze@openbsd.org>
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
*
* Permission to use, copy, modify, and distribute this software for any
@@ -263,26 +263,26 @@ print_man_node(MAN_ARGS)
static void
man_root_pre(const struct roff_meta *man, struct html *h)
{
- struct tag *t, *tt;
+ struct tag *t;
char *title;
assert(man->title);
assert(man->msec);
mandoc_asprintf(&title, "%s(%s)", man->title, man->msec);
- t = print_otag(h, TAG_TABLE, "c", "head");
- tt = print_otag(h, TAG_TR, "");
+ t = print_otag(h, TAG_DIV, "cr?", "head", "doc-pageheader",
+ "aria-label", "manual header line");
- print_otag(h, TAG_TD, "c", "head-ltitle");
+ print_otag(h, TAG_SPAN, "c", "head-ltitle");
print_text(h, title);
- print_stagq(h, tt);
+ print_stagq(h, t);
- print_otag(h, TAG_TD, "c", "head-vol");
+ print_otag(h, TAG_SPAN, "c", "head-vol");
if (man->vol != NULL)
print_text(h, man->vol);
- print_stagq(h, tt);
+ print_stagq(h, t);
- print_otag(h, TAG_TD, "c", "head-rtitle");
+ print_otag(h, TAG_SPAN, "c", "head-rtitle");
print_text(h, title);
print_tagq(h, t);
free(title);
@@ -291,16 +291,19 @@ man_root_pre(const struct roff_meta *man, struct html *h)
static void
man_root_post(const struct roff_meta *man, struct html *h)
{
- struct tag *t, *tt;
+ struct tag *t;
+
+ t = print_otag(h, TAG_DIV, "cr?", "foot", "doc-pagefooter",
+ "aria-label", "manual footer line");
- t = print_otag(h, TAG_TABLE, "c", "foot");
- tt = print_otag(h, TAG_TR, "");
+ print_otag(h, TAG_SPAN, "c", "foot-left");
+ print_stagq(h, t);
- print_otag(h, TAG_TD, "c", "foot-date");
+ print_otag(h, TAG_SPAN, "c", "foot-date");
print_text(h, man->date);
- print_stagq(h, tt);
+ print_stagq(h, t);
- print_otag(h, TAG_TD, "c", "foot-os");
+ print_otag(h, TAG_SPAN, "c", "foot-os");
if (man->os != NULL)
print_text(h, man->os);
print_tagq(h, t);