Главная страница
    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.007 c
7-8200
Metallica
2002-07-28 14:29
2002.10.03
-----> Как спрятать программу.


14-8158
Smiths
2002-09-08 17:40
2002.10.03
Шахматы - чья игра?


8-8067
MJH
2002-06-01 16:44
2002.10.03
MJHF-EQ-DLL version 0.3


1-8009
ghg
2002-09-21 17:00
2002.10.03
Не ставится компонент


14-8111
DeepProg
2002-09-06 17:20
2002.10.03
Delphi studing





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский