Proposed Font Changes

They shouldn’t need to. I should be able to change the letter-spacing just for the types of characters that are not altered by shaping.

For languages with complex layout changing their spacing can completely screw them up, but again I should be able to avoid doing that. Here is such a sequence in Devanagari:

Devanagari_ddhrya

And here is a patch that fixes our hinting, makes “Slight” the default, and also allows users to choose their preferred intra-character spacing:

D12999 UI Text: Float Positioning & Fix Hinting

2 Likes

Patch that uses floats for all point sizes, rather than integers. Allows much finer control over sizing.

D8960 UI: Use Floats for Font Size Points

3 Likes

I don’t think it’s the ideal font for Blender UI but it’s pretty close. With some adjustments it might be pretty close to the current font.

I am for the idea of changing to Roboto. Mainly because it’ll remove the maintanace load from developers. Maintaining a font is not an easy task and needs quite and expertise in the field. It’s much better to use already proven and maintained solution.

2 Likes

Made an illustration of what “Slight” hinting is supposed to do when done correctly, only aligning features vertically to the bitmap grid. So it removes a lot of blurriness with very little change to letter shapes, unlike Full hinting which moves features in both directions.

SlightHinting

From ⚙ D12999 BLF: Float Positioning & Fix Hinting

15 Likes

There is now a task to help keep track of these proposed changes:

https://developer.blender.org/T94030

5 Likes

Kerning for 3D Text objects is however still no present… Here Blender vs Inkscape, using the same font Inter-Light, the “T” and “e” should be closer together with Inter its kerning tables:

Inkscape:

Blender 3.5.0 Alpha:

1 Like

Using Inter as the example is complicated…

Blender currently only supports the “old style” type of kerning, which is kerning pair information that is stored in the font’s “kern” table. The new and preferred method of kerning is to store that data in the “gpos” table. This new method is better because the kerning can be specified in more complex ways than just about the character order.

Inter though supports very complex kerning. In fact in tens of thousands of circumstances, more than could be contained in a “kern” table. So if you were to open it up in FontForge, for example, you would see that it has kerning, but not “legacy” kerning.

In order to do the new kerning using “gpos” it is a more complex matter than just doing a simple adjustment based on a simple table. Instead there are complex rules to follow. This requires a “text shaper”, usually Harfbuzz. Gimp uses Harfbuzz, mostly to support complex languages, but it also does that gpos kerning for it.

Therefore Blender does kerning, but only the simple kind, and therefore not with Inter. We will get to complex shaping and gpos kerning with this: ⚙ D15687 WIP: Bidirectional Text and Complex Shaping

6 Likes

@Harleya I subscribed to ⚙ D15687 WIP: Bidirectional Text and Complex Shaping right away! Would it be realistic to think it will not make it into Blender 3.5? The one after that 3.6 or 4.0…?

Definitely not in 3.5. The new dependencies aren’t even on the Buildbot yet (last time I checked) so I can’t even test builds on other platforms yet.

It will be a difficult review process just because there are not many of us familiar with this area of code. In an ideal world it would just get included as an experimental feature that can turned on during the alpha stage of 3.6 and then perhaps non-experimental in 3.7

Note the above patch only allows complex and bidirectional text within the Blender UI, so allowing better support for languages that need that. After that is in I will turn attention to complex shaping of 3D Text Object and text nodes. But that will be simpler.

3 Likes

so from 4.0 - 4.1 can we have 3d complexe shaping like arabic text …?

I hope so. First I need to get the display of Arabic correctly in the interface and you can enter Arabic in natural order for things like object names, etc.

MixedSelect

I am hoping at some later time to also (maybe) add support for UI mirroring so you would see parts of Blender nicely right-aligned instead of left.

If things go well, maybe tackle complex shaping of Arabic text in 3D Text objects and Curve nodes after that.

4 Likes

@Harleya Patience is a virtue, but I can’t wait! :wink: