Text shaping
Text shaping is the process of converting text to glyph indices and positions as part of text rendering.[1] It is complementary to font rendering as part of the text rendering process; font rendering is used to generate the glyphs, and text shaping decides which glyphs to render and where they should be put on the image plane.[2] Unicode is generally used to specify the text to be rendered.
Text shaping results in substantially better results on Latin script; for some scripts with complex text layout such as Arabic script, text shaping is necessary for text to be readable at all.[3]
Most graphical user interface systems, including those in MacOS, iOS,[4] and Microsoft Windows have their own native text rendering engines that include text shaping. Microsoft's Uniscribe framework permits the use of pluggable shaping engines.[5] Monotype's WorldType system also provides shaping functions.[6]
In the open source world, HarfBuzz is a popular text shaping engine. According to HarfBuzz's developers, HarfBuzz is used by a range of software products including Android, Chrome, ChromeOS, Firefox, GNOME, GTK+, KDE, Qt, LibreOffice, OpenJDK, XeTeX, PlayStation, Microsoft Edge, Adobe Photoshop, Illustrator, InDesign, and Godot Engine.[7]
Text shaping engines require descriptions of shaping properties and rules packaged in a format known as a shaping model. Shaping models include OpenType Layout, Graphite, and Apple Advanced Typography.[8]
See also
- Font rasterization
- Kerning
- Ligature (typography)
- Layout engine
- Complex text layout
- Line wrap and word wrap
- Pagination
References
- ↑ "What is HarfBuzz?: HarfBuzz Manual". https://harfbuzz.github.io/what-is-harfbuzz.html.
- ↑ "Shaping – Fonts Knowledge" (in en). https://fonts.google.com/knowledge/glossary/shaping.
- ↑ "Shaping – Fonts Knowledge" (in en). https://fonts.google.com/knowledge/glossary/shaping.
- ↑ "Language Tag Table - TrueType Reference Manual - Apple Developer". https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html.
- ↑ Karl-Bridge-Microsoft (2021-01-07). "Uniscribe - Win32 apps" (in en-us). https://learn.microsoft.com/en-us/windows/win32/intl/uniscribe.
- ↑ "WorldType | Monotype." (in en). 2019-10-22. https://www.monotype.com/products/embedded-solutions/worldtype.
- ↑ harfbuzz/harfbuzz, HarfBuzz, 2024-06-23, https://github.com/harfbuzz/harfbuzz, retrieved 2024-06-24
- ↑ "text-shaping/docs/otl.md at main · typotheque/text-shaping" (in en). https://github.com/typotheque/text-shaping/blob/main/docs/otl.md.
