=================================================================== RCS file: /cvs/mandoc/html.c,v retrieving revision 1.210 retrieving revision 1.213 diff -u -p -r1.210 -r1.213 --- mandoc/html.c 2017/03/15 11:29:53 1.210 +++ mandoc/html.c 2017/06/08 12:54:58 1.213 @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.210 2017/03/15 11:29:53 schwarze Exp $ */ +/* $Id: html.c,v 1.213 2017/06/08 12:54:58 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons * Copyright (c) 2011-2015, 2017 Ingo Schwarze @@ -609,15 +609,21 @@ print_otag(struct html *h, enum htmltag tag, const cha SCALE_VS_INIT(su, i); break; case 'w': - case 'W': if ((arg2 = va_arg(ap, char *)) == NULL) break; su = &mysu; a2width(arg2, su); - /* Increase width to make even bold text fit. */ - su->scale *= 1.1; - if (fmt[-1] == 'W') + if (*fmt == '+') { + /* Increase to make even bold text fit. */ + su->scale *= 1.2; + /* Add padding. */ + su->scale += 3.0; + fmt++; + } + if (*fmt == '-') { su->scale *= -1.0; + fmt++; + } break; default: abort(); @@ -944,7 +950,10 @@ print_word(struct html *h, const char *cp) static void a2width(const char *p, struct roffsu *su) { - if (a2roffsu(p, su, SCALE_MAX) < 2) { + const char *end; + + end = a2roffsu(p, su, SCALE_MAX); + if (end == NULL || *end != '\0') { su->unit = SCALE_EN; su->scale = html_strlen(p); } else if (su->scale < 0.0)