Truetype og 2D grafik

Har lavet en filparser og renderer til truetype fonte. Hver truetype glyph er beskrevet som konturer, som består af enten linier eller kvadratiske Bézier-kurver. Der findes også composite glyphs som består af flere andre glyphs med specielle transformeringer, f.eks. består é af et almindeligt e og en ´ accent-glyph placeret det helt rigtige sted.

Der understøttes også kerning, som er specielle justeringer af afstandene mellem tegn. I nedenstående kan det bla. ses ved at C går under r.

Jeg er mest interesseret i konturerne - hvorfor jeg ikke gider fylde dem ud. Det er nu heller ikke helt nemt. Den overordnede plan er selvfølgelig at lave 3D-objekter ved at extrude truetype glyphs.

Min truetype-kode bruger Unicode, wchar_t og std::wstring hele vejen igennem, hvilket er mere end man kan sige om min Scheme og R5RS-standarden, som jeg implementerede. Den kommende Scheme-standard, R6RS, bruger Unicode fra inderst til yderst, så den skal jeg snart have taget hul på.

For at kunne teste truetype-koden udvidede jeg min Scheme med flere funktioner til at plotte 2D grafik. Både punkter, linier, cirkler og Bézier-kurver. Disse grafikker kan man således beregne undervejs i sin 3D-scene-fil og bruge som textures direkte fra memory.

Man kan også vælge at gemme grafikken i diverse filformater fra Scheme-koden. Dermed har jeg fået lavet mig en lille testbed til at lege med forskellige 2D grafik-algoritmer i Scheme. For at prøve mine plot-funktioner af undervejs lavede jeg nogle test-billeder. Herunder en bregne-fraktal og nogle Bresenham-linier. Scheme-koden til bregnen kan ses her.