2011-01-25 2 views
1

Прошу вас, я новичок в Uniscribe, поэтому надеюсь, что это не глупый вопрос, но я не смог найти решение в другом месте. Итак, здесь идет ...Как отрегулировать ширину шрифта с помощью API Uniscribe

Я пытаюсь использовать Uniscribe API для уменьшения ширины шрифта; то есть, учитывая определенный шрифт определенной высоты, я хотел бы иметь возможность уменьшить ширину каждого символа (и всех соответствующих интервалов) с помощью определенного процентного значения.

Я успешно достиг этого без вызова каких-либо функций Uniscribe, получив структуру для текущего шрифта и изменив поле lfWidth на процент от его первоначального значения. Я понимаю, что это всего лишь средняя ширина символов, но она, казалось, имела желаемый результат.

Однако, когда я пытаюсь сделать то же самое, используя Uniscribe, я заметил, что поле lfWidth сбрасывается на 0 следующих вызовов ScriptShape(). В результате весь отображаемый текст выводится с использованием его первоначальной ширины. Я затрудняюсь объяснить, почему это или что делать, чтобы обойти это.

Есть ли у кого-нибудь идеи, возможно ли сделать то, что я пытаюсь сделать?

ответ

0

Возможно, вы захотите начать работу с here (см. Раздел «Создание информации о символах»), затем введите this.

Надеюсь, это поможет!

+0

Спасибо за это. SciptShape() не возвращает код ошибки, поэтому я предполагаю, что загруженный в данный момент шрифт является приемлемым. Последующие вызовы ScriptPlace() также преуспевают, просто они используют значение 0 для lfWidth, а не настроенное значение, которое я ранее назначил. –

+0

Думаю, я нашел решение! Кажется, что любые корректировки текущего выбранного шрифта, по крайней мере, по его ширине, должны выполняться * после * вызова ScriptShape(), но * перед * вызовом ScriptPlace(). Теперь все происходит, как я ожидаю, - ссылки, предоставленные @ namar0x0309, помогли мне добраться до конца, поэтому спасибо за это. –

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