{"schema":"cpc-unicode-answer-v1","question":"Why does a character show as a box or a question mark?","answer":"A hollow box, a rectangle with hexadecimal digits, or a boxed question mark is the font's .notdef or last-resort glyph. It is not its own character. Code points: U+0558. That sign does not prove the code point is unassigned, and it is not U+FFFD unless the string actually contains U+FFFD. DerivedAge lists U+0558 as first assigned in Unicode 18.0. Destination fonts were not tested. A non-equivalent fallback is \"?\" (Visible placeholder when the destination cannot show this scalar). One ASCII question mark. It is not this character and it is not U+FFFD. Font coverage, shaping, and application acceptance were not tested, so those results are unknown.","unicodeVersion":"18.0.0","purpose":"general","citation":"Do not invent a platform-support claim from this data.","page":"/answers/why-a-character-shows-as-a-box-or-question-mark/","markdown":"/answers/why-a-character-shows-as-a-box-or-question-mark.md","sample":"՘","codepoints":[{"codepoint":"U+0558","name":"MODIFIER LETTER ARMENIAN SMALL EH","displayLabel":"՘","warnings":["missing-glyph"],"explanations":[{"id":"missing-glyph","title":"Missing glyph is not a character","behavior":"A hollow box, a rectangle with hexadecimal digits, or a boxed question mark is the font's .notdef or last-resort glyph. It is not its own character.","limitation":"That sign does not prove the code point is unassigned, and it is not U+FFFD unless the string actually contains U+FFFD. DerivedAge lists U+0558 as first assigned in Unicode 18.0. Destination fonts were not tested.","fix":"Read the code point. A font built before that assignment has no reason to contain a glyph. Use a placeholder only when the destination was identified and the meaning can survive the change.","source":"https://www.unicode.org/reports/tr44/","alternatives":[{"value":"?","reason":"Visible placeholder when the destination cannot show this scalar","tradeoff":"One ASCII question mark. It is not this character and it is not U+FFFD."}],"evidenceTier":"standards-informed-editorial","evidence":{"behavior":"standards-informed","compatibility":"not-tested","repair":"editorial-guidance"}}]}],"comparison":null,"graphemes":{"status":"available","method":"runtime-intl-segmenter","unicodeDataVersion":"runtime-unknown","count":1,"segments":[{"text":"՘","utf16Offset":0,"codepoints":["U+0558"]}]},"normalizationChanged":{"NFC":false,"NFD":false,"NFKC":false,"NFKD":false},"normalizationUnicodeDataVersion":"runtime-unknown","targetCompatibility":{"status":"unknown","evidenceTier":"not-tested","purpose":"general","explanation":"No OS, font, browser, application, field policy or rendering engine was tested. Unicode validity and segmentation do not establish actual display or acceptance."}}