Skip to content

Conversation

@mcendu
Copy link
Contributor

@mcendu mcendu commented Nov 27, 2025

This pull request adds basic support for directly manipulating font variations and OpenType features.

This is a continuation of #506. While the previous attempt presented an API that consumes strings, the API in this PR instead consumes arrays of tag-value pairs, to make the implementation less complicated. The font variation can now be set even when SDL_ttf is not built with HarfBuzz support.

The previous attempt has limited support for applying OpenType features to only specific parts of text, which is no longer present in this PR.

Fixes: #503
Closes: #506

mcendu and others added 3 commits November 27, 2025 16:21
This commit adds the functionality to directly set font variation
settings.

The work directly builds upon a prior attempt from libsdl-org#506.  Instead of
parsing a single string, the API is changed to expect an array of
variation settings, in the same format expected by the HarfBuzz function
hb_font_set_variations(). This allows the font variation to be set even
when HarfBuzz is not used.

Link: libsdl-org#503
Link: libsdl-org#506
Co-authored-by: Martin Eriksson <woodauncher+git@gmail.com>
Co-authored-by: Robert Sundling <11357412+RobertSundling@users.noreply.github.com>
Signed-off-by: Du Yijie <nathandu@outlook.com>
This commit adds the functionality to directly set font features.

The work directly builds upon a prior attempt from libsdl-org#506.  Instead of
parsing a single string, the API is changed to expect an array of
features to apply globally, similar to the font variation support
implementation.  The option to apply a feature to a specific part
of every text using the font is no longer present.

OpenType features can be applied not only to everything using the font,
but also to only a part of some text.  This commit does not address
this.

Link: libsdl-org#503
Link: libsdl-org#506
Co-authored-by: Martin Eriksson <woodauncher+git@gmail.com>
Co-authored-by: Robert Sundling <11357412+RobertSundling@users.noreply.github.com>
Signed-off-by: Du Yijie <nathandu@outlook.com>
This commit adds a helper macro for constructing tags that can be used
with TTF_SetFontScript(), for use cases where calling TTF_StringToTag()
is undesired or impossible.

The macro is identical in use to FT_MAKE_TAG in FreeType and HB_TAG in
HarfBuzz.

Signed-off-by: Du Yijie <nathandu@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature request] Setting font features and font variations.

1 participant