Muitas pessoas conhecem o problema dos grĂĄficos tridimensionais - a falta de soluçÔes leves de plataforma cruzada na questĂŁo da saĂda de texto.
A maioria das implementaçÔes permite que vocĂȘ use a fonte selecionada como uma textura. A biblioteca ttf2mesh publicada implementa outra maneira - converte os caracteres vetoriais de fonte TrueType em objetos de grade. Isso permite exibir o texto como um conjunto de triĂąngulos.

Essa abordagem tem vantagens e desvantagens importantes. A complexidade da tarefa descrita abaixo e a contemplação das magnĂficas formas de design de fontes trouxeram muito prazer ao desenvolvimento. Espero que vocĂȘ goste tambĂ©m.
ImersĂŁo no problema
No site stackoverflow, vocĂȘ pode se deparar com a pergunta "Como desenhar texto usando apenas mĂ©todos OpenGL?" . Uma resposta detalhada começa com a frase "Por que Ă© difĂcil". Darei uma breve tradução desta resposta, uma vez que Ă© melhor - dificilmente Ă© possĂvel descrever o problema.
Fontes comuns (como TrueType ou OpenType) tĂȘm um formato vetorial para representar caracteres: seu contorno Ă© definido por um conjunto de curvas de Bezier.

â OpenGL, (, , ).
, CPU, â OpenGL- . , . :

, . , web- (CSS-sprites).
FOSDEM 2014, , :
- : . GPU . : ; O(N log N).
- . : , . Resolution independent cubic bezier drawing on GPU (Blinn/Loop)
- OpenVG. : API , (. OpenGL, OpenVG. Draw text OpenVG implementation)
, 3d- 2016 . .. "Distance fields" ( , . ). .
FreeType
FreeType . FTGL, API, "Distance fields" .
â libgdx.
github.com/nothings/stb/blob/master/stb_truetype.h
www.angelcode.com/products/bmfont
, . (DDS, PNG) . â .
FOSDEM 2014 .
: â ? 6000 ( Ubuntu ):

2.5 (Times New Roman , 15000 ).
, , ( )? ( , , , GPU ), .
O(N log N)
, , . , ( ) â . log(N) . , . , , .. " " , , . , .
, . , :
: ; .
. "" "", .
ttf2mesh
" ". ttf2mesh â (ttf2mesh.h ttf2mesh.c) C99. , :
API. , ttf2mesh.h doxygen-. ttf_export_to_obj, Wavefront .obj. , . examples - ttf2obj.
:
- TTF- ,
- ( )
5.1.
5.2. ( )
5.3.
5.4.
TTF-
Microsoft (OpenType specification). OpenType- (.otf) â TrueType- (.ttf), , . , , TTF, , OTF TTC.
. ( ELF ) TrueType ⊠. ⊠, , .
TTF- Windows 7 font list Ubuntu 18.04.4 LTS ( 500 TTF ).
TrueType â . .
â , . outline quality .

.
ttf2mesh . TTF_QUALITY_LOW, TTF_QUALITY_NORMAL TTF_QUALITY_HIGH. . .

"Q" 76, 97 175 .
, . â . . , . . :
, , U+2592 (â). . , , Ctrl+V. ⊠: , .
, ( ), EPSILON.
â .
. , . , - , . . ?
â .
Microsoft Apple. . , Microsoft Apple (. Overlapping contours) .
, ( , ?). â , . , even-odd , nonzero.
, 0.1% Windows 7. 497931 680 UNICODE:
UNICODEBasic Latin â 14 errors
Latin-1 Supplement â 9 errors
Latin Extended-A â 2 errors
Greek and Coptic â 2 errors
Thai â 11 errors
Letterlike Symbols â 1 errors
Mathematical Operators â 1 errors
Block Elements â 1 errors
Geometric Shapes â 1 errors
Hiragana â 1 errors
Enclosed CJK Letters and Months â 1 errors
CJK Unified Ideographs Extension A â 74 errors
CJK Unified Ideographs â 555 errors
Private Use Area â 3 errors
CJK Compatibility Ideographs â 4 errors
, 36 497931 ( 0.01%). "Basic Latin", : IrisUPC, KodchiangUPC, LilyUPC, Footlight MT Light, Kunstler Script, Papyrus, Parchment Viner Hand ITC. UPC (Unity Progress Company).
, . , .
. "B", , 3 : - . "" 1 -. - . .

, , . U+00A2 â (), , ().
)
) 
. â , . ⊠. , . â "/" "C". . â , - "" .
, , . . . .

1) (y). p19, p15 .
2) . . , advancing front, . . .
3) , , 2 . , .
4) .3 , . p2.
5) . , . p5.
( Point event) , 2008 V. Domiter & B. Ćœalik "Sweepâline algorithm for constrained Delaunay triangulation" (DOI: 10.1080/13658810701492241).
( ) , . , , . .
. , .

( X â , Y â ).
, , ( ) O(N). , O(N log N) , , . .
, , 2000 . "Tibetan Machine Uni" U+0FC7 (Tibetan Symbol Rdo Rje Rgya Gram) :
:

OpenGL MSAA:

...
. ( , , ) . , . .
ttf2mesh , . OBJ . , SVG , , PostScript.
. â , .

A biblioteca ttf2mesh possui uma licença MIT e estĂĄ disponĂvel aqui . Espero que seja socialmente Ăștil.