Как получавате геометрията на шрифта за подчертаване от шрифта? CreateFont

Имам библиотека, която извлича геометрията на текста от файл с шрифтове truetype.

Използвам извикване на CreateFont, за да се сдобия с индексите на глифове и след това чета потока от байтове, за да получа точковите данни.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183499%28v=vs.85%29.aspx

Проблемът е, че ако предам true в аргумента за подчертаване, геометрията не съдържа подчертаването. Има ли нещо конкретно, което трябва да се направи??

Документът гласи: fdwUnderline [in] Указва подчертан шрифт, ако е зададен на TRUE.

Това ще помогне много!


person Kshitij Banerjee    schedule 15.05.2014    source източник
comment
Truetype шрифтовете нямат отделни подчертани варианти. Например, когато изберете подчертан Arial, Windows използва обикновен Arial и рисува линия под него. Ако четете геометрията от ttf файл, получавате геометрията без подчертаване, защото това е, което съдържа файлът.   -  person arx    schedule 15.05.2014
comment
Хм.. Мислех така.. Така че флагът е само за изобразяване на растерно изображение. Благодаря!   -  person Kshitij Banerjee    schedule 17.05.2014
comment
BTW. моля, добавете отговор, за да мога да го приема.   -  person Kshitij Banerjee    schedule 04.07.2014
comment
Отговорих и добавих допълнителна информация.   -  person arx    schedule 04.07.2014


Отговори (1)


Truetype шрифтовете нямат отделни подчертани варианти. Например, когато изберете подчертан Arial, Windows използва обикновен Arial и рисува линия под него. Ако четете геометрията от ttf файл, получавате геометрията без подчертаване, защото това е, което съдържа файлът.

Ако искате геометрията „както е начертана“, изберете контурен шрифт и извикайте BeginPath, TextOut, EndPath и GetPath.

person arx    schedule 04.07.2014
comment
Можете да използвате GetOutlineTextMetrics, който включва полета, които ви казват къде трябва да се начертае долната черта и колко дебела трябва да бъде. Същият отговор важи и за зачертаването. - person Adrian McCarthy; 01.09.2015