[GSOC 2024] Complex Font Rendering

Hello Haiku folks :slight_smile:
I am Aazam, a third year undergrad majoring in AI.

I was looking into the Complex font rendering in app_server idea for GSoC this year and found that it’s been listed subsequently for many years as an idea.

Is there no progress with it? I did find that there was a discussion about it in [haiku-development] Re: Complex font rendering in Haiku - haiku-development - FreeLists
and a demo application was also built GitHub - deepango/DemoHarfbuzzApp: A demo application for Haiku that uses Harfbuzz and Freetype to render text.

Is it a feasible idea to take up? I am going through the Interface Kit and Harfbuzz at the moment.


Why not? It will be a great addition to Haiku and will help a significant portion of the world to use it.

1 Like

That’s true, I’ll dig more into it. My concern was it why hadn’t been picked in the previous years?

I guess it’s a challenging subject that requires a lot of effort, interest about the particular subject and familiarisation with it; compared to the other ideas in the list. It’s great that you are interested in it.


I think that rendering them is only the first step but, after you have to use them. That means writing in right direction and that’s not easy. You may have to use different input methods. You may also have to adapt few things so they work correctly, think about places where you have type ahead filtering, for example.

1 Like

I think the hesitation for this project is a combination of working within the app_server (Haiku’s equivalent to X11), along with user-level GUI libraries (such as the Interface Kit as you mentioned). Beyond that, I think Haiku is certainly more of a lesser-known project, so I’m sure that interested candidates may simply not being aware of what sort of project Haiku is. :slight_smile:

I would certainly encourage you to look into it though! It’s a great chance to learn about front-end related programming too.


It is hard to say why GSoC contributors (and contributors in general) decioe to work on one or another thing. In this specific case, I think one reason is, the project is much easier if you can read one of the right to left languages, and know how it is usually handled in other systems. This reduces the number of candidates.

There are some technical challenges, of course, but I don’t think there are any “death traps” that would make this project significantly more complicated than others.


That is a fair reason, there are only about 12-15 languages written right to left.

I think one of the main challenges is handling the complex rules for different text, for example in Arabic there are letters that are rendered different when joined in a word and there are some letters which cannot be joined if they appear first.

As far as the scope of the project is to be considered, how many languages do we intend to provide the support for? I am fluent in Arabic so my first priority would definitely be to add font rendering for it.

That is true but I do believe GSoC does give a good marketing to different OSS projects. Although Haiku being an OS might not make it a priority for many new contributors afaik.

Still I look forward to picking it up for this summer :slight_smile:

1 Like

Thanks, definitely plan to work it out thorougly :smiley:

That is a good goal firstly, if that works and harfbuzz is integrated adding another language likely won‘t be as hard. Harfbuzz is supposed to do the heavy lifting anyway.

I‘d focus on arabic right now, it is slightly more difficult because no support leads to no existing translations mostly, so you may have to translate stuff to test it aswell. : )


A few years ago Microsoft published some articles when they reworked their render-engine.
These should contain some hints about mor obscure problems.
I remember that they wrote about things like cartouches for rendering hieroglyphs.

1 Like

This article will help you understand app_server:


let’s get one done, I think it will have enough challenges already. Once it is done, probably other languages can be added more easily since the infrastructure will be in place.