Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Название шрифта [D6, Win95/98]


AL2002 ©   (2002-09-11 20:46:00) 

Есть файл AL2002.ttf. Сам шрифт называется "Little Tale of Town".
Нужно как-то присвоить переменной название шрифта. Шрифт не установлен. Как это сделать?


AL2002   (2002-09-13 10:34:00) [1]

>Особенно потому, что если в системе уже есть шрифт
Нет, не особенно. Потому что если изменений не происходит, я это засекаю. Хоть что-то хорошее в этом методе (изврате).
(ну, а чё ещё делать:))


Рыжик   (2002-09-13 08:55:00) [2]


> AL2002 © (12.09.02 16:41)

Изврат, конечно. Особенно потому, что если в системе уже есть шрифт с таким же именем, то в этом случае хотя AddResource благополучно возвращает 1, однако список шрифтов не меняется.


AL2002   (2002-09-12 16:41:00) [3]

В общем, я сделал два TStringа. Одному сразу присваиваю список шрифтов в системе, потом делаю AddResource, потом присваиваю второму TStringу весь список шрифтов. А уже потом добываю имя того шрифта, которого нет в первом списке путём сравнивания.
Ну не изврат?


AL2002   (2002-09-12 14:17:00) [4]

Тагда такой вариант:
Сделать у Edit1 шрифт был AL2002.ttf без установки этого шрифта в систему.

Хоть это можно сделать?


Alx2   (2002-09-12 13:47:00) [5]

>AL2002 © (12.09.02 13:32)
Вообще-то буржуи советуют спецификации шрифтов смотреть (функция GetTypeFaceNameFromTTF теперь не поддерживается). А там - готовый пример. А фигня это или нет...

Microsoft used to have a function called GetTypeFaceNameFromTTF, but it"s an old and abondaned 16 bit function that hasn"t been replaced.
I would like to know how to retireve the font name from the naming table of a TTF file with a funtion writen in Delphi. Can you help me?

This function was not part of the Windows 3.1 API. Perhaps it was part of some example code MS shipped on a developer CD - check out their TTFNAME, a little demo that retrieves the "Mac" format name, then rewrite it a little to get the "Windows" name. Use the TrueType spec to help you. -- Laurence

http://www.truetype.demon.co.uk/ttqa97.htm


MBo   (2002-09-12 13:46:00) [6]

>Алкс. Это ты так шутишь?
Нет, там приведен анализ TableEntry для формата контурных шрифтов sfnt, используемого в TTF. Дело очень муторное.

>Шрифт установлен?
>Неа. В этом то и вся проблема
Ну так устанавливай временно, Enum-способ намного проще, пусть система с этими таблицами разбирается


AL2002   (2002-09-12 13:32:00) [7]

>MBo © (12.09.02 13:02)
>Шрифт установлен?
Неа. В этом то и вся проблема.
Может, точно через теги? Но шрифтяры же разные бывают. :(

Посмотрю щас, чё там Алкс2 мне посоветовал...........
.......фигню он мне посоветовал.
Алкс. Это ты так шутишь?


AL2002   (2002-09-12 13:31:00) [8]

>MBo © (12.09.02 13:02)
>Шрифт установлен?
Неа. В этом то и вся проблема.
Может, точно через теги? Но шрифтяры же разные бывают. :(

Посмотрю щас, чё там Алкс2 мне посоветовал.


MBo   (2002-09-12 13:03:00) [9]

если да, то

function EnumFntProc(var elf:TEnumLogFont;var ntm:TNewTextmetric;
FontType: dword ;strings:TStrings):integer; stdcall;
var s: string;
begin
if fonttype=TRUETYPE_FONTTYPE then
s:=elf.elfFullName
else
s:=elf.elfLogfont.lfFacename;
if (elf.elfLogFont.lfPitchAndFamily and FIXED_PITCH)=FIXED_PITCH
then s:="* Fixed * "+s;
strings.Add(S);
Result:=1;
end;


procedure TForm1.Button1Click(Sender: TObject);
var sl:tstringlist;
i:integer;
begin
sl:=tstringlist.create;
sl.Assign(Screen.Fonts);
for i:=0 to sl.count-1 do
EnumFontfamilies(Canvas.Handle, PChar(sl[i]),@EnumFntProc,
Integer(ListBox1.Items));
sl.free;
end;


MBo   (2002-09-12 13:02:00) [10]

Шрифт установлен?


Alx2   (2002-09-12 12:52:00) [11]

Или вот еще то же самое: ftp://ftp.relcom.ru/pub/.1/windows/microsoft/TrueType-info/ttfname.zip


Alx2   (2002-09-12 12:49:00) [12]

Посмотри пример на ftp.seagull.ru/faq/doc-othe/TTF1SPEC.DOC/SAMPLES
Может, оно? :)


AL2002   (2002-09-12 12:28:00) [13]

A-A-AAAAAAAAAAAA-AAAAAAAAAAAAAAAAAAA-AAAAAAAAAAA!!!!!!!!!!!!!!


AL2002   (2002-09-12 12:03:00) [14]

А-ААААААААААААААААААААААААААА!!!!!!!!!!!!!
ПОДСКАЖИТЕ, КАК ЕГО УЗНАТЬ!!!!!!!!!!!!!!!!


AL2002   (2002-09-12 11:45:00) [15]

>Alx2 © (12.09.02 11:11)
>>AL2002 © (12.09.02 10:56)
>Не это ли?
>AddFontResource
>RemoveFontResource
Не, не это. Не, ну и это тоже нужно, но мне вместе с добавлением фонта нужно и узнать его имя. Имя фонта, а не имя шрифта.
Можно, конечно, в код шрифтового файла полезть, найти тэги. Но это ж геморрой какой! :(


Alx2   (2002-09-12 11:11:00) [16]

>AL2002 © (12.09.02 10:56)
Не это ли?
AddFontResource
RemoveFontResource


AL2002   (2002-09-12 10:56:00) [17]

>Рыжик © (12.09.02 10:51)
Вы ею пользовались? А какую библиотеку она использует?
А то что-то не работает она.


Рыжик   (2002-09-12 10:51:00) [18]

GetTypeFaceNameFromTTF?


AL2002   (2002-09-12 10:21:00) [19]

:(
Неужто через blockread только можно?
Я так надеялся, что в Апи что-то есть такое.
((((((((((


Наверх

Титульная страница Поиск, карта сайта Написать письмо