There's been a lot of discussion lately about the interpretation of quotes and hyphens. I'm finding it hard to follow because there are many parts: fonts, devices, macro packages, and implementations. Also years, and recent commits.
I think some have espoused the behavior that the interpretation of the ASCII characters {` ' " -} should be literal. That is, if one of those characters appears in the input (as data), it appears in the output. If the user wants something else -- longer or shorter dashes, curly quotes -- he has groff_char at his disposal. I believe it would be best if that principle applied to all devices in all circumstances, no matter what, for accuracy. Too often, I have found myself cutting and pasting an example -- experienced programmers do that, too -- and then have to touch up the quotes or dashes. If I'm working in an unfamiliar language, it's sometimes unclear what's wrong, because the message just says the character is invalid, not that it was munged by the document rendering system. There seems to be some effort toward inferring what the user intends, or to guess what might look better in situation X or Y. I think that's a recipe for error. Determinism, even ugly determinism, is easier to reason about than magical contexts. I do not think we should cater to any existing practice, no matter the history. If there are man pages that use `odd quotes' because they looked good on the Xerox Star, so be it. If the rule is, "what you type is what you get", then ugliness can be dealt with over time. In the meanwhile the meaning is clear, and the user, if perhaps affronted, is at least not confused. I can imagine refinements for specific documents. For example, the characters output the the inputs {` ' " -} could be stored in registers, and overridden by the user or macro package. Is there really any counterargument? --jkl