I think you’re using less-well-supported Unicode values, which don’t always have glyphs for all the code points.
Try the following characters:
- ☐ (0x2610 in Unicode hexadecimal [HTML decimal:
☐]): an empty (unchecked) checkbox - ☑ (0x2611 [HTML decimal:
☑]): the checked version of the previous checkbox - ✓ (0x2713 [HTML decimal:
✓]) - ✔ (0x2714 [HTML decimal:
✔])
Edit: There seems to be some confusion about the first symbol here, ☐ / 0x2610. This is an empty (unchecked) checkbox, so if you see a box, that’s the way it’s supposed to look. It’s the counterpart to ☑ / 0x2611, which is the checked version.