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, 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, 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, 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 }
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'), 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'), 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 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 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.

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.

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.

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.

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.

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.

RightToLeft

Right to left. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their Y components 0.0f.

TopToBottom

Top to bottom. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their X components 0.0f.

BottomToTop

Bottom to top. When returned from AbstractShaper::direction(), the advances filled by AbstractShaper::glyphOffsetsAdvancesInto() have their X components 0.0f.

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

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

AboveBaseForms

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

AboveBaseMarkPositioning

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

AboveBaseSubstitutions

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

AlternativeFractions

Alternative Fractions. Intended for digits and math.

Akhand

Akhand. Intended for South-Asian scripts.

BelowBaseForms

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

BelowBaseMarkPositioning

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

BelowBaseSubstitutions

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

ContextualAlternates

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

CaseSensitiveForms

Case-Sensitive Forms. Intended for cased scripts.

GlyphCompositionDecomposition

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

ConjunctFormAfterRo

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

ContextualHalfWidthSpacing

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

ConjunctForms

Conjunct Forms. Intended for South-Asian scripts.

ContextualLigatures

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

CenteredCjkPunctuation

Centered CJK Punctuation. Intended for East-Asian scripts.

CapitalSpacing

Capital Spacing. Intended for cased scripts.

ContextualSwash

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

CursivePositioning

Cursive Positioning. Intended for West-Asian scripts.

CharacterVariants1

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

CharacterVariants2

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

CharacterVariants3

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

CharacterVariants4

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

CharacterVariants5

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

CharacterVariants6

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

CharacterVariants7

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

CharacterVariants8

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

CharacterVariants9

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

CharacterVariants10

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

CharacterVariants11

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

CharacterVariants12

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

CharacterVariants13

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

CharacterVariants14

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

CharacterVariants15

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

CharacterVariants16

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

CharacterVariants17

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

CharacterVariants18

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

CharacterVariants19

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

CharacterVariants20

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

CharacterVariants21

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

CharacterVariants22

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

CharacterVariants23

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

CharacterVariants24

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

CharacterVariants25

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

CharacterVariants26

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

CharacterVariants27

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

CharacterVariants28

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

CharacterVariants29

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

CharacterVariants30

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

CharacterVariants31

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

CharacterVariants32

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

CharacterVariants33

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

CharacterVariants34

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

CharacterVariants35

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

CharacterVariants36

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

CharacterVariants37

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

CharacterVariants38

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

CharacterVariants39

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

CharacterVariants40

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

CharacterVariants41

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

CharacterVariants42

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

CharacterVariants43

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

CharacterVariants44

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

CharacterVariants45

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

CharacterVariants46

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

CharacterVariants47

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

CharacterVariants48

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

CharacterVariants49

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

CharacterVariants50

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

CharacterVariants51

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

CharacterVariants52

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

CharacterVariants53

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

CharacterVariants54

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

CharacterVariants55

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

CharacterVariants56

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

CharacterVariants57

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

CharacterVariants58

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

CharacterVariants59

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

CharacterVariants60

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

CharacterVariants61

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

CharacterVariants62

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

CharacterVariants63

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

CharacterVariants64

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

CharacterVariants65

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

CharacterVariants66

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

CharacterVariants67

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

CharacterVariants68

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

CharacterVariants69

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

CharacterVariants70

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

CharacterVariants71

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

CharacterVariants72

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

CharacterVariants73

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

CharacterVariants74

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

CharacterVariants75

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

CharacterVariants76

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

CharacterVariants77

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

CharacterVariants78

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

CharacterVariants79

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

CharacterVariants80

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

CharacterVariants81

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

CharacterVariants82

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

CharacterVariants83

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

CharacterVariants84

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

CharacterVariants85

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

CharacterVariants86

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

CharacterVariants87

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

CharacterVariants88

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

CharacterVariants89

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

CharacterVariants90

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

CharacterVariants91

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

CharacterVariants92

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

CharacterVariants93

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

CharacterVariants94

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

CharacterVariants95

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

CharacterVariants96

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

CharacterVariants97

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

CharacterVariants98

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

CharacterVariants99

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

PetiteCapitalsFromCapitals

Petite Capitals From Capitals. Intended for cased scripts.

SmallCapitalsFromCapitals

Small Capitals From Capitals. Intended for cased scripts.

Distances

Distances. Intended for South-Asian scripts.

DiscretionaryLigatures

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

Denominators

Denominators. Intended for digits and math.

DotlessForms

Dotless Forms. Intended for digits and math.

ExpertForms

Expert Forms. Intended for East-Asian scripts.

FinalGlyphOnLineAlternates

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

TerminalForms

Terminal Forms. Intended for West-Asian scripts.

TerminalForms2

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

TerminalForms3

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

FlattenedAccentForms

Flattened accent forms. Intended for digits and math.

Fractions

Fractions. Intended for digits and math.

FullWidths

Full Widths. Intended for East-Asian scripts.

HalfForms

Half Forms. Intended for South-Asian scripts.

HalantForms

Halant Forms. Intended for South-Asian scripts.

AlternateHalfWidths

Alternate Half Widths. Intended for East-Asian scripts.

HistoricalForms

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

HorizontalKanaAlternates

Horizontal Kana Alternates. Intended for East-Asian scripts.

HistoricalLigatures

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

Hangul

Hangul. Intended for East-Asian scripts.

HojoKanjiForms

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

HalfWidths

Half Widths. Intended for East-Asian scripts.

InitialForms

Initial Forms. Intended for West-Asian scripts.

IsolatedForms

Isolated Forms. Intended for West-Asian scripts.

Italics

Italics. Intended for cased scripts.

JustificationAlternates

Justification Alternates. Intended for West-Asian scripts.

Jis78Forms

JIS78 Forms. Intended for East-Asian scripts.

Jis83Forms

JIS83 Forms. Intended for East-Asian scripts.

Jis90Forms

JIS90 Forms. Intended for East-Asian scripts.

Jis2004Forms

JIS2004 Forms. Intended for East-Asian scripts.

Kerning

Kerning. Positioning feature intended for all scripts.

LeftBounds

Left Bounds. Positioning feature intended for all scripts.

StandardLigatures

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

LeadingJamoForms

Leading Jamo Forms. Intended for East-Asian scripts.

LiningFigures

Lining Figures. Intended for digits and math.

LocalizedForms

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

LeftToRightAlternates

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

LeftToRightMirroredForms

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

MarkPositioning

Mark Positioning. Positioning feature intended for all scripts.

MedialForms

Medial Forms. Intended for West-Asian scripts.

MedialForms2

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

MathematicalGreek

Mathematical Greek. Intended for digits and math.

MarkToMarkPositioning

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

MarkPositioningViaSubstitution

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

AlternateAnnotationForms

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

NlcKanjiForms

NLC Kanji Forms. Intended for East-Asian scripts.

NuktaForms

Nukta Forms. Intended for South-Asian scripts.

Numerators

Numerators. Intended for digits and math.

OldstyleFigures

Oldstyle Figures. Intended for digits and math.

OpticalBounds

Optical Bounds. Positioning feature intended for all scripts.

Ordinals

Ordinals. Intended for cased scripts.

Ornaments

Ornaments. Special feature intended for all scripts.

ProportionalAlternateWidths

Proportional Alternate Widths. Intended for East-Asian scripts.

PetiteCapitals

Petite Capitals. Intended for cased scripts.

ProportionalKana

Proportional Kana. Intended for East-Asian scripts.

ProportionalFigures

Proportional Figures. Intended for digits and math.

PreBaseForms

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

PreBaseSubstitutions

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

PostBaseForms

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

PostBaseSubstitutions

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

ProportionalWidths

Proportional Widths. Intended for East-Asian scripts.

QuarterWidths

Quarter Widths. Intended for East-Asian scripts.

Randomize

Randomize. Ligation and alternate feature intended for all scripts.

RequiredContextualAlternates

Required Contextual Alternates. Intended for West-Asian scripts.

RakarForms

Rakar Forms. Intended for South-Asian scripts.

RequiredLigatures

Required Ligatures. Intended for West-Asian scripts.

RephForms

Reph Forms. Intended for South-Asian scripts.

RightBounds

Right Bounds. Positioning feature intended for all scripts.

RightToLeftAlternates

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

RightToLeftMirroredForms

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

RubyNotationForms

Ruby Notation Forms. Intended for East-Asian scripts.

RequiredVariationAlternates

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

StylisticAlternates

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

ScientificInferiors

Scientific Inferiors. Intended for digits and math.

OpticalSize

Optical Size. Special feature intended for all scripts.

SmallCapitals

Small Capitals. Intended for cased scripts.

SimplifiedForms

Simplified Forms. Intended for East-Asian scripts.

StylisticSet1

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

StylisticSet2

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

StylisticSet3

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

StylisticSet4

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

StylisticSet5

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

StylisticSet6

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

StylisticSet7

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

StylisticSet8

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

StylisticSet9

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

StylisticSet10

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

StylisticSet11

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

StylisticSet12

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

StylisticSet13

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

StylisticSet14

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

StylisticSet15

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

StylisticSet16

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

StylisticSet17

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

StylisticSet18

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

StylisticSet19

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

StylisticSet20

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

MathScriptStyleAlternates

Math Script Style Alternates. Intended for digits and math.

StretchingGlyphDecomposition

Stretching Glyph Decomposition. Intended for West-Asian scripts.

Subscript

Subscript. Ligation and alternate feature intended for all scripts.

Superscript

Superscript. Ligation and alternate feature intended for all scripts.

Swash

Swash. Ligation and alternate feature intended for all scripts.

Titling

Titling. Ligation and alternate feature intended for all scripts.

TrailingJamoForms

Trailing Jamo Forms. Intended for East-Asian scripts.

TraditionalNameForms

Traditional Name Forms. Intended for East-Asian scripts.

TabularFigures

Tabular Figures. Intended for digits and math.

TraditionalForms

Traditional Forms. Intended for East-Asian scripts.

ThirdWidths

Third Widths. Intended for East-Asian scripts.

Unicase

Unicase. Intended for cased scripts.

AlternateVerticalMetrics

Alternate Vertical Metrics. Feature depending on writing direction.

VattuVariants

Vattu Variants. Intended for South-Asian scripts.

VerticalContextualHalfWidthSpacing

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

VerticalWriting

Vertical Writing. Feature depending on writing direction.

AlternateVerticalHalfMetrics

Alternate Vertical Half Metrics. Feature depending on writing direction.

VowelJamoForms

Vowel Jamo Forms. Intended for East-Asian scripts.

VerticalKanaAlternates

Vertical Kana Alternates. Intended for East-Asian scripts.

VerticalKerning

Vertical Kerning. Feature depending on writing direction.

ProportionalAlternateVerticalMetrics

Proportional Alternate Vertical Metrics. Feature depending on writing direction.

VerticalAlternatesAndRotation

Vertical Alternates and Rotation. Feature depending on writing direction.

VerticalAlternatesForRotation

Vertical Alternates for Rotation. Feature depending on writing direction.

SlashedZero

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.

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.

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.

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

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.