Skip to content

Conversation

@Kirkman
Copy link
Contributor

@Kirkman Kirkman commented Aug 20, 2025

This fork adds support to libansilove/ansilove for rendering ANSI art fonts and color palettes derived from two Atari ST programs from 1992-1994: ANSIterm, a terminal program; and FANSI, an ANSI editor. (A bit more on those here)

History

One obstacle to supporting ANSI on the Atari ST in the 1990s was that 16 colors were available only in low resolution (320x200), which was a 40-column text mode. The ST's medium (640x200) and high (640x400) resolutions each allow 80 columns of text, but with limited 4- and 2-color palettes respectively.

The creator of ANSIterm (copied later by FANSI) worked around this limitation with a creative solution: he designed a skinny 4x8 custom font, narrow enough to squeeze 80 columns of text onto the 16-color, low-resolution screen.

Example

Here is an example of an ANSI screen that was originally designed in FANSI, rendered using default ansilove settings (like a classic PC would have rendered it), and my new ST/FANSI settings (the way the artist would have seen it on his Atari ST):

PC version

FANSIPC2 ANS PC

ST version (FANSI color palette)

FANSIPC2 ANS FAN

As you can see, the stylized text at the top doesn't read as naturally in the PC font as in the Atari version, particularly the W composed of two Greek mu characters (μ), or the is made from inverted exclamation marks (¡).

Among the other differences you can see in this comparison:

  • In the FANSI font, the (F9) dot/bullet character is considerably larger than its PC font equivalent. Also, the (F9) and (FA) dot/bullets are noticeably distinct characters in the FANSI font, whereas on the PC they are almost indistinguishable.
  • In FANSI, the underscore (5F) is drawn on the bottom-most row of pixels, so it touches the top of any character underneath it. On the PC, the underscore has at least one row of blanks pixels under it, which will separate it from any character underneath.
  • FANSI uses character (FF) as the opposite of an underscore: a horizontal line drawn on the top row of pixels. On the PC, this is a blank space.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant