次のコードは、Windows 7(および以前のバージョンのWindows)とWindows8の間で同じ文字列を異なる方法で表示します。
Graphics graphics(ps.hdc);
std::unique_ptr<StringFormat> format(StringFormat::GenericDefault()->Clone());
Font font(L"Segoe UI", static_cast<Gdiplus::REAL>(17.5), FontStyleBold, UnitPixel);
format->SetTrimming(StringTrimmingNone);
std::wstring name("rt");
RectF rectName;
graphics.MeasureString(name.c_str(), -1, &font, PointF(20, 20), format.get(), &rectName);
graphics.DrawString(name.c_str(), -1, &font, rectName, format.get(), &SolidBrush(Color()));
graphics.DrawRectangle(&Pen(Color(255, 0, 0)), rectName);
Windows 7では、表示されるはずの長方形の中に文字列'rt'が表示されます。Windows 8では、最初の文字「r」のみが表示されます。これは、特定の文字ペアでのみ発生するようです。たとえば、文字列「re」は両方のオペレーティングシステムで正しく表示されます。MeasureString()から返される長方形は、Windows7とWindows8の両方で同じように見えます。この違いの説明はありますか?