summaryrefslogtreecommitdiffstats
path: root/term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-05-17 11:55:08 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-05-17 11:55:08 +0000
commita078e2808cc7d5e6e5f689e68326f87ae04ae50d (patch)
treeee70369b38b68ca632e63f204d7162304cf815bb /term.c
parentc301d6bfc6c1471a4225e7e6e993b6e160f76c1b (diff)
downloadmandoc-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.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/term.c b/term.c
index 2f885095..7556e3b6 100644
--- a/term.c
+++ b/term.c
@@ -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;