Found the answer, in case you're interested:

CSS doesn't parse HTML. So HTML entities as values for the CSS content property are rendered as plain text.

In CSS, escaped characters must start with a back slash and be followed by the hex Unicode value. Thus, your example above:

blockquote::before {content: "&lsquo;"}
blockquote::after {content: "&rsquo;"}

will not work. It will render "&lsquo;" and "&rsquo;" (as I found out when trying to set-up the quote property in my stylesheet).

The correct code would be:

blockquote::before {content: "2018"}
blockquote::after {content: "2019"}

Thanks again for a useful article (and a great site!)

MB