Главная страница
    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.47 MB
Время: 0.007 c
3-7836
Best Before 2024
2002-09-12 12:23
2002.10.03
Вложенные транзакции в ADO


1-7996
^SANYA
2002-09-20 21:27
2002.10.03
CSS in IE 5.0


1-8004
Mazenrat
2002-09-20 15:17
2002.10.03
StrToInt и IntToStr без sysutils.


3-7827
Silenser
2002-09-10 12:23
2002.10.03
формат базы


14-8160
Юра
2002-09-09 18:50
2002.10.03
DBGrid без мыши?





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