Well I did a small test. I put a Semicolon in front of my White user name
[Event "Classical"]
[Site "lichess"]
[Date "2022.07.28"]
;[White "dis-respectful user name"]
[WhiteType "Human"]
[Black "Expert"]
[Result "0-1"]
[UTCDate "2022.07.28"]
[UTCTime "18:00:00"]
[WhiteElo "1668"]
[BlackElo "2151"]
[WhiteRatingDiff "-1"]
[BlackRatingDiff "+1"]
[Variant "Standard"]
[TimeControl "1800+0"]
[ECO "B13"]
[Termination "Normal"]
The result that I got, when I used Kvetka Gui to open the game was:
[Event "Classical"]
[Site "lichess"]
[Date "2022.07.28"]
[Round "?"]
[White "Player"]
[Black "Expert"]
[Result "0-1"]
[UTCTime "18:00:00"]
[WhiteElo "1668"]
[BlackElo "2151"]
[WhiteRatingDiff "-1"]
[BlackRatingDiff "+1"]
[Variant "Standard"]
[TimeControl "1800+0"]
[ECO "B13"]
[Termination "Normal"]
[WhiteType "Human"]
[UTCDate "2022.07.28"]
So the Semicolon hides the original username and the pgn game was recreated by putting player in the white pgn.
It also used the [WhiteType "Human"] and rearranged the tags in the pgn.
I guess when we have a user that has a Derogatory user name, some code would be needed to put a Semicolon infront of their pgn username. That way it can get saved in the database but when people download the database they should not really see the user name when they pas it through a Gui.
This could be the first step to cleaning the pgn files before getting put into the database.
If players wanted to hide their user names in the pgn, then a preference would be needed.
Then some more code to add a semicolon in front of the tag color they are using like ... ;[White "user name"]
It may not fix every thing but it's a good start. Then the ones that have a hard time with seeing user names can maybe use userstyles to hide the user names.
If only Zen mode could be selectable by hiding what the users don't want to see, then they could not report the player to change the user name. It would be the responsibility of the players to zen out like we disable the chat.

