Remix.run Logo
ripe a day ago

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!

eviks a day ago | parent | next [-]

and BMP in this context is not BitMap, but Unicode Basic Multilingual Plane (BMP) of the first 65,536 code points of the Unicode

Sharlin 19 hours ago | parent [-]

Amusingly, here it is also BitMap [1]. Why they use an obsolete noncompressed proprietary format instead of PNG I don't know.

Edit: looks like it's because BMP supports 1-bit packed pixels and ~~PNG doesn't~~ (Edit to edit: this is wrong). The file sizes are almost identical; the 8x difference in the number of bits is exactly balanced by PNG compression! On the other hand, PBM [2] would've been a properly Unixy format, and trivial to decode, but I guess "the browser knows how to render it" is a pretty good argument for BMP. macOS Preview, BTW, supports all the NetPBM formats, which I did not expect.

[1] eg. https://unifoundry.com/pub/unifont/unifont-17.0.03/unifont-1...

[2] https://en.wikipedia.org/wiki/Netpbm

eviks 18 hours ago | parent | next [-]

Maybe they set everything up before png was popular and never changed the workflow since then (or didn't care about the website to adjust anything)? After all, the PNG is only about 2 years younger than the font

Sharlin 18 hours ago | parent [-]

That's plausible. Or maybe they just liked the BMP vs. BMP coincidence.

sltkr 17 hours ago | parent | prev [-]

> Edit: looks like it's because BMP supports 1-bit packed pixels and PNG doesn't. The file sizes are almost identical

That's nonsense, PNG supports 1-bit pixels just fine, and the resulting file is a lot smaller (when using ImageMagick):

    $ file unifont-17.0.03.bmp 
    unifont-17.0.03.bmp: PC bitmap, Windows 3.x format, 4128 x 4160 x 1, image size 2146560, resolution 4724 x 4724 px/m, 2 important colors, cbSize 2146622, bits offset 62
    $ magick unifont-17.0.03.bmp unifont-17.0.03.png
    $ file unifont-17.0.03.png 
    unifont-17.0.03.png: PNG image data, 4128 x 4160, 1-bit grayscale, non-interlaced
    $ wc -c unifont-17.0.03.*
    2146622 unifont-17.0.03.bmp
     878350 unifont-17.0.03.png
    3024972 total
Sharlin 17 hours ago | parent [-]

Thanks! I definitely should've double-checked. Apparently it was just the image viewer that didn't bother converting the 1-bit BMP to 1-bit PNG.

kristianp a day ago | parent | prev [-]

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

I'm realising I know very little about fonts.

Kwpolska 21 hours ago | parent [-]

Nah, there’s just one size in this case (16x16).