2017-02-12 3 views
1

создать объект IDWriteTextLayout следующим кодом,Как получить правильную ширину текста для наклонного шрифта в DirectWrite?

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

затем получить ширину текста с помощью текста метрики,

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

, что запутать меня, что ли стиль шрифта DWRITE_FONT_STYLE_OBLIQUE или DWRITE_FONT_STYLE_NORMAL , ширина одной и той же строки равна одному и тому же значению. Зачем? Я ожидаю, что когда стиль шрифта DWRITE_FONT_STYLE_OBLIQUE, ширина должна быть больше. как я могу получить правильную ширину для наклонного текста?

Спасибо.

ответ

0

Метрики компоновки основаны на метриках шрифтов, намеченных или нет, а не на фактическом ящике для каждого глифа. Если вам нужны метрики, которые ближе соответствуют результату рендеринга растрового изображения, вы можете настроить возвращаемые метрики макета с данными GetOverhangMetrics(). Но в конце единственный способ узнать точный размер пикселя результирующего макета - это визуализировать его.

Так что, отвечая на ваш вопрос, возвращаемые метрики метрик для косых шрифтов уже правильные, они просто означают немного другую вещь, чем вы ожидаете от них.

Смежные вопросы