ID2D1RenderTarget::DrawGlyphRun takes the following params:
D2D1_POINT_2F baselineOrigin,
__in CONST DWRITE_GLYPH_RUN *glyphRun,
__in ID2D1Brush *foregroundBrush,
DWRITE_MEASURING_MODE measuringMode /*= DWRITE_MEASURING_MODE_NATURAL */
Where DWRITE_GLYPH_RUN is
struct DWRITE_GLYPH_RUN
{
__notnull IDWriteFontFace* fontFace;
FLOAT fontEmSize;
UINT32 glyphCount;
__field_ecount(glyphCount) UINT16 const* glyphIndices;
__field_ecount_opt(glyphCount) FLOAT const* glyphAdvances;
__field_ecount_opt(glyphCount) DWRITE_GLYPH_OFFSET const* glyphOffsets;
BOOL isSideways;
UINT32 bidiLevel;
};
I am trying to find out the smallest rect that contains the output glyphs.
This is all data I have. Note that I have 1 point which is baselineOrigin and I can potentially calculate the width using glyphAdvances and glyphOffsets from the DWRITE_GLYPH_RUN. The question is how to determine the height?
Thanks.
I use an alternative way to do this before:
After converting the text to geometry, you can translate/rotate/scaling it, and do everything what a geometry can do. you can also just drop the geometry after getting the boundary rectangle and drawing with your own method.
Some codes for your references