[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Font Rendering: Multiple FT_Faces and baselines
From: |
Werner LEMBERG |
Subject: |
Re: Font Rendering: Multiple FT_Faces and baselines |
Date: |
Thu, 20 Jul 2023 05:39:15 +0000 (UTC) |
> I'm aware that when drawing text, all glyphs should be aligned on a
> single baseline. The example I've given does not do this; it aligns
> the text on different font's baseline, causing the inconsistent
> look.
This is what I told you in the very beginning: Your logic to position
the glyphs vertically is flawed; you actually don't align them
correctly – somewhere, you are not using the correct vertical offsets.
I suggest that you check the FreeType demo programs for some guidance.
https://gitlab.freedesktop.org/freetype/freetype-demos
> When I'm talking about "aligning the baselines", I'm referring to
> choosing a suitable baseline from different fonts. I use the term
> "baseline" loosely as when rendering text from top to bottom, the
> ascent value is used.
Why not position the baseline for all fonts at position y=0?
> Initially, I plan to calculate a global baseline from all the fonts
> by averaging their respective baselines. Another way is to pick the
> "lowest" baseline (as in the highest ascent value) as the global
> baseline. I'm unsure of what strategy to use, so I'm curious about
> what approach do other applications use to solve this problem.
If I understand you correctly, we have an XY problem here. The real
issue seems not to be the alignment on a baseline but rather how to
compute the global bounding box of a text string that comprises
different fonts. The answer to that was given repeatedly on the
mailing list: If you need a bounding box correct to the pixel and you
do hinting, you have to make FreeType compute all glyphs, store them
somewhere, *then* walk over all individual bounding boxes and take the
maximum dimensions to get the global one. Finally, you can render the
glyphs with the correct offsets.
Werner