G_CONST_RETURN gchar * gucharmap_get_unicode_name (gunichar wc) { static gchar buf[32]; _gucharmap_intl_ensure_initialized (); if ((wc >= 0x3400 && wc <= 0x4DB5) || (wc >= 0x4e00 && wc <= 0x9fcc) || (wc >= 0x20000 && wc <= 0x2A6D6) || (wc >= 0x2a700 && wc <= 0x2b734) || (wc >= 0x2b740 && wc <= 0x2b81d)) { g_snprintf (buf, sizeof (buf), "CJK UNIFIED IDEOGRAPH-%04X", wc); return buf; } /* FIXME: handle U+F900..U+FAFF CJK COMPATIBILITY IDEOGRAPH U+%04X and * U+2F800..U+2FA1D CJK COMPATIBILITY IDEOGRAPH U+%04X here, * instead of via gucharmap_get_unicode_data_name below, to save some space? */ else if (wc >= 0xac00 && wc <= 0xd7af) { /* compute hangul syllable name as per UAX #15 */ gint SIndex = wc - SBase; gint LIndex, VIndex, TIndex; if (SIndex < 0 || SIndex >= SCount) return ""; LIndex = SIndex / NCount; VIndex = (SIndex % NCount) / TCount; TIndex = SIndex % TCount; g_snprintf (buf, sizeof (buf), "HANGUL SYLLABLE %s%s%s", JAMO_L_TABLE[LIndex], JAMO_V_TABLE[VIndex], JAMO_T_TABLE[TIndex]); return buf; } else if (wc >= 0xD800 && wc <= 0xDB7F) return _("<Non Private Use High Surrogate>"); else if (wc >= 0xDB80 && wc <= 0xDBFF) return _("<Private Use High Surrogate>"); else if (wc >= 0xDC00 && wc <= 0xDFFF) return _("<Low Surrogate>"); else if (wc >= 0xE000 && wc <= 0xF8FF) return _("<Private Use>"); else if (wc >= 0xF0000 && wc <= 0xFFFFD) return _("<Plane 15 Private Use>"); else if (wc >= 0x100000 && wc <= 0x10FFFD) return _("<Plane 16 Private Use>"); else { const gchar *x = gucharmap_get_unicode_data_name (wc); if (x == NULL) return _("<not assigned>"); else return x; } }
const gchar * gucharmap_get_unicode_name (gunichar wc) { static gchar buf[32]; _gucharmap_intl_ensure_initialized (); if ((wc >= 0x3400 && wc <= 0x4db5) || (wc >= 0x4e00 && wc <= 0x9fd5) || (wc >= 0x20000 && wc <= 0x2a6d6) || (wc >= 0x2a700 && wc <= 0x2b734) || (wc >= 0x2b740 && wc <= 0x2b81d) || (wc >= 0x2b820 && wc <= 0x2cea1)) { g_snprintf (buf, sizeof (buf), "CJK UNIFIED IDEOGRAPH-%04X", wc); return buf; } else if ((wc >= 0xf900 && wc <= 0xfaff) || (wc >= 0x2f800 && wc <= 0x2fa1d)) { g_snprintf (buf, sizeof (buf), "CJK COMPATIBILITY IDEOGRAPH-%04X", wc); return buf; } else if (wc >= 0x17000 && wc <= 0x187ec) { g_snprintf (buf, sizeof (buf), "TANGUT IDEOGRAPH-%05X", wc); return buf; } else if (wc >= 0x18800 && wc <= 0x18af2) { g_snprintf (buf, sizeof (buf), "TANGUT COMPONENT-%03u", wc - 0x18800 + 1); return buf; } else if (wc >= 0xac00 && wc <= 0xd7af) { /* compute hangul syllable name as per UAX #15 */ gint SIndex = wc - SBase; gint LIndex, VIndex, TIndex; if (SIndex < 0 || SIndex >= SCount) return ""; LIndex = SIndex / NCount; VIndex = (SIndex % NCount) / TCount; TIndex = SIndex % TCount; g_snprintf (buf, sizeof (buf), "HANGUL SYLLABLE %s%s%s", JAMO_L_TABLE[LIndex], JAMO_V_TABLE[VIndex], JAMO_T_TABLE[TIndex]); return buf; } else if (wc >= 0xD800 && wc <= 0xDB7F) return _("<Non Private Use High Surrogate>"); else if (wc >= 0xDB80 && wc <= 0xDBFF) return _("<Private Use High Surrogate>"); else if (wc >= 0xDC00 && wc <= 0xDFFF) return _("<Low Surrogate>"); else if (wc >= 0xE000 && wc <= 0xF8FF) return _("<Private Use>"); else if (wc >= 0xF0000 && wc <= 0xFFFFD) return _("<Plane 15 Private Use>"); else if (wc >= 0x100000 && wc <= 0x10FFFD) return _("<Plane 16 Private Use>"); else { const gchar *x = gucharmap_get_unicode_data_name (wc); if (x == NULL) return _("<not assigned>"); else return x; } }