IDWriteTextLayout always aligns glyphs to the layout extents using the layout bounds of the glyph (glyph origin and advance width) rather than the ink, meaning the ink can indeed spill outside due to italic slope or decorations like Gabriola's fancy swashes (at least on Win7&8).
I think your best bet, short of writing your own custom layout, would be to include some explicit margin (make the layout size smaller than the control area) or expand any clip region to permit the ink to spill outside some. That's one reason why the common EDIT control and CSS default to some padding. To estimate that padding, you could just use a fixed value derived from other UI settings, a proportion of the font size, or measure once to get the DWRITE_OVERHANG_METRICS and resize a second time with an adjusted/shrunk size.
textLayout->SetMaxWidth(initialMaxWidth);
textLayout->GetOverhangMetrics(OUT &overhangMetrics);
float newSmallerWidth = initialMaxWidth
- std::max(overhangMetrics.left, 0.0f)
- std::max(overhangMetrics.right, 0.0f);
textLayout->SetMaxWidth(newSmallerWidth);