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); }
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); }
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); }
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); } }
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); }
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); }