diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-05-17 11:55:08 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-05-17 11:55:08 +0000 |
commit | a078e2808cc7d5e6e5f689e68326f87ae04ae50d (patch) | |
tree | ee70369b38b68ca632e63f204d7162304cf815bb /term.c | |
parent | c301d6bfc6c1471a4225e7e6e993b6e160f76c1b (diff) | |
download | mandoc-a078e2808cc7d5e6e5f689e68326f87ae04ae50d.tar.gz |
Flip on printing `?' at Unicode codepoints in -Tascii, -Tpdf, and -Tps.
The reasoning behind printing SOMETHING at a Unicode codepoint is
because the input is not "wrong" (we suppress printing of "wrong"
things). It's just that ASCII can't handle it.
Diffstat (limited to 'term.c')
-rw-r--r-- | term.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -451,6 +451,9 @@ term_word(struct termp *p, const char *word) break; switch (esc) { + case (ESCAPE_UNICODE): + encode(p, "?", 1); + break; case (ESCAPE_NUMBERED): if ('\0' != (c = mchars_num2char(seq, sz))) encode(p, &c, 1); @@ -584,6 +587,7 @@ term_strlen(const struct termp *p, const char *cp) for (i = 0; i < rsz; i++) sz += (*p->width)(p, *cp++); + c = 0; switch (*cp) { case ('\\'): cp++; @@ -591,8 +595,12 @@ term_strlen(const struct termp *p, const char *cp) switch (mandoc_escape(&cp, &seq, &ssz)) { case (ESCAPE_ERROR): return(sz); + case (ESCAPE_UNICODE): + c = '?'; + /* FALLTHROUGH */ case (ESCAPE_NUMBERED): - c = mchars_num2char(seq, ssz); + if ('\0' != c) + c = mchars_num2char(seq, ssz); if ('\0' != c) sz += (*p->width)(p, c); break; |