Make ASCII Art Anywhere_ Use Python’s `pyfiglet` in Ruby, .NET Core, and Node.js with Javonet

Have you ever wanted to spice up your terminal app with something fun? Something expressive? Something old school but timeless?

Let’s talk about ASCII art—yes, the stuff you saw in the early days of the internet that made you smile. With Python’s pyfiglet library, generating beautiful ASCII banners is a breeze. But here s the twist: you don’t need to write your application in Python to use it.

With Javonet, you can embed Python code directly into Ruby, .NET Core, or Node.js projects and call libraries like pyfiglet as if they were native. Of course, there are many implementations of FIGlet across various technologies—but the goal of this article is to show you just how effortlessly you can use Javonet, and hopefully leave you wondering: “What else could I integrate this easily?”

Let’s explore how to unleash this ASCII magic in any language you like.

What Is pyfiglet?

pyfiglet is a full Python port of the original FIGlet tool. It turns simple text into stylish ASCII banners using various fonts. It’s perfect for:

  • CLI tool branding
  • Fun debugging messages
  • Welcome screens
  • Easter eggs in your code

Here’s what it does in Python:

# Just for reference
from pyfiglet import Figlet

f = Figlet(font="slant")
ascii_art = f.renderText("Hello from Python!")
print(ascii_art)

Output:

$ python figlet.py                                           
    __  __     ____         ____                   
   / / / /__  / / /___     / __/________  ____ ___ 
  / /_/ / _ \/ / / __ \   / /_/ ___/ __ \/ __ `__ \
 / __  /  __/ / / /_/ /  / __/ /  / /_/ / / / / / /
/_/ /_/\___/_/_/\____/  /_/ /_/   \____/_/ /_/ /_/ 
                                                   
    ____        __  __                __
   / __ \__  __/ /_/ /_  ____  ____  / /
  / /_/ / / / / __/ __ \/ __ \/ __ \/ / 
 / ____/ /_/ / /_/ / / / /_/ / / / /_/  
/_/    \__, /\__/_/ /_/\____/_/ /_(_)   
      /____/                            
                          

Looks awesome, right? But why should only Python developers get to use it?

With Javonet, you can bring pyfiglet (and any other Python library) to your non-Python project in just a few lines of code.


Cross-Language Code with Javonet

Javonet is a lightweight bridge that connects your main project’s language to another runtime—like Python. It works in-process, meaning no APIs, no socket servers, no awkward wrappers.

With Javonet, you can:

  • Load Python modules directly from .NET, Node.js, or Ruby
  • Access Python classes and functions
  • Pass and retrieve data across runtimes instantly

This means you can call Figlet renderTest from any language as if it were part of that language.

And best of all? It’s fast, secure, and cross-platform.


Setup Prerequisites

Before we start, you’ll need to:

✅ Install Python and pyfiglet via pip install pyfiglet
✅ Download the Javonet SDK and grab a free trial license
✅ Set up your project in your language of choice (Ruby, .NET Core, or Node.js)

Once that’s ready, you’re good to go!


Use pyfiglet in Ruby with Javonet

Ruby is clean, expressive, and joyful—but calling Python? That’s historically been tricky. Not anymore.

With Javonet, the integration is seamless.

🔧 Ruby Example

# figlet.rb
require 'javonet-ruby-sdk'
Javonet.activate("<your-javonet-key>")

called_runtime = Javonet.in_memory.python

figlet = called_runtime.get_type('pyfiglet.Figlet').create_instance("slant").execute
result = figlet.invoke_instance_method("renderText", "Python Figlet from Ruby!").execute

puts result.get_value

This script:

  1. Initializes the Python runtime
  2. Loads the pyfiglet module
  3. Calls renderText("Python Figlet from Ruby!")
  4. Prints the ASCII result directly to the Ruby console

And yes—it looks exactly as cool as it sounds.

ruby figlet.rb
    ____        __  __                   _______       __     __ 
   / __ \__  __/ /_/ /_  ____  ____     / ____(_)___ _/ /__  / /_
  / /_/ / / / / __/ __ \/ __ \/ __ \   / /_  / / __ `/ / _ \/ __/
 / ____/ /_/ / /_/ / / / /_/ / / / /  / __/ / / /_/ / /  __/ /_  
/_/    \__, /\__/_/ /_/\____/_/ /_/  /_/   /_/\__, /_/\___/\__/  
      /____/                                 /____/              
    ____                        ____        __          __
   / __/________  ____ ___     / __ \__  __/ /_  __  __/ /
  / /_/ ___/ __ \/ __ `__ \   / /_/ / / / / __ \/ / / / / 
 / __/ /  / /_/ / / / / / /  / _, _/ /_/ / /_/ / /_/ /_/  
/_/ /_/   \____/_/ /_/ /_/  /_/ |_|\__,_/_.___/\__, (_)   
                                              /____/      


Use pyfiglet in .NET Core (C#) with Javonet

Whether you’re building internal dev tools or enterprise CLI utilities, .NET Core offers powerful tooling. But what if you want to jazz up your terminal output?

Calling pyfiglet from C# is not just possible—it’s a Javonet lifestyle.

🔧 .NET Core (C#) Example

// figlet.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Javonet.Netcore.Sdk" Version="2.5.20" />
  </ItemGroup>

</Project>

using Javonet.Netcore.Sdk;

class Program
{
    static void Main(string[] args)
    {
        Javonet.Netcore.Sdk.Javonet.Activate("<your-javonet-key>");
        var calledRuntime = Javonet.Netcore.Sdk.Javonet.InMemory().Python();
        var calledRuntimeType = calledRuntime.GetType("pyfiglet.Figlet").Execute();
        var response = calledRuntimeType.CreateInstance("slant").InvokeInstanceMethod("renderText", "Hello figlet from .NET!").Execute();
        Console.WriteLine(response.GetValue());
    }
}

dotnet run
    __  __     ____         _____       __     __     ____                   
   / / / /__  / / /___     / __(_)___ _/ /__  / /_   / __/________  ____ ___ 
  / /_/ / _ \/ / / __ \   / /_/ / __ `/ / _ \/ __/  / /_/ ___/ __ \/ __ `__ \
 / __  /  __/ / / /_/ /  / __/ / /_/ / /  __/ /_   / __/ /  / /_/ / / / / / /
/_/ /_/\___/_/_/\____/  /_/ /_/\__, /_/\___/\__/  /_/ /_/   \____/_/ /_/ /_/ 
                              /____/                                         
      _   ________________
     / | / / ____/_  __/ /
    /  |/ / __/   / / / / 
 _ / /|  / /___  / / /_/  
(_)_/ |_/_____/ /_/ (_)   
                          

Now your .NET Core app can welcome users with ASCII banners or display warning messages in bold, retro flair.

Want to support multiple banner styles? pyfiglet has dozens of fonts ready to go.


Use pyfiglet in Node.js with Javonet

Node.js is ideal for scripting, tooling, bots, and developer utilities. And pyfiglet is the perfect way to add visual flair.

With Javonet, calling Python code from Node.js is no different than requiring a regular module.

🔧 Node.js Example

//figlet.js
const { Javonet } = require('javonet-nodejs-sdk');

Javonet.activate("<your-javonet-key>");

let calledRuntime = Javonet.inMemory().python();
calledRuntime.loadLibrary('.');

let calledRuntimeType = calledRuntime.getType("pyfiglet.Figlet").createInstance("slant").execute();

let response = calledRuntimeType.invokeInstanceMethod("renderText", "Hello from nodejs!").execute();

let result = response.getValue();
console.log(result);

    __  __     ____         ____
   / / / /__  / / /___     / __/________  ____ ___
  / /_/ / _ \/ / / __ \   / /_/ ___/ __ \/ __ `__ \
/ __  /  __/ / / /_/ /  / __/ /  / /_/ / / / / / /
/_/ /_/\___/_/_/\____/  /_/ /_/   \____/_/ /_/ /_/
 
                    __       _      __
   ____  ____  ____/ /__    (_)____/ /
  / __ \/ __ \/ __  / _ \  / / ___/ /
/ / / / /_/ / /_/ /  __/ / (__  )_/
/_/ /_/\____/\__,_/\___/_/ /____(_)
                      /___/

You’ll be surprised how much personality a little ASCII can add to your Node.js tool.

Want to go further? Dynamically change the banner based on user input or environment.


Going Beyond Hello World

Sure, renderText("Hello") is fun. But pyfiglet offers so much more. With Javonet, you can:

🖋 Change fonts:

pyfiglet.renderText("Hello figlet from .NET!", font="cola")

vscode ➜ /workspaces/art/FigletApp $ dotnet run
    __  __     ____         _____       __     __     ____                   
   / / / /__  / / /___     / __(_)___ _/ /__  / /_   / __/________  ____ ___ 
  / /_/ / _ \/ / / __ \   / /_/ / __ `/ / _ \/ __/  / /_/ ___/ __ \/ __ `__ \
 / __  /  __/ / / /_/ /  / __/ / /_/ / /  __/ /_   / __/ /  / /_/ / / / / / /
/_/ /_/\___/_/_/\____/  /_/ /_/\__, /_/\___/\__/  /_/ /_/   \____/_/ /_/ /_/ 
                              /____/                                         
      _   ________________
     / | / / ____/_  __/ /
    /  |/ / __/   / / / / 
 _ / /|  / /___  / / /_/  
(_)_/ |_/_____/ /_/ (_)   
                          

vscode ➜ /workspaces/art/FigletApp $ dotnet run

     `;   .'           .;    .;            .-.            .;           .   
    _ `; ; (          .;'   .;'           ; -'.-.        .;'       ...;... 
   (  ;' ;  ) .-.    .;    .;  .-.      -;--  `-',:.,'  .;  .-.     .'     
    `.;__;.'.;.-'   ::    ::  ;   ;'    .    ;' :   ;  :: .;.-'   .;       
 .  .:'  `:. `:::'_;;_.-_;;_.-`;;'   `.'  _.;:._.`-:'_;;_.-`:::'.;         
(_.'       `:                                  -._:'                       
      .-.                             .-.              .-.-.;;;;;;'.;. 
     ; -'                               ;  :   .;;;.`-' (_)  .;   ;;;' 
   -;--.;.::..-.  . ,';.,';.          .;:  :  ;;  (_)        :   .;'   
   .   .;   ;   ;';;  ;;  ;;  .-.    .;' \ :  .;;; .-.     .:'  .-.    
`.'  .;'    `;;' ';  ;;  ';   `-'.:'.;    \: ;;  .;  ;   .-:._  `-'    
                _;        `-'   (__.'      `.`;.___.'   (_/  `-        

🖍 Combine with ANSI color libraries in your host language
🧪 Wrap ASCII banners around exception messages
🎁 Auto-generate headers for your CLI tools

Since pyfiglet supports over 100 different fonts, you’ll never run out of ways to surprise your users.


Why It Matters

You might wonder: why bother? Why not just rewrite pyfiglet in Ruby, C#, or JavaScript?

Because:

  • ✅ The Python ecosystem is rich and battle-tested
  • ✅ Reusing libraries reduces time, bugs, and effort
  • ✅ You can innovate faster when you’re not reinventing the wheel

With Javonet, you’re not locked into one language anymore. You can cherry-pick the best tools from any ecosystem and bring them into your own.


Final Thoughts

ASCII banners may seem playful—but they’re just the beginning.

This example with pyfiglet shows how easy and powerful it is to call Python code from Ruby, .NET Core, or Node.js using Javonet. Whether it’s machine learning, data visualization, or text formatting, Javonet makes cross-language integration a breeze.

So next time you want to add character (literally) to your app…

💡 Just renderText() it—no matter the language.


Want to try it yourself?
Get started with Javonet here
Explore pyfiglet on GitHub

Stay creative, stay cross-language—and make ASCII art great again! 🎨