Шрифт создается функцией — CreateFontIndirect(&LFont)
Указано направление вывода — LFont.lfEscapement = 900
И все нормально работает... до поры, до времени.
При некоторых размерах шрифта происходит сбой.
А именно:
Никаких ошибок не возникает.
Шрифт создан.
Все рисуется.
Однако направление вывода — остается ГОРИЗОНТАЛЬНЫМ.
Подробности:
Вот при таких параметрах — шрифт остается горизонтальным.
А если изменить всего лишь ширину LFont.lfWidth = 4; или LFont.lfWidth = 6;
То шрифт становится вертикальным.
Аналогичный сбой происходит при размерах
LFont.lfHeight = 3;
LFont.lfWidth = 1;
Но если заменить LFont.lfWidth = 2 — то опять все работает нормально.
В чем дело?
И как с этим бороться?
PS.
Пробовал выставлять SetGraphicsMode(hdc, GM_ADVANCED);
Но
Во-первых — это не будет работать в Win98.
Во-вторых — при этом требуется менять и поле LFont.lfOrientation.
А дополнительная проверка на каждом символе — это тормоза. (текст детализирован посимвольно)
Во-третьих — меняется режим расчета параметров все того же вертикального текста,
в том числе координаты размеры и прочее
и весь вертикальныйтекст улетает... (таблица отдельно — вертикальный текст отдельно)
т.е. придется писать второй комплект всех функций.
И возникает еще одна дополнительная проверка.
PPS.
Зачем мне такие мелкие шрифты?
Для организации режимов масштабируемого просмотра технической документации
( 10%, 25% ... 200% ).
Простое масштабирование битмапы, созданной при 100% не катит.
Возникают искажения, связанные с тупым масштабированием.