Unit TTFontsTypes

DescriptionusesClasses, Interfaces, Objects and RecordsFunctions and ProceduresTypesConstantsVariables

Description

Unit definiujacy typy do fontow truetype.

Definicje tych fontow moga zostac wygenerowane automatycznie przez moj program font2pascal.

Krotko, na czym polegaja True-type fonty ? Font = ciag znakow. Znak = ciag polygonow. Polygon = Ciag Linii. Linia = Linia lamana / Krzywa beziera (ciag punktow, w kazdym razie, tylko roznie interpretowany)

Zeby narysowac taki font trzeba rozwazyc wszystkie polygony. Punkty ktore znajduja sie w nieparzystej liczbie powinny byc wypelnione kolorem, pozostale punkty nie naleza do literki. W ten sposob np. literka "o" sklada sie z dwoch polygonow : zewnetrznego i wewnetrznego. Punkty na zewnatrz maja winding count = 0, punkty wewnarz wewnetrznego okregu maja winding count = 2 wiec tez nie naleza do literki. Tylko punkty pomiedzy dwoma koleczkami maja winding count = 1 i one wlasnie tworza literke.

Z powyzszego wynika jak wyrenderowac literke pod OpenGL'em : uzyc tesselatora z GLU_TESS_WINDING_ODD i wrzucic mu wszystkie polygony. Krzywe Beziera mozna rozkladac na linie lamane z taka dokladnoscia jakiej chcesz (mozna nawet brac je za linie lamane - korzystajac z milych wlasnosci krzywych Beziera, wziecie krzywej lamanej z punktow kontrolnych krzywej tez jest jakims przyblizeniem krzywej). (patrz OpenGLTTFonts)

Overview

Classes, Interfaces, Objects and Records

Name Description
packed record TTTFCharItem  
record TTTFCharInfo  
packed record TTTFChar typ TTTFChar nie jest typem ktorego zmienne bedziemy tworzyc.

Functions and Procedures

function TTFontSimpleDescend(font: PTrueTypeFont): Single;
function TTFontSimpleRowHeight(font: PTrueTypeFont): Single;
function TTFontTextWidth(font: PTrueTypeFont; const s: string): Single;
function TTFontTextHeight(font: PTrueTypeFont; const s: string): Single;

Types

TPolygonKind = (...);
PTTFCharItem = ˆTTTFCharItem;
PTTFChar = ˆTTTFChar;
TTrueTypeFont = array[char] of PTTFChar;
PTrueTypeFont = ˆTTrueTypeFont;

Description

Functions and Procedures

function TTFontSimpleDescend(font: PTrueTypeFont): Single;

liczy Descend prosto, czyli jako (height y) - (height a). To bedzie dzialac dobrze dla normalnych fontow. Dla nienormalnych nalezaloby przegladnac informacje o wszystkich literkach i wybrac ta z najwiekszym Descend'em.

function TTFontSimpleRowHeight(font: PTrueTypeFont): Single;

simple row height := height('Mg')

function TTFontTextWidth(font: PTrueTypeFont; const s: string): Single;
 
function TTFontTextHeight(font: PTrueTypeFont; const s: string): Single;
 

Types

TPolygonKind = (...);
 
Values
  • pkNewPolygon:
  • pkLines:
  • pkBezier:
  • pkPoint:
PTTFCharItem = ˆTTTFCharItem;
 
PTTFChar = ˆTTTFChar;
 
TTrueTypeFont = array[char] of PTTFChar;
 
PTrueTypeFont = ˆTTrueTypeFont;
 

Generated by PasDoc 0.10.0 on 2008-02-25 00:00:38