Exemplo n.º 1
0
        public bool EnumerateFamilies(nsFontFamilyEnumFunc aFunc, object aData)
        {
            int p = 0, p_end = name.Length;

            while (p < p_end) {
                while (char.IsWhiteSpace(name[p]))
                    if (++p == p_end)
                        return true;

                bool generic;
                string family;
                if (name[p] == '\'' || name[p] == '"') {
                    // quoted font family
                    char quoteMark = name[p];
                    if (++p == p_end)
                        return true;
                    int nameStart = p;

                    // XXX What about CSS character escapes?
                    while (name[p] != quoteMark)
                        if (++p == p_end)
                            return true;

                    family = name.Substring(nameStart, p - nameStart);
                    generic = false;

                    while (++p != p_end && name[p] != ',') {}
                }
                else {
                    // unquoted font family
                    int nameStart = p;
                    while (++p != p_end && name[p] != ',') {}

                    family = name.Substring(nameStart, p - nameStart);
                    family = family.TrimEnd();
                    generic = IsGenericFontFamily(family);
                }

                if (family != "" && !aFunc(family, generic, aData))
                    return false;

                ++p; // may advance past p_end
            }

            return true;
        }
Exemplo n.º 2
0
        public bool EnumerateFamilies(nsFontFamilyEnumFunc aFunc, object aData)
        {
            int p = 0, p_end = name.Length;

            while (p < p_end)
            {
                while (char.IsWhiteSpace(name[p]))
                {
                    if (++p == p_end)
                    {
                        return(true);
                    }
                }

                bool   generic;
                string family;
                if (name[p] == '\'' || name[p] == '"')
                {
                    // quoted font family
                    char quoteMark = name[p];
                    if (++p == p_end)
                    {
                        return(true);
                    }
                    int nameStart = p;

                    // XXX What about CSS character escapes?
                    while (name[p] != quoteMark)
                    {
                        if (++p == p_end)
                        {
                            return(true);
                        }
                    }

                    family  = name.Substring(nameStart, p - nameStart);
                    generic = false;

                    while (++p != p_end && name[p] != ',')
                    {
                    }
                }
                else
                {
                    // unquoted font family
                    int nameStart = p;
                    while (++p != p_end && name[p] != ',')
                    {
                    }

                    family  = name.Substring(nameStart, p - nameStart);
                    family  = family.TrimEnd();
                    generic = IsGenericFontFamily(family);
                }

                if (family != "" && !aFunc(family, generic, aData))
                {
                    return(false);
                }

                ++p; // may advance past p_end
            }

            return(true);
        }