Форум: "Основная";
Текущий архив: 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