Frage

Der gemeinsame Weg, um eine Schriftart mit GDI erstellen, um die gewünschten Punktgröße und das Zielgerätes der vertikale Auflösung (DPI) wie folgt zu verwenden:

LOGFONT lf = {0};
lf.lfHeight = -MulDiv(point_size, GetDeviceCaps(hdc, LOGPIXELSY), 72);
...
HFONT hfont = CreateFontIndirect(&lf);

den Standard-Zuordnungsmodus MM_TEXT Angenommen, diese wandelt point_size in die Pixelhöhe für das gewünschte Gerät. (Dies ist eine gemeinsame Annäherung. Es gibt tatsächlich 72,27 Punkte in einem Zoll, nicht 72) (Das Minuszeichen bedeutet, dass ich die aktuelle Zeichenhöhe angeben will, nicht die Zellenhöhe).

Wenn ich eine Seitwärts Schriftart erstellen möchten - das heißt, eine mit einer Orientierung und Hemmung von 90 Grad - verwende ich LOGPIXELSX statt LOGPIXELSY? Für einige der Drucker Ich bin Targeting sind die horizontalen und vertikalen Auflösungen unterschiedlich.

Im Allgemeinen, wenn ich einen Winkel von theta will, kann ich kombinieren LOGPIXELSX und LOGPIXELSY? Ich denke an so etwas wie folgt aus:

// Given theta in degrees (e.g., theta = 45.0) ...
double theta_radians = theta * 2.0 * pi / 360.0;
int dpi = static_cast<int>(GetDeviceCaps(hdc, LOGPIXELSX) * sin(theta_radians) +
                           GetDeviceCaps(hdc, LOGPIXELSY) * cos(theta_radians) +
                           0.5);
LOGFONT lf = {0};
lf.lfHeight = -MulDiv(point_size, dpi, 72);
// Set escapement and orientation to theta in tenths of a degree.
lf.lfEscapement = lf.lfOrientation = static_cast<LONG>(theta * 10.0 + 0.5);
...

Das macht intuitiv Sinn für mich, aber ich frage mich, ob das wirklich ist, wie die GDI Schriftart-Zuordnung und Druckertreiber arbeiten.

Keine korrekte Lösung

Andere Tipps

1) Es gibt 72 Punkte / Zoll. (Früher 72,27 sein, aber wurde geändert.) 2) Die Kombination LOGPIXELSX und LOGPIXELSY in der Art und Weise, die Sie tun, ist in Ordnung, aber 3) Die Schriftart-Zuordnung sieht nicht bei Hemmung und Orientierung, wenn die Schriften abbildet. Die LogPixels Werte werden nur als Teil der Koordinatentransformation verwendet werden.

http://msdn.microsoft.com/en- us / library / ms969909 (LoBand) aspx

Nicht sicher, wie die „Druckertreiber arbeiten“, weil die Aussage viele mögliche Treiber und Drucker enthalten könnten.

Sie können mit quadratischen Pixeln gerastert, dann nicht quadratischen dehnen. Sie können Glyphe Kurven verwandeln. Sie können noch etwas anderes tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top