Главная страница
    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
1-8025
kex86
2002-09-20 02:11
2002.10.03
ImageIndex ы


1-8041
Николай Быков
2002-09-22 17:45
2002.10.03
Ну не вышел я умом. Что ж теперь поделаешь?


6-8084
Alex90210
2002-08-02 13:46
2002.10.03
Socket ы


3-7834
orion_st
2002-09-12 13:05
2002.10.03
Связаные ссылки


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





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