37 comments

[ 26.9 ms ] story [ 1334 ms ] thread
I had to uninstall unifont to get nice looking CJK fonts in Firefox; somehow the font-fallback for my font was picking unifont over all of the other fonts installed...
> A user has asked if GNU Unifont can be used with commercial (non-free) software.

One can be forgiven for thinking the author means to imply that all commercial software is non-free. It is a further disappointment that anyone has to ask.

Open source was right to get rid of the intentional and unintentionally anti-commercial motifs that only got in the way of paid open source development.

There's also the implication that all non-commercial software is free. There's plenty of non-free (as in libre) software released by hobbyists.
The problem with Unifont is that is was never designed to actually support real text, it just has glyph support. So if you need "it can do every language I might want, while looking pretty good" you're far better off with the (much newer) family of NoTo fonts, which aren't just free to use, but explicitly use the modern SIL Open Font License.
The only problem with the Noto fonts (installed in Ubuntu for example by default) is that now you have to scroll through hundreds of useless squiggle fonts in your font picker.
That's not a problem, that's a learning opportunity.
> which aren't just free to use, but explicitly use the modern SIL Open Font License.

Unifont is also dual-licensed under GPLv2/SIL OFL.

We use GNU Unifont in Solvespace for the text window/property browser. It's built right into the executable. This turned out to be amazingly useful. Some people have CJK stuff in their designs and it "just works" on all platforms. I was also looking into hole annotations in CAD and was pleased to see the symbols for counter-bore and counter-sink are both already there in unifont.

You can see unifont in the experimental web version here: https://cad.apps.dgramop.xyz/

That web version is very neat. Solvespace is by far my favorite cad, it ls hard to explain exactly why because it really is quite limited compared to other cad packages, but I think it is mainly because of the fluidity and shear joy of operation while expressing constraints.

One of these days I need to dive into the code and figure out a replacement for the modal "can not create constraint" dialogs as those are the worst part of the whole experience.

This is awesome!

(Just so you know, RTL doesn't work. حبيبي comes out as ي ب ي ب ح. See https://imgur.com/a/HiXxqZ2 )

(comment deleted)
(comment deleted)
I'm curious, have you had this support checked by a native speaker of Chinese/Japanese/Korean? Due to Han unification (Unicode's biggest mistake) many code points require different glyphs depending on the target language, but Unifont only has a single glyph per code point--it's impossible for the one glyph to be correct in all CJK languages. It seems more likely that this "kinda works" for CJK but renders incorrect glyphs some of the time.
You know, when I see GNU, I don't necessarily think it's the best software in all dimensions, but it's almost the best in terms of respecting its users.
i use this font system wide, forced as the only font in firefox, with web or downloadable fonts disabled. i also have my some of my own characters in csur, the conscript unicode registry, that is mapped to u+e000 thru u+f8ff so the unicode codepoints used by random webpages for various glyphs show up as my own. qt is a pain to use sometimes with unifont only but iirc QT_FONT_DPI=128 environment variable fixes that. i just wish i could get unifont only to work in games like rimworld.
how can you? i just installed it and i had to bring HN to 200% zoom... the rest of my system (XFCE) feels somewhat OK with it
I like this better than the Google Sans Flex that made the front page today.
Been a proud user for a while at jarbus.net :)
Shouldn't the first sentence on that website describe what GNU Unifont actually is? I guess it's a single copyleft font designed to have coverage of all (or nearly all?) unicode code points?
>Shouldn't the first sentence on that website describe what GNU Unifont actually is?

Tons of these open source projects have the same issue.

it is so nice of them to explain the fact using the GNU Unifont in commercial non-free softwares clarifying when it is required to be published to public domain.
Really like the idea of a font with extremely broad glyph support, sadly it looks really blurry on any custom size, like if I'd try to use this font in my IDE but would want to make it smaller so I can fit more text on the screen.

For that particular use case (tbh mostly aesthetics than glyph support), I also found the TTF version of Terminus to be pleasant: https://files.ax86.net/terminus-ttf/ though JetBrains Mono is good enough for me to not venture far away from defaults, albeit maybe Liberation Mono / Cousine was the peak of readability at somewhat small sizes out of any font out there for me.

Wonder if the Potrace approach of Terminus TTF version would work for Unifont. I imagine that Unifont is a pretty good default when doing shipping labels and for such utilitarian use cases.

For others who might be as confused as me:

GNU Unifont is a bitmap font. It provides a fixed glyph for every code point in the BMP. It also covers additional code points in other planes.

I am guessing this is useful for writing editors that can edit Unicode text without knowing anything about various languages and their conventions. Authors who try to use this font to compose documents in (say) devanagari will have to learn the Unicode characters "in the raw", because I don't see a shaper for devanagari, so they won't get feedback that looks like real text.

If anyone can explain this better, please do!

Does that mean there is a separate file for each point size?

I'm realising I know very little about fonts.

and BMP in this context is not BitMap, but Unicode Basic Multilingual Plane (BMP) of the first 65,536 code points of the Unicode
Please don’t use this unless the purpose is specifically to have a retro effect where you eschew modern fonts for aesthetic purposes. Because for any other purpose this just looks terrible, even for English text. Scripts requiring special shaping won’t be supported well. I don’t think it even supports different shapes for the same CJK character according to the language.
>unless the purpose is specifically to have a retro effect where you eschew modern fonts for aesthetic purposes

There are better fonts for this too e.g. Fusion Pixel Font for CJK: https://github.com/TakWolf/fusion-pixel-font

(yes the readme is in chinese, use google translate or something)

i think i saw a good pixel font that supported arabic too once but of course i cant find it now..

It also looks beautiful when printed out - I made it into a spiral which hangs on my wall.

https://shkspr.mobi/blog/2022/07/the-mostly-complete-unicode...

That's awesome, what size did you print it?

Are the random sparse Chinese characters floating around the main spiral a natural part of Unicode, or did you put them there for effect? I like how the whole thing looks like a galaxy and those characters like background space debris.

I also like how emoji fall neatly around the outer rim. I had fun finding the Earth emoji.

your blog is really cool
Why does every GNU web page look like 1996? This actually matters. Even stripping the page down and removing any styling would make it look more trustworthy less like an abandoned project.

Perhaps a GNU style could be something we could help fund?

I wish modern websites had this much information density.
> Unifont only stores one glyph per printable Unicode code point. This means that complex scripts with special forms for letter combinations including consonant combinations and floating vowel marks such as with Indic scripts (Devanagari, Bengali, Tamil, etc.) or letters that change shape depending upon their position in a word (Indic and Arabic scripts) will not render well in Unifont. In those cases, Unifont is only suitable as a font of last resort. Users wishing to properly render such complex scripts should use full OpenType fonts that faithfully display such alternate forms.

An important caveat, that while this is potentially a useful fallback font to at least something for unknown glyphs, without any sort of combining/shaping, it's not going to usefully render a whole bunch of languages (i.e. languages like Arabic will be a disaster)

Often I've seen font websites have a sort of "font hello world" preview image, and adding something like that here would be great. Apparently they're called "type specimens".