Ejemplo n.º 1
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Adds the specified character to the grid's list of displayed characters. This is
        /// called by the two public methods AddCharacter and AddCharacters.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void InternalAddCharacter(string chr, IWritingSystem ws)
        {
            // Keep track of those characters that are not control characters and for
            // which there are no representative glyphs in the font.
            if (Win32.AreCharGlyphsInFont(chr, Font))
            {
                if (m_charsWithMissingGlyphs.Contains(chr))
                {
                    m_charsWithMissingGlyphs.Remove(chr);
                }
            }
            else if (!Icu.IsControl(chr[0]))
            {
                if (!m_charsWithMissingGlyphs.Contains(chr))
                {
                    m_charsWithMissingGlyphs.Add(chr);
                }
            }

            // If we're dealing with a type of space or control character, then figure out
            // display text that is slightly more readable than whatever glyph the font
            // contains for the character, which may not be a glyph at all.
            if ((Icu.IsSpace(chr[0]) || Icu.IsControl(chr[0])) &&
                !m_specialCharStrings.ContainsKey(chr))
            {
                m_specialCharStrings[chr] = GetSpecialCharDisplayText(chr);
            }

            Chars.Add(chr);
        }
Ejemplo n.º 2
0
 private static IEnumerable <string> RemoveWhitespaceAndPunctTokens(IEnumerable <string> tokens)
 {
     return(tokens.Where(t => !t.All(c => Icu.IsSpace(c) || Icu.IsPunct(c))));
 }
Ejemplo n.º 3
0
        private static void VerifyNewlyCreatedChars()
        {
            Icu.InitIcuDataDir();

            // The commented out methods below use u_getIntPropertyValue(), which doesn't
            // work reliably with the limited number of data files that we modify.
            //Assert.IsTrue(Icu.IsAlphabetic(kChar1));	// now true
            //Assert.IsTrue(Icu.IsAlphabetic(kChar2));	// now true
            //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.IsTrue(Icu.IsNumeric(kChar4));		// now true
            Assert.IsFalse(Icu.IsPunct(kChar1));
            Assert.IsFalse(Icu.IsPunct(kChar2));
            Assert.IsTrue(Icu.IsPunct(kChar3));                                 // now true
            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));

            var cat = Icu.GetCharType(kChar1);

            Assert.AreEqual(Icu.UCharCategory.U_LOWERCASE_LETTER, cat);
            cat = Icu.GetCharType(kChar2);
            Assert.AreEqual(Icu.UCharCategory.U_UPPERCASE_LETTER, cat);
            cat = Icu.GetCharType(kChar3);
            Assert.AreEqual(Icu.UCharCategory.U_OTHER_PUNCTUATION, cat);
            cat = Icu.GetCharType(kChar4);
            Assert.AreEqual(Icu.UCharCategory.U_DECIMAL_DIGIT_NUMBER, cat);
            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);

            // Current implementation (as of ICU50) is not overriding numeric type since we don't use it anywhere.
            // Enhance silmods.c in icu patch if needed.
            //numericType = Icu.GetNumericType(kChar4);
            //Assert.AreEqual("Decimal Digit", numericType.Description);

            // Current implementation (as of ICU50) is not overriding character names since we don't use them anywhere.
            // Enhance silmods.c in icu patch if needed.
            //var prettyName = Icu.GetPrettyICUCharName("\xE000");
            //Assert.AreEqual("My Special Character", prettyName);
            //prettyName = Icu.GetPrettyICUCharName("\xE001");
            //Assert.AreEqual("My Uppercase Character", prettyName);
            //prettyName = Icu.GetPrettyICUCharName(kChar3S);
            //Assert.AreEqual("New Punctuation Mark", prettyName);
            //var rawName = Icu.GetCharName(kChar4);	// can't pass large character code as 16-bit char.
            //Assert.AreEqual("NEW DIGIT NINE", rawName);
        }
Ejemplo n.º 4
0
        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);
        }