namespace
TextText 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 DistanceFieldGlyphCacheGL new in Git master
- OpenGL glyph cache with distance field rendering.
- class FeatureRange new in Git master
- OpenType feature for a text range.
- class FreeTypeFont
- FreeType font plugin.
- class GlyphCacheGL new in Git master
- OpenGL 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'), Garay = Utility::Endianness::fourCC('G', 'a', 'r', 'a'), 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'), GurungKhema = Utility::Endianness::fourCC('G', 'u', 'k', 'h'), 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'), KiratRai = Utility::Endianness::fourCC('K', 'r', 'a', 'i'), 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'), OlOnal = Utility::Endianness::fourCC('O', 'n', 'a', 'o'), 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'), Sunuwar = Utility::Endianness::fourCC('S', 'u', 'n', 'u'), 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'), Todhri = Utility::Endianness::fourCC('T', 'o', 'd', 'r'), Toto = Utility::Endianness::fourCC('T', 'o', 't', 'o'), TuluTigalari = Utility::Endianness::fourCC('T', 'u', 't', 'g'), 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 DistanceFieldGlyphCache = DistanceFieldGlyphCacheGL deprecated in Git master
- OpenGL glyph cache with distance field rendering.
- using GlyphCache = GlyphCacheGL deprecated in Git master
- OpenGL 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
#include <Magnum/Text/AbstractFont.h>
Features supported by a font implementation.
Enumerators | |
---|---|
OpenData |
Opening fonts from raw data using AbstractFont:: |
FileCallback new in 2019.10 |
Specifying callbacks for loading additional files referenced from the main file using AbstractFont:: 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.
enum class Magnum:: Text:: GlyphCacheFeature: UnsignedByte new in 2019.10
#include <Magnum/Text/AbstractGlyphCache.h>
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:: |
ImageDownload |
enum class Magnum:: Text:: Alignment: UnsignedByte
#include <Magnum/Text/Alignment.h>
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::*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:: |
LineStartGlyphBounds new in Git master |
Alignment:: |
LineEnd new in Git master |
Alignment:: |
LineEndGlyphBounds new in Git master |
Alignment:: |
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:: |
BottomStartGlyphBounds new in Git master |
Alignment:: |
BottomEnd new in Git master |
Alignment:: |
BottomEndGlyphBounds new in Git master |
Alignment:: |
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:: |
MiddleStartIntegral new in Git master |
Alignment:: |
MiddleStartGlyphBounds new in Git master |
Alignment:: |
MiddleStartGlyphBoundsIntegral new in Git master |
Alignment:: |
MiddleEnd new in Git master |
Alignment:: |
MiddleEndIntegral new in Git master |
Alignment:: |
MiddleEndGlyphBounds new in Git master |
Alignment:: |
MiddleEndGlyphBoundsIntegral new in Git master |
Alignment:: |
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:: |
TopStartGlyphBounds new in Git master |
Alignment:: |
TopEnd new in Git master |
Alignment:: |
TopEndGlyphBounds new in Git master |
Alignment:: |
enum class Magnum:: Text:: ShapeDirection: UnsignedByte new in Git master
#include <Magnum/Text/Direction.h>
Direction a text is shaped in.
Enumerators | |
---|---|
Unspecified |
Unspecified. When set in AbstractShaper:: |
LeftToRight |
Left to right. When returned from AbstractShaper:: |
RightToLeft |
Right to left. When returned from AbstractShaper:: |
TopToBottom |
Top to bottom. When returned from AbstractShaper:: |
BottomToTop |
Bottom to top. When returned from AbstractShaper:: |
enum class Magnum:: Text:: LayoutDirection: UnsignedByte new in Git master
#include <Magnum/Text/Direction.h>
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
#include <Magnum/Text/Feature.h>
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::
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 |
|
AboveBaseForms |
|
AboveBaseMarkPositioning |
|
AboveBaseSubstitutions |
|
AlternativeFractions |
|
Akhand |
|
KerningForAlternateProportionalWidths |
|
BelowBaseForms |
|
BelowBaseMarkPositioning |
|
BelowBaseSubstitutions |
|
ContextualAlternates |
|
CaseSensitiveForms |
|
GlyphCompositionDecomposition |
|
ConjunctFormAfterRo |
|
ContextualHalfWidthSpacing |
|
ConjunctForms |
|
ContextualLigatures |
|
CenteredCjkPunctuation |
|
CapitalSpacing |
|
ContextualSwash |
|
CursivePositioning |
|
CharacterVariants1 |
|
CharacterVariants2 |
|
CharacterVariants3 |
|
CharacterVariants4 |
|
CharacterVariants5 |
|
CharacterVariants6 |
|
CharacterVariants7 |
|
CharacterVariants8 |
|
CharacterVariants9 |
|
CharacterVariants10 |
|
CharacterVariants11 |
|
CharacterVariants12 |
|
CharacterVariants13 |
|
CharacterVariants14 |
|
CharacterVariants15 |
|
CharacterVariants16 |
|
CharacterVariants17 |
|
CharacterVariants18 |
|
CharacterVariants19 |
|
CharacterVariants20 |
|
CharacterVariants21 |
|
CharacterVariants22 |
|
CharacterVariants23 |
|
CharacterVariants24 |
|
CharacterVariants25 |
|
CharacterVariants26 |
|
CharacterVariants27 |
|
CharacterVariants28 |
|
CharacterVariants29 |
|
CharacterVariants30 |
|
CharacterVariants31 |
|
CharacterVariants32 |
|
CharacterVariants33 |
|
CharacterVariants34 |
|
CharacterVariants35 |
|
CharacterVariants36 |
|
CharacterVariants37 |
|
CharacterVariants38 |
|
CharacterVariants39 |
|
CharacterVariants40 |
|
CharacterVariants41 |
|
CharacterVariants42 |
|
CharacterVariants43 |
|
CharacterVariants44 |
|
CharacterVariants45 |
|
CharacterVariants46 |
|
CharacterVariants47 |
|
CharacterVariants48 |
|
CharacterVariants49 |
|
CharacterVariants50 |
|
CharacterVariants51 |
|
CharacterVariants52 |
|
CharacterVariants53 |
|
CharacterVariants54 |
|
CharacterVariants55 |
|
CharacterVariants56 |
|
CharacterVariants57 |
|
CharacterVariants58 |
|
CharacterVariants59 |
|
CharacterVariants60 |
|
CharacterVariants61 |
|
CharacterVariants62 |
|
CharacterVariants63 |
|
CharacterVariants64 |
|
CharacterVariants65 |
|
CharacterVariants66 |
|
CharacterVariants67 |
|
CharacterVariants68 |
|
CharacterVariants69 |
|
CharacterVariants70 |
|
CharacterVariants71 |
|
CharacterVariants72 |
|
CharacterVariants73 |
|
CharacterVariants74 |
|
CharacterVariants75 |
|
CharacterVariants76 |
|
CharacterVariants77 |
|
CharacterVariants78 |
|
CharacterVariants79 |
|
CharacterVariants80 |
|
CharacterVariants81 |
|
CharacterVariants82 |
|
CharacterVariants83 |
|
CharacterVariants84 |
|
CharacterVariants85 |
|
CharacterVariants86 |
|
CharacterVariants87 |
|
CharacterVariants88 |
|
CharacterVariants89 |
|
CharacterVariants90 |
|
CharacterVariants91 |
|
CharacterVariants92 |
|
CharacterVariants93 |
|
CharacterVariants94 |
|
CharacterVariants95 |
|
CharacterVariants96 |
|
CharacterVariants97 |
|
CharacterVariants98 |
|
CharacterVariants99 |
|
PetiteCapitalsFromCapitals |
|
SmallCapitalsFromCapitals |
|
Distances |
|
DiscretionaryLigatures |
|
Denominators |
|
DotlessForms |
|
ExpertForms |
|
FinalGlyphOnLineAlternates |
|
TerminalForms |
|
TerminalForms2 |
|
TerminalForms3 |
|
FlattenedAccentForms |
|
Fractions |
|
FullWidths |
|
HalfForms |
|
HalantForms |
|
AlternateHalfWidths |
|
HistoricalForms |
|
HorizontalKanaAlternates |
|
HistoricalLigatures |
|
Hangul |
|
HojoKanjiForms |
|
HalfWidths |
|
InitialForms |
|
IsolatedForms |
|
Italics |
|
JustificationAlternates |
|
Jis78Forms |
|
Jis83Forms |
|
Jis90Forms |
|
Jis2004Forms |
|
Kerning |
|
LeftBounds |
|
StandardLigatures |
|
LeadingJamoForms |
|
LiningFigures |
|
LocalizedForms |
|
LeftToRightAlternates |
|
LeftToRightMirroredForms |
|
MarkPositioning |
|
MedialForms |
|
MedialForms2 |
|
MathematicalGreek |
|
MarkToMarkPositioning |
|
MarkPositioningViaSubstitution |
|
AlternateAnnotationForms |
|
NlcKanjiForms |
|
NuktaForms |
|
Numerators |
|
OldstyleFigures |
|
OpticalBounds |
|
Ordinals |
|
Ornaments |
|
ProportionalAlternateWidths |
|
PetiteCapitals |
|
ProportionalKana |
|
ProportionalFigures |
|
PreBaseForms |
|
PreBaseSubstitutions |
|
PostBaseForms |
|
PostBaseSubstitutions |
|
ProportionalWidths |
|
QuarterWidths |
|
Randomize |
|
RequiredContextualAlternates |
|
RakarForms |
|
RequiredLigatures |
|
RephForms |
|
RightBounds |
|
RightToLeftAlternates |
|
RightToLeftMirroredForms |
|
RubyNotationForms |
|
RequiredVariationAlternates |
|
StylisticAlternates |
|
ScientificInferiors |
|
OpticalSize |
|
SmallCapitals |
|
SimplifiedForms |
|
StylisticSet1 |
|
StylisticSet2 |
|
StylisticSet3 |
|
StylisticSet4 |
|
StylisticSet5 |
|
StylisticSet6 |
|
StylisticSet7 |
|
StylisticSet8 |
|
StylisticSet9 |
|
StylisticSet10 |
|
StylisticSet11 |
|
StylisticSet12 |
|
StylisticSet13 |
|
StylisticSet14 |
|
StylisticSet15 |
|
StylisticSet16 |
|
StylisticSet17 |
|
StylisticSet18 |
|
StylisticSet19 |
|
StylisticSet20 |
|
MathScriptStyleAlternates |
|
StretchingGlyphDecomposition |
|
Subscript |
|
Superscript |
|
Swash |
|
Titling |
|
TrailingJamoForms |
|
TraditionalNameForms |
|
TabularFigures |
|
TraditionalForms |
|
ThirdWidths |
|
Unicase |
|
AlternateVerticalMetrics |
|
VattuVariants |
|
KerningForAlternateProportionalVerticalMetrics |
|
VerticalContextualHalfWidthSpacing |
|
VerticalWriting |
|
AlternateVerticalHalfMetrics |
|
VowelJamoForms |
|
VerticalKanaAlternates |
|
VerticalKerning |
|
ProportionalAlternateVerticalMetrics |
|
VerticalAlternatesAndRotation |
|
VerticalAlternatesForRotation |
|
SlashedZero |
|
enum class Magnum:: Text:: Script: UnsignedInt new in Git master
#include <Magnum/Text/Script.h>
Script a text is written in.
The values are FourCC codes according to ISO 15924. Use script(char, char, char, char) or script(Containers::
Enumerators | |
---|---|
Unspecified |
Unspecified. When set in AbstractShaper:: |
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 |
Garay |
Garay, Unicode 16.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 |
GurungKhema |
Gurung Khema, Unicode 16.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 |
KiratRai |
Kirat Rai, Unicode 16.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 |
OlOnal |
Ol Onal, Unicode 16.0 |
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 |
Sunuwar |
Sunuwar, Unicode 16.0 |
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 |
Todhri |
Todhri, Unicode 16.0 |
Toto |
Toto, Unicode 14.0 |
TuluTigalari |
Tulu Tigalari, Unicode 16.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
#include <Magnum/Text/AbstractFont.h>
Set of features supported by a font implementation.
typedef Containers:: EnumSet<FontConverterFeature> Magnum:: Text:: FontConverterFeatures new in 2020.06
Features supported by a font converter.
typedef Containers:: EnumSet<GlyphCacheFeature> Magnum:: Text:: GlyphCacheFeatures new in 2019.10
#include <Magnum/Text/AbstractGlyphCache.h>
Set of features supported by a glyph cache.
typedef DistanceFieldGlyphCacheGL Magnum:: Text:: DistanceFieldGlyphCache
OpenGL glyph cache with distance field rendering.
typedef GlyphCacheGL Magnum:: Text:: GlyphCache
#include <Magnum/Text/GlyphCache.h>
OpenGL glyph cache.
typedef Renderer<2> Magnum:: Text:: Renderer2D
#include <Magnum/Text/Renderer.h>
Two-dimensional text renderer.
typedef Renderer<3> Magnum:: Text:: Renderer3D
#include <Magnum/Text/Renderer.h>
Three-dimensional text renderer.
Function documentation
Debug& Magnum:: Text:: operator<<(Debug& debug,
FontFeature value)
#include <Magnum/Text/AbstractFont.h>
Debug output operator.
Debug& Magnum:: Text:: operator<<(Debug& debug,
FontFeatures value)
#include <Magnum/Text/AbstractFont.h>
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)
#include <Magnum/Text/AbstractGlyphCache.h>
Debug output operator.
Debug& Magnum:: Text:: operator<<(Debug& output,
GlyphCacheFeatures value)
#include <Magnum/Text/AbstractGlyphCache.h>
Debug output operator.
Debug& Magnum:: Text:: operator<<(Debug& debug,
Alignment value)
#include <Magnum/Text/Alignment.h>
Debug output operator.
Alignment Magnum:: Text:: alignmentForDirection(Alignment alignment,
LayoutDirection layoutDirection,
ShapeDirection shapeDirection) new in Git master
#include <Magnum/Text/Alignment.h>
Alignment for layout and shape direction.
The layoutDirection
is currently expected to always be LayoutDirection::shapeDirection
never ShapeDirection::alignment
is *Start
or *End
, it's converted to *Left
or *Right
, respectively, if shapeDirection
is ShapeDirection::*Right
or *Left
, respectively, if shapeDirection
is ShapeDirection::
Debug& Magnum:: Text:: operator<<(Debug& debug,
ShapeDirection value)
#include <Magnum/Text/Direction.h>
Debug output operator.
Debug& Magnum:: Text:: operator<<(Debug& debug,
LayoutDirection value)
#include <Magnum/Text/Direction.h>
Debug output operator.
Debug& Magnum:: Text:: operator<<(Debug& debug,
Feature value)
#include <Magnum/Text/Feature.h>
Debug output operator.
Feature Magnum:: Text:: feature(char a,
char b,
char c,
char d) constexpr new in Git master
#include <Magnum/Text/Feature.h>
Create a Feature value from a four-character code.
Delegates to Utility::
Feature Magnum:: Text:: feature(Containers:: StringView fourCC) new in Git master
#include <Magnum/Text/Feature.h>
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
#include <Magnum/Text/Renderer.h>
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:: |
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::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::
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
#include <Magnum/Text/Renderer.h>
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::
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
#include <Magnum/Text/Renderer.h>
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::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
#include <Magnum/Text/Renderer.h>
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::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
#include <Magnum/Text/Renderer.h>
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::1
.
Range2D Magnum:: Text:: alignRenderedLine(const Range2D& lineRectangle,
LayoutDirection direction,
Alignment alignment,
const Containers:: StridedArrayView1D<Vector2>& positions) new in Git master
#include <Magnum/Text/Renderer.h>
Align a rendered line.
Parameters | |
---|---|
lineRectangle in | Rectangle spanning the whole line |
direction in | Layout direction. Currently expected to always be LayoutDirection:: |
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::
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::
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
#include <Magnum/Text/Renderer.h>
Align a rendered block.
Parameters | |
---|---|
blockRectangle in | Rectangle spanning all lines in the block |
direction in | Layout direction. Currently expected to always be LayoutDirection:: |
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::
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
#include <Magnum/Text/Renderer.h>
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
void Magnum:: Text:: renderGlyphQuadIndicesInto(UnsignedInt glyphOffset,
const Containers:: StridedArrayView1D<UnsignedShort>& indices) new in Git master
#include <Magnum/Text/Renderer.h>
Render 16-bit glyph quad indices.
See renderGlyphQuadIndicesInto(UnsignedInt, const Containers::
void Magnum:: Text:: renderGlyphQuadIndicesInto(UnsignedInt glyphOffset,
const Containers:: StridedArrayView1D<UnsignedByte>& indices) new in Git master
#include <Magnum/Text/Renderer.h>
Render 8-bit glyph quad indices.
See renderGlyphQuadIndicesInto(UnsignedInt, const Containers::
Containers:: Pair<UnsignedInt, UnsignedInt> Magnum:: Text:: glyphRangeForBytes(const Containers:: StridedArrayView1D<const UnsignedInt>& clusters,
UnsignedInt begin,
UnsignedInt end) new in Git master
#include <Magnum/Text/Renderer.h>
Find a glyph range corresponding to given byte range in the input text.
Assuming clusters
is a view containing cluster IDs returned from AbstractShaper::begin
and end
are byte positions in the text passed to AbstractShaper::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 complexity, with being size of the clusters
view.
Mapping in the other direction, from glyphs to input bytes, is simply clusters[i]
. See AbstractShaper::
Debug& Magnum:: Text:: operator<<(Debug& debug,
Script value)
#include <Magnum/Text/Script.h>
Debug output operator.
Script Magnum:: Text:: script(char a,
char b,
char c,
char d) constexpr new in Git master
#include <Magnum/Text/Script.h>
Create a Script value from a four-character code.
Delegates to Utility::
Script Magnum:: Text:: script(Containers:: StringView fourCC) new in Git master
#include <Magnum/Text/Script.h>
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.