Skip to content

FigletFont

Namespace: Hex1b.Widgets

Assembly: Hex1b.dll

Represents a parsed FIGfont — a typeface used by to render large ASCII-art text. Subclass to intercept glyph lookups, decorate or substitute glyphs, or build a fully synthetic font without parsing a .flf file.

csharp
public class FigletFont

Inheritance

ObjectFigletFont

Constructors

FigletFont(FigletFont)

Initializes a new that delegates all behavior to inner. Use this constructor when subclassing to decorate an existing font (for example to override for character substitution or fallback chains).

Parameters:

  • inner (FigletFont): The font to delegate to. Must not be null.
csharp
protected FigletFont(FigletFont inner)

FigletFont(int, int, char, int, bool, bool, int, bool, bool)

Initializes a new from primitive layout parameters. Use this constructor when implementing a fully synthetic font (no .flf data).

Parameters:

  • height (Int32): The number of rows in every glyph. Must be at least 1.
  • baseline (Int32): The 1-based row index of the FIGfont baseline counted from the top of a glyph. Must be in the range [1, height].
  • hardblank (Char): The sub-character that represents the hardblank in this font's glyph data. Renders as a space in output but participates in horizontal layout differently than ordinary spaces.
  • horizontalSmushingRules (Int32): Bitmask of horizontal smushing rules that this font opts in to (bits 1, 2, 4, 8, 16, 32). A value of 0 with horizontalSmushing set enables universal smushing.
  • horizontalSmushing (Boolean): True when smushing is the font's preferred horizontal layout.
  • horizontalFitting (Boolean): True when fitting (kerning) is the font's preferred horizontal layout.
  • verticalSmushingRules (Int32): Bitmask of vertical smushing rules in the post-shift form (bits 1, 2, 4, 8, 16). A value of 0 with verticalSmushing set enables universal vertical smushing.
  • verticalSmushing (Boolean): True when smushing is the font's preferred vertical layout.
  • verticalFitting (Boolean): True when fitting is the font's preferred vertical layout.
csharp
protected FigletFont(int height, int baseline, char hardblank, int horizontalSmushingRules, bool horizontalSmushing, bool horizontalFitting, int verticalSmushingRules, bool verticalSmushing, bool verticalFitting)

Properties

Baseline

Gets the 1-based row index of the FIGfont baseline (counted from the top of a glyph). Capital letters rest on top of this row.

Returns: Int32

csharp
public virtual int Baseline { get; }

Hardblank

Gets the sub-character used to represent hardblanks in this font's glyph data. Hardblanks render as spaces but participate in horizontal layout differently.

Returns: Char

csharp
public virtual char Hardblank { get; }

Height

Gets the height of every glyph in this font, in rows of sub-characters.

Returns: Int32

csharp
public virtual int Height { get; }

Methods

GetMissingGlyph()

Returns the glyph used when returns false. The default implementation returns the font's space glyph if available, matching reference figlet behavior.

Returns: FigletGlyph

The fallback glyph for missing characters.

csharp
public virtual FigletGlyph GetMissingGlyph()

LoadAsync(Stream, CancellationToken)

Asynchronously loads a FIGfont from a stream. The stream is read using ISO-8859-1 (Latin-1) so that hardblanks and sub-characters in the upper Latin-1 range are preserved.

Parameters:

  • stream (Stream): The stream to read. The caller retains ownership.
  • cancellationToken (CancellationToken): A token to cancel the async copy.

Returns: Task<FigletFont>

The parsed font.

csharp
public static Task<FigletFont> LoadAsync(Stream stream, CancellationToken cancellationToken = default)

LoadBundled(string)

Synchronously loads one of Hex1b's bundled FIGfonts by short name. Used by to populate its lazy singletons.

Parameters:

  • name (String): The bundled font's short name (see ).

Returns: FigletFont

The parsed font.

csharp
public static FigletFont LoadBundled(string name)

LoadBundledAsync(string, CancellationToken)

Asynchronously loads one of Hex1b's bundled FIGfonts by short name.

Parameters:

  • name (String): The font name. Recognized values (case-insensitive): standard, slant, small, big, mini, shadow, block, banner.
  • cancellationToken (CancellationToken): A token to cancel the read.

Returns: Task<FigletFont>

The parsed font.

csharp
public static Task<FigletFont> LoadBundledAsync(string name, CancellationToken cancellationToken = default)

LoadFileAsync(string, CancellationToken)

Asynchronously loads a FIGfont from a file path.

Parameters:

Returns: Task<FigletFont>

The parsed font.

csharp
public static Task<FigletFont> LoadFileAsync(string path, CancellationToken cancellationToken = default)

Parse(string)

Parses a FIGfont from an in-memory .flf string.

Parameters:

  • flfContent (String): The full text of a .flf file.

Returns: FigletFont

The parsed font.

csharp
public static FigletFont Parse(string flfContent)

ToString()

Returns a string identifying the font (height, hardblank, layout flags). Useful for diagnostics.

Returns: String

csharp
public override string ToString()

TryGetGlyph(int, out FigletGlyph)

Looks up the glyph for codePoint.

Parameters:

  • codePoint (Int32): The Unicode code point of the desired character.
  • glyph (FigletGlyph): The glyph if found; otherwise null.

Returns: Boolean

true if a glyph exists in this font for the given code point; otherwise false.

csharp
public virtual bool TryGetGlyph(int codePoint, out FigletGlyph glyph)

Remarks

Use one of the static factory methods to load a font: — load from any stream — load from disk / — load one of Hex1b's embedded fonts — parse a .flf string already in memory For the bundled fonts, prefer the lazy singletons exposed on (e.g. FigletFonts.Standard) over re-loading the resource.

Subclasses can override to substitute glyphs (for example to provide a fallback chain), and may use the decorator constructor to wrap an existing font.

Instances are immutable and safe to share across threads. Parsing a font is moderately expensive; bundled fonts are cached on .

Released under the MIT License.