2017-02-12 4 views
1

Ich erstelle ein IDWriteTextLayout Objekt durch den folgenden Code,Wie erhält man in DirectWrite die richtige Textbreite für Schrägschrift?

hr = g_pDWriteFactory->CreateTextLayout(text, textLength, *g_pTextFormat, 200000000, 200000000, g_pTextLayout); 

dann die Textbreite von Textmetrik erhalten,

DWRITE_TEXT_METRICS dtm; 
    pTextLayout->GetMetrics(&dtm); 
    float minHeight = dtm.height; 
    float minWidth = dtm.widthIncludingTrailingWhitespace; 

was mich verwechseln ist, ob die Art des Gusses ist DWRITE_FONT_STYLE_OBLIQUE oder DWRITE_FONT_STYLE_NORMAL , die Breite der gleichen Zeichenfolge ist der gleiche Wert. Warum? Ich erwarte, dass, wenn der Schriftstil DWRITE_FONT_STYLE_OBLIQUE ist, die Breite größer sein sollte. Wie kann ich die richtige Breite für schrägen Text bekommen?

Danke.

Antwort

0

Layout-Metriken basieren auf Font-Design-Metriken, entweder angedeutet oder nicht, und nicht auf der tatsächlichen Tintenbox für jedes Glyph. Wenn Sie Messwerte erhalten möchten, die der gerenderten Bitmap-Größe näher entsprechen, können Sie zurückgegebene Layout-Messwerte mit den Daten GetOverhangMetrics() zurückgeben. Aber am Ende ist die einzige Möglichkeit, die genaue Pixelgröße des resultierenden Layouts zu erkennen, das Rendering.

Antwort auf Ihre Frage, zurückgegebene Layout-Metriken für schräge Schrift sind bereits korrekt, sie bedeuten nur etwas anderes als Sie erwarten.

Verwandte Themen