I did \o /tmp/tst, then \dS create table "eh | oh" (); \dS
and then filtered the output file to HTML. The CREATE TABLE tag ended up in the same line as the title of the following table. I think there's a newline is missing somewhere.
The good news is that the | in the table name was processed correctly; but I noticed that the table title is not using the escaped print, so I would imagine that if I put a | in the title, things would go wrong. (I don't know how to put titles on tables other than editing the hardcoded titles for \ commands in psql).
Another thing is that spaces around the | seem gratuituous and produce bad results. I tried "select * from pg_class" which results in a very wide table, and then the HTML output contains some cells with the values in the second line; this makes all rows taller than they must be, because some cells use the first line and other cells in the same row use the second line for the text. I hand-edited the asciidoc and removed the spaces around | which makes the result nicer. (Maybe removing the trailing space is enough.)
I see a trailing spaces, but I don't see a described effect. Please, can you send some more specific test case?
I fixed a status view and removing trailing spaces