Установить TTF шрифт из программы

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Установить TTF шрифт из программы

Сообщение Игорь Столяров »

Привет всем !

Подскажите, можно ли установить из прикладной программы TTF шрифт, который есть в виде файла *.ttf ?
Или хотя бы в какую сторону MSDN смотреть ... :)

Заранее спасибо !
Make Clarion Great Again ! 😎
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Установить TTF шрифт из программы

Сообщение 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
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Установить TTF шрифт из программы

Сообщение muskin »

А для меня это - загадка!?
Зачем это нужно?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Установить TTF шрифт из программы

Сообщение Игорь Столяров »

muskin писал(а):А для меня это - загадка!?
Примеров масса ... Ну например, делается программа, которая использует некоторые
шрифты при оформлении отчетов. Я например часто использую TTF шрифты различных
штрих-кодов, они легче масштабируются и дают хорошее качество при печати или просмотре.

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

А так все просто - есть проблема с печатью штрих-кодов в отчетах ?
Выберите в меню пункт РЕШЕНИЕ ПРОБЛЕМ -> Установить шрифты. И все. :)
Make Clarion Great Again ! 😎
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Установить TTF шрифт из программы

Сообщение seawolf »

ну если польлователь ботан то установка через инсталлятор когда ставится программа решает эту проблему навсегда. А так ботану надо не забыть дать еще админ привелегию чтобы поставтиь шрифт из программы.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Установить TTF шрифт из программы

Сообщение Yufil »

AddFontResource - это не установка шрифта, а загрузка в память до конца сеанса работы. Кидаешь ttf-файлы в каталог приложения и забываешь о проблеме. Для распространяемых приложений оптимальный вариант
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Re: Установить TTF шрифт из программы

Сообщение Губин Игорь »

В своё время широко использовал, но потом перестал. Уже не помню точно кто был виноват, но в некотором количестве случаев шрифты не подгружались или подгружались криво.
Это я только кажусь дураком! На самом деле я полный идиот!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Установить TTF шрифт из программы

Сообщение Yufil »

ХЗ, в обучалки всегда подкладываем шрифты, жалоб не было. Хотя и в инсталляторы добавляем. Но типична ситуация, когда инсталлируют на одной сетевой машине, а на остальных только создают ярлычки для доступа, в таком случае автозагрузка шрифтов просто необходима.
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Установить TTF шрифт из программы

Сообщение muskin »

Не проще ли и корректнее свои шрифты внедрить в проект и при запуске программы загружать их в память?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Установить TTF шрифт из программы

Сообщение Игорь Столяров »

Немного поработал в этом направлении, ситуация следующая.

1. Действительно, AddFontResource() прекрасно регистрирует шрифт и делает его доступным на текущий сеанс работы, до перезагрузки Windows.
2. Для установки TTF шрифтов под WinXP достаточно через API определить папку шрифтов Windows и скопировать в нее TTF файлы.
Шрифты будут установлены раз и навсегда.
3. Под Win7 прием из п.2. не работает. Кроме копирования видимо нужно сделать, что-то еще.
Это что-то делает инсталятор, если задать в нем установку шрифтов. Значит такая операция в API есть, и нужно ее найти ...
Попробую скачать исходники InnoSetup и порыться, хотя там Дельфи, а его не ловью. Но вариантов нет, т.к. Google ничего не дает на эту тему.
Make Clarion Great Again ! 😎
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Установить TTF шрифт из программы

Сообщение Yufil »

Глянь сюда..
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
:D
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Установить TTF шрифт из программы

Сообщение Игорь Столяров »

Yufil писал(а):Глянь сюда..
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
:D
Это я знаю ... Но во всех азбуках по MSDN пишется, что если Вы хотите избежать (а мы хотим избежать !) проблем с версиями Windows - не редактируйте реестр напрямую. Используйте для этих целей функции и методы WinAPI. Что в общем-то есть правильно ... :)
Make Clarion Great Again ! 😎
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Установить TTF шрифт из программы

Сообщение muskin »

Всем привет.
C6.3(ABC)
Давно использовал пример Андрея Попова - http://www.clarionlife.net/content/view/68/29/.
С помощью Fontlab Studio 5 создаю свои шрифты, внедряю их в App как ресурс, а затем использую этот ресурс шрифта -> программа работает - шрифт есть -> программа заканчивает работу -> шрифта нет.
На всех платформах (Xp и выше проверял) работает без всяких проблем.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Установить TTF шрифт из программы

Сообщение Игорь Столяров »

muskin писал(а):Давно использовал пример Андрея Попова
Да, хорошая идея, и я тоже ее использовал. Давно. Отказался из-за двух причин.

1. Под WinXP работает прекрасно. А когда появилась Vista начались проблемы. Если не ошибаюсь связанные
как с UAC, так и с наличием определенных прав у пользователя Windows ... Но не это главное.

2. Исторически сложилось так, что Clarion распологает убогими средствами создания редактируемых отчетов.
Здесь каждый выкручивается как может, в основном с помощью сторонних приложений - офисных пакетов.
И здесь главная проблема: шрифты недоступны при экспорте отчетов в MS Word / Excel, OO Writer / Calc ...
Make Clarion Great Again ! 😎
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Установить TTF шрифт из программы

Сообщение muskin »

Похоже тупиковая проблемма -> Microsoft не допустит свободное манипулирование с основными ресурсами операционной системы, коими являются шрифты.
На их месте я сделал бы тоже самое.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Ответить