Magnum::Text namespace

Text rendering.

Font texture creation and text layout.

This library is built if MAGNUM_WITH_TEXT is enabled when building Magnum. To use this library with CMake, request the Text component of the Magnum package and link to the Magnum::Text target:

find_package(Magnum REQUIRED Text)

# ...
target_link_libraries(your-app PRIVATE Magnum::Text)

Additional plugins and utilities are built separately. See particular *Font and *FontConverter class documentation, the magnum-fontconverter utility documentation, Downloading and building, Downloading and building plugins, Usage with CMake, Plugin usage with CMake and Loading and using plugins for more information.

Classes

class AbstractFont
Base for font plugins.
class AbstractFontConverter
Base for font converter plugins.
class AbstractGlyphCache new in 2019.10
Base for glyph caches.
class AbstractLayouter deprecated in Git master
Base for text layouters.
class AbstractRenderer
Base for text renderers.
class AbstractShaper new in Git master
Base for text shapers.
class DistanceFieldGlyphCache
Glyph cache with distance field rendering.
class FeatureRange new in Git master
OpenType feature for a text range.
class FreeTypeFont
FreeType font plugin.
class GlyphCache
Glyph cache.
class HarfBuzzFont
HarfBuzz font plugin.
class MagnumFont
Simple bitmap font plugin.
class MagnumFontConverter
MagnumFont converter plugin.
template<UnsignedInt dimensions>
class Renderer
Text renderer.
class StbTrueTypeFont
TrueType font plugin using stb_truetype.

Enums

enum class FontFeature: UnsignedByte { OpenData = 1 << 0, FileCallback = 1 << 1 new in 2019.10, PreparedGlyphCache = 1 << 2 } new in 2020.06
Features supported by a font implementation.
enum class FontConverterFeature: UnsignedByte { ExportFont = 1 << 0, ExportGlyphCache = 1 << 1, ImportGlyphCache = 1 << 2, ConvertData = 1 << 4, MultiFile = 1 << 5 } new in 2020.06
Features supported by a font converter.
enum class GlyphCacheFeature: UnsignedByte { ImageProcessing = 1 << 0 new in Git master, ProcessedImageDownload = ImageProcessing|(1 << 1) new in Git master, ImageDownload = ProcessedImageDownload deprecated in Git master } new in 2019.10
Features supported by a particular glyph cache implementation.
enum class Alignment: UnsignedByte { LineLeft = Implementation::AlignmentLine|Implementation::AlignmentLeft, LineLeftGlyphBounds = LineLeft|Implementation::AlignmentGlyphBounds new in Git master, LineCenter = Implementation::AlignmentLine|Implementation::AlignmentCenter, LineCenterIntegral = LineCenter|Implementation::AlignmentIntegral, LineCenterGlyphBounds = LineCenter|Implementation::AlignmentGlyphBounds new in Git master, LineCenterGlyphBoundsIntegral = LineCenterGlyphBounds|Implementation::AlignmentIntegral new in Git master, LineRight = Implementation::AlignmentLine|Implementation::AlignmentRight, LineRightGlyphBounds = LineRight|Implementation::AlignmentGlyphBounds new in Git master, LineStart = Implementation::AlignmentLine|Implementation::AlignmentStart new in Git master, LineStartGlyphBounds = LineStart|Implementation::AlignmentGlyphBounds new in Git master, LineEnd = Implementation::AlignmentLine|Implementation::AlignmentEnd new in Git master, LineEndGlyphBounds = LineEnd|Implementation::AlignmentGlyphBounds new in Git master, BottomLeft = Implementation::AlignmentBottom|Implementation::AlignmentLeft new in Git master, BottomLeftGlyphBounds = BottomLeft|Implementation::AlignmentGlyphBounds new in Git master, BottomCenter = Implementation::AlignmentBottom|Implementation::AlignmentCenter new in Git master, BottomCenterIntegral = BottomCenter|Implementation::AlignmentIntegral new in Git master, BottomCenterGlyphBounds = BottomCenter|Implementation::AlignmentGlyphBounds new in Git master, BottomCenterGlyphBoundsIntegral = BottomCenterGlyphBounds|Implementation::AlignmentIntegral new in Git master, BottomRight = Implementation::AlignmentBottom|Implementation::AlignmentRight new in Git master, BottomRightGlyphBounds = BottomRight|Implementation::AlignmentGlyphBounds new in Git master, BottomStart = Implementation::AlignmentBottom|Implementation::AlignmentStart new in Git master, BottomStartGlyphBounds = BottomStart|Implementation::AlignmentGlyphBounds new in Git master, BottomEnd = Implementation::AlignmentBottom|Implementation::AlignmentEnd new in Git master, BottomEndGlyphBounds = BottomEnd|Implementation::AlignmentGlyphBounds new in Git master, MiddleLeft = Implementation::AlignmentMiddle|Implementation::AlignmentLeft, MiddleLeftIntegral = MiddleLeft|Implementation::AlignmentIntegral, MiddleLeftGlyphBounds = MiddleLeft|Implementation::AlignmentGlyphBounds new in Git master, MiddleLeftGlyphBoundsIntegral = MiddleLeftGlyphBounds|Implementation::AlignmentIntegral new in Git master, MiddleCenter = Implementation::AlignmentMiddle|Implementation::AlignmentCenter, MiddleCenterIntegral = MiddleCenter|Implementation::AlignmentIntegral, MiddleCenterGlyphBounds = MiddleCenter|Implementation::AlignmentGlyphBounds new in Git master, MiddleCenterGlyphBoundsIntegral = MiddleCenterGlyphBounds|Implementation::AlignmentIntegral new in Git master, MiddleRight = Implementation::AlignmentMiddle|Implementation::AlignmentRight, MiddleRightIntegral = MiddleRight|Implementation::AlignmentIntegral, MiddleRightGlyphBounds = MiddleRight|Implementation::AlignmentGlyphBounds new in Git master, MiddleRightGlyphBoundsIntegral = MiddleRightGlyphBounds|Implementation::AlignmentIntegral new in Git master, MiddleStart = Implementation::AlignmentMiddle|Implementation::AlignmentStart new in Git master, MiddleStartIntegral = MiddleStart|Implementation::AlignmentIntegral new in Git master, MiddleStartGlyphBounds = MiddleStart|Implementation::AlignmentGlyphBounds new in Git master, MiddleStartGlyphBoundsIntegral = MiddleStartGlyphBounds|Implementation::AlignmentIntegral new in Git master, MiddleEnd = Implementation::AlignmentMiddle|Implementation::AlignmentEnd new in Git master, MiddleEndIntegral = MiddleEnd|Implementation::AlignmentIntegral new in Git master, MiddleEndGlyphBounds = MiddleEnd|Implementation::AlignmentGlyphBounds new in Git master, MiddleEndGlyphBoundsIntegral = MiddleEndGlyphBounds|Implementation::AlignmentIntegral new in Git master, TopLeft = Implementation::AlignmentTop|Implementation::AlignmentLeft, TopLeftGlyphBounds = TopLeft|Implementation::AlignmentGlyphBounds new in Git master, TopCenter = Implementation::AlignmentTop|Implementation::AlignmentCenter, TopCenterIntegral = TopCenter|Implementation::AlignmentIntegral new in Git master, TopCenterGlyphBounds = TopCenter|Implementation::AlignmentGlyphBounds new in Git master, TopCenterGlyphBoundsIntegral = TopCenterGlyphBounds|Implementation::AlignmentIntegral new in Git master, TopRight = Implementation::AlignmentTop|Implementation::AlignmentRight, TopRightGlyphBounds = TopRight|Implementation::AlignmentGlyphBounds new in Git master, TopStart = Implementation::AlignmentTop|Implementation::AlignmentStart new in Git master, TopStartGlyphBounds = TopStart|Implementation::AlignmentGlyphBounds new in Git master, TopEnd = Implementation::AlignmentTop|Implementation::AlignmentEnd new in Git master, TopEndGlyphBounds = TopEnd|Implementation::AlignmentGlyphBounds new in Git master }
Text rendering alignment.
enum class ShapeDirection: UnsignedByte { Unspecified = 0, LeftToRight = 1, RightToLeft, TopToBottom, BottomToTop } new in Git master
Direction a text is shaped in.
enum class LayoutDirection: UnsignedByte { Unspecified = 0, HorizontalTopToBottom = 1, VerticalLeftToRight, VerticalRightToLeft } new in Git master
Direction a text is laid out in.
enum class Feature: UnsignedInt { AccessAllAlternates = Utility::Endianness::fourCC('a', 'a', 'l', 't'), AboveBaseForms = Utility::Endianness::fourCC('a', 'b', 'v', 'f'), AboveBaseMarkPositioning = Utility::Endianness::fourCC('a', 'b', 'v', 'm'), AboveBaseSubstitutions = Utility::Endianness::fourCC('a', 'b', 'v', 's'), AlternativeFractions = Utility::Endianness::fourCC('a', 'f', 'r', 'c'), Akhand = Utility::Endianness::fourCC('a', 'k', 'h', 'n'), KerningForAlternateProportionalWidths = Utility::Endianness::fourCC('a', 'p', 'k', 'n'), BelowBaseForms = Utility::Endianness::fourCC('b', 'l', 'w', 'f'), BelowBaseMarkPositioning = Utility::Endianness::fourCC('b', 'l', 'w', 'm'), BelowBaseSubstitutions = Utility::Endianness::fourCC('b', 'l', 'w', 's'), ContextualAlternates = Utility::Endianness::fourCC('c', 'a', 'l', 't'), CaseSensitiveForms = Utility::Endianness::fourCC('c', 'a', 's', 'e'), GlyphCompositionDecomposition = Utility::Endianness::fourCC('c', 'c', 'm', 'p'), ConjunctFormAfterRo = Utility::Endianness::fourCC('c', 'f', 'a', 'r'), ContextualHalfWidthSpacing = Utility::Endianness::fourCC('c', 'h', 'w', 's'), ConjunctForms = Utility::Endianness::fourCC('c', 'j', 'c', 't'), ContextualLigatures = Utility::Endianness::fourCC('c', 'l', 'i', 'g'), CenteredCjkPunctuation = Utility::Endianness::fourCC('c', 'p', 'c', 't'), CapitalSpacing = Utility::Endianness::fourCC('c', 'p', 's', 'p'), ContextualSwash = Utility::Endianness::fourCC('c', 's', 'w', 'h'), CursivePositioning = Utility::Endianness::fourCC('c', 'u', 'r', 's'), CharacterVariants1 = Utility::Endianness::fourCC('c', 'v', '0', '1'), CharacterVariants2 = Utility::Endianness::fourCC('c', 'v', '0', '2'), CharacterVariants3 = Utility::Endianness::fourCC('c', 'v', '0', '3'), CharacterVariants4 = Utility::Endianness::fourCC('c', 'v', '0', '4'), CharacterVariants5 = Utility::Endianness::fourCC('c', 'v', '0', '5'), CharacterVariants6 = Utility::Endianness::fourCC('c', 'v', '0', '6'), CharacterVariants7 = Utility::Endianness::fourCC('c', 'v', '0', '7'), CharacterVariants8 = Utility::Endianness::fourCC('c', 'v', '0', '8'), CharacterVariants9 = Utility::Endianness::fourCC('c', 'v', '0', '9'), CharacterVariants10 = Utility::Endianness::fourCC('c', 'v', '1', '0'), CharacterVariants11 = Utility::Endianness::fourCC('c', 'v', '1', '1'), CharacterVariants12 = Utility::Endianness::fourCC('c', 'v', '1', '2'), CharacterVariants13 = Utility::Endianness::fourCC('c', 'v', '1', '3'), CharacterVariants14 = Utility::Endianness::fourCC('c', 'v', '1', '4'), CharacterVariants15 = Utility::Endianness::fourCC('c', 'v', '1', '5'), CharacterVariants16 = Utility::Endianness::fourCC('c', 'v', '1', '6'), CharacterVariants17 = Utility::Endianness::fourCC('c', 'v', '1', '7'), CharacterVariants18 = Utility::Endianness::fourCC('c', 'v', '1', '8'), CharacterVariants19 = Utility::Endianness::fourCC('c', 'v', '1', '9'), CharacterVariants20 = Utility::Endianness::fourCC('c', 'v', '2', '0'), CharacterVariants21 = Utility::Endianness::fourCC('c', 'v', '2', '1'), CharacterVariants22 = Utility::Endianness::fourCC('c', 'v', '2', '2'), CharacterVariants23 = Utility::Endianness::fourCC('c', 'v', '2', '3'), CharacterVariants24 = Utility::Endianness::fourCC('c', 'v', '2', '4'), CharacterVariants25 = Utility::Endianness::fourCC('c', 'v', '2', '5'), CharacterVariants26 = Utility::Endianness::fourCC('c', 'v', '2', '6'), CharacterVariants27 = Utility::Endianness::fourCC('c', 'v', '2', '7'), CharacterVariants28 = Utility::Endianness::fourCC('c', 'v', '2', '8'), CharacterVariants29 = Utility::Endianness::fourCC('c', 'v', '2', '9'), CharacterVariants30 = Utility::Endianness::fourCC('c', 'v', '3', '0'), CharacterVariants31 = Utility::Endianness::fourCC('c', 'v', '3', '1'), CharacterVariants32 = Utility::Endianness::fourCC('c', 'v', '3', '2'), CharacterVariants33 = Utility::Endianness::fourCC('c', 'v', '3', '3'), CharacterVariants34 = Utility::Endianness::fourCC('c', 'v', '3', '4'), CharacterVariants35 = Utility::Endianness::fourCC('c', 'v', '3', '5'), CharacterVariants36 = Utility::Endianness::fourCC('c', 'v', '3', '6'), CharacterVariants37 = Utility::Endianness::fourCC('c', 'v', '3', '7'), CharacterVariants38 = Utility::Endianness::fourCC('c', 'v', '3', '8'), CharacterVariants39 = Utility::Endianness::fourCC('c', 'v', '3', '9'), CharacterVariants40 = Utility::Endianness::fourCC('c', 'v', '4', '0'), CharacterVariants41 = Utility::Endianness::fourCC('c', 'v', '4', '1'), CharacterVariants42 = Utility::Endianness::fourCC('c', 'v', '4', '2'), CharacterVariants43 = Utility::Endianness::fourCC('c', 'v', '4', '3'), CharacterVariants44 = Utility::Endianness::fourCC('c', 'v', '4', '4'), CharacterVariants45 = Utility::Endianness::fourCC('c', 'v', '4', '5'), CharacterVariants46 = Utility::Endianness::fourCC('c', 'v', '4', '6'), CharacterVariants47 = Utility::Endianness::fourCC('c', 'v', '4', '7'), CharacterVariants48 = Utility::Endianness::fourCC('c', 'v', '4', '8'), CharacterVariants49 = Utility::Endianness::fourCC('c', 'v', '4', '9'), CharacterVariants50 = Utility::Endianness::fourCC('c', 'v', '5', '0'), CharacterVariants51 = Utility::Endianness::fourCC('c', 'v', '5', '1'), CharacterVariants52 = Utility::Endianness::fourCC('c', 'v', '5', '2'), CharacterVariants53 = Utility::Endianness::fourCC('c', 'v', '5', '3'), CharacterVariants54 = Utility::Endianness::fourCC('c', 'v', '5', '4'), CharacterVariants55 = Utility::Endianness::fourCC('c', 'v', '5', '5'), CharacterVariants56 = Utility::Endianness::fourCC('c', 'v', '5', '6'), CharacterVariants57 = Utility::Endianness::fourCC('c', 'v', '5', '7'), CharacterVariants58 = Utility::Endianness::fourCC('c', 'v', '5', '8'), CharacterVariants59 = Utility::Endianness::fourCC('c', 'v', '5', '9'), CharacterVariants60 = Utility::Endianness::fourCC('c', 'v', '6', '0'), CharacterVariants61 = Utility::Endianness::fourCC('c', 'v', '6', '1'), CharacterVariants62 = Utility::Endianness::fourCC('c', 'v', '6', '2'), CharacterVariants63 = Utility::Endianness::fourCC('c', 'v', '6', '3'), CharacterVariants64 = Utility::Endianness::fourCC('c', 'v', '6', '4'), CharacterVariants65 = Utility::Endianness::fourCC('c', 'v', '6', '5'), CharacterVariants66 = Utility::Endianness::fourCC('c', 'v', '6', '6'), CharacterVariants67 = Utility::Endianness::fourCC('c', 'v', '6', '7'), CharacterVariants68 = Utility::Endianness::fourCC('c', 'v', '6', '8'), CharacterVariants69 = Utility::Endianness::fourCC('c', 'v', '6', '9'), CharacterVariants70 = Utility::Endianness::fourCC('c', 'v', '7', '0'), CharacterVariants71 = Utility::Endianness::fourCC('c', 'v', '7', '1'), CharacterVariants72 = Utility::Endianness::fourCC('c', 'v', '7', '2'), CharacterVariants73 = Utility::Endianness::fourCC('c', 'v', '7', '3'), CharacterVariants74 = Utility::Endianness::fourCC('c', 'v', '7', '4'), CharacterVariants75 = Utility::Endianness::fourCC('c', 'v', '7', '5'), CharacterVariants76 = Utility::Endianness::fourCC('c', 'v', '7', '6'), CharacterVariants77 = Utility::Endianness::fourCC('c', 'v', '7', '7'), CharacterVariants78 = Utility::Endianness::fourCC('c', 'v', '7', '8'), CharacterVariants79 = Utility::Endianness::fourCC('c', 'v', '7', '9'), CharacterVariants80 = Utility::Endianness::fourCC('c', 'v', '8', '0'), CharacterVariants81 = Utility::Endianness::fourCC('c', 'v', '8', '1'), CharacterVariants82 = Utility::Endianness::fourCC('c', 'v', '8', '2'), CharacterVariants83 = Utility::Endianness::fourCC('c', 'v', '8', '3'), CharacterVariants84 = Utility::Endianness::fourCC('c', 'v', '8', '4'), CharacterVariants85 = Utility::Endianness::fourCC('c', 'v', '8', '5'), CharacterVariants86 = Utility::Endianness::fourCC('c', 'v', '8', '6'), CharacterVariants87 = Utility::Endianness::fourCC('c', 'v', '8', '7'), CharacterVariants88 = Utility::Endianness::fourCC('c', 'v', '8', '8'), CharacterVariants89 = Utility::Endianness::fourCC('c', 'v', '8', '9'), CharacterVariants90 = Utility::Endianness::fourCC('c', 'v', '9', '0'), CharacterVariants91 = Utility::Endianness::fourCC('c', 'v', '9', '1'), CharacterVariants92 = Utility::Endianness::fourCC('c', 'v', '9', '2'), CharacterVariants93 = Utility::Endianness::fourCC('c', 'v', '9', '3'), CharacterVariants94 = Utility::Endianness::fourCC('c', 'v', '9', '4'), CharacterVariants95 = Utility::Endianness::fourCC('c', 'v', '9', '5'), CharacterVariants96 = Utility::Endianness::fourCC('c', 'v', '9', '6'), CharacterVariants97 = Utility::Endianness::fourCC('c', 'v', '9', '7'), CharacterVariants98 = Utility::Endianness::fourCC('c', 'v', '9', '8'), CharacterVariants99 = Utility::Endianness::fourCC('c', 'v', '9', '9'), PetiteCapitalsFromCapitals = Utility::Endianness::fourCC('c', '2', 'p', 'c'), SmallCapitalsFromCapitals = Utility::Endianness::fourCC('c', '2', 's', 'c'), Distances = Utility::Endianness::fourCC('d', 'i', 's', 't'), DiscretionaryLigatures = Utility::Endianness::fourCC('d', 'l', 'i', 'g'), Denominators = Utility::Endianness::fourCC('d', 'n', 'o', 'm'), DotlessForms = Utility::Endianness::fourCC('d', 't', 'l', 's'), ExpertForms = Utility::Endianness::fourCC('e', 'x', 'p', 't'), FinalGlyphOnLineAlternates = Utility::Endianness::fourCC('f', 'a', 'l', 't'), TerminalForms = Utility::Endianness::fourCC('f', 'i', 'n', 'a'), TerminalForms2 = Utility::Endianness::fourCC('f', 'i', 'n', '2'), TerminalForms3 = Utility::Endianness::fourCC('f', 'i', 'n', '3'), FlattenedAccentForms = Utility::Endianness::fourCC('f', 'l', 'a', 'c'), Fractions = Utility::Endianness::fourCC('f', 'r', 'a', 'c'), FullWidths = Utility::Endianness::fourCC('f', 'w', 'i', 'd'), HalfForms = Utility::Endianness::fourCC('h', 'a', 'l', 'f'), HalantForms = Utility::Endianness::fourCC('h', 'a', 'l', 'n'), AlternateHalfWidths = Utility::Endianness::fourCC('h', 'a', 'l', 't'), HistoricalForms = Utility::Endianness::fourCC('h', 'i', 's', 't'), HorizontalKanaAlternates = Utility::Endianness::fourCC('h', 'k', 'n', 'a'), HistoricalLigatures = Utility::Endianness::fourCC('h', 'l', 'i', 'g'), Hangul = Utility::Endianness::fourCC('h', 'n', 'g', 'l'), HojoKanjiForms = Utility::Endianness::fourCC('h', 'o', 'j', 'o'), HalfWidths = Utility::Endianness::fourCC('h', 'w', 'i', 'd'), InitialForms = Utility::Endianness::fourCC('i', 'n', 'i', 't'), IsolatedForms = Utility::Endianness::fourCC('i', 's', 'o', 'l'), Italics = Utility::Endianness::fourCC('i', 't', 'a', 'l'), JustificationAlternates = Utility::Endianness::fourCC('j', 'a', 'l', 't'), Jis78Forms = Utility::Endianness::fourCC('j', 'p', '7', '8'), Jis83Forms = Utility::Endianness::fourCC('j', 'p', '8', '3'), Jis90Forms = Utility::Endianness::fourCC('j', 'p', '9', '0'), Jis2004Forms = Utility::Endianness::fourCC('j', 'p', '0', '4'), Kerning = Utility::Endianness::fourCC('k', 'e', 'r', 'n'), LeftBounds = Utility::Endianness::fourCC('l', 'f', 'b', 'd'), StandardLigatures = Utility::Endianness::fourCC('l', 'i', 'g', 'a'), LeadingJamoForms = Utility::Endianness::fourCC('l', 'j', 'm', 'o'), LiningFigures = Utility::Endianness::fourCC('l', 'n', 'u', 'm'), LocalizedForms = Utility::Endianness::fourCC('l', 'o', 'c', 'l'), LeftToRightAlternates = Utility::Endianness::fourCC('l', 't', 'r', 'a'), LeftToRightMirroredForms = Utility::Endianness::fourCC('l', 't', 'r', 'm'), MarkPositioning = Utility::Endianness::fourCC('m', 'a', 'r', 'k'), MedialForms = Utility::Endianness::fourCC('m', 'e', 'd', 'i'), MedialForms2 = Utility::Endianness::fourCC('m', 'e', 'd', '2'), MathematicalGreek = Utility::Endianness::fourCC('m', 'g', 'r', 'k'), MarkToMarkPositioning = Utility::Endianness::fourCC('m', 'k', 'm', 'k'), MarkPositioningViaSubstitution = Utility::Endianness::fourCC('m', 's', 'e', 't'), AlternateAnnotationForms = Utility::Endianness::fourCC('n', 'a', 'l', 't'), NlcKanjiForms = Utility::Endianness::fourCC('n', 'l', 'c', 'k'), NuktaForms = Utility::Endianness::fourCC('n', 'u', 'k', 't'), Numerators = Utility::Endianness::fourCC('n', 'u', 'm', 'r'), OldstyleFigures = Utility::Endianness::fourCC('o', 'n', 'u', 'm'), OpticalBounds = Utility::Endianness::fourCC('o', 'p', 'b', 'd'), Ordinals = Utility::Endianness::fourCC('o', 'r', 'd', 'n'), Ornaments = Utility::Endianness::fourCC('o', 'r', 'n', 'm'), ProportionalAlternateWidths = Utility::Endianness::fourCC('p', 'a', 'l', 't'), PetiteCapitals = Utility::Endianness::fourCC('p', 'c', 'a', 'p'), ProportionalKana = Utility::Endianness::fourCC('p', 'k', 'n', 'a'), ProportionalFigures = Utility::Endianness::fourCC('p', 'n', 'u', 'm'), PreBaseForms = Utility::Endianness::fourCC('p', 'r', 'e', 'f'), PreBaseSubstitutions = Utility::Endianness::fourCC('p', 'r', 'e', 's'), PostBaseForms = Utility::Endianness::fourCC('p', 's', 't', 'f'), PostBaseSubstitutions = Utility::Endianness::fourCC('p', 's', 't', 's'), ProportionalWidths = Utility::Endianness::fourCC('p', 'w', 'i', 'd'), QuarterWidths = Utility::Endianness::fourCC('q', 'w', 'i', 'd'), Randomize = Utility::Endianness::fourCC('r', 'a', 'n', 'd'), RequiredContextualAlternates = Utility::Endianness::fourCC('r', 'c', 'l', 't'), RakarForms = Utility::Endianness::fourCC('r', 'k', 'r', 'f'), RequiredLigatures = Utility::Endianness::fourCC('r', 'l', 'i', 'g'), RephForms = Utility::Endianness::fourCC('r', 'p', 'h', 'f'), RightBounds = Utility::Endianness::fourCC('r', 't', 'b', 'd'), RightToLeftAlternates = Utility::Endianness::fourCC('r', 't', 'l', 'a'), RightToLeftMirroredForms = Utility::Endianness::fourCC('r', 't', 'l', 'm'), RubyNotationForms = Utility::Endianness::fourCC('r', 'u', 'b', 'y'), RequiredVariationAlternates = Utility::Endianness::fourCC('r', 'v', 'r', 'n'), StylisticAlternates = Utility::Endianness::fourCC('s', 'a', 'l', 't'), ScientificInferiors = Utility::Endianness::fourCC('s', 'i', 'n', 'f'), OpticalSize = Utility::Endianness::fourCC('s', 'i', 'z', 'e'), SmallCapitals = Utility::Endianness::fourCC('s', 'm', 'c', 'p'), SimplifiedForms = Utility::Endianness::fourCC('s', 'm', 'p', 'l'), StylisticSet1 = Utility::Endianness::fourCC('s', 's', '0', '1'), StylisticSet2 = Utility::Endianness::fourCC('s', 's', '0', '2'), StylisticSet3 = Utility::Endianness::fourCC('s', 's', '0', '3'), StylisticSet4 = Utility::Endianness::fourCC('s', 's', '0', '4'), StylisticSet5 = Utility::Endianness::fourCC('s', 's', '0', '5'), StylisticSet6 = Utility::Endianness::fourCC('s', 's', '0', '6'), StylisticSet7 = Utility::Endianness::fourCC('s', 's', '0', '7'), StylisticSet8 = Utility::Endianness::fourCC('s', 's', '0', '8'), StylisticSet9 = Utility::Endianness::fourCC('s', 's', '0', '9'), StylisticSet10 = Utility::Endianness::fourCC('s', 's', '1', '0'), StylisticSet11 = Utility::Endianness::fourCC('s', 's', '1', '1'), StylisticSet12 = Utility::Endianness::fourCC('s', 's', '1', '2'), StylisticSet13 = Utility::Endianness::fourCC('s', 's', '1', '3'), StylisticSet14 = Utility::Endianness::fourCC('s', 's', '1', '4'), StylisticSet15 = Utility::Endianness::fourCC('s', 's', '1', '5'), StylisticSet16 = Utility::Endianness::fourCC('s', 's', '1', '6'), StylisticSet17 = Utility::Endianness::fourCC('s', 's', '1', '7'), StylisticSet18 = Utility::Endianness::fourCC('s', 's', '1', '8'), StylisticSet19 = Utility::Endianness::fourCC('s', 's', '1', '9'), StylisticSet20 = Utility::Endianness::fourCC('s', 's', '2', '0'), MathScriptStyleAlternates = Utility::Endianness::fourCC('s', 's', 't', 'y'), StretchingGlyphDecomposition = Utility::Endianness::fourCC('s', 't', 'c', 'h'), Subscript = Utility::Endianness::fourCC('s', 'u', 'b', 's'), Superscript = Utility::Endianness::fourCC('s', 'u', 'p', 's'), Swash = Utility::Endianness::fourCC('s', 'w', 's', 'h'), Titling = Utility::Endianness::fourCC('t', 'i', 't', 'l'), TrailingJamoForms = Utility::Endianness::fourCC('t', 'j', 'm', 'o'), TraditionalNameForms = Utility::Endianness::fourCC('t', 'n', 'a', 'm'), TabularFigures = Utility::Endianness::fourCC('t', 'n', 'u', 'm'), TraditionalForms = Utility::Endianness::fourCC('t', 'r', 'a', 'd'), ThirdWidths = Utility::Endianness::fourCC('t', 'w', 'i', 'd'), Unicase = Utility::Endianness::fourCC('u', 'n', 'i', 'c'), AlternateVerticalMetrics = Utility::Endianness::fourCC('v', 'a', 'l', 't'), VattuVariants = Utility::Endianness::fourCC('v', 'a', 't', 'u'), KerningForAlternateProportionalVerticalMetrics = Utility::Endianness::fourCC('v', 'a', 'p', 'k'), VerticalContextualHalfWidthSpacing = Utility::Endianness::fourCC('v', 'c', 'h', 'w'), VerticalWriting = Utility::Endianness::fourCC('v', 'e', 'r', 't'), AlternateVerticalHalfMetrics = Utility::Endianness::fourCC('v', 'h', 'a', 'l'), VowelJamoForms = Utility::Endianness::fourCC('v', 'j', 'm', 'o'), VerticalKanaAlternates = Utility::Endianness::fourCC('v', 'k', 'n', 'a'), VerticalKerning = Utility::Endianness::fourCC('v', 'k', 'r', 'n'), ProportionalAlternateVerticalMetrics = Utility::Endianness::fourCC('v', 'p', 'a', 'l'), VerticalAlternatesAndRotation = Utility::Endianness::fourCC('v', 'r', 't', '2'), VerticalAlternatesForRotation = Utility::Endianness::fourCC('v', 'r', 't', 'r'), SlashedZero = Utility::Endianness::fourCC('z', 'e', 'r', 'o') } new in Git master
OpenType typographic feature.
enum class Script: UnsignedInt { Unspecified = 0, Inherited = Utility::Endianness::fourCC('Z', 'i', 'n', 'h'), Math = Utility::Endianness::fourCC('Z', 'm', 't', 'h'), Common = Utility::Endianness::fourCC('Z', 'y', 'y', 'y'), Unknown = Utility::Endianness::fourCC('Z', 'z', 'z', 'z'), Adlam = Utility::Endianness::fourCC('A', 'd', 'l', 'm'), CaucasianAlbanian = Utility::Endianness::fourCC('A', 'g', 'h', 'b'), Ahom = Utility::Endianness::fourCC('A', 'h', 'o', 'm'), Arabic = Utility::Endianness::fourCC('A', 'r', 'a', 'b'), ImperialAramaic = Utility::Endianness::fourCC('A', 'r', 'm', 'i'), Armenian = Utility::Endianness::fourCC('A', 'r', 'm', 'n'), Avestan = Utility::Endianness::fourCC('A', 'v', 's', 't'), Balinese = Utility::Endianness::fourCC('B', 'a', 'l', 'i'), Bamum = Utility::Endianness::fourCC('B', 'a', 'm', 'u'), BassaVah = Utility::Endianness::fourCC('B', 'a', 's', 's'), Batak = Utility::Endianness::fourCC('B', 'a', 't', 'k'), Bengali = Utility::Endianness::fourCC('B', 'e', 'n', 'g'), Bhaiksuki = Utility::Endianness::fourCC('B', 'h', 'k', 's'), Bopomofo = Utility::Endianness::fourCC('B', 'o', 'p', 'o'), Brahmi = Utility::Endianness::fourCC('B', 'r', 'a', 'h'), Braille = Utility::Endianness::fourCC('B', 'r', 'a', 'i'), Buginese = Utility::Endianness::fourCC('B', 'u', 'g', 'i'), Buhid = Utility::Endianness::fourCC('B', 'u', 'h', 'd'), Chakma = Utility::Endianness::fourCC('C', 'a', 'k', 'm'), CanadianAboriginal = Utility::Endianness::fourCC('C', 'a', 'n', 's'), Carian = Utility::Endianness::fourCC('C', 'a', 'r', 'i'), Cham = Utility::Endianness::fourCC('C', 'h', 'a', 'm'), Cherokee = Utility::Endianness::fourCC('C', 'h', 'e', 'r'), Chorasmian = Utility::Endianness::fourCC('C', 'h', 'r', 's'), Coptic = Utility::Endianness::fourCC('C', 'o', 'p', 't'), CyproMinoan = Utility::Endianness::fourCC('C', 'p', 'm', 'n'), Cypriot = Utility::Endianness::fourCC('C', 'p', 'r', 't'), Cyrillic = Utility::Endianness::fourCC('C', 'y', 'r', 'l'), Devanagari = Utility::Endianness::fourCC('D', 'e', 'v', 'a'), DivesAkuru = Utility::Endianness::fourCC('D', 'i', 'a', 'k'), Dogra = Utility::Endianness::fourCC('D', 'o', 'g', 'r'), Deseret = Utility::Endianness::fourCC('D', 's', 'r', 't'), Duployan = Utility::Endianness::fourCC('D', 'u', 'p', 'l'), EgyptianHieroglyphs = Utility::Endianness::fourCC('E', 'g', 'y', 'p'), Elbasan = Utility::Endianness::fourCC('E', 'l', 'b', 'a'), Elymaic = Utility::Endianness::fourCC('E', 'l', 'y', 'm'), Ethiopic = Utility::Endianness::fourCC('E', 't', 'h', 'i'), Georgian = Utility::Endianness::fourCC('G', 'e', 'o', 'r'), Glagolitic = Utility::Endianness::fourCC('G', 'l', 'a', 'g'), GunjalaGondi = Utility::Endianness::fourCC('G', 'o', 'n', 'g'), MasaramGondi = Utility::Endianness::fourCC('G', 'o', 'n', 'm'), Gothic = Utility::Endianness::fourCC('G', 'o', 't', 'h'), Grantha = Utility::Endianness::fourCC('G', 'r', 'a', 'n'), Greek = Utility::Endianness::fourCC('G', 'r', 'e', 'k'), Gujarati = Utility::Endianness::fourCC('G', 'u', 'j', 'r'), Gurmukhi = Utility::Endianness::fourCC('G', 'u', 'r', 'u'), Hangul = Utility::Endianness::fourCC('H', 'a', 'n', 'g'), Han = Utility::Endianness::fourCC('H', 'a', 'n', 'i'), Hanunoo = Utility::Endianness::fourCC('H', 'a', 'n', 'o'), Hatran = Utility::Endianness::fourCC('H', 'a', 't', 'r'), Hebrew = Utility::Endianness::fourCC('H', 'e', 'b', 'r'), Hiragana = Utility::Endianness::fourCC('H', 'i', 'r', 'a'), AnatolianHieroglyphs = Utility::Endianness::fourCC('H', 'l', 'u', 'w'), PahawhHmong = Utility::Endianness::fourCC('H', 'm', 'n', 'g'), NyiakengPuachueHmong = Utility::Endianness::fourCC('H', 'm', 'n', 'p'), OldHungarian = Utility::Endianness::fourCC('H', 'u', 'n', 'g'), OldItalic = Utility::Endianness::fourCC('I', 't', 'a', 'l'), Javanese = Utility::Endianness::fourCC('J', 'a', 'v', 'a'), KayahLi = Utility::Endianness::fourCC('K', 'a', 'l', 'i'), Katakana = Utility::Endianness::fourCC('K', 'a', 'n', 'a'), Kawi = Utility::Endianness::fourCC('K', 'a', 'w', 'i'), Kharoshthi = Utility::Endianness::fourCC('K', 'h', 'a', 'r'), Khmer = Utility::Endianness::fourCC('K', 'h', 'm', 'r'), Khojki = Utility::Endianness::fourCC('K', 'h', 'o', 'j'), KhitanSmallScript = Utility::Endianness::fourCC('K', 'i', 't', 's'), Kannada = Utility::Endianness::fourCC('K', 'n', 'd', 'a'), Kaithi = Utility::Endianness::fourCC('K', 't', 'h', 'i'), TaiTham = Utility::Endianness::fourCC('L', 'a', 'n', 'a'), Lao = Utility::Endianness::fourCC('L', 'a', 'o', 'o'), Latin = Utility::Endianness::fourCC('L', 'a', 't', 'n'), Lepcha = Utility::Endianness::fourCC('L', 'e', 'p', 'c'), Limbu = Utility::Endianness::fourCC('L', 'i', 'm', 'b'), LinearA = Utility::Endianness::fourCC('L', 'i', 'n', 'a'), LinearB = Utility::Endianness::fourCC('L', 'i', 'n', 'b'), Lisu = Utility::Endianness::fourCC('L', 'i', 's', 'u'), Lycian = Utility::Endianness::fourCC('L', 'y', 'c', 'i'), Lydian = Utility::Endianness::fourCC('L', 'y', 'd', 'i'), Mahajani = Utility::Endianness::fourCC('M', 'a', 'h', 'j'), Makasar = Utility::Endianness::fourCC('M', 'a', 'k', 'a'), Mandaic = Utility::Endianness::fourCC('M', 'a', 'n', 'd'), Manichaean = Utility::Endianness::fourCC('M', 'a', 'n', 'i'), Marchen = Utility::Endianness::fourCC('M', 'a', 'r', 'c'), Medefaidrin = Utility::Endianness::fourCC('M', 'e', 'd', 'f'), MendeKikakui = Utility::Endianness::fourCC('M', 'e', 'n', 'd'), MeroiticCursive = Utility::Endianness::fourCC('M', 'e', 'r', 'c'), MeroiticHieroglyphs = Utility::Endianness::fourCC('M', 'e', 'r', 'o'), Malayalam = Utility::Endianness::fourCC('M', 'l', 'y', 'm'), Modi = Utility::Endianness::fourCC('M', 'o', 'd', 'i'), Mongolian = Utility::Endianness::fourCC('M', 'o', 'n', 'g'), Mro = Utility::Endianness::fourCC('M', 'r', 'o', 'o'), MeeteiMayek = Utility::Endianness::fourCC('M', 't', 'e', 'i'), Multani = Utility::Endianness::fourCC('M', 'u', 'l', 't'), Myanmar = Utility::Endianness::fourCC('M', 'y', 'm', 'r'), NagMundari = Utility::Endianness::fourCC('N', 'a', 'g', 'm'), Nandinagari = Utility::Endianness::fourCC('N', 'a', 'n', 'd'), OldNorthArabian = Utility::Endianness::fourCC('N', 'a', 'r', 'b'), Nabataean = Utility::Endianness::fourCC('N', 'b', 'a', 't'), Newa = Utility::Endianness::fourCC('N', 'e', 'w', 'a'), NKo = Utility::Endianness::fourCC('N', 'k', 'o', 'o'), Nushu = Utility::Endianness::fourCC('N', 's', 'h', 'u'), Ogham = Utility::Endianness::fourCC('O', 'g', 'a', 'm'), OlChiki = Utility::Endianness::fourCC('O', 'l', 'c', 'k'), OldTurkic = Utility::Endianness::fourCC('O', 'r', 'k', 'h'), Oriya = Utility::Endianness::fourCC('O', 'r', 'y', 'a'), Osage = Utility::Endianness::fourCC('O', 's', 'g', 'e'), Osmanya = Utility::Endianness::fourCC('O', 's', 'm', 'a'), OldUyghur = Utility::Endianness::fourCC('O', 'u', 'g', 'r'), Palmyrene = Utility::Endianness::fourCC('P', 'a', 'l', 'm'), PauCinHau = Utility::Endianness::fourCC('P', 'a', 'u', 'c'), OldPermic = Utility::Endianness::fourCC('P', 'e', 'r', 'm'), PhagsPa = Utility::Endianness::fourCC('P', 'h', 'a', 'g'), InscriptionalPahlavi = Utility::Endianness::fourCC('P', 'h', 'l', 'i'), PsalterPahlavi = Utility::Endianness::fourCC('P', 'h', 'l', 'p'), Phoenician = Utility::Endianness::fourCC('P', 'h', 'n', 'x'), Miao = Utility::Endianness::fourCC('P', 'l', 'r', 'd'), InscriptionalParthian = Utility::Endianness::fourCC('P', 'r', 't', 'i'), Rejang = Utility::Endianness::fourCC('R', 'j', 'n', 'g'), HanifiRohingya = Utility::Endianness::fourCC('R', 'o', 'h', 'g'), Runic = Utility::Endianness::fourCC('R', 'u', 'n', 'r'), Samaritan = Utility::Endianness::fourCC('S', 'a', 'm', 'r'), OldSouthArabian = Utility::Endianness::fourCC('S', 'a', 'r', 'b'), Saurashtra = Utility::Endianness::fourCC('S', 'a', 'u', 'r'), SignWriting = Utility::Endianness::fourCC('S', 'g', 'n', 'w'), Shavian = Utility::Endianness::fourCC('S', 'h', 'a', 'w'), Sharada = Utility::Endianness::fourCC('S', 'h', 'r', 'd'), Siddham = Utility::Endianness::fourCC('S', 'i', 'd', 'd'), Khudawadi = Utility::Endianness::fourCC('S', 'i', 'n', 'd'), Sinhala = Utility::Endianness::fourCC('S', 'i', 'n', 'h'), Sogdian = Utility::Endianness::fourCC('S', 'o', 'g', 'd'), OldSogdian = Utility::Endianness::fourCC('S', 'o', 'g', 'o'), SoraSompeng = Utility::Endianness::fourCC('S', 'o', 'r', 'a'), Soyombo = Utility::Endianness::fourCC('S', 'o', 'y', 'o'), Sundanese = Utility::Endianness::fourCC('S', 'u', 'n', 'd'), SylotiNagri = Utility::Endianness::fourCC('S', 'y', 'l', 'o'), Syriac = Utility::Endianness::fourCC('S', 'y', 'r', 'c'), Tagbanwa = Utility::Endianness::fourCC('T', 'a', 'g', 'b'), Takri = Utility::Endianness::fourCC('T', 'a', 'k', 'r'), TaiLe = Utility::Endianness::fourCC('T', 'a', 'l', 'e'), NewTaiLue = Utility::Endianness::fourCC('T', 'a', 'l', 'u'), Tamil = Utility::Endianness::fourCC('T', 'a', 'm', 'l'), Tangut = Utility::Endianness::fourCC('T', 'a', 'n', 'g'), TaiViet = Utility::Endianness::fourCC('T', 'a', 'v', 't'), Telugu = Utility::Endianness::fourCC('T', 'e', 'l', 'u'), Tifinagh = Utility::Endianness::fourCC('T', 'f', 'n', 'g'), Tagalog = Utility::Endianness::fourCC('T', 'g', 'l', 'g'), Thaana = Utility::Endianness::fourCC('T', 'h', 'a', 'a'), Thai = Utility::Endianness::fourCC('T', 'h', 'a', 'i'), Tibetan = Utility::Endianness::fourCC('T', 'i', 'b', 't'), Tirhuta = Utility::Endianness::fourCC('T', 'i', 'r', 'h'), Tangsa = Utility::Endianness::fourCC('T', 'n', 's', 'a'), Toto = Utility::Endianness::fourCC('T', 'o', 't', 'o'), Ugaritic = Utility::Endianness::fourCC('U', 'g', 'a', 'r'), Vai = Utility::Endianness::fourCC('V', 'a', 'i', 'i'), Vithkuqi = Utility::Endianness::fourCC('V', 'i', 't', 'h'), WarangCiti = Utility::Endianness::fourCC('W', 'a', 'r', 'a'), Wancho = Utility::Endianness::fourCC('W', 'c', 'h', 'o'), OldPersian = Utility::Endianness::fourCC('X', 'p', 'e', 'o'), Cuneiform = Utility::Endianness::fourCC('X', 's', 'u', 'x'), Yezidi = Utility::Endianness::fourCC('Y', 'e', 'z', 'i'), Yi = Utility::Endianness::fourCC('Y', 'i', 'i', 'i'), ZanabazarSquare = Utility::Endianness::fourCC('Z', 'a', 'n', 'b') } new in Git master
Script a text is written in.

Typedefs

using FontFeatures = Containers::EnumSet<FontFeature> new in 2020.06
Set of features supported by a font implementation.
using FontConverterFeatures = Containers::EnumSet<FontConverterFeature> new in 2020.06
Features supported by a font converter.
using GlyphCacheFeatures = Containers::EnumSet<GlyphCacheFeature> new in 2019.10
Set of features supported by a glyph cache.
using Renderer2D = Renderer<2>
Two-dimensional text renderer.
using Renderer3D = Renderer<3>
Three-dimensional text renderer.

Functions

auto operator<<(Debug& debug, FontFeature value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, FontFeatures value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, FontConverterFeature value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, FontConverterFeatures value) -> Debug&
Debug output operator.
auto operator<<(Debug& output, GlyphCacheFeature value) -> Debug&
Debug output operator.
auto operator<<(Debug& output, GlyphCacheFeatures value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, Alignment value) -> Debug&
Debug output operator.
auto alignmentForDirection(Alignment alignment, LayoutDirection layoutDirection, ShapeDirection shapeDirection) -> Alignment new in Git master
Alignment for layout and shape direction.
auto operator<<(Debug& debug, ShapeDirection value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, LayoutDirection value) -> Debug&
Debug output operator.
auto operator<<(Debug& debug, Feature value) -> Debug&
Debug output operator.
auto feature(char a, char b, char c, char d) -> Feature constexpr new in Git master
Create a Feature value from a four-character code.
auto feature(Containers::StringView fourCC) -> Feature new in Git master
Create a Feature value from a string.
auto renderLineGlyphPositionsInto(const AbstractFont& font, Float size, LayoutDirection direction, const Containers::StridedArrayView1D<const Vector2>& glyphOffsets, const Containers::StridedArrayView1D<const Vector2>& glyphAdvances, Vector2& cursor, const Containers::StridedArrayView1D<Vector2>& glyphPositions) -> Range2D new in Git master
Render glyph positions for a (part of a) single line.
auto renderGlyphQuadsInto(const AbstractFont& font, Float size, const AbstractGlyphCache& cache, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& fontGlyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector3>& vertexTextureCoordinates) -> Range2D new in Git master
Render glyph quads for a (part of a) single line from font-specific glyph IDs.
auto renderGlyphQuadsInto(const AbstractFont& font, Float size, const AbstractGlyphCache& cache, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& fontGlyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector2>& vertexTextureCoordinates) -> Range2D new in Git master
Render glyph quads for a (part of a) single line from font-specific glyph IDs and a 2D glyph cache.
auto renderGlyphQuadsInto(const AbstractGlyphCache& cache, Float scale, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& glyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector3>& vertexTextureCoordinates) -> Range2D new in Git master
Render glyph quads for a (part of a) single line from cache-global glyph IDs.
auto renderGlyphQuadsInto(const AbstractGlyphCache& cache, Float scale, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& glyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector2>& vertexTextureCoordinates) -> Range2D new in Git master
Render glyph quads for a (part of a) single line from cache-global glyph IDs and a 2D glyph cache.
auto alignRenderedLine(const Range2D& lineRectangle, LayoutDirection direction, Alignment alignment, const Containers::StridedArrayView1D<Vector2>& positions) -> Range2D new in Git master
Align a rendered line.
auto alignRenderedBlock(const Range2D& blockRectangle, LayoutDirection direction, Alignment alignment, const Containers::StridedArrayView1D<Vector2>& positions) -> Range2D new in Git master
Align a rendered block.
void renderGlyphQuadIndicesInto(UnsignedInt glyphOffset, const Containers::StridedArrayView1D<UnsignedInt>& indices) new in Git master
Render 32-bit glyph quad indices.
void renderGlyphQuadIndicesInto(UnsignedInt glyphOffset, const Containers::StridedArrayView1D<UnsignedShort>& indices) new in Git master
Render 16-bit glyph quad indices.
void renderGlyphQuadIndicesInto(UnsignedInt glyphOffset, const Containers::StridedArrayView1D<UnsignedByte>& indices) new in Git master
Render 8-bit glyph quad indices.
auto glyphRangeForBytes(const Containers::StridedArrayView1D<const UnsignedInt>& clusters, UnsignedInt begin, UnsignedInt end) -> Containers::Pair<UnsignedInt, UnsignedInt> new in Git master
Find a glyph range corresponding to given byte range in the input text.
auto operator<<(Debug& debug, Script value) -> Debug&
Debug output operator.
auto script(char a, char b, char c, char d) -> Script constexpr new in Git master
Create a Script value from a four-character code.
auto script(Containers::StringView fourCC) -> Script new in Git master
Create a Script value from a string.

Enum documentation

enum class Magnum::Text::FontFeature: UnsignedByte new in 2020.06

Features supported by a font implementation.

Enumerators
OpenData

Opening fonts from raw data using AbstractFont::openData()

FileCallback new in 2019.10

Specifying callbacks for loading additional files referenced from the main file using AbstractFont::setFileCallback(). If the font doesn't expose this feature, the format is either single-file or loading via callbacks is not supported.

See Loading data from memory, using file callbacks and particular font plugin documentation for more information.

PreparedGlyphCache

The font contains a prepared glyph cache.

enum class Magnum::Text::FontConverterFeature: UnsignedByte new in 2020.06

Features supported by a font converter.

Enumerators
ExportFont

Exporting font using AbstractFontConverter::exportFontToFile(), AbstractFontConverter::exportFontToData() or AbstractFontConverter::exportFontToSingleData()

ExportGlyphCache

Export glyph cache using AbstractFontConverter::exportGlyphCacheToFile(), AbstractFontConverter::exportGlyphCacheToData() or AbstractFontConverter::exportGlyphCacheToSingleData()

ImportGlyphCache

Import glyph cache using AbstractFontConverter::importGlyphCacheFromFile(), AbstractFontConverter::importGlyphCacheFromData() or AbstractFontConverter::importGlyphCacheFromSingleData()

ConvertData

Convert from/to data using AbstractFontConverter::exportFontToData(), AbstractFontConverter::exportFontToSingleData(), AbstractFontConverter::exportGlyphCacheToData(), AbstractFontConverter::exportGlyphCacheToSingleData(), AbstractFontConverter::importGlyphCacheFromData() or AbstractFontConverter::importGlyphCacheFromSingleData()

MultiFile

The format is multi-file, thus AbstractFontConverter::exportFontToSingleData(), AbstractFontConverter::exportGlyphCacheToSingleData() and AbstractFontConverter::importGlyphCacheFromSingleData() convenience functions cannot be used.

enum class Magnum::Text::GlyphCacheFeature: UnsignedByte new in 2019.10

Features supported by a particular glyph cache implementation.

Enumerators
ImageProcessing new in Git master

The glyph cache processes the input image, potentially to a different size or format.

ProcessedImageDownload new in Git master

Ability to download processed image data using AbstractGlyphCache::processedImage(). May not be supported by glyph caches on embedded platforms that don't have an ability to get texture data back from a GPU. Implies GlyphCacheFeature::ImageProcessing. Glyph caches without GlyphCacheFeature::ImageProcessing have the image accessible always through AbstractGlyphCache::image().

ImageDownload

enum class Magnum::Text::Alignment: UnsignedByte

Text rendering alignment.

By default, the alignment is performed based on cursor position and font metric alone, without taking actual glyph offsets and rectangles into account. This allows the alignment to be performed even before actual glyph bounds are known and avoids the position changing based on what concrete glyphs are present. Aligning to actual glyph rectangle bounds can be done with the *GlyphBounds variants.

The *Integer values are meant to be used for pixel-perfect fonts that always have glyph sizes, advances and other metrics whole pixels, and need to be positioned on whole pixels as well in order to avoid making them blurry. These are only needed for *Middle and *Center alignments as they may result in the bounding rectangle to have odd dimensions, which would then result in half-pixel shifts when divided by 2.

The *Start and *End values behave the same as *Left and *Right, respectively, if ShapeDirection::LeftToRight is passed to AbstractShaper::setDirection(), or if it's ShapeDirection::Unspecified and the particular font plugin doesn't detect ShapeDirection::RightToLeft when shaping. If ShapeDirection::RightToLeft is set (or detected for ShapeDirection::Unspecified), they're swapped, i.e. *Start becomes *Right and *End becomes *Left.

Enumerators
LineLeft

Leftmost cursor position and vertical line position is at origin.

LineLeftGlyphBounds new in Git master

Left side of the glyph bounding rectangle and vertical line position is at origin.

LineCenter

Midpoint between leftmost and rightmost cursor position and vertical line position is at origin.

LineCenterIntegral

Midpoint between leftmost and rightmost cursor position and vertical line position is at origin, with the horizontal offset rounded to whole units.

LineCenterGlyphBounds new in Git master

Horizontal center of the glyph bounding rectangle and vertical line position is at origin.

LineCenterGlyphBoundsIntegral new in Git master

Horizontal center of the glyph bounding rectangle and vertical line position is at origin, with the horizontal offset rounded to whole units.

LineRight

Rightmost cursor position and vertical line position is at origin.

LineRightGlyphBounds new in Git master

Right side of the glyph bounding rectangle and vertical line position is at origin.

LineStart new in Git master

Alignment::LineRight for ShapeDirection::RightToLeft, Alignment::LineLeft otherwise.

LineStartGlyphBounds new in Git master

Alignment::LineRightGlyphBounds for ShapeDirection::RightToLeft, Alignment::LineLeftGlyphBounds otherwise.

LineEnd new in Git master

Alignment::LineLeft for ShapeDirection::RightToLeft, Alignment::LineRight otherwise.

LineEndGlyphBounds new in Git master

Alignment::LineLeftGlyphBounds for ShapeDirection::RightToLeft, Alignment::LineRightGlyphBounds otherwise.

BottomLeft new in Git master

Leftmost cursor position and bottommost line descent is at origin.

BottomLeftGlyphBounds new in Git master

Bottom left corner of the glyph bounding rectangle is at origin.

BottomCenter new in Git master

Midpoint between leftmost and rightmost cursor position and bottommost line decent is at origin.

BottomCenterIntegral new in Git master

Midpoint between leftmost and rightmost cursor position and bottommost line descent is at origin, with the horizontal offset rounded to whole units.

BottomCenterGlyphBounds new in Git master

Horizontal center and bottom side of the glyph bounding rectangle is at origin.

BottomCenterGlyphBoundsIntegral new in Git master

Horizontal center and bottom side of the glyph bounding rectangle is at origin, with the horizontal offset rounded to whole units.

BottomRight new in Git master

Rightmost cursor position and bottommost line descent is at origin.

BottomRightGlyphBounds new in Git master

Bottom right corner of the glyph bounding rectangle is at origin.

BottomStart new in Git master

Alignment::BottomRight for ShapeDirection::RightToLeft, Alignment::BottomLeft otherwise.

BottomStartGlyphBounds new in Git master

Alignment::BottomRightGlyphBounds for ShapeDirection::RightToLeft, Alignment::BottomLeftGlyphBounds otherwise.

BottomEnd new in Git master

Alignment::BottomLeft for ShapeDirection::RightToLeft, Alignment::BottomRight otherwise.

BottomEndGlyphBounds new in Git master

Alignment::BottomLeftGlyphBounds for ShapeDirection::RightToLeft, Alignment::BottomRightGlyphBounds otherwise.

MiddleLeft

Leftmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin.

MiddleLeftIntegral

Leftmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin, with the vertical offset rounded to whole units.

MiddleLeftGlyphBounds new in Git master

Left side and vertical center of the glyph bounding rectangle is at origin.

MiddleLeftGlyphBoundsIntegral new in Git master

Left side and vertical center of the glyph bounding rectangle is at origin, with the vertical offset rounded to whole units.

MiddleCenter

Midpoint between leftmost and rightmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin.

MiddleCenterIntegral

Midpoint between leftmost and rightmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin, with both the horizontal and vertical offset rounded to whole units.

MiddleCenterGlyphBounds new in Git master

Horizontal and vertical center of the glyph bounding rectangle is at origin.

MiddleCenterGlyphBoundsIntegral new in Git master

Horizontal and vertical center of the glyph bounding rectangle is at origin, with both the horizontal and vertical offset rounded to whole units.

MiddleRight

Rightmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin.

MiddleRightIntegral

Rightmost cursor position and a midpoint between topmost line ascent and bottommost line descent is at origin, with the vertical offset rounded to whole units.

MiddleRightGlyphBounds new in Git master

Right side and vertical center of the glyph bounding rectangle is at origin.

MiddleRightGlyphBoundsIntegral new in Git master

Right side and vertical center of the glyph bounding rectangle is at origin, with the vertical offset rounded to whole units.

MiddleStart new in Git master

Alignment::MiddleRight for ShapeDirection::RightToLeft, Alignment::MiddleLeft otherwise.

MiddleStartIntegral new in Git master

Alignment::MiddleRightIntegral for ShapeDirection::RightToLeft, Alignment::MiddleLeftIntegral otherwise.

MiddleStartGlyphBounds new in Git master

Alignment::MiddleRightGlyphBounds for ShapeDirection::RightToLeft, Alignment::MiddleLeftGlyphBounds otherwise.

MiddleStartGlyphBoundsIntegral new in Git master

Alignment::MiddleRightGlyphBoundsIntegral for ShapeDirection::RightToLeft, Alignment::MiddleLeftGlyphBoundsIntegral otherwise.

MiddleEnd new in Git master

Alignment::MiddleLeft for ShapeDirection::RightToLeft, Alignment::MiddleRight otherwise.

MiddleEndIntegral new in Git master

Alignment::MiddleLeftIntegral for ShapeDirection::RightToLeft, Alignment::MiddleRightIntegral otherwise.

MiddleEndGlyphBounds new in Git master

Alignment::MiddleLeftGlyphBounds for ShapeDirection::RightToLeft, Alignment::MiddleRightGlyphBounds otherwise.

MiddleEndGlyphBoundsIntegral new in Git master

Alignment::MiddleLeftGlyphBoundsIntegral for ShapeDirection::RightToLeft, Alignment::MiddleRightGlyphBoundsIntegral otherwise.

TopLeft

Leftmost cursor position and topmost line ascent is at origin.

TopLeftGlyphBounds new in Git master

Top left corner of the glyph bounding rectangle is at origin.

TopCenter

Midpoint between leftmost and rightmost cursor position and topmost line ascent is at origin.

TopCenterIntegral new in Git master

Midpoint between leftmost and rightmost cursor position and topmost line ascent is at origin, with the horizontal offset rounded to whole units.

TopCenterGlyphBounds new in Git master

Horizontal center and top side of the glyph bounding rectangle is at origin.

TopCenterGlyphBoundsIntegral new in Git master

Horizontal center and top side of the glyph bounding rectangle is at origin, with the horizontal offset rounded to whole units.

TopRight

Rightmost cursor position and topmost line ascent is at origin.

TopRightGlyphBounds new in Git master

Top right corner of the glyph bounding rectangle is at origin.

TopStart new in Git master

Alignment::TopRight for ShapeDirection::RightToLeft, Alignment::TopLeft otherwise.

TopStartGlyphBounds new in Git master

Alignment::TopRightGlyphBounds for ShapeDirection::RightToLeft, Alignment::TopLeftGlyphBounds otherwise.

TopEnd new in Git master

Alignment::TopLeft for ShapeDirection::RightToLeft, Alignment::TopRight otherwise.

TopEndGlyphBounds new in Git master

Alignment::TopLeftGlyphBounds for ShapeDirection::RightToLeft, Alignment::TopRightGlyphBounds otherwise.

enum class Magnum::Text::ShapeDirection: UnsignedByte new in Git master

Direction a text is shaped in.

Enumerators
Unspecified

Unspecified. When set in AbstractShaper::setDirection(), makes the shaping rely on direction autodetection implemented in a particular AbstractFont plugin (if any). When returned from AbstractShaper::direction() after a successful AbstractShaper::shape() call, it means a particular AbstractFont plugin doesn't implement any script-specific behavior.

LeftToRight

Left to right. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their Y components 0.0f, and clusters filled by glyphClustersInto() are by default monotonically non-decreasing.

RightToLeft

Right to left. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their Y components 0.0f, and clusters filled by glyphClustersInto() are by default monotonically non-increasing.

TopToBottom

Top to bottom. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their X components 0.0f, and clusters filled by glyphClustersInto() are by default monotonically non-decreasing.

BottomToTop

Bottom to top. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their X components 0.0f, and clusters filled by glyphClustersInto() are by default monotonically non-increasing.

enum class Magnum::Text::LayoutDirection: UnsignedByte new in Git master

Direction a text is laid out in.

Enumerators
Unspecified
HorizontalTopToBottom

Horizontal text with lines advancing from top to bottom

VerticalLeftToRight

Vertical text with lines advancing from left to right

VerticalRightToLeft

Vertical text with lines advancing from right to left

enum class Magnum::Text::Feature: UnsignedInt new in Git master

OpenType typographic feature.

The values are FourCC codes according to the OpenType feature registry. See also the List of typographic features on Wikipedia for the values grouped by use case. Use feature(char, char, char, char) or feature(Containers::StringView) for creating values not listed in the enum.

Currently, there's no corresponding feature list for Apple Advanced Typography. Mapping from OpenType features to AAT features is possible but nontrivial, and is the responsibility of a particular font plugin.

Enumerators
AccessAllAlternates

aalt, Access All Alternates. Ligation and alternate feature intended for all scripts.

AboveBaseForms

abvf, Above-base Forms. Intended for South-Asian scripts.

AboveBaseMarkPositioning

abvm, Above-base Mark Positioning. Intended for South-Asian scripts.

AboveBaseSubstitutions

abvs, Above-base Substitutions. Intended for South-Asian scripts.

AlternativeFractions

afrc, Alternative Fractions. Intended for digits and math.

Akhand

akhn, Akhand. Intended for South-Asian scripts.

KerningForAlternateProportionalWidths

apkn, Kerning for Alternate Proportional Widths. Intended for East-Asian scripts.

BelowBaseForms

blwf, Below-base Forms. Intended for South-Asian scripts.

BelowBaseMarkPositioning

blwm, Below-base Mark Positioning. Intended for South-Asian scripts.

BelowBaseSubstitutions

blws, Below-base Substitutions. Intended for South-Asian scripts.

ContextualAlternates

calt, Contextual Alternates. Ligation and alternate feature intended for all scripts.

CaseSensitiveForms

case, Case-Sensitive Forms. Intended for cased scripts.

GlyphCompositionDecomposition

ccmp, Glyph Composition / Decomposition. Positioning feature intended for all scripts.

ConjunctFormAfterRo

cfar, Conjunct Form After Ro. Intended for South-Asian scripts.

ContextualHalfWidthSpacing

chws, Contextual Half-width Spacing. Intended for East-Asian scripts.

ConjunctForms

cjct, Conjunct Forms. Intended for South-Asian scripts.

ContextualLigatures

clig, Contextual Ligatures. Ligation and alternate feature intended for all scripts.

CenteredCjkPunctuation

cpct, Centered CJK Punctuation. Intended for East-Asian scripts.

CapitalSpacing

cpsp, Capital Spacing. Intended for cased scripts.

ContextualSwash

cswh, Contextual Swash. Ligation and alternate feature intended for all scripts.

CursivePositioning

curs, Cursive Positioning. Intended for West-Asian scripts.

CharacterVariants1

cv01, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants2

cv02, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants3

cv03, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants4

cv04, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants5

cv05, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants6

cv06, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants7

cv07, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants8

cv08, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants9

cv09, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants10

cv10, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants11

cv11, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants12

cv12, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants13

cv13, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants14

cv14, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants15

cv15, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants16

cv16, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants17

cv17, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants18

cv18, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants19

cv19, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants20

cv20, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants21

cv21, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants22

cv22, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants23

cv23, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants24

cv24, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants25

cv25, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants26

cv26, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants27

cv27, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants28

cv28, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants29

cv29, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants30

cv30, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants31

cv31, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants32

cv32, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants33

cv33, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants34

cv34, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants35

cv35, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants36

cv36, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants37

cv37, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants38

cv38, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants39

cv39, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants40

cv40, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants41

cv41, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants42

cv42, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants43

cv43, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants44

cv44, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants45

cv45, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants46

cv46, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants47

cv47, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants48

cv48, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants49

cv49, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants50

cv50, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants51

cv51, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants52

cv52, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants53

cv53, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants54

cv54, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants55

cv55, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants56

cv56, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants57

cv57, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants58

cv58, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants59

cv59, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants60

cv60, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants61

cv61, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants62

cv62, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants63

cv63, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants64

cv64, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants65

cv65, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants66

cv66, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants67

cv67, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants68

cv68, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants69

cv69, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants70

cv70, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants71

cv71, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants72

cv72, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants73

cv73, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants74

cv74, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants75

cv75, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants76

cv76, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants77

cv77, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants78

cv78, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants79

cv79, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants80

cv80, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants81

cv81, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants82

cv82, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants83

cv83, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants84

cv84, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants85

cv85, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants86

cv86, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants87

cv87, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants88

cv88, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants89

cv89, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants90

cv90, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants91

cv91, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants92

cv92, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants93

cv93, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants94

cv94, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants95

cv95, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants96

cv96, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants97

cv97, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants98

cv98, Character Variants. Ligation and alternate feature intended for all scripts.

CharacterVariants99

cv99, Character Variants. Ligation and alternate feature intended for all scripts.

PetiteCapitalsFromCapitals

c2pc, Petite Capitals From Capitals. Intended for cased scripts.

SmallCapitalsFromCapitals

c2sc, Small Capitals From Capitals. Intended for cased scripts.

Distances

dist, Distances. Intended for South-Asian scripts.

DiscretionaryLigatures

dlig, Discretionary Ligatures. Ligation and alternate feature intended for all scripts.

Denominators

dnom, Denominators. Intended for digits and math.

DotlessForms

dtls, Dotless Forms. Intended for digits and math.

ExpertForms

expt, Expert Forms. Intended for East-Asian scripts.

FinalGlyphOnLineAlternates

falt, Final Glyph on Line Alternates. Intended for West-Asian scripts.

TerminalForms

fina, Terminal Forms. Intended for West-Asian scripts.

TerminalForms2

fin2, Terminal Forms #2. Intended for West-Asian scripts.

TerminalForms3

fin3, Terminal Forms #3. Intended for West-Asian scripts.

FlattenedAccentForms

flac, Flattened Accent Forms. Intended for digits and math.

Fractions

frac, Fractions. Intended for digits and math.

FullWidths

fwid, Full Widths. Intended for East-Asian scripts.

HalfForms

half, Half Forms. Intended for South-Asian scripts.

HalantForms

haln, Halant Forms. Intended for South-Asian scripts.

AlternateHalfWidths

halt, Alternate Half Widths. Intended for East-Asian scripts.

HistoricalForms

hist, Historical Forms. Ligation and alternate feature intended for all scripts.

HorizontalKanaAlternates

hkna, Horizontal Kana Alternates. Intended for East-Asian scripts.

HistoricalLigatures

hlig, Historical Ligatures. Ligation and alternate feature intended for all scripts.

Hangul

hngl, Hangul. Intended for East-Asian scripts.

HojoKanjiForms

hojo, Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Intended for East-Asian scripts.

HalfWidths

hwid, Half Widths. Intended for East-Asian scripts.

InitialForms

init, Initial Forms. Intended for West-Asian scripts.

IsolatedForms

isol, Isolated Forms. Intended for West-Asian scripts.

Italics

ital, Italics. Intended for cased scripts.

JustificationAlternates

jalt, Justification Alternates. Intended for West-Asian scripts.

Jis78Forms

jp78, JIS78 Forms. Intended for East-Asian scripts.

Jis83Forms

jp83, JIS83 Forms. Intended for East-Asian scripts.

Jis90Forms

jp90, JIS90 Forms. Intended for East-Asian scripts.

Jis2004Forms

jp04, JIS2004 Forms. Intended for East-Asian scripts.

Kerning

kern, Kerning. Positioning feature intended for all scripts.

LeftBounds

lfbd, Left Bounds. Positioning feature intended for all scripts.

StandardLigatures

liga, Standard Ligatures. Ligation and alternate feature intended for all scripts.

LeadingJamoForms

ljmo, Leading Jamo Forms. Intended for East-Asian scripts.

LiningFigures

lnum, Lining Figures. Intended for digits and math.

LocalizedForms

locl, Localized Forms. Ligation and alternate feature intended for all scripts.

LeftToRightAlternates

ltra, Left-to-right alternates. Feature depending on writing direction.

LeftToRightMirroredForms

ltrm, Left-to-right mirrored forms. Feature depending on writing direction.

MarkPositioning

mark, Mark Positioning. Positioning feature intended for all scripts.

MedialForms

medi, Medial Forms. Intended for West-Asian scripts.

MedialForms2

med2, Medial Forms #2. Intended for West-Asian scripts.

MathematicalGreek

mgrk, Mathematical Greek. Intended for digits and math.

MarkToMarkPositioning

mkmk, Mark to Mark Positioning. Positioning feature intended for all scripts.

MarkPositioningViaSubstitution

mset, Mark Positioning via Substitution. Intended for West-Asian scripts.

AlternateAnnotationForms

nalt, Alternate Annotation Forms. Ligation and alternate feature intended for all scripts.

NlcKanjiForms

nlck, NLC Kanji Forms. Intended for East-Asian scripts.

NuktaForms

nukt, Nukta Forms. Intended for South-Asian scripts.

Numerators

numr, Numerators. Intended for digits and math.

OldstyleFigures

onum, Oldstyle Figures. Intended for digits and math.

OpticalBounds

opbd, Optical Bounds. Positioning feature intended for all scripts.

Ordinals

ordn, Ordinals. Intended for cased scripts.

Ornaments

ornm, Ornaments. Special feature intended for all scripts.

ProportionalAlternateWidths

palt, Proportional Alternate Widths. Intended for East-Asian scripts.

PetiteCapitals

pcap, Petite Capitals. Intended for cased scripts.

ProportionalKana

pkna, Proportional Kana. Intended for East-Asian scripts.

ProportionalFigures

pnum, Proportional Figures. Intended for digits and math.

PreBaseForms

pref, Pre-Base Forms. Intended for South-Asian scripts.

PreBaseSubstitutions

pres, Pre-base Substitutions. Intended for South-Asian scripts.

PostBaseForms

pstf, Post-base Forms. Intended for South-Asian scripts.

PostBaseSubstitutions

psts, Post-base Substitutions. Intended for South-Asian scripts.

ProportionalWidths

pwid, Proportional Widths. Intended for East-Asian scripts.

QuarterWidths

qwid, Quarter Widths. Intended for East-Asian scripts.

Randomize

rand, Randomize. Ligation and alternate feature intended for all scripts.

RequiredContextualAlternates

rclt, Required Contextual Alternates. Intended for West-Asian scripts.

RakarForms

rkrf, Rakar Forms. Intended for South-Asian scripts.

RequiredLigatures

rlig, Required Ligatures. Intended for West-Asian scripts.

RephForms

rphf, Reph Forms. Intended for South-Asian scripts.

RightBounds

rtbd, Right Bounds. Positioning feature intended for all scripts.

RightToLeftAlternates

rtla, Right-to-left alternates. Feature depending on writing direction.

RightToLeftMirroredForms

rtlm, Right-to-left mirrored forms. Feature depending on writing direction.

RubyNotationForms

ruby, Ruby Notation Forms. Intended for East-Asian scripts.

RequiredVariationAlternates

rvrn, Required Variation Alternates. Ligation and alternate feature intended for all scripts.

StylisticAlternates

salt, Stylistic Alternates. Ligation and alternate feature intended for all scripts.

ScientificInferiors

sinf, Scientific Inferiors. Intended for digits and math.

OpticalSize

size, Optical Size. Special feature intended for all scripts.

SmallCapitals

smcp, Small Capitals. Intended for cased scripts.

SimplifiedForms

smpl, Simplified Forms. Intended for East-Asian scripts.

StylisticSet1

ss01, Stylistic Set 1. Ligation and alternate feature intended for all scripts.

StylisticSet2

ss02, Stylistic Set 2. Ligation and alternate feature intended for all scripts.

StylisticSet3

ss03, Stylistic Set 3. Ligation and alternate feature intended for all scripts.

StylisticSet4

ss04, Stylistic Set 4. Ligation and alternate feature intended for all scripts.

StylisticSet5

ss05, Stylistic Set 5. Ligation and alternate feature intended for all scripts.

StylisticSet6

ss06, Stylistic Set 6. Ligation and alternate feature intended for all scripts.

StylisticSet7

ss07, Stylistic Set 7. Ligation and alternate feature intended for all scripts.

StylisticSet8

ss08, Stylistic Set 8. Ligation and alternate feature intended for all scripts.

StylisticSet9

ss09, Stylistic Set 9. Ligation and alternate feature intended for all scripts.

StylisticSet10

ss10, Stylistic Set 10. Ligation and alternate feature intended for all scripts.

StylisticSet11

ss11, Stylistic Set 11. Ligation and alternate feature intended for all scripts.

StylisticSet12

ss12, Stylistic Set 12. Ligation and alternate feature intended for all scripts.

StylisticSet13

ss13, Stylistic Set 13. Ligation and alternate feature intended for all scripts.

StylisticSet14

ss14, Stylistic Set 14. Ligation and alternate feature intended for all scripts.

StylisticSet15

ss15, Stylistic Set 15. Ligation and alternate feature intended for all scripts.

StylisticSet16

ss16, Stylistic Set 16. Ligation and alternate feature intended for all scripts.

StylisticSet17

ss17, Stylistic Set 17. Ligation and alternate feature intended for all scripts.

StylisticSet18

ss18, Stylistic Set 18. Ligation and alternate feature intended for all scripts.

StylisticSet19

ss19, Stylistic Set 19. Ligation and alternate feature intended for all scripts.

StylisticSet20

ss20, Stylistic Set 20. Ligation and alternate feature intended for all scripts.

MathScriptStyleAlternates

ssty, Math Script Style Alternates. Intended for digits and math.

StretchingGlyphDecomposition

stch, Stretching Glyph Decomposition. Intended for West-Asian scripts.

Subscript

subs, Subscript. Ligation and alternate feature intended for all scripts.

Superscript

sups, Superscript. Ligation and alternate feature intended for all scripts.

Swash

swsh, Swash. Ligation and alternate feature intended for all scripts.

Titling

titl, Titling. Ligation and alternate feature intended for all scripts.

TrailingJamoForms

tjmo, Trailing Jamo Forms. Intended for East-Asian scripts.

TraditionalNameForms

tnam, Traditional Name Forms. Intended for East-Asian scripts.

TabularFigures

tnum, Tabular Figures. Intended for digits and math.

TraditionalForms

trad, Traditional Forms. Intended for East-Asian scripts.

ThirdWidths

twid, Third Widths. Intended for East-Asian scripts.

Unicase

unic, Unicase. Intended for cased scripts.

AlternateVerticalMetrics

valt, Alternate Vertical Metrics. Feature depending on writing direction.

VattuVariants

vatu, Vattu Variants. Intended for South-Asian scripts.

KerningForAlternateProportionalVerticalMetrics

vapk, Kerning for Alternate Proportional Vertical Metrics. Intended for East-Asian scripts.

VerticalContextualHalfWidthSpacing

vchw, Vertical Contextual Half-width Spacing. Intended for East-Asian scripts.

VerticalWriting

vert, Vertical Writing. Feature depending on writing direction.

AlternateVerticalHalfMetrics

vhal, Alternate Vertical Half Metrics. Feature depending on writing direction.

VowelJamoForms

vjmo, Vowel Jamo Forms. Intended for East-Asian scripts.

VerticalKanaAlternates

vkna, Vertical Kana Alternates. Intended for East-Asian scripts.

VerticalKerning

vkrn, Vertical Kerning. Feature depending on writing direction.

ProportionalAlternateVerticalMetrics

vpal, Proportional Alternate Vertical Metrics. Feature depending on writing direction.

VerticalAlternatesAndRotation

vrt2, Vertical Alternates and Rotation. Feature depending on writing direction.

VerticalAlternatesForRotation

vrtr, Vertical Alternates for Rotation. Feature depending on writing direction.

SlashedZero

zero, Slashed Zero. Intended for digits and math.

enum class Magnum::Text::Script: UnsignedInt new in Git master

Script a text is written in.

The values are FourCC codes according to ISO 15924. Use script(char, char, char, char) or script(Containers::StringView) for creating values not listed in the enum.

Enumerators
Unspecified

Unspecified. When set in AbstractShaper::setScript(), makes the shaping rely on script autodetection implemented in a particular AbstractFont plugin (if any). When returned from AbstractShaper::script() after a successful AbstractShaper::shape() call, it means a particular AbstractFont plugin doesn't implement any script-specific behavior.

Inherited

Inherited. Characters that may be used with multiple scripts, and that inherit their script from a preceding base character.

Math

Math symbols

Common

Undetermined script

Unknown

Unknown script

Adlam

Adlam, Unicode 9.0

CaucasianAlbanian

Caucasian Albanian, Unicode 7.0

Ahom

Ahom, Unicode 8.0

Arabic

Arabic, Unicode 1.0

ImperialAramaic

Imperial Aramaic, Unicode 5.2

Armenian

Armenian, Unicode 1.0

Avestan

Avestan, Unicode 5.2

Balinese

Balinese, Unicode 5.0

Bamum

Bamum, Unicode 5.2

BassaVah

Bassa Vah, Unicode 7.0

Batak

Batak, Unicode 6.0

Bengali

Bengali, Unicode 1.0

Bhaiksuki

Bhaiksuki, Unicode 9.0

Bopomofo

Bopomofo, Unicode 1.0

Brahmi

Brahmi, Unicode 6.0

Braille

Braille, Unicode 3.0

Buginese

Buginese, Unicode 4.1

Buhid

Buhid, Unicode 3.2

Chakma

Chakma, Unicode 6.1

CanadianAboriginal

CanadianAboriginal, Unicode 3.0

Carian

Carian, Unicode 5.1

Cham

Cham, Unicode 5.1

Cherokee

Cherokee, Unicode 3.0

Chorasmian

Chorasmian, Unicode 13.0

Coptic

Coptic, Unicode 1.0

CyproMinoan

Cypro Minoan, Unicode 14.0

Cypriot

Cypriot, Unicode 4.0

Cyrillic

Cyrillic, Unicode 1.0

Devanagari

Devanagari, Unicode 1.0

DivesAkuru

Dives Akuru, Unicode 13.0

Dogra

Dogra, Unicode 11.0

Deseret

Deseret, Unicode 3.1

Duployan

Duployan, Unicode 7.0

EgyptianHieroglyphs

Egyptian Hieroglyphs, Unicode 5.2

Elbasan

Elbasan, Unicode 7.0

Elymaic

Elymaic, Unicode 12.0

Ethiopic

Ethiopic, Unicode 3.0

Georgian

Georgian, Unicode 1.0

Glagolitic

Glagolitic, Unicode 4.1

GunjalaGondi

Gunjala Gondi, Unicode 11.0

MasaramGondi

Masaram Gondi, Unicode 10.0

Gothic

Gothic, Unicode 3.1

Grantha

Grantha, Unicode 7.0

Greek

Greek, Unicode 1.0

Gujarati

Gujarati, Unicode 1.0

Gurmukhi

Gurmukhi, Unicode 1.0

Hangul

Hangul, Unicode 1.0

Han

Han, Unicode 1.0

Hanunoo

Hanunoo, Unicode 3.2

Hatran

Hatran, Unicode 8.0

Hebrew

Hebrew, Unicode 1.0

Hiragana

Hiragana, Unicode 1.0

AnatolianHieroglyphs

Anatolian Hieroglyphs, Unicode 8.0

PahawhHmong

Pahawh Hmong, Unicode 7.0

NyiakengPuachueHmong

Nyiakeng Puachue Hmong, Unicode 12.0

OldHungarian

Old Hungarian, Unicode 8.0

OldItalic

Old Italic, Unicode 3.1

Javanese

Javanese, Unicode 5.2

KayahLi

Kayah Li, Unicode 5.1

Katakana

Katakana, Unicode 1.0

Kawi

Kawi, Unicode 15.0

Kharoshthi

Kharoshthi, Unicode 4.1

Khmer

Khmer, Unicode 3.0

Khojki

Khojki, Unicode 7.0

KhitanSmallScript

Khitan Small Script, Unicode 13.0

Kannada

Kannada, Unicode 1.0

Kaithi

Kaithi, Unicode 5.2

TaiTham

Tai Tham, Unicode 5.2

Lao

Lao, Unicode 1.0

Latin

Latin, Unicode 1.0

Lepcha

Lepcha, Unicode 5.1

Limbu

Limbu, Unicode 4.0

LinearA

Linear A, Unicode 7.0

LinearB

Linear B, Unicode 4.0

Lisu

Lisu, Unicode 5.2

Lycian

Lycian, Unicode 5.1

Lydian

Lydian, Unicode 5.1

Mahajani

Mahajani, Unicode 7.0

Makasar

Makasar, Unicode 11.0

Mandaic

Mandaic, Unicode 6.0

Manichaean

Manichaean, Unicode 7.0

Marchen

Marchen, Unicode 9.0

Medefaidrin

Medefaidrin, Unicode 11.0

MendeKikakui

Mende Kikakui, Unicode 7.0

MeroiticCursive

Meroitic Cursive, Unicode 6.1

MeroiticHieroglyphs

Meroitic Hieroglyphs, Unicode 6.1

Malayalam

Malayalam, Unicode 1.0

Modi

Modi, Unicode 7.0

Mongolian

Mongolian, Unicode 3.0

Mro

Mro, Unicode 7.0

MeeteiMayek

Meetei Mayek, Unicode 5.2

Multani

Multani, Unicode 8.0

Myanmar

Myanmar, Unicode 3.0

NagMundari

Nag Mundari, Unicode 15.0

Nandinagari

Nandinagari, Unicode 12.0

OldNorthArabian

Old North Arabian, Unicode 7.0

Nabataean

Nabataean, Unicode 7.0

Newa

Newa, Unicode 9.0

NKo

NKo, Unicode 5.0

Nushu

Nushu, Unicode 10.0

Ogham

Ogham, Unicode 3.0

OlChiki

Ol Chiki, Unicode 5.1

OldTurkic

Old Turkic, Unicode 5.2

Oriya

Oriya, Unicode 1.0

Osage

Osage, Unicode 9.0

Osmanya

Osmanya, Unicode 4.0

OldUyghur

Old Uyghur, Unicode 14.0

Palmyrene

Palmyrene, Unicode 7.0

PauCinHau

Pau Cin Hau, Unicode 7.0

OldPermic

Old Permic, Unicode 7.0

PhagsPa

Phags-pa, Unicode 5.0

InscriptionalPahlavi

Inscriptional Pahlavi, Unicode 5.2

PsalterPahlavi

Psalter Pahlavi, Unicode 7.0

Phoenician

Phoenician, Unicode 5.0

Miao

Miao, Unicode 6.1

InscriptionalParthian

InscriptionalParthian, Unicode 5.2

Rejang

Rejang, Unicode 5.1

HanifiRohingya

Hanifi Rohingya, Unicode 11.0

Runic

Runic, Unicode 3.0

Samaritan

Samaritan, Unicode 5.2

OldSouthArabian

Old South Arabian, Unicode 5.2

Saurashtra

Saurashtra, Unicode 5.1

SignWriting

SignWriting, Unicode 8.0

Shavian

Shavian, Unicode 4.0

Sharada

Sharada, Unicode 6.1

Siddham

Siddham, Unicode 7.0

Khudawadi

Khudawadi, Unicode 7.0

Sinhala

Sinhala, Unicode 3.0

Sogdian

Sogdian, Unicode 11.0

OldSogdian

Old Sogdian, Unicode 11.0

SoraSompeng

Sora Sompeng, Unicode 6.1

Soyombo

Soyombo, Unicode 10.0

Sundanese

Sundanese, Unicode 5.1

SylotiNagri

Syloti Nagri, Unicode 4.1

Syriac

Syriac, Unicode 3.0

Tagbanwa

Tagbanwa, Unicode 3.2

Takri

Takri, Unicode 6.1

TaiLe

Tai Le, Unicode 4.0

NewTaiLue

New Tai Lue, Unicode 4.1

Tamil

Tamil, Unicode 1.0

Tangut

Tangut, Unicode 9.0

TaiViet

Tai Viet, Unicode 5.2

Telugu

Telugu, Unicode 1.0

Tifinagh

Tifinagh, Unicode 4.1

Tagalog

Tagalog, Unicode 3.2

Thaana

Thaana, Unicode 3.0

Thai

Thai, Unicode 1.0

Tibetan

Tibetan, Unicode 2.0

Tirhuta

Tirhuta, Unicode 7.0

Tangsa

Tangsa, Unicode 14.0

Toto

Toto, Unicode 14.0

Ugaritic

Ugaritic, Unicode 4.0

Vai

Vai, Unicode 5.1

Vithkuqi

Vithkuqi, Unicode 14.0

WarangCiti

Warang Citi, Unicode 7.0

Wancho

Wancho, Unicode 12.0

OldPersian

Old Persian, Unicode 4.1

Cuneiform

Cuneiform, Unicode 5.0

Yezidi

Yezidi, Unicode 13.0

Yi

Yi, Unicode 3.0

ZanabazarSquare

Zanabazar Square, Unicode 10.0

Typedef documentation

typedef Containers::EnumSet<FontFeature> Magnum::Text::FontFeatures new in 2020.06

Set of features supported by a font implementation.

typedef Containers::EnumSet<GlyphCacheFeature> Magnum::Text::GlyphCacheFeatures new in 2019.10

Set of features supported by a glyph cache.

typedef Renderer<2> Magnum::Text::Renderer2D

Two-dimensional text renderer.

typedef Renderer<3> Magnum::Text::Renderer3D

Three-dimensional text renderer.

Function documentation

Debug& Magnum::Text::operator<<(Debug& debug, FontFeature value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, FontFeatures value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, FontConverterFeature value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, FontConverterFeatures value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& output, GlyphCacheFeature value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& output, GlyphCacheFeatures value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, Alignment value)

Debug output operator.

Alignment Magnum::Text::alignmentForDirection(Alignment alignment, LayoutDirection layoutDirection, ShapeDirection shapeDirection) new in Git master

Alignment for layout and shape direction.

The layoutDirection is currently expected to always be LayoutDirection::HorizontalTopToBottom and shapeDirection never ShapeDirection::TopToBottom or ShapeDirection::BottomToTop. Then, if alignment is *Start or *End, it's converted to *Left or *Right, respectively, if shapeDirection is ShapeDirection::LeftToRight or ShapeDirection::Unspecified, and *Right or *Left, respectively, if shapeDirection is ShapeDirection::RightToLeft.

Debug& Magnum::Text::operator<<(Debug& debug, ShapeDirection value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, LayoutDirection value)

Debug output operator.

Debug& Magnum::Text::operator<<(Debug& debug, Feature value)

Debug output operator.

Feature Magnum::Text::feature(char a, char b, char c, char d) constexpr new in Git master

Create a Feature value from a four-character code.

Delegates to Utility::Endianness::fourCC(). Doesn't perform any validity check on the input, i.e. it's possible to create a code that isn't listed in the OpenType feature registry or even a code with non-ASCII characters.

Feature Magnum::Text::feature(Containers::StringView fourCC) new in Git master

Create a Feature value from a string.

Expects that the string has exactly four bytes. Other than that doesn't perform any validity check on the input, i.e. it's possible to create a code that isn't listed in the OpenType feature registry or even a code with non-ASCII characters.

Range2D Magnum::Text::renderLineGlyphPositionsInto(const AbstractFont& font, Float size, LayoutDirection direction, const Containers::StridedArrayView1D<const Vector2>& glyphOffsets, const Containers::StridedArrayView1D<const Vector2>& glyphAdvances, Vector2& cursor, const Containers::StridedArrayView1D<Vector2>& glyphPositions) new in Git master

Render glyph positions for a (part of a) single line.

Parameters
font in Font to query metrics from
size in Size to render the glyphs at
direction in Layout direction. Currently expected to always be LayoutDirection::HorizontalTopToBottom.
glyphOffsets in Glyph offsets coming from AbstractShaper instance(s) associated with font
glyphAdvances in Glyph advances coming from AbstractShaper instance(s) associated with font
cursor in/out Initial cursor position. Is updated to a final cursor position after all glyphs are rendered.
glyphPositions out Where to put output absolute glyph positions
Returns Rectangle spanning the rendered cursor range in one direction and font descent to ascent in the other

The output of this function are just glyph positions alone, which is useful for example when the actual glyph quad expansion is done by a shader or when the glyphs get subsequently rasterized some other way than applying a glyph texture to a sequence of quads. Use renderGlyphQuadsInto() on the resulting glyphPositions array to form actual glyph quads together with texture coordinates.

The glyphOffsets, glyphAdvances and glyphPositions views are all expected to have the same size. It's possible to use the same view for glyphOffsets and glyphPositions, which will turn the input relative glyph offsets into absolute positions.

Calls to this function don't strictly need to match calls to AbstractShaper::shape(). For example if multiple text runs on a single line differ just by script, language or direction but not by a font or rendering size, they can be shaped into consecutive portions of a larger glyphOffsets and glyphAdvances array and this function can be then called just once for all runs together. If the font or rendering size changes between text runs however, you have to call this function for each such run separately and each time use the updated cursor value as an input for the next renderLineGlyphPositionsInto() call.

Once the whole line is rendered, Math::join() the rectangles returned from all calls to this function and pass them together with positions for the whole line to alignRenderedLine(). Finally, to align a multi-line block, join rectangles returned from all alignRenderedLine() calls and pass them together with positions for the whole text to alignRenderedBlock().

Range2D Magnum::Text::renderGlyphQuadsInto(const AbstractFont& font, Float size, const AbstractGlyphCache& cache, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& fontGlyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector3>& vertexTextureCoordinates) new in Git master

Render glyph quads for a (part of a) single line from font-specific glyph IDs.

Parameters
font in Font the glyphs are coming from
size in Size to render the glyphs at
cache in Glyph cache to query for glyph rectangles
glyphPositions in Glyph positions coming from an earlier call to renderLineGlyphPositionsInto()
fontGlyphIds in Glyph IDs coming from AbstractShaper instance(s) associated with font
vertexPositions out Where to put output vertex positions
vertexTextureCoordinates out Where to put output texture coordinates
Returns Rectangle spanning the rendered glyph quads

Produces a sequence of quad corner positions and texture coordinates in order as shown below. The glyphPositions and glyphIds views are expected to have the same size, the vertexPositions and vertexTextureCoordinates views are then expected to be four times larger than glyphPositions and glyphIds, in order to ultimately contain four corner vertices for each glyph. To optimize memory use, it's possible to alias glyphPositions with vertexPositions.every(4) and glyphIds with vertexTextureCoordinates.every(4). The vertexTextureCoordinates are temporarily used to store resolved cache-global glyph IDs, the rendering is then performed in a way that first reads the position and ID for each glyph and only then fills in the vertex data.

2---3
|   |
|   |
|   |
0---1

If the text doesn't need to be aligned based on the actual glyph bounds (i.e., the desired Alignment isn't *GlyphBounds), it's possible to call this function even on a multi-line text run provided that alignRenderedLine() was called on the glyphPositions before to align lines relatively to each other. Otherwise this function should be called on each line individually and then the vertexPositions passed further to alignRenderedLine().

Expects that font is contained in cache. Glyph IDs not found in the cache are replaced with the cache-global invalid glyph. If the cache is only 2D, you can use the renderGlyphQuadsInto(const AbstractFont&, Float, const AbstractGlyphCache&, const Containers::StridedArrayView1D<const Vector2>&, const Containers::StridedArrayView1D<const UnsignedInt>&, const Containers::StridedArrayView1D<Vector2>&, const Containers::StridedArrayView1D<Vector2>&) overload to get just 2D texture coordinates out. Use the renderGlyphQuadsInto(const AbstractGlyphCache&, Float, const Containers::StridedArrayView1D<const Vector2>&, const Containers::StridedArrayView1D<const UnsignedInt>&, const Containers::StridedArrayView1D<Vector2>&, const Containers::StridedArrayView1D<Vector2>&) overload if you already have cache-global glyph IDs. Use renderGlyphQuadIndicesInto() to populate the corresponding index array.

Range2D Magnum::Text::renderGlyphQuadsInto(const AbstractFont& font, Float size, const AbstractGlyphCache& cache, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& fontGlyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector2>& vertexTextureCoordinates) new in Git master

Render glyph quads for a (part of a) single line from font-specific glyph IDs and a 2D glyph cache.

Compared to renderGlyphQuadsInto(const AbstractFont&, Float, const AbstractGlyphCache&, const Containers::StridedArrayView1D<const Vector2>&, const Containers::StridedArrayView1D<const UnsignedInt>&, const Containers::StridedArrayView1D<Vector2>&, const Containers::StridedArrayView1D<Vector3>&) outputs just 2D texture coordinates. Expects that AbstractGlyphCache::size() depth is 1.

Range2D Magnum::Text::renderGlyphQuadsInto(const AbstractGlyphCache& cache, Float scale, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& glyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector3>& vertexTextureCoordinates) new in Git master

Render glyph quads for a (part of a) single line from cache-global glyph IDs.

Parameters
cache in Glyph cache to query for glyph rectangles
scale in Size to render the glyphs at divided by size of the input font
glyphPositions in Glyph positions coming from an earlier call to renderLineGlyphPositionsInto()
glyphIds in Cache-global glyph IDs
vertexPositions out Where to put output vertex positions
vertexTextureCoordinates out Where to put output texture coordinates
Returns Rectangle spanning the rendered glyph quads

Compared to renderGlyphQuadsInto(const AbstractFont&, Float, const AbstractGlyphCache&, const Containers::StridedArrayView1D<const Vector2>&, const Containers::StridedArrayView1D<const UnsignedInt>&, const Containers::StridedArrayView1D<Vector2>&, const Containers::StridedArrayView1D<Vector3>&) this function operates takes cache-global glyph IDs as an input, i.e. no mapping from font-specific glyph IDs to cache-global IDs happens in this case. As with the above overload, to optimize memory use, it's possible to alias glyphPositions and glyphIds with vertexPositions.every(4) and vertexTextureCoordinates.every(4).

Range2D Magnum::Text::renderGlyphQuadsInto(const AbstractGlyphCache& cache, Float scale, const Containers::StridedArrayView1D<const Vector2>& glyphPositions, const Containers::StridedArrayView1D<const UnsignedInt>& glyphIds, const Containers::StridedArrayView1D<Vector2>& vertexPositions, const Containers::StridedArrayView1D<Vector2>& vertexTextureCoordinates) new in Git master

Render glyph quads for a (part of a) single line from cache-global glyph IDs and a 2D glyph cache.

Compared to renderGlyphQuadsInto(const AbstractGlyphCache&, Float, const Containers::StridedArrayView1D<const Vector2>&, const Containers::StridedArrayView1D<const UnsignedInt>&, const Containers::StridedArrayView1D<Vector2>&, const Containers::StridedArrayView1D<Vector3>&) outputs just 2D texture coordinates. Expects that AbstractGlyphCache::size() depth is 1.

Range2D Magnum::Text::alignRenderedLine(const Range2D& lineRectangle, LayoutDirection direction, Alignment alignment, const Containers::StridedArrayView1D<Vector2>& positions) new in Git master

Align a rendered line.

Parameters
lineRectangle in Rectangle spanning the whole line
direction in Layout direction. Currently expected to always be LayoutDirection::HorizontalTopToBottom.
alignment in Desired alignment. Only the part in direction of the line is used.
positions in/out Positions of glyphs or glyph quad vertices on the whole line to be aligned
Returns The lineRectangle, translated in the direction of the line based on the alignment.

Expects that alignment isn't *Start or *End, those values have to be resolved to *Left or *Right based on desired or detected ShapeDirection using alignmentForDirection() before being passed to this function.

If alignment isn't *GlyphBounds, this function should get glyph positions for the whole line coming from renderLineGlyphPositionsInto() and lineRectangle being all rectangles returned by that function combined together with Math::join().

If alignment is *GlyphBounds, this function should get vertex positions for a whole line coming from renderGlyphQuadsInto() and lineRectangle being all rectangles returned by that function combined together with Math::join().

The positions are translated in one axis based on the inputRectangle and the part of alignment matching line direction in direction. Values of the positions themselves aren't considered when calculating the alignment. To align a multi-line block, join rectangles returned from all calls to this function and pass them together with positions for the whole block to alignRenderedBlock().

Range2D Magnum::Text::alignRenderedBlock(const Range2D& blockRectangle, LayoutDirection direction, Alignment alignment, const Containers::StridedArrayView1D<Vector2>& positions) new in Git master

Align a rendered block.

Parameters
blockRectangle in Rectangle spanning all lines in the block
direction in Layout direction. Currently expected to always be LayoutDirection::HorizontalTopToBottom.
alignment in Desired alignment. Only the part in direction of the line is used.
positions in/out Positions of glyphs or glyph quad vertices on the whole line to be aligned
Returns The blockRectangle, translated in the direction of the layout advance based on the alignment.

Expects that alignment isn't *Start or *End, those values have to be resolved to *Left or *Right based on desired or detected ShapeDirection using alignmentForDirection() before being passed to this function.

This function should get glyph or vertex positions for all lines as aligned by calls to alignRenderedLine(), and blockRectangle being all line rectangles returned by that function combined together with Math::join().

The positions are translated in one axis based on the inputRectangle and the part of alignment matching layout advance in direction. Values of the positions themselves aren't considered when calculating the translation.

void Magnum::Text::renderGlyphQuadIndicesInto(UnsignedInt glyphOffset, const Containers::StridedArrayView1D<UnsignedInt>& indices) new in Git master

Render 32-bit glyph quad indices.

Parameters
glyphOffset in Offset of the first glyph to generate indices for
indices out Where to put the generated indices

Produces a sequence of quad indices in order as shown below, with the index values being shifted by glyphOffset*4. Expects that the indices view size is divisible by 6 and the value range fits into the output type.

2---3 2 3---5
|   | |\ \  |
|   | | \ \ |
|   | |  \ \|
0---1 0---1 4

Containers::Pair<UnsignedInt, UnsignedInt> Magnum::Text::glyphRangeForBytes(const Containers::StridedArrayView1D<const UnsignedInt>& clusters, UnsignedInt begin, UnsignedInt end) new in Git master

Find a glyph range corresponding to given byte range in the input text.

Assuming clusters is a view containing cluster IDs returned from AbstractShaper::glyphClustersInto() and begin and end are byte positions in the text passed to AbstractShaper::shape() for which the cluster IDs were retrieved, returns a range in the glyph array that contains given range. Assumes that clusters are either monotonically non-dereasing or non-increasing.

If clusters are empty or end is less or equal to all clusters, returns {0, 0}. If begin is greater than all clusters are, both return values are set to clusters size. In both cases the empty returned range means there are no glyphs corresponding to given byte. Otherwise, if the input range is non-empty, the returned range is always at least one glyph. The returned range always points to cluster boundaries, even if the input is inside a multi-byte character or ligature or inside a multi-glyph cluster.

If begin is greater than end, the first value of the output is also greater than the second. Otherwise, the first value of the output is always less than or equal to the second.

At the moment, the lookup is done with an $ \mathcal{O}(n) $ complexity, with $ n $ being size of the clusters view.

Mapping in the other direction, from glyphs to input bytes, is simply clusters[i]. See AbstractShaper::glyphClustersInto() for more information about how the cluster IDs may look like depending on the input and shaper features used.

Debug& Magnum::Text::operator<<(Debug& debug, Script value)

Debug output operator.

Script Magnum::Text::script(char a, char b, char c, char d) constexpr new in Git master

Create a Script value from a four-character code.

Delegates to Utility::Endianness::fourCC(). Doesn't perform any validity check on the input, i.e. it's possible to create a code that isn't listed in ISO 15924 or even a code with non-ASCII characters.

Script Magnum::Text::script(Containers::StringView fourCC) new in Git master

Create a Script value from a string.

Expects that the string has exactly four bytes. Other than that doesn't perform any validity check on the input, i.e. it's possible to create a code that isn't listed in ISO 15924 or even a code with non-ASCII characters.