Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 22.01.2008, 21:05 Titel: Pixel -> Points und vis a vis |
|
|
Mal ne Frage. Das Thema zermürbt mir nämlich schon seit gestern mein Hirn.
Ich beschäftige mich ja gerade mit der FreeType Lib. Nun lädt diese einen Font in der Größenangabe POINTS. Ich würde aber lieber PIXEL verwenden.
Nun hab ich schon diverse Foren abgegrast und auch Google angestrengt und auch viele, viele Beispiele und Codeschnipsel etc. gefunden die mich jedoch nur noch mehr verwirren.
Daher meine allgemeine Anfrage:
Wie zum Henker komme ich nun korrekt von PIXEL nach POINTS?
Hintergrund: Ich möchte den Font so laden das - egal auf welchem System das Programm später läuft - der geladene Font z.B. 33 Pixel hat. Meiner Meinung nach kann das doch eigentlich nicht so schwer sein, dennoch grabbeln die Beispielcodes hier mit GetDeviceCaps und allen möglichen Berechnungen herum.
Vielen, vielen Dank schonmal. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 22.01.2008, 22:14 Titel: |
|
|
Die Einheit "point" ist für den Druck auf Papier gedacht. Dort ist 1 pt = 0,25 mm nach DIN. Auf dem Bildschirm macht das aus zwei Gründen wenig Sinn. Erstens weiss die Software nichts von der Geometrie des Bildschirms und damit nicht, wie gross irgendein grafisches Objekt dort erscheint. ("Software an Buchstabe, wie gross bist du? - Buchstabe an Software: Ich bin 10 m hoch - du läufst auf einem ZX81 ..." ) Und zweitens ist dort alles eh relativ. Du kannst eine 12 pt-Schrift so gross oder klein darstellen wie du willst. Das nennt man dann Zoomen. Lediglich das Verhältnis der Fontgrössen zueinander ist definiert. Stell dir einen 1000 pt-Schriftzug vor, der innerhalb eines Flugsimulators auf einem Gebäude montiert ist. Je nach Entfernung zum Flugzeug ist er nun mal klein oder gross.
Was kannst du praktisch machen? Du kannst dir einen Standard festlegen. Z.B. SXGA-Schirm. Auf dem gibst du mit einem Standard-Editor die Buchstaben einer 12-pt-Schrift aus, machst einen Screenshot in einen Image-Viewer und zählst dort die Pixel aus. Voila, hast du eine Umrechnung. Aber universell gültig ist die natürlich nicht.
Viele Grüsse!
Croco |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.01.2008, 22:17 Titel: |
|
|
die umrechnung nach point nimmt allerdings das betriebssystem vor und das kann die resultierende größe schätzen. da diese allerdings nicht immer stimmt (bsp: 17" und 19" TFTs haben die selbe maximale auflösung!), wird die schrift niemals einheitlich groß sein. Aber das wäre nur halb so schlimm, wenn diese Umrechnung nicht auch noch OS zu OS variiert... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 22.01.2008, 22:28 Titel: |
|
|
Vielleicht hab ich mich ja doof ausgedrückt. Die Schrift soll NICHT auf jedem Monitor gleich groß sein im Sinne von 1cm hoch.
Sie soll aber auf jedem PC 33 Pixel ergeben. Wenn man einen Font lädt und hierbei für die gewünschte Größe Points angeben muß, diese aber wiederum an die Auflösung des jeweiligen Monitors oder PCs gebunden sind und das Betriebssystem dies beachtet, dann könnte es doch passieren das ich zwar angebe (als Beispiel) lade den Font mit 40 Points so das es 33 Pixel ergibt und stattdessen ergibt es beim User aber 35 Pixel weil er einen größeren Monitor oder so hat - das möchte ich nur vermeiden.
Oder liege ich mit dieser Annahme falsch und die 40 Points ergeben in jedem Fall und auf jedem PC 33 Pixel? _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.01.2008, 22:32 Titel: |
|
|
ergeben sie zumindest bei normal eingestellter schriftgröße, also kleine schriftarten (96 DPI). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 22.01.2008, 22:51 Titel: |
|
|
Siehste, da gehts schon los. Von sowas wie "kleine Schriftart eingestellt" soll das ganze nämlich unabhängig sein.
Stell dir einfach vor ich möchte das ganze für ein Grafikprogramm haben wo man Text in ein Bild macht. Wenn ich da 33 Pixel Schrifthöhe angebe soll die Schrift gefälligst auch 33 Pixel hoch sein und nicht nur dann wenn ich "kleine Schriftart" eingestellt hab.
Wenn ich ein Rechteck von 50 x 70 Pixel zeichne soll dies ja schließlich auch nicht plötzlich 70 x 100 groß sein
So lässt es sich wohl am besten beschreiben. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.01.2008, 22:52 Titel: |
|
|
ist mir schon klar, ich wollte nur meinen wissensstand mitteilen  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 23.01.2008, 12:51 Titel: |
|
|
Mach's doch so, wie ich oben geschrieben habe. Dann kriegst du deine Beziehung. Z.B. 12 pt = 20 Pixel hoch ==> pixel = 20/12 pt.
Ne objektive Relation kann es nicht geben. Warum, habe ich dir auch oben geschrieben.
Grüsse!
Croco |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 23.01.2008, 18:39 Titel: |
|
|
Wenn du das wirklich für ein Grafikprogramm benutzen willst ist die Lib wahrscheinlich einfach nur fehlplatziert da sie zur Textausgabe ist und nicht zur bearbeitung von Vektorgrafiken, du müsstes das File wohl selbst einlesen, dir die Vektorgrafiken rausziehen und damit dann arbeiten, dann kannste die auch strecken und falten wie's dir passt.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
|