Figgle 0.6.2

dotnet add package Figgle --version 0.6.2
                    
NuGet\Install-Package Figgle -Version 0.6.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Figgle" Version="0.6.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Figgle" Version="0.6.2" />
                    
Directory.Packages.props
<PackageReference Include="Figgle" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Figgle --version 0.6.2
                    
#r "nuget: Figgle, 0.6.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Figgle&version=0.6.2
                    
Install Figgle as a Cake Addin
#tool nuget:?package=Figgle&version=0.6.2
                    
Install Figgle as a Cake Tool
 _____ _         _     
|   __|_|___ ___| |___ 
|   __| | . | . | | -_|
|__|  |_|_  |_  |_|___|
        |___|___|      

Figgle Build Status Figgle NuGet version Figgle NuGet download count

ASCII banner generation for .NET

Console.WriteLine(
    FiggleFonts.Standard.Render("Hello, World!"));

Produces...

  _   _      _ _         __        __         _     _ _
 | | | | ___| | | ___    \ \      / /__  _ __| | __| | |
 | |_| |/ _ \ | |/ _ \    \ \ /\ / / _ \| '__| |/ _` | |
 |  _  |  __/ | | (_) |    \ V  V / (_) | |  | | (_| |_|
 |_| |_|\___|_|_|\___( )    \_/\_/ \___/|_|  |_|\__,_(_)
                     |/

Alternatively, use Figgle's source generator to embed just the fonts you want into your assembly, or—if the text to render is known ahead of time—generate output during compilation, so you don't need to ship Figgle binaries with your app. See below for details.

The library bundles 265 FIGlet fonts in the Figgle.Fonts NuGet package. You can add your own if that's not enough!

Installation

Available via NuGet:

Install-Package Figgle

Targets .NET Standard 2.0, so runs pretty much anywhere. If you require .NET Standard 1.3, use package version 0.4.1.

Other samples

Using FiggleFonts.Graffiti:

  ___ ___         .__  .__               __      __            .__       .___._.
 /   |   \   ____ |  | |  |   ____      /  \    /  \___________|  |    __| _/| |
/    ~    \_/ __ \|  | |  |  /  _ \     \   \/\/   /  _ \_  __ \  |   / __ | | |
\    Y    /\  ___/|  |_|  |_(  <_> )     \        (  <_> )  | \/  |__/ /_/ |  \|
 \___|_  /  \___  >____/____/\____/  /\   \__/\  / \____/|__|  |____/\____ |  __
       \/       \/                   )/        \/                         \/  \/

Using FiggleFonts.ThreePoint:

|_| _ || _    \    / _  _| _||
| |(/_||(_),   \/\/ (_)| |(_|.

Using FiggleFonts.Ogre:

            _ _          __    __           _     _   _ 
  /\  /\___| | | ___    / / /\ \ \___  _ __| | __| | / \
 / /_/ / _ \ | |/ _ \   \ \/  \/ / _ \| '__| |/ _` |/  /
/ __  /  __/ | | (_) |   \  /\  / (_) | |  | | (_| /\_/ 
\/ /_/ \___|_|_|\___( )   \/  \/ \___/|_|  |_|\__,_\/   
                    |/                                  

Using FiggleFonts.Rectangles:

                                            __ 
 _____     _ _          _ _ _         _   _|  |
|  |  |___| | |___     | | | |___ ___| |_| |  |
|     | -_| | | . |_   | | | | . |  _| | . |__|
|__|__|___|_|_|___| |  |_____|___|_| |_|___|__|
                  |_|                          

Using FiggleFonts.Slant:

    __  __     ____           _       __           __    ____
   / / / /__  / / /___       | |     / /___  _____/ /___/ / /
  / /_/ / _ \/ / / __ \      | | /| / / __ \/ ___/ / __  / / 
 / __  /  __/ / / /_/ /      | |/ |/ / /_/ / /  / / /_/ /_/  
/_/ /_/\___/_/_/\____( )     |__/|__/\____/_/  /_/\__,_(_)   
                     |/                                      

Loading external fonts

Figgle ships with a bunch of fonts (in the FiggleFonts class). If you prefer, you can load your own.

Here's an example that loads a font from disk and renders some text with it:

using var fontStream = System.IO.File.OpenRead("myfont.flf");
var font = FiggleFontParser.Parse(fontStream);
var text = font.Render("Hello World, from My Font");

Using the Source Generator

Figgle has two source generators: one renders static text at compile time, the other embeds the font into your assembly.

Static text rendering

If the text you want Figgle to render is known at compile time, this section is for you.

Instead of having Figgle render text at runtime, you can use Figgle's source generator to do the rendering at compile time. This has two benefits:

  • Faster runtime performance, as no Figgle code is executed
  • Less memory consumption, as no Figgle code is loaded
  • Smaller application footprint, as you don't need to ship Figgle binaries

In your code:

using Figgle;

namespace MyNamespace;

[GenerateFiggleText("HelloWorldString", "blocks", "Hello world")]
internal partial class MyClass
{
}

By adding this attribute to a partial class, Figgle will automatically generate the corresponding member in another part of the partial class, resembling:

namespace MyNamespace;

partial class MyClass
{
    public static string HelloWorldString { get; } = "...rendered text here...";
}

If you want to use an external font, include the external font file as an additional file in your csproj:

<ItemGroup>
    <AdditionalFiles Include="myfont.flf" />
</ItemGroup>

Then specify the font's file name (excluding the extension) as the font name in the attribute:

[GenerateFiggleText("HelloWorldString", "myfont", "Hello world")]

Alternatively, you can specify a custom font name using the FontName item metadata:

<ItemGroup>
    <AdditionalFiles Include="myfont.flf" FontName="MyCustomFontName" />
</ItemGroup>
[GenerateFiggleText("HelloWorldString", "MyCustomFontName", "Hello world")]

Note the font name specified in the GenerateFiggleText attribute is case-insensitive so mycustomfontname works too.

Embedding fonts

If you know the font you want to use to render, but the text to render is dynamic during runtime (e.g. user input), you can use the source generator to embed the font into your assembly.

By embedding only the fonts you want into your assembly, you can avoid having to ship all of built-in figgle fonts with your application, reducing the deploy size and memory usage of your application.

In your code:

using Figgle;

namespace MyNamespace;

[EmbedFiggleFont(memberName: "MyFont", fontName: "blocks")]
internal static partial class MyClass
{
}

This will cause the source generator to generate a static property of type FiggleFont in the MyClass type, which you can use to render text:

using Figgle;

namespace MyNamespace;

internal partial class MyClass
{
    public static FiggleFont MyFont { get; }
}

You can then use the font the same way you use a built-in font:

using Figgle;

namespace MyNamespace;

string text = MyClass.MyFont.Render("Hello, World!");

Console.WriteLine(text);

Similar to GenerateFiggleText, external fonts are also supported. Include the external font file as an additional file in your csproj the same way as before:

<ItemGroup>
    <AdditionalFiles Include="myfont.flf" FontName="MyExternalFont" />
</ItemGroup>

Then specify the font's font name as specified in AdditionalFiles (filename without the extension is also recognized if FontName property is not defined):

[EmbedFiggleFont(memberName: "MyFont", fontName: "MyExternalFont")]

Source generator diagnostics

Rule ID Category Severity Notes
FGL0001 Figgle Error The specified font name was not found.
FGL0002 Figgle Error The attribute specified an invalid member name.
FGL0003 Figgle Error The member specified by the attribute has already been declared.
FGL0004 Figgle Error The type must be partial.
FGL0005 Figgle Error Figgle generation does not support nested types.
FGL0006 Figgle Error There were errors when trying to read the external font.
FGL0007 Figgle Error Type must static.
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (56)

Showing the top 5 NuGet packages that depend on Figgle:

Package Downloads
Convey

Convey

Genocs.Core

The core components to build .NET Core projects along with Genocs Library.

KS.CoreCLR

Simulates our future-planned kernel

Else.WebApi.AppSettingsVariables

Else.WebApi.AppSettingsVariables

UXAV.AVnet.Core

Package Description

GitHub repositories (12)

Showing the top 12 popular GitHub repositories that depend on Figgle:

Repository Stars
meysamhadeli/monolith-to-cloud-architecture
A practical architecture styles for migrating from monolith to modern cloud native application with the latest technologies and architectures like Vertical Slice Architecture, Event Sourcing, CQRS, DDD, gRpc, MongoDB, RabbitMq, and Masstransit in .Net 9.
IoTSharp/IoTSharp
IoTSharp is an open-source IoT platform for data collection, processing, visualization, and device management.
snatch-dev/Convey
A simple recipe for .NET Core microservices.
meysamhadeli/booking-modular-monolith
Practical Modular Monolith, built with .Net 9, DDD, CQRS, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
rstropek/Samples
dawn-lc/ArchivePasswordTestTool
利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码
thangchung/practical-dapr
A full-stack .NET microservices build on Dapr and Tye
LeonKou/NetPro
🌈An enhanced version with clean architecture of asp.netcore,efficiently manage startup,Support for netcore3.1/6.0
zidanfanshao/befree
一款红队在信息收集时规避IP封禁的傻瓜式一键代理池,通过大量代理节点轮询的代理池工具
Amine-Smahi/C-Sharp-Learning-Journey
Some of the projects i made when starting to learn c#, winfroms and wpf
GameProgressive/UniSpyServer
An Open source GameSpy emulator written in C#
fraktalcyber/Fransom
Fraktal's Ransomware Emulator
Version Downloads Last updated
0.6.2 412 6/7/2025
0.6.1 740 6/3/2025
0.5.1 991,288 1/6/2023
0.4.1 59,898 11/1/2022
0.4.0 2,053,737 9/7/2020
0.3.0 1,532,725 10/19/2017
0.2.0 2,643 9/3/2017
0.1.0 2,301 9/3/2017