This code intends to show how to display fonts efficiently using regular C, Freetype and OpenGL. The idea is to use a single texture and a single vertex buffer. The code is fairly simple and organized as follow:
-
texture-font: The texture-font structure is in charge of creating bitmap glyphs and to upload them to the texture atlas.
-
texture-atlas: This structure is responsible for the packing of small regions into a bigger texture. It is based on the skyline bottom left algorithm which appear to be well suited for storing glyphs. More information at: http://clb.demon.fi/files/RectangleBinPack.pdf
-
vector: This structure loosely mimics the std::vector class from c++. It is used by texture-atlas (for storing nodes), texture-font (for storing glyphs) and font-manager (for storing fonts). More information at: http://www.cppreference.com/wiki/container/vector/start
-
markup: Simple structure that describes text properties (font family, font size, colors, underline, etc.)
-
font-manager: Structure in charge of caching fonts.
-
vertex-buffer: Generic vertex buffer structure inspired by pyglet (python). (more information at http://www.pyglet.org)
-
edtaa3func: Distance field computation by Stefan Gustavson (more information at http://contourtextures.wikidot.com/)
-
makefont: Allow to generate header file with font information (texture + glyphs) such that it can be used without freetype.
- Ryan.H.Kawicki (Initial CMake project)
- Julian Mayer (Several bugfixes and code for demo-opengl-4.cc)
- Sylvain Duclos (Android port)
- Wang Yongcong (Improvements on the windows build and code review)
- Jonas Wielicki (Bug report & fix on the CMakefile)
- whatmannerofburgeristhis (Bug report in makefont)
- Andrei Petrovici (Fine analysis of the whole code and report of potential problems)
- Cristi Caloghera (Report on bad vertex buffer usage)
- Andrei Petrovici (Code review)
- Kim Jacobsen (Bug report & fix)
- bsoddd (Bug report & fix)
- Greg Douglas (Bug report & fix)
- Jim Teeuwen (Bug report & fix)
- quarnster (Bug report & fix)
- Per Inge Mathisen (Bug report & fix)
- Wojciech Mamrak (Code review, bug report & fix)
- Wael Eloraiby (Put code to the C89 norm and fix CMakefile)
- Christian Forfang (Code review, fix & patch for 3.2 core profile)
- Lukas Murmann (Code review & fix for 3.2 core profile)
- Jérémie Roy (Code review, fix and new ideas)
- dsewtz (Bug report & fix)
- jcgamestoy (Bug report & fix)
- Behdad Esfahbod (Bug fix on harfbuzz demo)
- Marcel Metz (Bug report & fix, CMmake no demo option, makefont parameters)
- PJ O'Halloran (svn to git migration)
- William Light (Face creation from memory)
- Jan Niklas Hasse (Bug report & fix + README.md)
- Pierre-Emmanuel Lallemant (Bug report & fix + travis setup)
- Robert Conde (Bug report & fix)
- Mikołaj Siedlarek (Build system bug fix)
- Preet Desai (Bug report & fix)
- Andy Staton (CMake fix and added namespace safeguard (avoiding glm collisions))
- Daniel Burke (Removed GLEW dependency and fix problems with font licences)