verschieden große Fonts auf 1 Linie

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

verschieden große Fonts auf 1 Linie

Beitrag von arturx »

Aus einem richmemo sollen mittels printer.canvas.textout verschieden große Schriften in bunter Reihenfolge ausgedruckt werden.
Diese sollen sich natürlich an einer gemeinsamen "Fußlinie" orientieren.
Aber : Die Buchstaben hüpfen hoch und runter bei :

Code: Alles auswählen

...
printer.begindoc;
canv := printer.canvas;
dyausgleich1 := canv.font.height; // dyausgleich := canv.textheight('blah') ist natürlich noch schlechter
canv.textout(0,y0-dyausgleich1,'Blah');
canv.font.size := canv.font.size * 4; // hier könnte man auch den fontnamen ändern etc
dyausgleich2 := canvas.font.height; 
x2 :=  canv.textwidth('Blah');
printer.canv.textout(x2,y0-dyausgleich2,'Blub');
printer.enddoc;
...
--> Woher kommt man die Info, wie groß der Abstand der "Fußpunkte" zum Boden des Textrect von Textout sind ?
--> Wie bekommt man unterschiedliche Fonts (sow.Name als auch Size) in der Höhe ausgerichtet ?

Es muss irgendeine Möglichkeit geben, denn in Richmemo z.B. richten sie sich wunderbar aus....
.

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: verschieden große Fonts auf 1 Linie

Beitrag von arturx »

Es ist wie vodoo:
egal wie lange ich etwas suche, die Lösung finde ich erst, wenn ich die Frage im Forum gepostet habe:

so funktionierts:

Code: Alles auswählen

 
        canv.GetTextMetrics({->}tm); //<-----
        asc := tm.Ascender;
        .....
        canv.TextOut(x,y-asc,'Blah');
.

Antworten