示例#1
0
        static (bool success, Typeface typeface) TryGetFromAssets(this string fontName)
        {
            //First check Alias
            var(hasFontAlias, fontPostScriptName) = FontRegistrar.HasFont(fontName);
            if (hasFontAlias)
            {
                return(true, Typeface.CreateFromFile(fontPostScriptName));
            }

            var isAssetFont = IsAssetFontFamily(fontName);

            if (isAssetFont)
            {
                return(LoadTypefaceFromAsset(fontName));
            }

            var folders = new[]
            {
                "",
                "Fonts/",
                "fonts/",
            };


            //copied text
            var fontFile = FontFile.FromString(fontName);

            if (!string.IsNullOrWhiteSpace(fontFile.Extension))
            {
                var(hasFont, fontPath) = FontRegistrar.HasFont(fontFile.FileNameWithExtension());
                if (hasFont)
                {
                    return(true, Typeface.CreateFromFile(fontPath));
                }
            }
            else
            {
                foreach (var ext in FontFile.Extensions)
                {
                    var formated = fontFile.FileNameWithExtension(ext);
                    var(hasFont, fontPath) = FontRegistrar.HasFont(formated);
                    if (hasFont)
                    {
                        return(true, Typeface.CreateFromFile(fontPath));
                    }

                    foreach (var folder in folders)
                    {
                        formated = $"{folder}{fontFile.FileNameWithExtension()}#{fontFile.PostScriptName}";
                        var result = LoadTypefaceFromAsset(formated);
                        if (result.success)
                        {
                            return(result);
                        }
                    }
                }
            }

            return(false, null);
        }
示例#2
0
        static string CleanseFontName(string fontName)
        {
            var fontFile = FontFile.FromString(fontName);

            if (!string.IsNullOrWhiteSpace(fontFile.Extension))
            {
                var(hasFont, _) = FontRegistrar.HasFont(fontFile.FileNameWithExtension());
                if (hasFont)
                {
                    return(fontFile.PostScriptName);
                }
            }
            else
            {
                foreach (var ext in FontFile.Extensions)
                {
                    var formated = fontFile.FileNameWithExtension(ext);
                    var(hasFont, filePath) = FontRegistrar.HasFont(formated);
                    if (hasFont)
                    {
                        return(fontFile.PostScriptName);
                    }
                }
            }
            return(fontFile.PostScriptName);
        }
示例#3
0
        private static string CleanseFontName(string fontName)
        {
            //First check Alias
            (bool hasFontAlias, string fontPostScriptName) = FontRegistrar.HasFont(fontName);
            if (hasFontAlias)
            {
                return(fontPostScriptName);
            }

            FontFile fontFile = FontFile.FromString(fontName);

            if (!string.IsNullOrWhiteSpace(fontFile.Extension))
            {
                (bool hasFont, string filePath) = FontRegistrar.HasFont(fontFile.FileNameWithExtension());
                if (hasFont)
                {
                    return(filePath ?? fontFile.PostScriptName);
                }
            }
            else
            {
                foreach (string ext in FontFile.Extensions)
                {
                    string formated = fontFile.FileNameWithExtension(ext);
                    (bool hasFont, string filePath) = FontRegistrar.HasFont(formated);
                    if (hasFont)
                    {
                        return(filePath);
                    }
                }
            }

            return(fontFile.PostScriptName);
        }
示例#4
0
        static IEnumerable <string> GetAllFontPossibilities(string fontFamily)
        {
            const string path = "Assets/Fonts/";

            string[] extensions = new[]
            {
                ".ttf",
                ".otf",
            };

            var fontFile = FontFile.FromString(fontFamily);
            //If the extension is provided, they know what they want!
            var hasExtension = !string.IsNullOrWhiteSpace(fontFile.Extension);

            if (hasExtension)
            {
                var(hasFont, filePath) = FontRegistrar.HasFont(fontFile.FileNameWithExtension());
                if (hasFont)
                {
                    var formated = $"{filePath}#{fontFile.GetPostScriptNameWithSpaces()}";
                    yield return(formated);

                    yield break;
                }
                else
                {
                    yield return($"{path}{fontFile.FileNameWithExtension()}");
                }
            }
            foreach (var ext in extensions)
            {
                var(hasFont, filePath) = FontRegistrar.HasFont(fontFile.FileNameWithExtension(ext));
                if (hasFont)
                {
                    var formatted = $"{filePath}#{fontFile.GetPostScriptNameWithSpaces()}";
                    yield return(formatted);

                    yield break;
                }
            }

            //Always send the base back
            yield return(fontFamily);

            foreach (var ext in extensions)
            {
                var formatted = $"{path}{fontFile.FileNameWithExtension(ext)}#{fontFile.GetPostScriptNameWithSpaces()}";
                yield return(formatted);
            }
        }
示例#5
0
        static (bool success, FontFamily fontFamily) TryGetFromAssets(this string fontName)
        {
            //First check Alias
            var(hasFontAlias, fontPostScriptName) = FontRegistrar.HasFont(fontName);
            if (hasFontAlias)
            {
                return(true, CreateFromFile(fontPostScriptName));
            }

            var folders = new[]
            {
                "",
                "Fonts/",
                "fonts/",
            };


            //copied text
            var fontFile = FontFile.FromString(fontName);

            if (!string.IsNullOrWhiteSpace(fontFile.Extension))
            {
                var(hasFont, fontPath) = FontRegistrar.HasFont(fontFile.FileNameWithExtension());
                if (hasFont)
                {
                    return(true, CreateFromFile(fontPath));
                }
            }
            else
            {
                foreach (var ext in FontFile.Extensions)
                {
                    var formated = fontFile.FileNameWithExtension(ext);
                    var(hasFont, fontPath) = FontRegistrar.HasFont(formated);
                    if (hasFont)
                    {
                        return(true, CreateFromFile(fontPath));
                    }
                }
            }

            return(false, null);
        }
示例#6
0
        public void TestFontParsing()
        {
            var input  = "PTM55FT#PTMono-Regular";
            var input2 = "PTM55FT.ttf#PTMono-Regular";
            var input3 = "CuteFont-Regular";

            var font1 = FontFile.FromString(input);
            var font2 = FontFile.FromString(input2);
            var font3 = FontFile.FromString(input3);

            Assert.AreEqual(font1.FileName, "PTM55FT");
            Assert.AreEqual(font1.PostScriptName, "PTMono-Regular");
            Assert.IsNull(font1.Extension);


            Assert.AreEqual(font2.FileName, "PTM55FT");
            Assert.AreEqual(font2.PostScriptName, "PTMono-Regular");
            Assert.AreEqual(font2.Extension, ".ttf");


            Assert.AreEqual(font3.FileName, "CuteFont-Regular");
            Assert.AreEqual(font3.PostScriptName, "CuteFont-Regular");
            Assert.IsNull(font3.Extension);
        }