slug: Eric Lengyel's all-in-one solution. Has patented slug algorithim (free if you negotiate use on a free purpose, porting interface to X-Lang is problably non-trivial).
GNOME/pango: High-level do-it-all library.
Apple/Core Text
MicrosoftDocs/DirectWrite
kb_text_shape: Unicode text segmentation and OpenType shaping by Jimmy Lefevre.
- The modern text processing pipeline: Preface
- The modern text processing pipeline: Overview
- The modern text processing pipeline: Segmentation
- Affine KB notes (WIP)
- Q: performance benchmarks #21
runic: Odin community effort towards a all-in-one solution, ttf/opentype parser, shaper, renderer, and some other goodies.
ColleagueRiley/RFont: Claims to target better perforamnce than fontstash.
Decided to directly intergrate stb_truetype.h instead of keeping it separate (There is an option to define RFONT_EXTERNAL_STB
).
silnrsi/Graphite: "smart font" system developed specifically to handle the complexities of lesser-known languages of the world.
Host-Oman/libraqm: A library for complex text layout
hypernewbie/VEFontCache: VE Font Cache is a single header-only GPU font rendering library designed for game engines. (Uses harfbuzz and stb_truetype)
- Ed94/VEFontCache-Odin: Ended up porting & overhauled this to Odin-lang
- Uses a 4-layered atlas cache texture with CPU triangulated vert draw-list for very efficient but slightly reduced text quality.
- Shader sample only supports greyscale anti-aliasing.
- Shaper & Parser will be overridable. (Harfbuzz & stb_truetype for now)
- Affine KB docs (WIP)
JimmyLefevre/kb - kb_text_shape: Has a parser. Might be the best right now (perf wise).
jon-lipstate/runic: See ttf package (WIP).
stb/stb_truetype: Faster parsing and less bloated than freetype.
freetype
englerj/odin-freetype
odin-lang/Odin/vendor/stb/truetype/stb_truetype.odin
harfbuzz/ttf-parser (rust)
redox-os/rusttype
MSDN - True Type
MSDN - OpenType Specification
khaledhosny/ots - OpenType Sanitizer
harfbuzz: Industry standard all-in-one text shaping.
JimmyLefevre/kb - kb_text_shape: Has a shaper.
jon-lipstate/runic: See shaper package (WIP).
hamza: Alternative WIP text shaper.
memononen/budouxc: Word boundary detection for east-asian languages.
adah1972/libunibreak: Grapheme and line-break detection.
crowbar: An application for debugging the layout tables of an OpenType font.
JimmyLefevre/kb - kb_text_shape: Has segmentation via breaks (Clustering is a TODO)
memononen/Skribidi: Bi-directional text stack for building UIs. Seems to be a nice all-in-one solution.
Fribidi: GNU Bi-directional detection.
Tehreer/SheenBidi: Bi-directional detection.
unicode-org/icu: Does quite a bit but specifically also does segmenting
Chlumsky/msdfgen
fontdue
(Self-proclaimed "fastest rasterizer")
fontstash
Supported by sokol: sokol/util/sokol_fontstash.h
There are several forks for fonstash... Going to elabroate on them in a separate file
azsn/gllabel: GPU Vector Text Rendering
jtsiomb/libdrawtext
tomolt/libschrift
bzt/scalable-font: Scalable Screen Font renderer and file format specification
State of Text Rendering 2024
Text Rendering Hates You
Summer of Code 2012 - Text processing
npx-imx/gtec-demo-frameowrk/Doc/FslSimpleUI
Implementing a Font Reader and Rasterizer from Scratch, Part 1: TTF Font Reader
LearnOpenGL - Text Rendering
Improving Learn OpenGL's Text Rendering Example | Adventures in Coding
Repo for above vod: johnWRS/LearnOpenGLTextRenderingImprovement
GPU Gems 3: Chapter 25. Rendering Vector Art on the GPU
Writing a TrueType font renderer
Wikibooks/OpenGL_Programming/... Text Rendering 01
02 of above
Simple good quality subpixel text rendering in OpenGL with stb_truetype and dual source blending
Immediate-Mode-UI/Nuklear/nuklear_font.c
raddebugger (non-trivial to digest solution)
refterm
ocornut/imgui/imgui_draw.cpp#L4006
4coder-archive/4coder
gl-4.5-subpixel-text-rendering
GPU text rendering with vector textures
Efficient 2D Signed Distance Field Generation on GPU
GreenLighting/gpu-font-rendering
evanw/theta
Related article for theta's implementation
MSDFGL - OpenGL-accelerated implementation of the multi-channel signed distance-field algorithm.
andrewlowndes/perfect-antialiasing: Antialiasing via conservative rasterisation and analytical area computation
GPU Gems 2: Chapter 42. Conservative Rasterization
NV Path Rendering
OpenVG
ajstarks/openvg
ShivaVG: open-source ANSI C OpenVG
ileben/ShivaVG
amanithvg
SIGGRAPH2007: Improved Alpha-Tested Magnification for Vector Textures and Special Effects
Resolution Independent Curve Rendering using Programmable Graphics Hardware
Higher Quality 2D Text Rendering
Wavelet Rasterization
Wikipedia
metaflop/metaflop-www
Metapost
Unicode Technical Reports
International Components for Unicode
A Vector Graphics Renderer — part 1
A Vector Graphics Renderer — part 2
A Vector Graphics Renderer — part 3
Revisiting Vector Graphics on the GPU
Orca Vector Graphics Backend
Graphics 2[7] Baking Optimized Fonts Data
Graphics [8]: Low Level Rendering API Part 1
Graphics [9]: Low Level Rendering API Part 2
Graphics [10]: High Level Rendering API
...
ded editor
Legendary Font Rendering
Rendering Text Editor on GPU
OpenGL Text Rendering for My Immediate UI Library - Offline Stream #02
Google Fonts: Typeface
Wikipeida - Outline
Wikipedia - Anatomy
Sociology of Fonts - Defining the Terms Part 1: Anatomy
Sociology of Fonts - Defining the Terms Part 2: Process
Sociology of Fonts - Defining the Terms Part 3: Categorization
The goal here was to find some solution that was small and preferrably interopped well with odin-lang. So, everything that was either not written in C or was not going to be an easy port, was ignored.
Now I just keep this in sync with anything I find while working on my fork of VEFontCache.
VEFontCache will most likely stay in a relatively "finished" state for the forseable future. Much of my interest have shifted to maybe utilizing the runic library when there is time to spruce it up.