Use this technique intended for emoji: http://tink.uk/accessible-emoji/
These things are simple to fix though. We need to tell the browser to expose the emoji (or its container) as an image, then give it an accessible name.
Use the ARIA img
role to expose the as an image in the accessibility tree:
<span role="img">☃</span>
Then use the aria-label attribute to give the emoji an accessible name:
<span role="img" aria-label="Snowman">☃</span>
[…]
Now the browser will expose the emoji as an image in the accessibility tree, and use the value of the aria-label attribute as its accessible name. When a screen reader queries the accessibility tree it will use this information to tell the user that there is an image of a snowman (☃) on the page.
You have to give it a role otherwise the aria-label
will not be announced.