Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

Как прочитать формат TTF (шрифт)   Найти похожие ветки 

 
Yuraz   (2002-09-20 13:09) [0]

Т.е. узнать заголовок, название шрифта, как нибудь "вытащить" графическое представление.


 
AL2002   (2002-09-20 13:36) [1]

Тута будет сплошное молчание. Ты мне уж поверь.

Мне один знакомый код прислал. Метод грубой силы называется.
Могу дать. Мне он не понравился. Думаю, тебе тоже не понравится.


 
Alx2   (2002-09-20 13:38) [2]

см. http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031762781&n=0
и развитие этой темы в
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1032270045&n=0


 
Alx2   (2002-09-20 13:40) [3]

>AL2002 © (20.09.02 13:36)
Ну-ка, ну-ка?


 
MBo   (2002-09-20 15:27) [4]

>сплошное молчание. Ты мне уж поверь

Ну-ну
19 и 15 постингов в твоих ветках.
Станиславский бы не поверил


 
AL2002   (2002-09-20 15:38) [5]

>19 и 15 постингов в твоих ветках.
>Станиславский бы не поверил
До сути не добрались. Пришлось стать извращенцем.


>Ну-ка, ну-ка?
?


 
Слесарь Матерящийся   (2002-09-20 15:42) [6]

1) Существует проект GNU OpenType. Там есть примеры работы с TTF. Но на C.
2) Можно копать в сторону графических драйверов (см. документацию DDK).
3) Можно взять описание формата TTF и сделать свой разборщик. Но это очень сложно.

Первый путь наиболее реален.


 
Рыжик   (2002-09-20 15:44) [7]


> Слесарь Матерящийся (20.09.02 15:42)
> 1) Существует проект GNU OpenType. Там есть примеры работы
> с TTF. Но на C.

Что это такое и где его взять?


 
AL2002   (2002-09-20 15:48) [8]

type
TTableDirectory = record
Tag: LongInt;
CheckSum: LongInt;
Offset: LongInt;
Length: LongInt;
end;

TNamingTable = record
Format: Word;
Count: Word;
StringOffset: Word;
end;

TNameRecord = record
PlatformID: Word;
SpecificID: Word;
LanguageID: Word;
NameID: Word;
Length: Word;
Offset: Word;
end;

function GetTypeFaceName(TrueTypeFile: String): String;
var
FileHandle: Integer;
TableDirectory: TTableDirectory;
NamingTable: TNamingTable;
NameRecord: TNameRecord;
LongSwap: LongInt;
Buffer: array[0..255] of Char;
WideResult: string;
I: Integer;
begin
Result := "";
Buffer := "";
WideResult := "";
FileHandle := FileOpen(TrueTypeFile, fmOpenRead);
if FileHandle < 0 then
Exit;
FileSeek(FileHandle, 12, 0);
repeat
if FileRead(FileHandle, TableDirectory, SizeOf(TableDirectory)) <
SizeOf(TableDirectory) then
begin
FileClose(FileHandle);
Exit;
end;
until TableDirectory.Tag = $656D616E;
LongSwap := TableDirectory.Offset shr 16;
TableDirectory.Offset := Swap(TableDirectory.Offset) shl 16 +
Swap(LongSwap);
FileSeek(FileHandle, TableDirectory.Offset, 0);
FileRead(FileHandle, NamingTable, SizeOf(NamingTable));
repeat
if FileRead(FileHandle, NameRecord, SizeOf(NameRecord)) <
SizeOf(NameRecord) then
begin
FileClose(FileHandle);
Exit;
end;
until (Swap(NameRecord.PlatformID) = 3) and (Swap(NameRecord.NameID) = 4);
FileSeek(FileHandle, Swap(NamingTable.StringOffset) +
Swap(NameRecord.Offset) +
TableDirectory.Offset, 0);
FileRead(FileHandle, Buffer, Swap(NameRecord.Length));
NameRecord.Length := Swap(NameRecord.Length);
I := 1;
repeat
WideResult := WideResult + Buffer[I];
I := I + 2;
until I > NameRecord.Length;
Result := WideResult;
FileClose(FileHandle);
end;


//Успехов в программировании.


 
Слесарь Матерящийся   (2002-09-20 15:59) [9]

>>>Что это такое и где его взять?

Я ошибся в названии, конечно же FreeType.

Вот страничка:

http://www.freetype.org/index2.html



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
14-8167
Oleg_Gashev
2002-09-08 22:11
2002.10.03
Задача-2


1-8023
SSAlex
2002-09-19 00:53
2002.10.03
OnKeyPress


1-8058
xerox
2002-09-22 20:37
2002.10.03
Как сделать в listview сортировку по колонкам как в аутлуке?


1-7973
Pedro
2002-09-24 13:04
2002.10.03
Работа для программиста на Delphi под SQL


1-7942
Link
2002-09-19 19:23
2002.10.03
Закачка названий файлов из директории в ComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский