Hacker News new | past | comments | ask | show | jobs | submit login
Unscii – a bitmapped Unicode font for blocky graphics (pelulamu.net)
325 points by detuur 4 months ago | hide | past | web | favorite | 49 comments

I had an adjacent project about 6 years ago which included a Unicode drawing program, text engine and image converter (https://github.com/kristopolous/unifig) ... I think the mirror I have at http://9ol.es/blocky/ is still functional. Edit, no it's not... I can bring it up to functional if people request.

I spent a decent amount of time on it, nobody paid any attention though. Oh well, not everything's a winner.

Hey, I think it's cool. Would like to try.

Well, I'm ecstatic. What a beautiful font.

After seeing this, I was finally inspired to find out why BitchX wouldn't display ANSI art correctly.

Turns out I needed a code 437 emulator! [1]

I can now use it the way it was meant to. Here it is paired with unscii-16-full 12pt [2]

This isn't nostalgia, this is just _better_.

[1] https://github.com/keaston/cp437

[2] https://i.imgur.com/3Oj9Vsy.png

> Turns out I needed a code 437 emulator! [1]

So that… just converts from cp437 (output by the subprocess) to whatever the "system encoding" (assumed to be the terminal's) is?

I'm surprised iconv or the like doesn't handle that natively. Or is the issue that you still need to interact with the subprocess and iconv(1) only does piping/non-interactive conversions?

I hadn't realized it was even maintained still this decade, or the preceding one. It's latest version is 1.2.1 and released on November 14, 2014... Not exactly up-to-date by some standards but I'm glad it's still around.

It's a bit sad that many of the ETSI EN 300 706 V1.2.1 graphics characters (1, section 15.7.2) are not available in Unicode.

I am maintaining a small program that renders images directly in the terminal using unicode block graphics characters (2), and these would come really handy to enhance the conversion...

1) https://www.etsi.org/deliver/etsi_en/300700_300799/300706/01...

2) https://github.com/stefanhaustein/TerminalImageViewer

There is a proposal to add them to Unicode, but the process takes a while (and its the third proposal since 2017): https://www.unicode.org/L2/L2018/18275r-terminals-prop-no-at...

Looks great! Do you know why the other two have failed? I was initially wondering whether it makes sense to bundle legacy and teletext all together into one "big" proposal, but then I realized that there is a very high amount of overlap...

well, the three proposals are from the same group of people. they probably are reactions to feedback from the unicode technical commitee[0]. I've looked into the utc meeting notes, but those don't really contain much info[1].

[0]: see the progression at https://www.unicode.org/cgi-bin/GetMatchingDocs.pl?L2/18-275... and https://www.unicode.org/cgi-bin/GetMatchingDocs.pl?L2/18-235 and https://www.unicode.org/cgi-bin/GetMatchingDocs.pl?L2/17-435 [1]: https://www.unicode.org/L2/L2018/18007.htm and https://www.unicode.org/L2/L2018/18272.htm and https://www.unicode.org/L2/L2018/18115.htm

>There is a proposal to add them to Unicode, but the process takes a while

Whereas if it was for adding some BS emojis, it would have been done in a week.

The process of proposing and adding an emoji to Unicode is slower and less easy than you seem to think it is.

And yet it happens like clockwork, with 200+ additions in the past several years and 100s more in the pipeline...


Except if you mean that some layman proposing a new emoji for addition to the Unicode standard is difficult -- but I'm talking about the big companies...

Mainly because Unicode is the industrial standard steered by major vendors (among others). There is even the dedicated Emoji Subcommittee (ESC) [1] to meet demands. It's obvious if you think about it.

[1] https://unicode.org/emoji/#Unicode_Emoji_Subcommittee

I also recommend checking out glyphdrawing.club for a contemporary web-based editor using inventive unscii fonts. It features an original font and some contributor-submitted ones! Really fun to play with.




This is beautiful and heart-warming. Thank you.

I use for terminal the classic IBM mainframe 3270 font [1], but I can replace that in a heartbeat with Unscii, which is more uniform and less OCR-y.

[1] https://github.com/rbanffy/3270font

It's a little confusing, but my read is that this is a generalized set of old font characters that were used for graphics (like code 437) plus a bunch of unicode symbols that are also useful for graphics. With the idea being you could make much more intricate art from this font set. I think the more interesting idea would be to use it to encode movies similar to how ASCII animations work - I wonder how compressed and good looking a movie might be using this font?

Nice approach! Unless I missed something you’d still be having very few colours, a limited resolution, comparatively poor performance to an OpenGL rendered DRM output (as in, also a command line environment), and if you simply use deflate or zstd for your compression you’ll have none of the streaming benefits of h264 or newer. I like your idea though.

I don't know if MPlayer can already take arbitrary fonts into account for playing movies back in the terminal, but it's open source, so it probably could be expanded in that way:


As some kind of a parallel project, I once wrote a library for transforming Unicode text to 8-bit character patterns. (The goal was a bit different, as it was meant to render about any text which might be found to a canvas implementing a 8-bit terminal emulation. The glyphs were mostly based on PET character sets.)


Here's a rendering sample: https://www.masswerk.at/char8/samples/char8js-sample-green.h...

The ansi art scene is still kicking it. http://blocktronics.org

The BBS ANSI scene was fun, but then we moved to Photoshop. Now it’s fun to work with Retina level graphics! And the tools now... I love Lightwave.

So it’s always been peculiar that some are attached to this particular style. Then I noticed a bit of it is quite explicit or just nasty, and the art style complements the restricted artistic method ANSI provides.

Also since I associate it with my youth, it just seems so immature. That’s obviously my personal bias.

and a very recent newcomer, https://mircart.org/ !

I did similar exploration of generating PETSCII from images recently on a Jupyter notebook: https://github.com/amb/Image-to-PETSCII/blob/master/Picture%...

No colors though. Might have to continue the project as the colors look really nice on the examples.

Wow, pelulamu.net still exists! I remember a friend talking about it about 20 years ago, i.e. when we were in school.

The font looks nice and is probably strictly an improvement over most terminal fonts of the same size. I just wish they had a 24 or even 32px size for the hidpi displays we have these days. I wonder if it's easy to run a linux console font in double size.

> Wow, pelulamu.net still exists!

Yeah, it’s a site maintained by viznut, a well-known Finnish demoscene figure and digital activist.

Wondering how it may be used along with http://caca.zoy.org/wiki/libcaca

Oh cool! I'm a Mudlet dev (https://github.com/Mudlet/Mudlet) - the font looks pretty nice. Not that many MUDs out there that make use of unicode graphics though.

Reminds me of: http://www.inp.nsk.su/~bolkhov/files/fonts/univga/index.html though this one is based on Fixedsys instead of VGA.

I used VGA16 for years, until LCDs, subpixel rendering, and Unicode programming fonts became ubiquitous.

> Mattel Aquarius:

Holy cow, thinking of George Plimpton and the computer I'll never have. This person did their homework.

z!OMG it supports Amiga ASCII and C= PETSCII!1!11!!, instead of being yet another PC-tin-bucket-MS-DOS-only font.

Now we can enjoy all that wonderful Amiga Type ASCII art in front of Skid Row cracked games!

Well done! Well done! (Loading Star Control.)

The author, viznut, is an olskool demoscener and specifically interested in extreme low-end and vintage computing.

What does "Unicode" mean in "Unicode font"? From what I can see it only has a handful (ascii?) characters.

Edit: after some testing it seems that "unscii-16-full" is the one (and only one?) that supports some Chinese characters, but it's unusable because glyphs stack on each other.. (screenshot: https://files.catbox.moe/262742.png )

It means that it supports characters outside the basic 127 ASCII or 256 ISO-8859-1 characters, like the Box Drawing[1] and Block Elements[2] characters defined in Unicode.

[1]: https://en.wikipedia.org/wiki/Box_Drawing [2]: https://en.wikipedia.org/wiki/Box_Drawing

But it's still very far away from "Unicode".

From my understanding you should at least have majority of Unicode glyphs to claim so.

[1] https://en.wikipedia.org/wiki/Open-source_Unicode_typefaces

I suspect that you are blaming the wrong font for that, because I suspect that the kanji/hanja/hanzi glyphs in question come from GNU Unifont. I myself overlay K16-1990 over GNU Unifont for better-appearing characters.

* http://jdebp.eu./Softwares/nosh/user-vt-screenshots.html#Uni...

Your link shows it should be able to display these Chinese characters correctly though. The TTF file I downloaded from this website cannot.

The image shows K16-1990 overlaid upon GNU Unifont, precisely because the former has better glyphs than the latter (had at the time). It does not show that Unscii should be able to do this at all.

It's a bit unclear why this exists. It seems to combine glyphs from 8-bit computers and place them in Unicode space even though the standard doesn't define many of them.

I guess the reason is to be able to combine them in some "art".

Perhaps those missing code points could be added by the Consortium based on this feedback.

> some ”art”

Eh, text art is a venerable art form as old as teletypes.

Older than that, even.

It goes back at least to typewriter days. The women in the typing pools of large companies would make these and post them on the pin boards.

Imagine the kind of abstract thinking it took to do ASCII art with no delete key!

If the terms "PETSCII", "Amiga ASCII" and "ANSI art" do not mean anything to you, then this font and what can be rendered with it will be completely meaningless to you and you will be confused like you are. You had to have experienced it to appreciate it, which you do not apoear to have. A shame, really, since you missed out on a lot of cool art.

I think for many people this here doesn't mean anything. I'm having a really hard time understanding what is going on in the comments and on the post itself and I've just settled with "it's something about ascii art on terminals" and that's it. Probably has uses. But don't dismiss the confusion on lots of people since this appears to be target at older folks.

One can render ASCII art or even "poor man's graphics" in any text editor regardless of their age. Yes it's dated, but if one is working anywhere near physical equipmet like terminal concentrators hooked up to servers' serial ports, one quickly learns to appreciate graphic approximations of windows with just ASCII characters.

The rest like Amiga ASCII art from Skid Row and PaRaDoX and the like... you missed out. It was a glorious childhood. It's hard to relate just how great it was owning a Commodore Amiga computer. The ASCII art in front of cracked games from the group who cracked them belong with that experience, and back in the day, it was mind-blowing. This font is a modern implementation of characters enabling that kind of art again, on modern systems, in programs like OpenOffice for example.

And the target is the cracking / demo scene, irrespective of age.

I have an Amiga and C64, so I'm very familiar with the art form. Again, I don't understand the value of combining them in one font. I can understand implementing each of the respective fonts as modern fonts, but not this.

With this font, you can use say OpenOffice to create the same kind of art while not needing the original systems and tools.

Well, I know it very well. I just don't understand why the ugly glyphs need to be combined into one font.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact