amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2007-09-09, 14:41 h

MaikG
Posts: 5172
User
Wie kann man wenn man nicht weiss welcher Font kommt diesen
Zentrieren?

Ich bekomme das zwar immer mit einigen Fonts+Größen hin,
andere weichen dann wieder ab.

Hauptproblem ist die Vertikale Zentrierung.

Z.b. bei einem Rahmen(Varialbe größe) den man gezeichnet hat und
will darin mit Text etwas reinschreiben.
Ich habe die mitte des Rahmens und Font YSize. Nun rechne ich zur
mitte des Rahmens die halbe YSize dazu. Bei times 15 sieht
das z.b. ganz gut aus bei einer anderen schrift nicht mehr.

[ - Answer - Quote - Direct link - ]

2007-09-09, 14:59 h

thomas
Posts: 7721
User

TextLength() gibt dir die Breite eines Textes zurück.
TextExtent() gibt dir die Ausdehnung (Breite und Höhe) eines Textes.


Zum Beispiel:

Move(rp,area_x + (area_w - TextLength(rp,text,textlen)) / 2,area_y + (area_h - rp->TxHeight) / 2 + rp->TxBaseline);
Text(rp,text,textlen);

area_x, area_y : Position des Bereichs, auf dem zentriert werden soll
area_w, area_h : Breite und Höhe des Bereichs
rp : RastPort in den gezeichnet wird
text : Text, der zentriert werden soll
textlen : Länge des Texts, z.B. strlen(text)

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2007-09-09, 16:56 h

MaikG
Posts: 5172
User
Also bei times(15) ist es damit zu weit am oberen rand.

Mache ich:

Move(rp,area_x + (area_w - TextLength(rp,text,textlen)) / 2,area_y + 1 + (area_h - rp->TxHeight) / 2 + rp->TxBaseline);

ist es für times okay, für courier(15) aber wieder zu weit
am unteren rand. Also y Technisch so wie vorher. X sieht gut aus.

[ - Answer - Quote - Direct link - ]

2007-09-09, 19:20 h

thomas
Posts: 7721
User
So ist das halt. Nimm einen Text mit p oder g drin, dann sieht's ok aus.

Oder mach einfach den Rahmen größer, fällt es nicht so auf.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ Dieser Beitrag wurde von thomas am 09.09.2007 um 19:20 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2007-09-09, 22:16 h

MaikG
Posts: 5172
User
>So ist das halt. Nimm einen Text mit p oder g drin, dann sieht's ok
>aus.

Mit anderen worten es ist keine Rechnerische frage sondern
fonts weichen innerhalb ihres Rahmens in der Position ab?



[ - Answer - Quote - Direct link - ]

2007-09-10, 09:10 h

thomas
Posts: 7721
User
@MaikG:

Nein, die Fonts weichen nicht ab. Die Fonts haben eine Basislinie, das ist die Unterkante von "normalen" Zeichem, wie a, b, n, m, o usw.
Und dann gibt es Zeichen, die gehen auch unter die Basislinie (p, q, g etc.).

Du kannst den Text jetzt entweder so ausrichten, daß er mit allen Zeichen in den Rahmen paßt, also so, wie ich das oben beschrieben habe. Dann sieht das mit a, b usw. etwas zu hoch aus, aber p, q etc. passen auch rein. Oder du richtest den Text an der Basislinie aus (rp->TxBaseline+1 statt rp->TxHeight), dann sind p, q usw. zu tief, aber der Rest sieht ok aus.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2007-09-10, 10:06 h

MaikG
Posts: 5172
User
Naja ich hab schon immer den selben text genommen(ohne p+q).
Aber je nach Font ist einer genau richtig, ein anderer weicht ab.

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Fontsensitiv Zentrieren [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.