Index: html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.c,v retrieving revision 1.159 diff -u -p -r1.159 html.c --- html.c 23 Jul 2014 15:00:08 -0000 1.159 +++ html.c 9 Aug 2014 23:31:38 -0000 @@ -70,12 +70,13 @@ static const struct htmldata htmltags[TA {"dt", HTML_CLRLINE}, /* TAG_DT */ {"dd", HTML_CLRLINE}, /* TAG_DD */ {"blockquote", HTML_CLRLINE}, /* TAG_BLOCKQUOTE */ - {"p", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_P */ + {"p", HTML_CLRLINE | HTML_NOSTACK }, /* TAG_P */ {"pre", HTML_CLRLINE }, /* TAG_PRE */ {"b", 0 }, /* TAG_B */ {"i", 0 }, /* TAG_I */ {"code", 0 }, /* TAG_CODE */ {"small", 0 }, /* TAG_SMALL */ + {"style", HTML_CLRLINE }, /* TAG_STYLE */ }; static const char *const htmlattrs[ATTR_MAX] = { @@ -93,6 +94,7 @@ static const char *const htmlattrs[ATTR_ "summary", /* ATTR_SUMMARY */ "align", /* ATTR_ALIGN */ "colspan", /* ATTR_COLSPAN */ + "charset", /* ATTR_CHARSET */ }; static const char *const roffscales[SCALE_MAX] = { @@ -161,14 +163,14 @@ void * html_alloc(char *outopts) { - return(ml_alloc(outopts, HTML_HTML_4_01_STRICT)); + return(ml_alloc(outopts, HTML_HTML5)); } void * xhtml_alloc(char *outopts) { - return(ml_alloc(outopts, HTML_XHTML_1_0_STRICT)); + return(ml_alloc(outopts, HTML_HTML5)); } void @@ -194,20 +196,26 @@ void print_gen_head(struct html *h) { struct htmlpair tag[4]; + struct tag *t; - tag[0].key = ATTR_HTTPEQUIV; - tag[0].val = "Content-Type"; - tag[1].key = ATTR_CONTENT; - tag[1].val = "text/html; charset=utf-8"; - print_otag(h, TAG_META, 2, tag); - - tag[0].key = ATTR_NAME; - tag[0].val = "resource-type"; - tag[1].key = ATTR_CONTENT; - tag[1].val = "document"; - print_otag(h, TAG_META, 2, tag); + if (HTML_HTML5 == h->type) { + tag[0].key = ATTR_CHARSET; + tag[0].val = "utf-8"; + print_otag(h, TAG_META, 1, tag); + } else { + tag[0].key = ATTR_HTTPEQUIV; + tag[0].val = "Content-Type"; + tag[1].key = ATTR_CONTENT; + tag[1].val = "text/html; charset=utf-8"; + print_otag(h, TAG_META, 2, tag); + tag[0].key = ATTR_NAME; + tag[0].val = "resource-type"; + tag[1].key = ATTR_CONTENT; + tag[1].val = "document"; + print_otag(h, TAG_META, 2, tag); + } - if (h->style) { + if (NULL != h->style) { tag[0].key = ATTR_REL; tag[0].val = "stylesheet"; tag[1].key = ATTR_HREF; @@ -217,7 +225,66 @@ print_gen_head(struct html *h) tag[3].key = ATTR_MEDIA; tag[3].val = "all"; print_otag(h, TAG_LINK, 4, tag); + return; } + + /* + * If we don't have a stylesheet, print some nice defaults here. + * This looks like a terminal. + */ + if (HTML_HTML5 != h->type) { + PAIR_INIT(&tag[0], ATTR_TYPE, "text/css"); + t = print_otag(h, TAG_STYLE, 1, tag); + } else + t = print_otag(h, TAG_STYLE, 0, NULL); + + print_text(h, "div.mandoc { min-width: 102ex; " + "width: 102ex; font-family: monospace; }\n"); + print_text(h, "div.mandoc h1, div.mandoc h2 " + "{ margin-bottom: 0ex; font-size: inherit; }\n"); + print_text(h, "div.mandoc h1 { margin-left: -4ex; }\n"); + print_text(h, "div.mandoc h2 { margin-left: -2ex; }\n"); + print_text(h, "div.mandoc div.section { margin: 1ex 5ex; }\n"); + print_text(h, "div.mandoc table { width: 100%; }\n"); + print_text(h, "div.mandoc td { vertical-align: top; }\n"); + print_text(h, "div.mandoc blockquote { margin: 0 5ex; }\n"); + print_text(h, "div.mandoc table.head.foot " + "td:last-child { text-align: right; }\n"); + print_text(h, "div.mandoc table.foot td { width: 50%; }\n"); + print_text(h, "div.mandoc table.head td { width: 10%; }\n"); + print_text(h, "div.mandoc table.head td.head-vol " + "{ width: 80%; text-align: center; }\n"); + print_text(h, "div.mandoc .emph { font-style: italic; " + "font-weight: normal; }\n"); + print_text(h, "div.mandoc .symb { font-style: normal; " + "font-weight: bold; }\n"); + print_text(h, "div.mandoc .symb { font-style: normal; " + "font-weight: normal; }\n"); + print_text(h, "div.mandoc i.addr.arg.farg.file.ftype." + "link-sec.ref-book.ref-issue.ref-jrnl " + "{ font-weight: normal; }\n"); + print_text(h, "div.mandoc b.cmd.config.diag.flag.fname." + "includes.macro.name.var { font-style: normal; }\n"); + print_text(h, "div.mandoc span.ref-title " + "{ text-decoration: underline; }\n"); + print_text(h, "div.mandoc span.type " + "{ font-style: italic; font-weight: normal; }\n"); + print_text(h, "div.mandoc dd.list-ohang " + "{ margin-left: 0ex; }\n"); + print_text(h, "div.mandoc ul.list-bul " + "{ list-style-type: disc; padding-left: 1em; }\n"); + print_text(h, "div.mandoc ul.list-dash " + "{ list-style-type: none; padding-left: 0em; }\n"); + print_text(h, "div.mandoc li.list-dash:before " + "{ content: \'\\\\2014 \'; }\n"); + print_text(h, "div.mandoc ul.list-hyph " + "{ list-style-type: none; padding-left: 0em; }\n"); + print_text(h, "div.mandoc li.list-hyph:before " + "{ content: \'\\\\2013 \'; }\n"); + print_text(h, "div.mandoc ul.list-item " + "{ list-style-type: none; padding-left: 0em; }\n"); + print_text(h, "div.mandoc ol.list-enum { padding-left: 2em; }\n"); + print_tagq(h, t); } static void @@ -508,6 +575,7 @@ print_otag(struct html *h, enum htmltag if (HTML_AUTOCLOSE & htmltags[tag].flags) switch (h->type) { case HTML_XHTML_1_0_STRICT: + case HTML_HTML5: putchar('/'); break; default: @@ -543,6 +611,9 @@ print_gen_decls(struct html *h) const char *name; switch (h->type) { + case HTML_HTML5: + printf("\n"); + return; case HTML_HTML_4_01_STRICT: name = "HTML"; doctype = "-//W3C//DTD HTML 4.01//EN"; Index: html.h =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.h,v retrieving revision 1.51 diff -u -p -r1.51 html.h --- html.h 20 Apr 2014 16:46:04 -0000 1.51 +++ html.h 9 Aug 2014 23:31:38 -0000 @@ -50,6 +50,7 @@ enum htmltag { TAG_I, TAG_CODE, TAG_SMALL, + TAG_STYLE, TAG_MAX }; @@ -68,6 +69,7 @@ enum htmlattr { ATTR_SUMMARY, ATTR_ALIGN, ATTR_COLSPAN, + ATTR_CHARSET, ATTR_MAX }; @@ -107,7 +109,8 @@ struct htmlpair { enum htmltype { HTML_HTML_4_01_STRICT, - HTML_XHTML_1_0_STRICT + HTML_XHTML_1_0_STRICT, + HTML_HTML5 }; struct html { Index: man_html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_html.c,v retrieving revision 1.96 diff -u -p -r1.96 man_html.c --- man_html.c 1 Aug 2014 19:25:52 -0000 1.96 +++ man_html.c 9 Aug 2014 23:31:38 -0000 @@ -309,14 +309,8 @@ man_root_pre(MAN_ARGS) assert(man->msec); mandoc_asprintf(&title, "%s(%s)", man->title, man->msec); - PAIR_SUMMARY_INIT(&tag[0], "Document Header"); - PAIR_CLASS_INIT(&tag[1], "head"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); - PAIR_INIT(&tag[0], ATTR_WIDTH, "30%"); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); + PAIR_CLASS_INIT(&tag[0], "head"); + t = print_otag(h, TAG_TABLE, 1, tag); print_otag(h, TAG_TBODY, 0, NULL); @@ -328,15 +322,13 @@ man_root_pre(MAN_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-vol"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "center"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); if (NULL != man->vol) print_text(h, man->vol); print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-rtitle"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); print_text(h, title); print_tagq(h, t); free(title); @@ -348,13 +340,8 @@ man_root_post(MAN_ARGS) struct htmlpair tag[3]; struct tag *t, *tt; - PAIR_SUMMARY_INIT(&tag[0], "Document Footer"); - PAIR_CLASS_INIT(&tag[1], "foot"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); - PAIR_INIT(&tag[0], ATTR_WIDTH, "50%"); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); + PAIR_CLASS_INIT(&tag[0], "foot"); + t = print_otag(h, TAG_TABLE, 1, tag); tt = print_otag(h, TAG_TR, 0, NULL); @@ -366,8 +353,7 @@ man_root_post(MAN_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "foot-os"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); if (man->source) print_text(h, man->source); Index: mdoc_html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_html.c,v retrieving revision 1.195 diff -u -p -r1.195 mdoc_html.c --- mdoc_html.c 6 Aug 2014 15:09:05 -0000 1.195 +++ mdoc_html.c 9 Aug 2014 23:31:38 -0000 @@ -489,13 +489,8 @@ mdoc_root_post(MDOC_ARGS) struct htmlpair tag[3]; struct tag *t, *tt; - PAIR_SUMMARY_INIT(&tag[0], "Document Footer"); - PAIR_CLASS_INIT(&tag[1], "foot"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); - PAIR_INIT(&tag[0], ATTR_WIDTH, "50%"); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); + PAIR_CLASS_INIT(&tag[0], "foot"); + t = print_otag(h, TAG_TABLE, 1, tag); print_otag(h, TAG_TBODY, 0, NULL); @@ -507,8 +502,7 @@ mdoc_root_post(MDOC_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "foot-os"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); print_text(h, meta->os); print_tagq(h, t); } @@ -532,14 +526,8 @@ mdoc_root_pre(MDOC_ARGS) mandoc_asprintf(&title, "%s(%s)", meta->title, meta->msec); - PAIR_SUMMARY_INIT(&tag[0], "Document Header"); - PAIR_CLASS_INIT(&tag[1], "head"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); - PAIR_INIT(&tag[0], ATTR_WIDTH, "30%"); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); - print_otag(h, TAG_COL, 1, tag); + PAIR_CLASS_INIT(&tag[0], "head"); + t = print_otag(h, TAG_TABLE, 1, tag); print_otag(h, TAG_TBODY, 0, NULL); @@ -551,14 +539,12 @@ mdoc_root_pre(MDOC_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-vol"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "center"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); print_text(h, volume); print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-rtitle"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + print_otag(h, TAG_TD, 1, tag); print_text(h, title); print_tagq(h, t);