{"schema":"cpc-unicode-answer-v1","question":"Why is a fullwidth digit not an ASCII digit?","answer":"U+FF11 has a compatibility decomposition to U+0031. NFKC folds it to the ASCII digit. NFC leaves U+FF11 in place. Code points: U+FF11. Compatibility equivalence is not canonical equivalence. NFKC also folds other compatibility characters, so it is not a general cleaner. Destination acceptance was not tested. A non-equivalent fallback is \"1\" (ASCII digit one). Drops the fullwidth form. Running NFKC on a longer string can change more than this digit. Exact string match: no. NFC match: no. Appearance and meaning were not tested. 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-fullwidth-digit-is-not-an-ascii-digit/","markdown":"/answers/why-a-fullwidth-digit-is-not-an-ascii-digit.md","sample":"１","codepoints":[{"codepoint":"U+FF11","name":"FULLWIDTH DIGIT ONE","displayLabel":"１","warnings":["compatibility-equivalent"],"explanations":[{"id":"compatibility-equivalent","title":"Fullwidth digit and an ASCII digit","behavior":"U+FF11 has a compatibility decomposition to U+0031. NFKC folds it to the ASCII digit. NFC leaves U+FF11 in place.","limitation":"Compatibility equivalence is not canonical equivalence. NFKC also folds other compatibility characters, so it is not a general cleaner. Destination acceptance was not tested.","fix":"Use U+0031 when an ASCII digit is required. Keep U+FF11 when the fullwidth form is the text.","source":"https://www.unicode.org/reports/tr44/","alternatives":[{"value":"1","reason":"ASCII digit one","tradeoff":"Drops the fullwidth form. Running NFKC on a longer string can change more than this digit."}],"evidenceTier":"standards-informed-editorial","evidence":{"behavior":"standards-informed","compatibility":"not-tested","repair":"editorial-guidance"}}]}],"comparison":{"schema":"cpc-unicode-compare-v1","exactlyEqual":false,"sameNFC":false,"sameNFKC":true,"sameVisualAppearance":"unknown","sameMeaning":"unknown","left":{"codepoints":["U+FF11"],"graphemes":1},"right":{"codepoints":["U+0031"],"graphemes":1},"explanation":"Normalization equivalence does not guarantee the same rendering, semantics or acceptance in an application."},"graphemes":{"status":"available","method":"runtime-intl-segmenter","unicodeDataVersion":"runtime-unknown","count":1,"segments":[{"text":"１","utf16Offset":0,"codepoints":["U+FF11"]}]},"normalizationChanged":{"NFC":false,"NFD":false,"NFKC":true,"NFKD":true},"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."}}