Страница 1 из 2
Установить TTF шрифт из программы
Добавлено: 07 Май 2012, 10:31
Игорь Столяров
Привет всем !
Подскажите, можно ли установить из прикладной программы TTF шрифт, который есть в виде файла *.ttf ?
Или хотя бы в какую сторону MSDN смотреть ...
Заранее спасибо !
Re: Установить TTF шрифт из программы
Добавлено: 07 Май 2012, 15:30
Yufil
Надо искать волшебное слово AddFontResource
Module('Windows API')
AddFontResource(*CSTRING),SIGNED,PASCAL,RAW,NAME('AddFontResourceA')
End
ttfQ Queue(File:Queue),Pre(TtfQ)
End
Loc:FontName Cstring(260)
Free(TTfQ)
Directory(TtfQ,'*.ttf',0)
Loop ttfQ#=1 To Records(TTFQ)
Get(TtfQ,TTfQ#)
Loc:FontName=Clip(TTfQ:Name)
If AddFontResource(Loc:FontName).
End
Re: Установить TTF шрифт из программы
Добавлено: 09 Май 2012, 22:16
muskin
А для меня это - загадка!?
Зачем это нужно?
Re: Установить TTF шрифт из программы
Добавлено: 09 Май 2012, 23:05
Игорь Столяров
muskin писал(а):А для меня это - загадка!?
Примеров масса ... Ну например, делается программа, которая использует некоторые
шрифты при оформлении отчетов. Я например часто использую TTF шрифты различных
штрих-кодов, они легче масштабируются и дают хорошее качество при печати или просмотре.
Для использования в программе - шрифт должен быть установлен.
Да, это можно сделать с помощью инсталяционного комплекта.
Или прямой установкой шрифтов в Windows через панель управления.
Но эти варианты не всегда подходят для тиражируемых программ, особенно
если пользователь программы бухгалтер, предприниматель, финансист, а не ботан.
А так все просто - есть проблема с печатью штрих-кодов в отчетах ?
Выберите в меню пункт РЕШЕНИЕ ПРОБЛЕМ -> Установить шрифты. И все.

Re: Установить TTF шрифт из программы
Добавлено: 10 Май 2012, 9:15
seawolf
ну если польлователь ботан то установка через инсталлятор когда ставится программа решает эту проблему навсегда. А так ботану надо не забыть дать еще админ привелегию чтобы поставтиь шрифт из программы.
Re: Установить TTF шрифт из программы
Добавлено: 10 Май 2012, 9:45
Yufil
AddFontResource - это не установка шрифта, а загрузка в память до конца сеанса работы. Кидаешь ttf-файлы в каталог приложения и забываешь о проблеме. Для распространяемых приложений оптимальный вариант
Re: Установить TTF шрифт из программы
Добавлено: 10 Май 2012, 15:22
Губин Игорь
В своё время широко использовал, но потом перестал. Уже не помню точно кто был виноват, но в некотором количестве случаев шрифты не подгружались или подгружались криво.
Re: Установить TTF шрифт из программы
Добавлено: 10 Май 2012, 17:42
Yufil
ХЗ, в обучалки всегда подкладываем шрифты, жалоб не было. Хотя и в инсталляторы добавляем. Но типична ситуация, когда инсталлируют на одной сетевой машине, а на остальных только создают ярлычки для доступа, в таком случае автозагрузка шрифтов просто необходима.
Re: Установить TTF шрифт из программы
Добавлено: 11 Май 2012, 1:08
muskin
Не проще ли и корректнее свои шрифты внедрить в проект и при запуске программы загружать их в память?
Re: Установить TTF шрифт из программы
Добавлено: 11 Май 2012, 8:34
Игорь Столяров
Немного поработал в этом направлении, ситуация следующая.
1. Действительно, AddFontResource() прекрасно регистрирует шрифт и делает его доступным на текущий сеанс работы, до перезагрузки Windows.
2. Для установки TTF шрифтов под WinXP достаточно через API определить папку шрифтов Windows и скопировать в нее TTF файлы.
Шрифты будут установлены раз и навсегда.
3. Под Win7 прием из п.2. не работает. Кроме копирования видимо нужно сделать, что-то еще.
Это что-то делает инсталятор, если задать в нем установку шрифтов. Значит такая операция в API есть, и нужно ее найти ...
Попробую скачать исходники InnoSetup и порыться, хотя там Дельфи, а его не ловью. Но вариантов нет, т.к. Google ничего не дает на эту тему.
Re: Установить TTF шрифт из программы
Добавлено: 11 Май 2012, 11:49
Yufil
Глянь сюда..
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]

Re: Установить TTF шрифт из программы
Добавлено: 11 Май 2012, 12:57
Игорь Столяров
Yufil писал(а):Глянь сюда..
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]

Это я знаю ... Но во всех азбуках по MSDN пишется, что если Вы хотите избежать (а мы хотим избежать !) проблем с версиями Windows - не редактируйте реестр напрямую. Используйте для этих целей функции и методы WinAPI. Что в общем-то есть правильно ...

Re: Установить TTF шрифт из программы
Добавлено: 11 Май 2012, 21:43
muskin
Всем привет.
C6.3(ABC)
Давно использовал пример Андрея Попова -
http://www.clarionlife.net/content/view/68/29/.
С помощью Fontlab Studio 5 создаю свои шрифты, внедряю их в App как ресурс, а затем использую этот ресурс шрифта -> программа работает - шрифт есть -> программа заканчивает работу -> шрифта нет.
На всех платформах (Xp и выше проверял) работает без всяких проблем.
Re: Установить TTF шрифт из программы
Добавлено: 12 Май 2012, 7:54
Игорь Столяров
muskin писал(а):Давно использовал пример Андрея Попова
Да, хорошая идея, и я тоже ее использовал. Давно. Отказался из-за двух причин.
1. Под WinXP работает прекрасно. А когда появилась Vista начались проблемы. Если не ошибаюсь связанные
как с UAC, так и с наличием определенных прав у пользователя Windows ... Но не это главное.
2. Исторически сложилось так, что Clarion распологает убогими средствами создания редактируемых отчетов.
Здесь каждый выкручивается как может, в основном с помощью сторонних приложений - офисных пакетов.
И здесь главная проблема: шрифты недоступны при экспорте отчетов в MS Word / Excel, OO Writer / Calc ...
Re: Установить TTF шрифт из программы
Добавлено: 13 Май 2012, 2:19
muskin
Похоже тупиковая проблемма -> Microsoft не допустит свободное манипулирование с основными ресурсами операционной системы, коими являются шрифты.
На их месте я сделал бы тоже самое.