Schriftgrößendiskrepanz in .NET GDI +?

8

Ich versuche, die Diskrepanz zwischen den Schriftgrößen, die Benutzer auswählen oder angeben (z. B. mit FontDialog ), und der von Schriftart Klasse in .NET.

Zum Beispiel:

%Vor%

Wenn Sie den obigen Code verwenden, erhalten Sie einige verwirrende Ergebnisse:

Wenn Sie 11 im Dialogfeld auswählen, wird 11.25

erstellt

Wenn Sie 12 im Dialogfeld auswählen, wird 12

angezeigt

Wenn Sie 14 im Dialogfeld auswählen, wird 14.25

angezeigt

Wenn Sie 16 im Dialogfeld auswählen, wird 15.75

angezeigt

Dieses Verhalten tritt unabhängig von der Schriftart auf, die Sie auswählen. Wie Sie von oben sehen können, gibt es kein Muster in der Diskrepanz, es scheint zufällig zwischen +0,25 und -0,25 zu variieren.

Ich verstehe das in den Benutzeroberflächen, indem ich die Schriftgröße immer nur als gerundete ganze Zahl zeige, aber ich schwöre, dass ich Textverarbeitungs- / DTP-Pakete gesehen habe, die es den Benutzern erlauben, Bruchschriftgrößen zu wählen - und diese Pakete werden nicht angezeigt das obige Verhalten bei der Interaktion mit Windows-Schriftdialogfeldern.

Kann jemand dafür eine rationale Erklärung liefern? Gibt es eine Best-Practice-Methode zum Anzeigen der Schriftgröße in einer Benutzeroberfläche? Wie wäre es, wenn der Benutzer eine Bruchzahl wie "10 .5" möchte?

    
Bradley Smith 23.08.2010, 05:22
quelle

2 Antworten

1
  

Es gibt kein Muster in der Diskrepanz

Wie Sie sehen können, erfolgt die Schriftgröße in Schritten von 0,75.

Bearbeiten: Sie können die Feinabstimmung vornehmen, wenn Sie nicht den Schriftdialog verwenden, aber die Ergebnisse, die ich vermute, sind weniger erfreulich als die "bevorzugten" Größen.

    
leppie 23.08.2010, 08:40
quelle
12

Betrachten Sie diese Leckerbissen:

  • Ein Zoll, als Ergebnis dessen, wie diese Dinge in der Geschichte entschieden werden, enthält 72 Punkte.
  • Normalerweise wird Windows mit einer logischen Auflösung von 96 Punkten pro Zoll ausgeführt.
  • Hmm, OK, wir haben Punkte, Zoll und Punkte - drei Einheiten, um die es hier geht.
  • GDI möchte wissen, wie viele Punkte zu zeichnen sind, und der Benutzer wählt Punkte .
  • Schließlich ist das Verhältnis von 72 Punkten pro Zoll / 96 Punkte pro Zoll = 0.75 Punkte pro Punkt.

Das ist 0,75 unglücklich! Es bedeutet, dass, wenn wir dem Benutzer erlauben, Punkte direkt zu wählen, dann würde das ideale Rendering nur auf einen Teil eines logischen Punkts zurückgreifen. Es wäre schön, wenn wir das gesamte Rendering auf den nächsten logischen Punkt bringen könnten.

Bereit? Hier gehen wir!

  • 11:
    • 11 Punkte / 72 Punkte pro Zoll = 0,153 Zoll * 96 Punkte pro Zoll = 14,667 Punkte, BARF!
    • Runden wir bis zu 15 Punkte,
    • SO dann 15 Punkte / 96 Punkte pro Zoll * 72 Punkte pro Zoll = 11,25 Punkte.
  • 12:
    • 12/72 * 96 = 16 Punkte.
    • Damit kann ich leben, kein Fudging nötig.
  • 16:
    • 16/72 * 96 = 21.3333, BARF!
    • Lassen Sie uns auf 21 Punkte / 96 * 72 = 15.75 runden, viel schöner.

Sie bekommen die Idee.

Denken Sie daran, dass sich diese Zahlen ändern, wenn der Benutzer seine logische Auflösung ändert (96 dpi, 120 dpi usw.)

    
Nicholas Piasecki 31.08.2010 01:11
quelle

Tags und Links