GLYPHMETRICS && непонятки с возвращаемыми значениями

Тема в разделе "WASM.WIN32", создана пользователем asmeradm, 4 ноя 2007.

  1. asmeradm

    asmeradm New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    26
    Доброго времени суток! Такой вопрос возник, товарищи программисты :)

    Делаю рендер шрифтов. Вызываю GetGlyphOutline c GGO_GRAY8_BITMAP. Всё бы хорошо, винда отдаёт от 0 до 0x40 в буфер. Однако вот со структурой GLYPHMETRICS обнаружились некоторые проблемы. MSDN сообщает, что:

    gmBlackBoxX
    Specifies the width of the smallest rectangle that completely encloses the glyph (its black box).
    gmBlackBoxY
    Specifies the height of the smallest rectangle that completely encloses the glyph (its black box).

    Однако это не так :) Начинаю рисовать символ с шириной в gmBlackBoxX. Некоторые символы рисуются нормально - некоторые нет. Более того. gmBlackBoxX*gmBlackBoxY*4 != размеру буфера, запрашиваемого функцией. Буфер больше. В результате - "искривление" символов итд. Кто-нить работал с этой функцией? Поможите, не могу уже, мозги кипят. Весь день убил...
     
  2. asmeradm

    asmeradm New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    26
    Никто не сталкивался? :-(
     
  3. asmeradm

    asmeradm New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    26
    Проблема была в невнимательности прочтения MSDN :) Сканлинии глифа в буфере просто были выровнены по DWORD. :)

    Теперь возникла другая проблема. Не могу понять как выровнять символы, чтобы они были на одном уровне. В GLYPHMETRICS есть член gmptGlyphOrigin, который вроде бы отвечает за расположение символа в character cell. Однако значение y в этой структуре мне совершенно не понятно. Оно почти всегда совпадает со значением gmBlackBoxY. Неужели никто не работал с этой функцией? :-(