a bitmapped Unicode font for blocky graphics

๐Ÿš€ Explore this insightful post from Hacker News ๐Ÿ“–

๐Ÿ“‚ Category:

๐Ÿ“Œ Key idea:

Unscii – a bitmapped Unicode font for blocky graphics

UNSCII

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

By

Leave a Reply

Your email address will not be published. Required fields are marked *