Support for CJK IVS (Variation Selector) in Obsidian

Use case or problem

Hello Obsidian team,

I would like to report an issue regarding the rendering of CJK punctuation variation selectors (IVS) on the Obsidian Android app.

When using Chinese full-width quotation marks with variation selectors, such as:

  • “︁ (U+201C + U+FE01)

  • ”︁ (U+201D + U+FE01)

  • ‘︁ (U+2018 + U+FE01)

  • ’︁ (U+2019 + U+FE01)

the intended glyph variants are not displayed. In contrast, these sequences render correctly in other native Android text editors. Emoji variation selectors (FE0F / FE0E) still work correctly in Obsidian, indicating that the issue is specific to CJK IVS characters.

It seems that the WebView rendering path currently used in the app ignores IVS for certain punctuation characters, causing fallback to the default glyph.

Supporting CJK IVS in the Android app would allow users to have typographically correct Chinese punctuation, which is important for academic, professional, or precise note-taking contexts. A possible solution could be enabling proper IVS handling in WebView or allowing users to select a font that fully supports these glyph variants without being overridden by fallback.

This can be implemented by default in the default system font and some Android text boxes

Thank you for considering this enhancement.

East Asian punctuation positional and width variants

2018 FE00; non-fullwidth form; # LEFT SINGLE QUOTATION MARK
2018 FE01; right-justified fullwidth form; # LEFT SINGLE QUOTATION MARK
2019 FE00; non-fullwidth form; # RIGHT SINGLE QUOTATION MARK
2019 FE01; left-justified fullwidth form; # RIGHT SINGLE QUOTATION MARK
201C FE00; non-fullwidth form; # LEFT DOUBLE QUOTATION MARK
201C FE01; right-justified fullwidth form; # LEFT DOUBLE QUOTATION MARK
201D FE00; non-fullwidth form; # RIGHT DOUBLE QUOTATION MARK
201D FE01; left-justified fullwidth form; # RIGHT DOUBLE QUOTATION MARK
3001 FE00; corner-justified form; # IDEOGRAPHIC COMMA
3001 FE01; centered form; # IDEOGRAPHIC COMMA
3002 FE00; corner-justified form; # IDEOGRAPHIC FULL STOP
3002 FE01; centered form; # IDEOGRAPHIC FULL STOP
FF01 FE00; corner-justified form; # FULLWIDTH EXCLAMATION MARK
FF01 FE01; centered form; # FULLWIDTH EXCLAMATION MARK
FF0C FE00; corner-justified form; # FULLWIDTH COMMA
FF0C FE01; centered form; # FULLWIDTH COMMA
FF0E FE00; corner-justified form; # FULLWIDTH FULL STOP
FF0E FE01; centered form; # FULLWIDTH FULL STOP
FF1A FE00; corner-justified form; # FULLWIDTH COLON
FF1A FE01; centered form; # FULLWIDTH COLON
FF1B FE00; corner-justified form; # FULLWIDTH SEMICOLON
FF1B FE01; centered form; # FULLWIDTH SEMICOLON
FF1F FE00; corner-justified form; # FULLWIDTH QUESTION MARK
FF1F FE01; centered form; # FULLWIDTH QUESTION MARK

1 Like