The basic concept is: zh-CN, zh-TW and ja all share some common "Chinese characters" (Japanese people call these Kanji.) But each region use it's own way to define the strokes of characters. For example:

These 4 characters are all U+66DC. From left to right: Simplified Chinese, Traditional Chinese, Japanese, and Korean variation. This image is from https://blog.typekit.com/2014/07/15/int ... -han-sans/
The correct way to fix this, is to apply different fonts for zh-CN, zh-TW and ja. Both zh-TW and ja appear to be correct now. So the only one need to fix is zh-CN.
I checked info.json and saw you are using NotoSansCJKtc fonts. zh-CN need the NotoSansCJKsc ones. "sc" means Simplified Chinese and "tc" means Traditional Chinese.
The most obvious difference for you is the punctuation. Current punctuation is displayed at center, which is for zh-TW. The expected one is displayed at bottom-left. See screenshots.