class
HarfBuzzFontHarfBuzz font plugin.
Improves FreeTypeFont with text shaping capabilities provided by the HarfBuzz library.
This plugin provides the TrueTypeFont
and OpenTypeFont
plugins.
Usage
This plugin depends on the Text and HarfBuzz libraries and the FreeTypeFont plugin. It is built if MAGNUM_WITH_HARFBUZZFONT
is enabled when building Magnum Plugins. To use as a dynamic plugin, load "HarfBuzzFont"
via Corrade::
Additionally, if you're using Magnum as a CMake subproject, bundle the magnum-plugins repository and do the following. Using HarfBuzz itself as a CMake subproject isn't tested at the moment, so you need to provide it as a system dependency and point CMAKE_PREFIX_PATH
to its installation dir if necessary.
set(MAGNUM_WITH_HARFBUZZFONT ON CACHE BOOL "" FORCE) add_subdirectory(magnum-plugins EXCLUDE_FROM_ALL) # So the dynamically loaded plugin gets built implicitly add_dependencies(your-app MagnumPlugins::HarfBuzzFont)
To use as a static plugin or as a dependency of another plugin with CMake, request the HarfBuzzFont
component of the MagnumPlugins
package and link to the MagnumPlugins::HarfBuzzFont
target:
find_package(MagnumPlugins REQUIRED HarfBuzzFont) # ... target_link_libraries(your-app PRIVATE MagnumPlugins::HarfBuzzFont)
See Downloading and building plugins, Plugin usage with CMake, Loading and using plugins amd File format support for more information.
Behavior and limitations
This plugin implements AbstractShaper::false
if given script value is not supported. See documentation of the hb_
If AbstractShaper::
Reusing an AbstractShaper instance that has the script, language or direction left unspecified will attempt to guess these properties anew for every new shaped text. On the other hand, if a concrete script, language or direction value is set, it stays used for subsequent shaped text.
Typographic features
HarfBuzz enables the following features by default:
- Feature::
AboveBaseForms - Feature::
BelowBaseForms - Feature::
GlyphCompositionDecomposition - Feature::
LocalizedForms - Feature::
MarkPositioning - Feature::
MarkToMarkPositioning - Feature::
RequiredLigatures
Additionally, for ShapeDirection::
- Feature::
ContextualAlternates - Feature::
ContextualLigatures - Feature::
CursivePositioning - Feature::
Distances - Feature::
Kerning - Feature::
StandardLigatures - Feature::
RequiredContextualAlternates
Additionally, when HarfBuzz encounters a fraction slash (⁄
, U+2044), it looks backward and forward for decimal digits, enables Feature::
For ShapeDirection::
For Script::
Base classes
- class FreeTypeFont
- FreeType font plugin.
Public static functions
- static void initialize()
- Initialize the HarfBuzz library.
- static void finalize()
- Finalize the HarfBuzz library.
Constructors, destructors, conversion operators
- HarfBuzzFont() deprecated in Git master explicit
- Default constructor.
-
HarfBuzzFont(PluginManager::
AbstractManager& manager, const Containers:: StringView& plugin) explicit - Plugin manager constructor.
Function documentation
static void Magnum:: Text:: HarfBuzzFont:: initialize()
Initialize the HarfBuzz library.
Empty in order to avoid FreeTypeFont::
static void Magnum:: Text:: HarfBuzzFont:: finalize()
Finalize the HarfBuzz library.
Empty in order to avoid FreeTypeFont::
Magnum:: Text:: HarfBuzzFont:: HarfBuzzFont() explicit
Default constructor.