Hi, (Jason, the bits I'd like you to weigh in on are a few paragraphs down.) Enclosed is a patch pushing the roff_getstr functionality directly into libmdoc. It works by testing against roff_getstr() in-band and splicing together a new buffer if necessary. I thought about putting the entire mandoc_special() check in libroff, but don't want to cause yet another scan over the line buffer. check_text() needs to warn against '\t' and '\b' anyway. This is an open question I'll answer later when I start looking at performance. The reason I want to air it with you (I know it works: I've tested it across all manuals) is because it also removes the check for isprint(), using strcspn() instead. As you can see, the rej filter is only for '\b', which we must prohibit else we boff output encoding; '\t' for non-literals (warning); and '\\' for the specials check. I argue for lifting the ASCII-constraint because (1) there's nothing in mdoc/groff/etc that disallows non-ASCII (e.g., Latin-1) characters and (2) it makes the code much cleaner. Thoughts? Kristaps PS, the patch doesn't mandate '\b': I just caught that now and will fix it later.