I'm developing a [javascript implementation][1] of Singularity Chess and I'm having a really weird issue with rendering on Samsung phones. Samsung phones render unicode chess characters as what appear to be a custom Emoji representation, as opposed to the plain text version. This would not be a problem, except for the fact that the Emoji set has only black pieces.

Is there a nice fix for this, or do I have to use the User Agent string to dynamically switch to a different display method such as SVG?

  • Why not simply use sprites or svg by default? Using a font always runs the risk not showing what you want. May 27 '16 at 10:55
  • I decided to go with text rendering because it made asset management easier and it was a lot less work than developing or finding images. It's also way less complicated in the code to store a character and fill/stroke it on the canvas in a given color than it would be to juggle SVGs for the same feature set.
    – user84352
    May 27 '16 at 11:07
  • How is this off-topic? Mar 23 '17 at 10:46

Add a U+FE0E VARIATION SELECTOR-15 after each chess piece to force them to render them as text. For reference, U+FE0F VARIATION SELECTOR-16 will force characters to render as emoji.


U+270C U+FE0E ✌︎

U+270C U+FE0F ✌️

Further reading: Emoji Variants on Unicode.org, The Secret Life of Variation Selectors on BabelStone

  • Excellent, thank you so much. I can't believe I had never heard of these before.
    – user84352
    May 31 '16 at 3:50
  • The link is dead. Apr 9 '18 at 17:47