diff --git a/Figgle.Fonts.Generator/Figgle.Fonts.Generator.csproj b/Figgle.Fonts.Generator/Figgle.Fonts.Generator.csproj new file mode 100644 index 0000000..d309fd3 --- /dev/null +++ b/Figgle.Fonts.Generator/Figgle.Fonts.Generator.csproj @@ -0,0 +1,21 @@ + + + + netstandard2.0 + true + true + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/Figgle.Fonts.Generator/FiggleFontGenerator.cs b/Figgle.Fonts.Generator/FiggleFontGenerator.cs new file mode 100644 index 0000000..768053a --- /dev/null +++ b/Figgle.Fonts.Generator/FiggleFontGenerator.cs @@ -0,0 +1,167 @@ +// Copyright Drew Noakes. Licensed under the Apache-2.0 license. See the LICENSE file for more details. + +using System; +using System.Collections.Immutable; +using System.IO; +using System.Linq; +using System.Security; +using System.Text; +using Microsoft.CodeAnalysis; + +namespace Figgle.Fonts.Generator; + +/// +/// This is an internal source generator that populates the FiggleFonts class with properties for each bundled font. +/// It is not intended for public use, but rather to automate the generation of the FiggleFonts class +/// +[Generator(LanguageNames.CSharp)] +internal sealed class FiggleFontGenerator : IIncrementalGenerator +{ + private static readonly string[] _newLineCharacters = ["\r\n", "\n"]; + + private static readonly DiagnosticDescriptor _errorParsingFontFileDiagnostic = new( + "FIGGLE_IMPL001", + "Font Parsing Error", + "Failed to parse font '{0}'. Ensure it is a valid FIGlet font file.", + "FiggleFonts", + DiagnosticSeverity.Error, + isEnabledByDefault: true); + + private const string Header = + """ + // Copyright Drew Noakes. Licensed under the Apache-2.0 license. See the LICENSE file for more details. + + // + // This code was generated by Figgle.Fonts.Generator. + // + // Changes to this file may cause incorrect behavior and will be lost if + // the code is regenerated. + // + + """; + + public void Initialize(IncrementalGeneratorInitializationContext context) + { + var fontMemberNamesProvider = context.AdditionalTextsProvider + .Where(file => Path.GetFileName(file.Path).Equals("Aliases.csv", StringComparison.OrdinalIgnoreCase)) + .Select(static (file, cancellationToken) => + { + var csvFileContent = file.GetText(cancellationToken)?.ToString(); + if (csvFileContent is null) + { + return []; + } + + var fontInfos = ImmutableArray.CreateBuilder(); + var entries = csvFileContent.Split(_newLineCharacters, StringSplitOptions.RemoveEmptyEntries); + foreach (var entry in entries) + { + var components = entry.Split(','); + if (components.Length == 2) + { + var fontName = components[0].Trim(); + var memberName = components[1].Trim(); + fontInfos.Add(new FontInfo(fontName, memberName)); + } + } + + return fontInfos.ToImmutable(); + }); + + var parsedFontsProvider = context.AdditionalTextsProvider + .Where(file => file.Path.EndsWith(".flf", StringComparison.OrdinalIgnoreCase)) + .Select(static (file, cancellationToken) => + { + var fontContent = file.GetText(cancellationToken)?.ToString(); + return new ParsedFont( + Path.GetFileNameWithoutExtension(file.Path), + fontContent is null ? null : FiggleFontParser.ParseString(fontContent)); + }) + .Collect(); + + context.RegisterSourceOutput(fontMemberNamesProvider.Combine(parsedFontsProvider), (context, pair) => + { + var fontInfos = pair.Left; + var parsedFonts = pair.Right.ToImmutableDictionary( + keySelector: f => f.Name, + elementSelector: f => f.Font); + + foreach (var kvp in parsedFonts) + { + if (kvp.Value is null) + { + context.ReportDiagnostic(Diagnostic.Create( + _errorParsingFontFileDiagnostic, + Location.None, + kvp.Key)); + } + } + + var source = $$""" + {{Header}} + namespace Figgle.Fonts; + + partial class FiggleFonts + {{{RenderFiggleFontProperties(fontInfos, parsedFonts)}} + } + """; + + // we expect only a single Alias.csv file, so we don't need to worry about making + // the source file name unique. + context.AddSource("FiggleFonts.g.cs", source); + + static string RenderFiggleFontProperties( + ImmutableArray fontInfos, + ImmutableDictionary parsedFonts) + { + var builder = new StringBuilder(capacity: 4096); + var indentation = new string(' ', 4); + foreach (var fontInfo in fontInfos) + { + builder.Append($$""" + + + {{indentation}}/// + {{indentation}}/// Obtains the for the font name "{{fontInfo.FontName}}". + {{indentation}}/// + {{indentation}}/// + {{indentation}}{{RenderSampleText(fontInfo.FontName, parsedFonts[fontInfo.FontName], indentation)}} + {{indentation}}/// + {{indentation}}/// + {{indentation}}/// + {{indentation}}public static FiggleFont {{fontInfo.MemberName}} => GetByName("{{fontInfo.FontName}}"); + """); + } + + return builder.ToString(); + } + + static string RenderSampleText(string fontName, FiggleFont? font, string indentation) + { + if (font is null) + { + return $"Failed to parse {fontName} into a {nameof(FiggleFont)}"; + } + + var renderedText = font.Render(fontName); + + return string.Join( + $"\r\n{indentation}", + renderedText + .Split(_newLineCharacters, StringSplitOptions.None) + .Select(line => $"/// {EscapeXmlSpecialCharacters(line)}")); + } + + static string EscapeXmlSpecialCharacters(string text) + { + // SecurityElement conveniently has Escape that escapes XML special + // characters, so we can just reuse it. + return SecurityElement.Escape(text); + } + }); + } + + private sealed record FontInfo(string FontName, string MemberName); + + private sealed record ParsedFont(string Name, FiggleFont? Font); +} diff --git a/Figgle.Fonts/Aliases.csv b/Figgle.Fonts/Aliases.csv new file mode 100644 index 0000000..a204a9d --- /dev/null +++ b/Figgle.Fonts/Aliases.csv @@ -0,0 +1,92 @@ +1row,OneRow +3-d,ThreeD +3d_diagonal,ThreeDDiagonal +3x5,ThreeByFive +4max,FourMax +5lineoblique,FiveLineOblique +amc3line,Amc3Line +amc3liv1,Amc3Liv1 +amcaaa01,AmcAaa01 +amcneko,AmcNeko +amcrazo2,AmcRazor2 +amcrazor,AmcRazor +amcslash,AmcSlash +amcslder,AmcSlder +amcthin,AmcThin +amctubes,AmcTubes +amcun1,AmcUn1 +barbwire,BarbWire +bigchief,BigChief +bigfig,BigFig +broadway_kb,BroadwayKB +calgphy2,Caligraphy2 +catwalk,CatWalk +cyberlarge,CyberLarge +cybermedium,CyberMedium +cybersmall,CyberSmall +dancingfont,DancingFont +defleppard,DefLeppard +dietcola,DietCola +dosrebel,DosRebel +dotmatrix,DotMatrix +doubleshorts,DoubleShorts +drpepper,DRPepper +dwhistled,DWhistled +eftichess,EftiChess +eftifont,EftiFont +eftipiti,EftiPiti +eftirobot,EftiRobot +eftitalic,EftiItalic +eftiwall,EftiWall +eftiwater,EftiWater +flowerpower,FlowerPower +fourtops,FourTops +funface,FunFace +funfaces,FunFaces +georgi16,Georgia16 +Georgia11,Georgia11 +graffiti,Graffiti +henry3d,Henry3d +horizontalleft,HorizontalLeft +horizontalright,HorizontalRight +impossible,Impossible +kontoslant,KontoSlant +larry3d,Larry3d +lildevil,LilDevil +lineblocks,LineBlocks +lockergnome,LockerGnome +maxfour,MaxFour +mshebrew210,Mshebrew210 +nancyj,NancyJ +nancyj-fancy,NancyJFancy +nancyj-improved,NancyJImproved +nancyj-underlined,NancyJUnderlined +nscript,NScript +ntgreek,NTGreek +nvscript,NVScript +oldbanner,OldBanner +os2,OS2 +ogre,Ogre +peaksslant,PeaksSlant +rectangles,Rectangles +rowancap,RowanCap +santaclara,SantaClara +sblood,SBlood +slant,Slant +slscript,ScriptSlant +serifcap,SerifCap +smallcaps,SmallCaps +smisome1,IsometricSmall +smkeyboard,KeyboardSmall +smpoison,PoisonSmall +smscript,ScriptSmall +smshadow,ShadowSmall +smslant,SlantSmall +smtengwar,TengwarSmall +standard,Standard +threepoint,ThreePoint +ticksslant,TicksSlant +tinker-toy,TinkerToy +twopoint,TwoPoint +usaflag,UsaFlag +wetletter,WetLetter diff --git a/Figgle.Fonts/Figgle.Fonts.csproj b/Figgle.Fonts/Figgle.Fonts.csproj index f8e5bd9..d5c338e 100644 --- a/Figgle.Fonts/Figgle.Fonts.csproj +++ b/Figgle.Fonts/Figgle.Fonts.csproj @@ -24,6 +24,11 @@ + + + + + @@ -33,6 +38,18 @@ + + + + + + + diff --git a/Figgle.Fonts/FiggleFonts.cs b/Figgle.Fonts/FiggleFonts.cs index 04575fa..a13442e 100644 --- a/Figgle.Fonts/FiggleFonts.cs +++ b/Figgle.Fonts/FiggleFonts.cs @@ -13,279 +13,11 @@ namespace Figgle.Fonts; /// /// Fonts are stored as an embedded ZIP archive within the assembly. /// -public static class FiggleFonts +public static partial class FiggleFonts { private static readonly ConcurrentDictionary _fontByName = new(StringComparer.Ordinal); private static readonly StringPool _stringPool = new(); -#pragma warning disable CS1591 - public static FiggleFont OneRow => GetByName("1row"); - public static FiggleFont ThreeD => GetByName("3-d"); - public static FiggleFont ThreeDDiagonal => GetByName("3d_diagonal"); - public static FiggleFont ThreeByFive => GetByName("3x5"); - public static FiggleFont FourMax => GetByName("4max"); - public static FiggleFont FiveLineOblique => GetByName("5lineoblique"); - public static FiggleFont Acrobatic => GetByName("acrobatic"); - public static FiggleFont Alligator => GetByName("alligator"); - public static FiggleFont Alligator2 => GetByName("alligator2"); - public static FiggleFont Alligator3 => GetByName("alligator3"); - public static FiggleFont Alpha => GetByName("alpha"); - public static FiggleFont Alphabet => GetByName("alphabet"); - public static FiggleFont Amc3Line => GetByName("amc3line"); - public static FiggleFont Amc3Liv1 => GetByName("amc3liv1"); - public static FiggleFont AmcAaa01 => GetByName("amcaaa01"); - public static FiggleFont AmcNeko => GetByName("amcneko"); - public static FiggleFont AmcRazor2 => GetByName("amcrazo2"); - public static FiggleFont AmcRazor => GetByName("amcrazor"); - public static FiggleFont AmcSlash => GetByName("amcslash"); - public static FiggleFont AmcSlder => GetByName("amcslder"); - public static FiggleFont AmcThin => GetByName("amcthin"); - public static FiggleFont AmcTubes => GetByName("amctubes"); - public static FiggleFont AmcUn1 => GetByName("amcun1"); - public static FiggleFont Arrows => GetByName("arrows"); - public static FiggleFont AsciiNewroman => GetByName("ascii_new_roman"); - public static FiggleFont Avatar => GetByName("avatar"); - public static FiggleFont B1FF => GetByName("B1FF"); - public static FiggleFont Banner => GetByName("banner"); - public static FiggleFont Banner3 => GetByName("banner3"); - public static FiggleFont Banner3D => GetByName("banner3-D"); - public static FiggleFont Banner4 => GetByName("banner4"); - public static FiggleFont BarbWire => GetByName("barbwire"); - public static FiggleFont Basic => GetByName("basic"); - public static FiggleFont Bear => GetByName("bear"); - public static FiggleFont Bell => GetByName("bell"); - public static FiggleFont Benjamin => GetByName("benjamin"); - public static FiggleFont Big => GetByName("big"); - public static FiggleFont BigChief => GetByName("bigchief"); - public static FiggleFont BigFig => GetByName("bigfig"); - public static FiggleFont Binary => GetByName("binary"); - public static FiggleFont Block => GetByName("block"); - public static FiggleFont Blocks => GetByName("blocks"); - public static FiggleFont Bolger => GetByName("bolger"); - public static FiggleFont Braced => GetByName("braced"); - public static FiggleFont Bright => GetByName("bright"); - public static FiggleFont Broadway => GetByName("broadway"); - public static FiggleFont BroadwayKB => GetByName("broadway_kb"); - public static FiggleFont Bubble => GetByName("bubble"); - public static FiggleFont Bulbhead => GetByName("bulbhead"); - public static FiggleFont Caligraphy2 => GetByName("calgphy2"); - public static FiggleFont Caligraphy => GetByName("caligraphy"); - public static FiggleFont Cards => GetByName("cards"); - public static FiggleFont CatWalk => GetByName("catwalk"); - public static FiggleFont Chiseled => GetByName("chiseled"); - public static FiggleFont Chunky => GetByName("chunky"); - public static FiggleFont Coinstak => GetByName("coinstak"); - public static FiggleFont Cola => GetByName("cola"); - public static FiggleFont Colossal => GetByName("colossal"); - public static FiggleFont Computer => GetByName("computer"); - public static FiggleFont Contessa => GetByName("contessa"); - public static FiggleFont Contrast => GetByName("contrast"); - public static FiggleFont Cosmic => GetByName("cosmic"); - public static FiggleFont Cosmike => GetByName("cosmike"); - public static FiggleFont Crawford => GetByName("crawford"); - public static FiggleFont Crazy => GetByName("crazy"); - public static FiggleFont Cricket => GetByName("cricket"); - public static FiggleFont Cursive => GetByName("cursive"); - public static FiggleFont CyberLarge => GetByName("cyberlarge"); - public static FiggleFont CyberMedium => GetByName("cybermedium"); - public static FiggleFont CyberSmall => GetByName("cybersmall"); - public static FiggleFont Cygnet => GetByName("cygnet"); - public static FiggleFont DANC4 => GetByName("DANC4"); - public static FiggleFont DancingFont => GetByName("dancingfont"); - public static FiggleFont Decimal => GetByName("decimal"); - public static FiggleFont DefLeppard => GetByName("defleppard"); - public static FiggleFont Diamond => GetByName("diamond"); - public static FiggleFont DietCola => GetByName("dietcola"); - public static FiggleFont Digital => GetByName("digital"); - public static FiggleFont Doh => GetByName("doh"); - public static FiggleFont Doom => GetByName("doom"); - public static FiggleFont DosRebel => GetByName("dosrebel"); - public static FiggleFont DotMatrix => GetByName("dotmatrix"); - public static FiggleFont Double => GetByName("double"); - public static FiggleFont DoubleShorts => GetByName("doubleshorts"); - public static FiggleFont DRPepper => GetByName("drpepper"); - public static FiggleFont DWhistled => GetByName("dwhistled"); - public static FiggleFont EftiChess => GetByName("eftichess"); - public static FiggleFont EftiFont => GetByName("eftifont"); - public static FiggleFont EftiPiti => GetByName("eftipiti"); - public static FiggleFont EftiRobot => GetByName("eftirobot"); - public static FiggleFont EftiItalic => GetByName("eftitalic"); - public static FiggleFont EftiWall => GetByName("eftiwall"); - public static FiggleFont EftiWater => GetByName("eftiwater"); - public static FiggleFont Epic => GetByName("epic"); - public static FiggleFont Fender => GetByName("fender"); - public static FiggleFont Filter => GetByName("filter"); - public static FiggleFont FireFontK => GetByName("fire_font-k"); - public static FiggleFont FireFontS => GetByName("fire_font-s"); - public static FiggleFont Flipped => GetByName("flipped"); - public static FiggleFont FlowerPower => GetByName("flowerpower"); - public static FiggleFont FourTops => GetByName("fourtops"); - public static FiggleFont Fraktur => GetByName("fraktur"); - public static FiggleFont FunFace => GetByName("funface"); - public static FiggleFont FunFaces => GetByName("funfaces"); - public static FiggleFont Fuzzy => GetByName("fuzzy"); - public static FiggleFont Georgia16 => GetByName("georgi16"); - public static FiggleFont Georgia11 => GetByName("Georgia11"); - public static FiggleFont Ghost => GetByName("ghost"); - public static FiggleFont Ghoulish => GetByName("ghoulish"); - public static FiggleFont Glenyn => GetByName("glenyn"); - public static FiggleFont Goofy => GetByName("goofy"); - public static FiggleFont Gothic => GetByName("gothic"); - public static FiggleFont Graceful => GetByName("graceful"); - public static FiggleFont Gradient => GetByName("gradient"); - public static FiggleFont Graffiti => GetByName("graffiti"); - public static FiggleFont Greek => GetByName("greek"); - public static FiggleFont HeartLeft => GetByName("heart_left"); - public static FiggleFont HeartRight => GetByName("heart_right"); - public static FiggleFont Henry3d => GetByName("henry3d"); - public static FiggleFont Hex => GetByName("hex"); - public static FiggleFont Hieroglyphs => GetByName("hieroglyphs"); - public static FiggleFont Hollywood => GetByName("hollywood"); - public static FiggleFont HorizontalLeft => GetByName("horizontalleft"); - public static FiggleFont HorizontalRight => GetByName("horizontalright"); - public static FiggleFont ICL1900 => GetByName("ICL-1900"); - public static FiggleFont Impossible => GetByName("impossible"); - public static FiggleFont Invita => GetByName("invita"); - public static FiggleFont Isometric1 => GetByName("isometric1"); - public static FiggleFont Isometric2 => GetByName("isometric2"); - public static FiggleFont Isometric3 => GetByName("isometric3"); - public static FiggleFont Isometric4 => GetByName("isometric4"); - public static FiggleFont Italic => GetByName("italic"); - public static FiggleFont Ivrit => GetByName("ivrit"); - public static FiggleFont Jacky => GetByName("jacky"); - public static FiggleFont Jazmine => GetByName("jazmine"); - public static FiggleFont Jerusalem => GetByName("jerusalem"); - public static FiggleFont Katakana => GetByName("katakana"); - public static FiggleFont Kban => GetByName("kban"); - public static FiggleFont Keyboard => GetByName("keyboard"); - public static FiggleFont Knob => GetByName("knob"); - public static FiggleFont Konto => GetByName("konto"); - public static FiggleFont KontoSlant => GetByName("kontoslant"); - public static FiggleFont Larry3d => GetByName("larry3d"); - public static FiggleFont Lcd => GetByName("lcd"); - public static FiggleFont Lean => GetByName("lean"); - public static FiggleFont Letters => GetByName("letters"); - public static FiggleFont LilDevil => GetByName("lildevil"); - public static FiggleFont LineBlocks => GetByName("lineblocks"); - public static FiggleFont Linux => GetByName("linux"); - public static FiggleFont LockerGnome => GetByName("lockergnome"); - public static FiggleFont Madrid => GetByName("madrid"); - public static FiggleFont Marquee => GetByName("marquee"); - public static FiggleFont MaxFour => GetByName("maxfour"); - public static FiggleFont Merlin1 => GetByName("merlin1"); - public static FiggleFont Merlin2 => GetByName("merlin2"); - public static FiggleFont Mike => GetByName("mike"); - public static FiggleFont Mini => GetByName("mini"); - public static FiggleFont Mirror => GetByName("mirror"); - public static FiggleFont Mnemonic => GetByName("mnemonic"); - public static FiggleFont Modular => GetByName("modular"); - public static FiggleFont Morse => GetByName("morse"); - public static FiggleFont Morse2 => GetByName("morse2"); - public static FiggleFont Moscow => GetByName("moscow"); - public static FiggleFont Mshebrew210 => GetByName("mshebrew210"); - public static FiggleFont Muzzle => GetByName("muzzle"); - public static FiggleFont NancyJ => GetByName("nancyj"); - public static FiggleFont NancyJFancy => GetByName("nancyj-fancy"); - public static FiggleFont NancyJImproved => GetByName("nancyj-improved"); - public static FiggleFont NancyJUnderlined => GetByName("nancyj-underlined"); - public static FiggleFont Nipples => GetByName("nipples"); - public static FiggleFont NScript => GetByName("nscript"); - public static FiggleFont NTGreek => GetByName("ntgreek"); - public static FiggleFont NVScript => GetByName("nvscript"); - public static FiggleFont O8 => GetByName("o8"); - public static FiggleFont Octal => GetByName("octal"); - public static FiggleFont Ogre => GetByName("ogre"); - public static FiggleFont OldBanner => GetByName("oldbanner"); - public static FiggleFont OS2 => GetByName("os2"); - public static FiggleFont Pawp => GetByName("pawp"); - public static FiggleFont Peaks => GetByName("peaks"); - public static FiggleFont PeaksSlant => GetByName("peaksslant"); - public static FiggleFont Pebbles => GetByName("pebbles"); - public static FiggleFont Pepper => GetByName("pepper"); - public static FiggleFont Poison => GetByName("poison"); - public static FiggleFont Puffy => GetByName("puffy"); - public static FiggleFont Puzzle => GetByName("puzzle"); - public static FiggleFont Pyramid => GetByName("pyramid"); - public static FiggleFont Rammstein => GetByName("rammstein"); - public static FiggleFont Rectangles => GetByName("rectangles"); - public static FiggleFont RedPhoenix => GetByName("red_phoenix"); - public static FiggleFont Relief => GetByName("relief"); - public static FiggleFont Relief2 => GetByName("relief2"); - public static FiggleFont Rev => GetByName("rev"); - public static FiggleFont Reverse => GetByName("reverse"); - public static FiggleFont Roman => GetByName("roman"); - public static FiggleFont Rot13 => GetByName("rot13"); - public static FiggleFont Rotated => GetByName("rotated"); - public static FiggleFont Rounded => GetByName("rounded"); - public static FiggleFont RowanCap => GetByName("rowancap"); - public static FiggleFont Rozzo => GetByName("rozzo"); - public static FiggleFont Runic => GetByName("runic"); - public static FiggleFont Runyc => GetByName("runyc"); - public static FiggleFont SantaClara => GetByName("santaclara"); - public static FiggleFont SBlood => GetByName("sblood"); - public static FiggleFont Script => GetByName("script"); - public static FiggleFont ScriptSlant => GetByName("slscript"); - public static FiggleFont SerifCap => GetByName("serifcap"); - public static FiggleFont Shadow => GetByName("shadow"); - public static FiggleFont Shimrod => GetByName("shimrod"); - public static FiggleFont Short => GetByName("short"); - public static FiggleFont Slant => GetByName("slant"); - public static FiggleFont Slide => GetByName("slide"); - public static FiggleFont Small => GetByName("small"); - public static FiggleFont SmallCaps => GetByName("smallcaps"); - public static FiggleFont IsometricSmall => GetByName("smisome1"); - public static FiggleFont KeyboardSmall => GetByName("smkeyboard"); - public static FiggleFont PoisonSmall => GetByName("smpoison"); - public static FiggleFont ScriptSmall => GetByName("smscript"); - public static FiggleFont ShadowSmall => GetByName("smshadow"); - public static FiggleFont SlantSmall => GetByName("smslant"); - public static FiggleFont TengwarSmall => GetByName("smtengwar"); - public static FiggleFont Soft => GetByName("soft"); - public static FiggleFont Speed => GetByName("speed"); - public static FiggleFont Spliff => GetByName("spliff"); - public static FiggleFont SRelief => GetByName("s-relief"); - public static FiggleFont Stacey => GetByName("stacey"); - public static FiggleFont Stampate => GetByName("stampate"); - public static FiggleFont Stampatello => GetByName("stampatello"); - public static FiggleFont Standard => GetByName("standard"); - public static FiggleFont Starstrips => GetByName("starstrips"); - public static FiggleFont Starwars => GetByName("starwars"); - public static FiggleFont Stellar => GetByName("stellar"); - public static FiggleFont Stforek => GetByName("stforek"); - public static FiggleFont Stop => GetByName("stop"); - public static FiggleFont Straight => GetByName("straight"); - public static FiggleFont SubZero => GetByName("sub-zero"); - public static FiggleFont Swampland => GetByName("swampland"); - public static FiggleFont Swan => GetByName("swan"); - public static FiggleFont Sweet => GetByName("sweet"); - public static FiggleFont Tanja => GetByName("tanja"); - public static FiggleFont Tengwar => GetByName("tengwar"); - public static FiggleFont Term => GetByName("term"); - public static FiggleFont Test1 => GetByName("test1"); - public static FiggleFont Thick => GetByName("thick"); - public static FiggleFont Thin => GetByName("thin"); - public static FiggleFont ThreePoint => GetByName("threepoint"); - public static FiggleFont Ticks => GetByName("ticks"); - public static FiggleFont TicksSlant => GetByName("ticksslant"); - public static FiggleFont Tiles => GetByName("tiles"); - public static FiggleFont TinkerToy => GetByName("tinker-toy"); - public static FiggleFont Tombstone => GetByName("tombstone"); - public static FiggleFont Train => GetByName("train"); - public static FiggleFont Trek => GetByName("trek"); - public static FiggleFont Tsalagi => GetByName("tsalagi"); - public static FiggleFont Tubular => GetByName("tubular"); - public static FiggleFont Twisted => GetByName("twisted"); - public static FiggleFont TwoPoint => GetByName("twopoint"); - public static FiggleFont Univers => GetByName("univers"); - public static FiggleFont UsaFlag => GetByName("usaflag"); - public static FiggleFont Varsity => GetByName("varsity"); - public static FiggleFont Wavy => GetByName("wavy"); - public static FiggleFont Weird => GetByName("weird"); - public static FiggleFont WetLetter => GetByName("wetletter"); - public static FiggleFont Whimsy => GetByName("whimsy"); - public static FiggleFont Wow => GetByName("wow"); -#pragma warning restore CS1591 - private static FiggleFont GetByName(string name) { return _fontByName.GetOrAdd(name, FontFactory); diff --git a/Figgle.sln b/Figgle.sln index f387c99..e2b5a80 100644 --- a/Figgle.sln +++ b/Figgle.sln @@ -306,6 +306,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{02EA .github\workflows\release.yml = .github\workflows\release.yml EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Figgle.Fonts.Generator", "Figgle.Fonts.Generator\Figgle.Fonts.Generator.csproj", "{021EFDCD-EE3F-4C35-B93E-2E760AA481AF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -400,6 +402,18 @@ Global {A94B3D16-C26C-4822-A0DF-846A11B27F7D}.Release|x64.Build.0 = Release|Any CPU {A94B3D16-C26C-4822-A0DF-846A11B27F7D}.Release|x86.ActiveCfg = Release|Any CPU {A94B3D16-C26C-4822-A0DF-846A11B27F7D}.Release|x86.Build.0 = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|x64.ActiveCfg = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|x64.Build.0 = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|x86.ActiveCfg = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Debug|x86.Build.0 = Debug|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|Any CPU.Build.0 = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|x64.ActiveCfg = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|x64.Build.0 = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|x86.ActiveCfg = Release|Any CPU + {021EFDCD-EE3F-4C35-B93E-2E760AA481AF}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE