/// ------------------------------------------------------------------------------------ /// <summary> /// Gets the natural type (i.e., not overridden) of the given character code point. This /// is essentially based on ICU, but we make one exception to force superscripted /// numbers to be considered as word-forming since these are generally used to mark /// tone in the vernaculars we work with (see TE-8384). /// </summary> /// <param name="codepoint">The codepoint.</param> /// ------------------------------------------------------------------------------------ protected virtual ValidCharacterType GetNaturalCharType(int codepoint) { if (m_cpe.get_IsWordForming(codepoint)) { return(ValidCharacterType.WordForming); } if (Icu.IsNumeric(codepoint)) { foreach (string chr in s_defaultWordformingChars) { if ((int)chr[0] == codepoint) { return(ValidCharacterType.WordForming); } } return(ValidCharacterType.Numeric); } return(ValidCharacterType.Other); }
private static void VerifyNonexistentChars() { Icu.InitIcuDataDir(); Assert.IsFalse(Icu.IsAlphabetic(kChar1)); Assert.IsFalse(Icu.IsAlphabetic(kChar2)); Assert.IsFalse(Icu.IsAlphabetic(kChar3)); Assert.IsFalse(Icu.IsAlphabetic(kChar4)); Assert.IsFalse(Icu.IsControl(kChar1)); Assert.IsFalse(Icu.IsControl(kChar2)); Assert.IsFalse(Icu.IsControl(kChar3)); Assert.IsFalse(Icu.IsControl(kChar4)); Assert.IsFalse(Icu.IsDiacritic(kChar1)); Assert.IsFalse(Icu.IsDiacritic(kChar2)); Assert.IsFalse(Icu.IsDiacritic(kChar3)); Assert.IsFalse(Icu.IsDiacritic(kChar4)); Assert.IsFalse(Icu.IsIdeographic(kChar1)); Assert.IsFalse(Icu.IsIdeographic(kChar2)); Assert.IsFalse(Icu.IsIdeographic(kChar3)); Assert.IsFalse(Icu.IsIdeographic(kChar4)); Assert.IsFalse(Icu.IsNumeric(kChar1)); Assert.IsFalse(Icu.IsNumeric(kChar2)); Assert.IsFalse(Icu.IsNumeric(kChar3)); Assert.IsFalse(Icu.IsNumeric(kChar4)); Assert.IsFalse(Icu.IsPunct(kChar1)); Assert.IsFalse(Icu.IsPunct(kChar2)); Assert.IsFalse(Icu.IsPunct(kChar3)); Assert.IsFalse(Icu.IsPunct(kChar4)); Assert.IsFalse(Icu.IsSpace(kChar1)); Assert.IsFalse(Icu.IsSpace(kChar2)); Assert.IsFalse(Icu.IsSpace(kChar3)); Assert.IsFalse(Icu.IsSpace(kChar4)); Assert.IsFalse(Icu.IsSymbol(kChar1)); Assert.IsFalse(Icu.IsSymbol(kChar2)); Assert.IsFalse(Icu.IsSymbol(kChar3)); Assert.IsFalse(Icu.IsSymbol(kChar4)); Assert.AreEqual(Icu.UCharCategory.U_PRIVATE_USE_CHAR, Icu.GetCharType(kChar1)); Assert.AreEqual(Icu.UCharCategory.U_PRIVATE_USE_CHAR, Icu.GetCharType(kChar2)); Assert.AreEqual(Icu.UCharCategory.U_UNASSIGNED, Icu.GetCharType(kChar3)); Assert.AreEqual(Icu.UCharCategory.U_UNASSIGNED, Icu.GetCharType(kChar4)); var decompositionType = Icu.GetDecompositionType(kChar1); Assert.AreEqual("[none]", decompositionType.Description); decompositionType = Icu.GetDecompositionType(kChar2); Assert.AreEqual("[none]", decompositionType.Description); decompositionType = Icu.GetDecompositionType(kChar3); Assert.AreEqual("[none]", decompositionType.Description); decompositionType = Icu.GetDecompositionType(kChar4); Assert.AreEqual("[none]", decompositionType.Description); var numericType = Icu.GetNumericType(kChar1); Assert.AreEqual("[none]", numericType.Description); numericType = Icu.GetNumericType(kChar2); Assert.AreEqual("[none]", numericType.Description); numericType = Icu.GetNumericType(kChar3); Assert.AreEqual("[none]", numericType.Description); numericType = Icu.GetNumericType(kChar4); Assert.AreEqual("[none]", numericType.Description); var prettyName = Icu.GetPrettyICUCharName("\xE000"); Assert.IsNull(prettyName); prettyName = Icu.GetPrettyICUCharName("\xE001"); Assert.IsNull(prettyName); prettyName = Icu.GetPrettyICUCharName(kChar3S); Assert.IsNull(prettyName); prettyName = Icu.GetPrettyICUCharName("\xDDDDD"); Assert.IsNull(prettyName); }