summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chars.in12
-rw-r--r--html.c27
2 files changed, 11 insertions, 28 deletions
diff --git a/chars.in b/chars.in
index b59d3b07..6904c971 100644
--- a/chars.in
+++ b/chars.in
@@ -33,15 +33,15 @@ static const char ascii_nbrsp[2] = { ASCII_NBRSP, '\0' };
CHAR_TBL_START
/* Spacing. */
-CHAR("c", "", 0)
+CHAR("c", "", 8203)
CHAR("0", " ", 8194)
CHAR(" ", ascii_nbrsp, 160)
CHAR("~", ascii_nbrsp, 160)
-CHAR("%", "", 0)
-CHAR("&", "", 0)
-CHAR("^", "", 0)
-CHAR("|", "", 0)
-CHAR("}", "", 0)
+CHAR("%", "", 8203)
+CHAR("&", "", 8203)
+CHAR("^", "", 8203)
+CHAR("|", "", 8203)
+CHAR("}", "", 8203)
/* Accents. */
CHAR("a\"", "\"", 779)
diff --git a/html.c b/html.c
index e74da382..170e5361 100644
--- a/html.c
+++ b/html.c
@@ -108,7 +108,6 @@ static const char *const roffscales[SCALE_MAX] = {
};
static void bufncat(struct html *, const char *, size_t);
-static void print_spec(struct html *, const char *, size_t);
static void print_ctag(struct html *, enum htmltag);
static int print_encode(struct html *, const char *, int);
static void print_metaf(struct html *, enum mandoc_esc);
@@ -218,26 +217,6 @@ print_gen_head(struct html *h)
}
static void
-print_spec(struct html *h, const char *p, size_t len)
-{
- int cp;
- const char *rhs;
- size_t sz;
-
- if ((cp = mchars_spec2cp(h->symtab, p, len)) > 0) {
- printf("&#%d;", cp);
- return;
- } else if (-1 == cp && 1 == len) {
- fwrite(p, 1, len, stdout);
- return;
- } else if (-1 == cp)
- return;
-
- if (NULL != (rhs = mchars_spec2str(h->symtab, p, len, &sz)))
- fwrite(rhs, 1, sz, stdout);
-}
-
-static void
print_metaf(struct html *h, enum mandoc_esc deco)
{
enum htmlfont font;
@@ -367,7 +346,11 @@ print_encode(struct html *h, const char *p, int norecurse)
putchar(c);
break;
case (ESCAPE_SPECIAL):
- print_spec(h, seq, len);
+ c = mchars_spec2cp(h->symtab, seq, len);
+ if (c > 0)
+ printf("&#%d;", c);
+ else if (-1 == c && 1 == len)
+ putchar((int)*seq);
break;
case (ESCAPE_FONT):
/* FALLTHROUGH */