'n'
can either be an abbreviation of "and", or a single-quoted letter "n".as an abbreviation of "and", it should be rendered as [right single quote]n[right single quote]
’n’
and as a single-quoted letter "n", it should be rendered as [left single quote]n[right single quote]
‘n’
What I mean is, for example, this: when I see " in a comment, I know the browser is actually storing the " character somewhere in memory. I know that when I send this comment form, HN will receive " character. If I copy and paste the comment into my Emacs, and save it, I know my hard drive now stores the " character.
When external format gets completely disconnected from internal format, understanding anything about what happens with the data gets much more difficult.
There are (small or big) differences among languages and it is not always obvious to detect ,if the quote should be converted at all, if it's a left one, or a right one.
As a reference, this is a Python Script trying to do the conversion in Scribus:
https://wiki.scribus.net/canvas/Convert_Typewriter_Quotes_to...
There is also an article by the author of the script, explaining his work and pointing to at least one common case it cannot handle:
https://opensource.com/article/17/3/python-scribus-smart-quo...
Putting all this logic in a font might or not be something your really want...
But I 100%: this should be done at the font level... and hard replacing characters is not a good solution.