๐ Explore this insightful post from Hacker News ๐
๐ Category:
๐ Key idea:

Unscii is a set of bitmapped Unicode fonts based on classic system fonts.
Unscii attempts to support character cell art well while also being suitable
for terminal and programming use.
The two main variants are unscii-8 (8ร8 pixels per glyph) and unscii-16
(8ร16). There are also several alternative styles for unscii-8, as well as
an 8×16 “full” variant that incorporates missing Unicode glyphs from
Fixedsys Excelsior and GNU Unifont. “unscii-16-full” falls under GPL because
of how Unifont is licensed; the other variants are in the Public Domain.
Unscii was created by Viznut.
In 2020-03-10, the new Unicode version
13.0 added 214 graphics characters for “legacy computing” (including,
among all, the missing PETSCII characters, and a majority of missing
Teletext/Videotex characters). Most of these were already included in Unscii
1.x, but now I have been able to give them proper Unicode mappings as well.
This is the main reason for the Unscii 2.0 release.
Additionally, Unscii 2.0 fixes errors in some characters, legibility in
some others and adds a bunch of new ones.
A test picture representing what is currently available in Unicode (feel
free to copy-paste it to your editor to see what it looks like in other
fonts):
โโโ โฑ๐ญฝโ๐ญพโฒ ๐ฎฒ๐ฎณ ๐ฎธ๐ฎ๐ฎต๐ฎถ๐ฎ๐ฎ๐ฎ๐ฎ๐ฎผ๐ฏ๐ฏ๐ฏ โต โ โฌ
โถโโดโบโโธ โ โโโ โน โธโฃโน โธ โโโโโ ๐ฏฒ๐ฏท๐ฏถ โณ โด โฝ โญโฌโฎ
โทโโฌโโโฏโโโคโโโโ ๐ฎท ๐ญผโ๐ญฟ โธ โโโโโ ๐ฏน๐ฏต๐ฏฑ ๐ฏฐ โโโโโ
โโโ โโ
โโณโทโปโน โฒ โโผโโพโ โฉโฌโฌ
โโโผโคโโฟโฅโโชโกโโโ โนโฑ โณ โฒโธ โโโโโ ๐ฏด๐ฏณ๐ฏธ โ๐ฎ๐ฎ
๐ฎโ๐ฎ๐ฎโโน โฝ โโโ๐ฎฝโถโบโธโฟ โฎ โฌโงโซโจโฌ
โตโโดโโโทโโโงโโโโฆ โโโโโ ๐ฌ๐ฌ๐ฌฐ๐ฌช๐ฌ ๐ฎ๐ฎ โโ โโกโฏโก โ๐ญต โฟ โผ โ โฎโโฎ โฌโฌโช
โปโโฐโโโณโ โญโโโ
โฎโโโโ ๐ฌฅ๐ฌฆ๐ฌ๐ฌฒ๐ฌต๐ฌน๐ฌฑ๐ฌท๐ฌ๐ฌ๐ฌ ๐ฎ๐ฎ ๐ฎโโโ โฏโโฏโกโ๐ญด โพ โฎ โ โฌ โ
โโ โโจโฃโโซ โบโฝโโโโพโ
โ
โโ ๐ฌ๐ฌก๐ฌ๐ฌป๐ฌ๐ฌญ๐ฌ๐ฌบ๐ฌข๐ฌ๐ฌง ๐ฎโโ โ โฏโ โ ๐ญณ โฟโบ
โนโโธโโโปโ โโตโโโโถโโโโ ๐ฌ๐ฌค๐ฌซ๐ฌด๐ฌ ๐ฌ๐ฌ๐ฌธ๐ฌ๐ฌ๐ฌ ๐ญ๐ฌผ โโ โ๐ฎฃ๐ฎข ๐ฎฆ ๐ญฒ โนโธ ๐ญฏ ๐ฎโโ๐ฎ ๐ฏ โโโถโโต
โโฅโ โโฆโโขโโช โโฑโฒโง ๐ฌฃ๐ฌฏ๐ฌ๐ฌฌ๐ฌ๐ฌ๐ฌ๐ฌ๐ฌ
๐ฌฎ๐ฌ ๐ญข๐ญ ๐ฎโ ๐ฎค๐ฎช๐ฎซ๐ฎฅ๐ฎง ๐ญฑ ๐ญฏ ๐ญฎโ๐ญฌโญโ๎กฑโโฎโซ๐ฎปโง โโโโฒโผโฑโญโโฎ
โโโซโข๐ฎ๐ฎ๐ฎโ โฌโฃ โนโ โกโนโบโฉ ๐ฌณ๐ฌ๐ฌฉ๐ฌ๐ฌ๐ฌ๐ฌ๐ฌจ๐ฌ๐ฌ๐ฌถ ๐ญ๐ฌฟ ๐ฎโ ๐ฎฉ๐ฎฌ๐ฎญ๐ฎจ ๐ญฐ โข๐ญซโฃ ๐ฎ โ โข ๎กฐโฎ๐โช โโโทโผโดโโโโ
โโจโ๐ฎ ๐ฎโโฉโ ๐ฏ ๐ฏ
๐ฏ ๐ฎฃ๐ฎข ๐ฏ ๐ฏ ๐ญฅ๐ญ ๐ฎโ๐ฎฎ ๐ฎก๐ฎ โธ๐ญฎ๐ญชโ๐ญจ๐ฎ๐ฎฟ๐ญฌโฐโ๐ฎฏโโฏโฌโฏโจ โณโโฐโฐโโฏ
โโ๐ฎ๐ฎ๐ฎโโโโ๐ฎ๐ฎโคโคโฅโฅโฆโฆโฉโฉโงโง๐ฎ๐ฎ๐ฎ๐ฎโจโจ๐ฎ๐ฎ๐ฎ๐ฎ ๐ญ๐ญ โโ๐ญป๐ญบ๐ญน๐ญธ๐ญท๐ญถโ โฅ๐ญฉโค ๐ญญ โฎโฏโช โฑโฐ โญโฌ
โโโ๐ฎโโโโโ๐ฎ๐ฎโคโคโฅโฅโฆโฆโฉโฉโงโง๐ฎ๐ฎ๐ฎ๐ฎโจโจ๐ฎ๐ฎ๐ฎ๐ฎ ๐ญฆ๐ญ ๐ฎฐ ๐ญ๐ฌผ๐ญญ ๐ญ๐ฌฟ ๐ญ๐ญ โญโฏโฉ โฏโฎ โซโปโกโ โผโชโฌยท
๐ฎโ๐ฎ โฒโฑ ๐ญ๐ฌผ๐ญ๐ฌฝ๐ญ๐ฌพโขโฃ๐ญ๐ญ๐ญ๐ฌผ๐ญ๐ญ๐ญ๐ญ๐ญ๐ฌฝ๐ญ๐ญ๐ญ๐ฌพ๐ญ๐ญ๐ญ๐ฌฝ๐ญ
๐ญ โฆโโฏโฌคโโ โฌซโฌฆโฌจโขโโโโฆโฌงโฌฅโฌฉโฌช
โ๐ฎโ ๐ญข๐ญ๐ญฃ๐ญ๐ญค๐ญโฅโค๐ญข๐ญ๐ญ๐ญ๐ญฃ๐ญง๐ญ๐ญ๐ญ๐ญ๐ญค๐ญ๐ญ๐ญ๐ญฃ๐ญ๐ญ ๐ญ๐ญ๐ญก โโญโ
๐ญข๐ญ ๐ญฅ๐ญ ๐ญฆ๐ญ โข
Here are some conversions of legacy character set art into Unscii.
Amiga ansi: Divine Stylers by Hellbeard, as rendered with unscii-16.
Source

PC ansi: Ansi Love by Rad Man, as rendered with unscii-16.
Source

Commodore 64 petscii pictures as rendered with unscii-8, using the
256-color xterm palette: I Has Floppy by Redcrab; The First Ball by
Dr.TerrorZ; Gary by Mermaid.


The source code package includes a generic bitmap-to-unscii converter. Here’s an
example of a conversion to unscii-8 using the 256-color xterm
palette, without dithering:
HEX and PCF are the only actual bitmapped formats here. HEX is the same
simple hexdump format as used by the Unifont project. TTF, OTF and WOFF
are vectorized.
NOTE: Due to format limitations, the PCF versions lack all the characters
above U+FFFF! However, all the new graphics characters are provided in the
good old PUA range as well. A mapping is in the file uns2uni.tr.
Years ago, I noticed that Unicode had a bunch of pseudographic characters
that could be used to enrichen Ansi art. However, no one seemed to use them.
Even MUDs that used the 256-color Xterm palette and had no issues with
Unicode still preferred to stick to the blocks available in the MS-DOS
codepage 437.
After looking into existing Unicode fonts, the reason became obvious: the
implementation of non-CP437 graphics characters was shaky at best. Unicode
Consortium doesn’t even care how pseudographics are implemented. It was a
kind of chicken-and-egg problem: No commonly accepted Unicode graphics font,
no Unicode art scene; no art scene, no font support. The idea of an
art-compatible Unicode font was born.
For Unscii, I studied a bunch of classic system fonts and how their
characters had been used in Ascii and “extended-Ascii” art.
8ร8 system fonts can be divided in two major categories according to
their line thickness: 1-pixel and 2-pixel. 2-pixel-wide lines are used in
more prominent classic systems, so I chose it. Also, 2-pixel 8ร8 system
fonts are surprisingly similar to one another which made it easier to choose
neutral shapes.
The basic look of the 8ร8 variant of Unscii is based on the following
systems:
- Amiga (Topaz-8)
- Amstrad CPC
- Atari 8-bit (as in 800, XL etc.)
- Atari Arcade (the iconic ROM font)
- Atari 32-bit (as in ST etc.)
- BBC Micro (graphics mode font)
- Commodore 64
- IBM PC (the 8ร8 ROM font as in CGA, or VGA 80ร50)
The 8ร16 variant of Unscii has been mostly derived from the 8ร8 variant
by using a set of transformation principles. When in doubt, the following
fonts have been looked at for additional reference:
- Windows Fixedsys 8ร15 (and its modern successor Fixedsys Excelsior)
- IBM PC VGA ROM font(s) (and their modern successor U_VGA)
- X Window System fonts 8×13(B) and 9×15(B)
- Classic Macintosh 12-point Monaco
- Digital VT420 10ร16 font (used in the 80ร24 mode)
- Modern monospaced vector fonts: DejaVu Sans Mono, Lucida Console,
Inconsolata
In general, neutral shapes are preferred, unless art, legibility or
readability require otherwise: The characters /\XY are connective because of
their connetive use in ascii art, and the serifs in iIl are longer than in
most classic systems.
Whenever a 8ร16 shape has not been defined, Unscii falls back to
height-doubled 8ร8.
I also studied game fonts and thin-line system fonts. This resulted in
the variants unscii-8-thin, unscii-8-mcr and unscii-8-fantasy.
When studying legacy character sets, I found literally hundreds of
characters without proper Unicode codepoints. These are mapped in the PUA
range as follows:
- U+E080..E0FF: Teletext/Videotex block mosaics.
- U+E100..: The most prominent and useful non-Unicode pseudographics:
everything found in PETSCII, Videotex smooth mosaics, extra shades,
round corners, X/Y doublers. - U+E800..: Somewhat stranger but still potentially useful: junctions with
border-aligned lines, diagonal line junctions, non-straight lines, weirder
fill patterns, etc. - U+EC00..: Total oddities. Mostly game-oriented bitmaps and other
depictive characters from Sharp MZ, Aquarius, etc.
Since Unicode 13.0, many of these are also available in Unicode, but
the PUA mappings are retained for compatibility.
๐ฅ Share your opinion below!
#๏ธโฃ #bitmapped #Unicode #font #blocky #graphics
๐ Posted on 1765799279
