Bitmap fonts?

Does Haiku support bitmap fonts?

I know Freetype2 does support bitmap fonts, but in the context of working on a CR I did some experiments and it doesn’t look like bitmap fonts work in CharacterMap, StyledEdit, WonderBrush, ArtPaint, etc. They show up in font menus but don’t render at all.

I found a super old thread that briefly discusses it with @darkwyrm but wondered if it has ever worked, or if it broke somewhere along the way, or if anyone even cares in 2022 about bitmap fonts? I had a somewhat hard time even finding one to download honestly.

Most bitmap fonts doesnt support international characters, so while in some(!) cases they look great on /nixpr0n screenshots they dont have any practical use for non-english speakers, from my pov.

1 Like

Maybe I’m losing my mind. Now bitmap fonts work fine in CharacterMap. I swear they didn’t a couple of days ago, and the only change to anything font related is my own. :man_shrugging:

Hi,

Here you are —> https://cgit.haiku-os.org/haiku/commit/?id=094079b8c5be91e03fb1edc6d1aecd9849bf4f2b

Is it your patch ?.. is that what mentioned by you as only you were changed to fonts lately ?

If so, wasn’t your intention to help bitmap fonts this way ? :))

I think bitmap fonts may work if you set the exact size of the font as the size to be rendered, but in no other circumstances, maybe?

bitmap fonts may work if you set the exact size of the font as the size to be rendered

Exactly.



These are from a bitmap-only font that only provides size 109. It has glyphs for numbers but not letters, so the latter are drawn with the fallback font. Same result with and without dsizzle’s change, as he surely expected.

I create this font on my amiga in the past. Is there a way to create a font of it, using haiku?

1 Like

Ahoy @lelldorin,

Is this the whole set of characters you made for that font type ? as this way you had not supported your native language (german) even but anglo-saxon or latin writing only.

Then I would join to @extrowerk and I would say the same as just he did above

Of course you have right to use personally within Haiku, but if someone would like to use it afterwards they gettin’ liked as they seen somewhere in your works … they couldn’t use it - only for english or latin content :slight_smile: … but not for their native language.
And of course it’s just my thinking regarding fonts - I am not against this font type and your question – let me be crystal clear . :wink:

Amiga time was without languages beside english

Correction: Amiga used ISO-Latin1, not just ASCII.

Haiku has a fallback system for fonts, you can use specific fonts if you want and make them fallback fine.

@lelldorin We don’t support color fonts, it could be made into a ttf but you would loose the red iirc : )

Yes, this is what I was thinking - perhaps we should actually restrict the size of bitmap fonts to only ones that will actually render. The bounding box code sets the bounding box this way, but nothing uses that code yet since it wasn’t implemented. I was thinking maybe it should do that same size select when SetSize is called.

Anyway this thread was really because I was trying to test my change and couldn’t get bitmap fonts to render. Thanks!

I don’t know of any way within Haiku to turn a bitmap into a font, but there are online bitmap font generators, such as https://snowb.org/ which makes .fnt files.

If you know C, I can link you to the source of the AROS version of Diskfont.library but it should just be bitplane data in a custom IFF format along with some metadata for the horizontal offset and left/right side widths of each character. There should be an entry in the IFF form and chunk registry for the format.

Edit

It’s not IFF but the loader is in Diskfont.library as OpenDiskFont(). Once loaded, an Amiga font is processed by OpenFont().

I have no expierience in C and no AMIGA around anymore. The Image are taken from my AMIGA for many years and convertet from IFF to other format.

That means you’re missing the metadata. You’ll have to enter the character widths manually somehow.