Я пытаюсь написать программу просмотра шрифтов для шрифтов TrueType/OpenType с кодом VB6/VB5 (под Windows).

Это удивительно сложно:

1) в VB/winAPI я не нашел, как извлечь имя шрифта, или вообще свойства шрифта.

2) я могу установить шрифт (используя функцию API AddFontResource), но затем мне придется его удалить. Однако, хотя (AddFontResource" ожидает путь, для удаления шрифта требуется имя шрифта, которое мне неизвестно.

Есть ли способ использовать неустановленный шрифт ttf)?

Есть ли способ извлечь свойства шрифта с помощью vb6?

(Я могу написать программу на wxPython, но о шрифтах на python я знаю еще меньше, чем на VB)

2
Berry Tsakala 24 Окт 2009 в 03:49

2 ответа

Вы можете использовать библиотеку FreeType.

1
Wim Coenen 24 Окт 2009 в 04:36
+1. Гораздо приятнее и потенциально кроссплатформенно совместимо, чем иметь дело с родными установленными шрифтами. Также делает для гораздо более полезным приложением! Существует доступная привязка Python под названием ft2, которая называет себя бета-качеством; лично я использовал FreeType через PIL раньше с некоторым успехом, хотя, конечно, это ограниченный набор функций, вероятно, недостаточный для утилиты просмотра шрифтов. Я не знаю, как для VB6, но я бы не хотел писать что-либо на классическом VB в наши дни.
 – 
bobince
24 Окт 2009 в 04:48

Это действительно так. Я сам столкнулся с той же проблемой (см. мой вопрос). В итоге я написал свой собственный синтаксический анализатор, потому что мне нужно было определить, поврежден шрифт или нет. Существует AddFontMemResourceEx функция, которая:

Когда функция завершается успешно, вызывающая сторона этой функции может освободить память, на которую указывает pbFont, потому что система создала собственную копию памяти. Чтобы удалить установленные шрифты, вызовите метод RemoveFontMemResourceEx. Однако, когда процесс завершится, система выгрузит шрифты, даже если процесс не вызывал RemoveFontMemResource.

Кроме того, вы можете использовать Функции шрифтов и текста, чтобы получить метрики шрифта.

0
Community 23 Май 2017 в 15:13