![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
![]()
Есть такой способ с помощью AddfontResource+Sendmessage(broadca st, fontchanged...), но он не позволяет сохранить себе шрифт (в Tfont) а можно лишь оперировать понятием fontface(оно же Tfont.name), мне это не подходит.
Нашёл такой способ - создать через AddFontMemResourceEx шрифт в виде Hfont (но данный способ везде почему-то для чтения из ресурсов), и впоследствии устанавливать шрифт хендлом (Hfont), мне тоже не очень подходит, хочу оперировать Tfont'ом. Нашёл хитрую функцию (хитрую потому, что на всех сайтах одна и та же копипаста с ошибкой, ну хоть исправить несложно) MakeFontFromHFont. Но подружить всё вместе вот так не могу Код:
ADD после ffont.assign у шрифта не меняется name (а шрифт в архиве имеет нейм HeinrichText) собственно, полагаю, причина в Getobject.. add2 мда... Код:
Может кто свой какой способ подскажет, не обязательно в точности под задачу, попробую адаптировать. Последний раз редактировалось phomm; 20.12.2011 в 17:35. |
![]() |
![]() |
![]() |
#2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
![]()
Путем нехитрой проверки функции MakeFontFromHFont из инета, установил, что она не при чем:
Код:
Отсюда вывод, по каким-то непонятным причинам конструкция Код:
справка: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx This function allows an application to get a font that is embedded in a document or a webpage. A font that is added by AddFontMemResourceEx is always private to the process that made the call and is not enumerable. Помимо документ/вебстраница этой функцией вовсю орудуют для вытаскивания шрифта из ресурсов exe/dll, так что, думаю, логично применить её на файле. Возможно, хитрость в приватности (но я вроде и так для своего процесса) или неенумерабельности (полагаю это связано с таблицей фонтов винды) шрифта ? Возможно ли какое-либо решение, или мне уйти делать всё по другому ? а вроде способ кажется вполне логичным и даже лаконичным. Кстати, если Александр (GunSmoker) будет проходить тут, то напомню как-то было такое дело http://forum.sources.ru/index.php?showtopic=307303&st=0 и можно сказать некоторый опыт имеется ) ОО ! вот что нашёл http://www.eggheadcafe.com/microsoft...esourceex.aspx и из него вышел на http://msdn.microsoft.com/en-us/libr...42(VS.85).aspx что за жесть ? почему возвращается непонятно какой хэндл ? зачем ещё createfont используя fontface если он мне как раз неизвестен, бредятина )) пошёл искать способы выдирания фонтфейса из ттф-файла Последний раз редактировалось phomm; 22.12.2011 в 21:42. |
![]() |
![]() |
![]() |
#3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
![]()
Тот пост длинный и от правок не разобрать... (mihali4, не злись)
В общем, накопал, вот http://forum.vingrad.ru/forum/topic-...1604536/0.html Получилось загрузить шрифт и сохранить его в виде Tfont (некий менеджер шрифтов как бы). Код:
Последний раз редактировалось phomm; 22.12.2011 в 22:27. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Не читал всё (длинно и лениво). Прошёлся по диагонали.
Но... 1. MakeFontFromHFont - господи, что это? Код:
Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
![]()
1. мда, налицо легкий переинжиниринг, хотя этот вариант тоже пробовал, но из-за незнания точного устройства кухни виндовс, думал нужна и установка параметров из logfont, хотя потом по исходникам побегал, увидел только
Код:
2. уже как-то читал, спасибо за наводку насчет подводного камня. Полагаю, в случае Код:
Код:
Большое спасибо ) всегда рад наставлениям, развитие - бесконечный процесс. И ещё если можно маленький эстетический вопрос - правильно ли использовать недокументированную GetFontResourceInfoW ? Хотя понимаю про "смотреть по задаче" и "учитывать совместимость с другими виндовс"? Последний раз редактировалось phomm; 22.12.2011 в 23:13. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ввести исходный массив из текстового файла. Вывести его в естественном виде. | yana33311 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 17.04.2011 11:56 |
Создать собственный шрифт в Паскале | bwitcher | Помощь студентам | 2 | 21.12.2010 21:35 |
[Как сохранить и прочитать TFont в реестр]. | ZARO | Общие вопросы Delphi | 3 | 12.03.2010 22:41 |
Создать шрифт. | Mister_Joking | Фриланс | 1 | 15.01.2010 18:21 |
Как изменить стиль шрифт выделенного тексту слова в компоненте RichEdit при выделении его? | SkAndrew | Общие вопросы Delphi | 9 | 23.04.2008 01:35 |