Как да разберете името на шрифт, ако името на файла е известно ?

известно

Ето няколко примерни кода:

На втория ред трябва да посочите името на шрифта (но не и името на файла). Как да го разпознаем ?
Не знам предварително името на шрифта.

разберете

файла

шрифт

p0s0l, по мое мнение FontView работи чрез EnumFont или по-скоро чрез EnumFontFamilies. не е необходимо да знае конкретно име.

може би можете да изберете изтеглянето на шрифтове поотделно, след това да генерирате списък с тях и едва тогава да позволите на потребителя да избере име от този списък и да рисува с този шрифт?

бихте казали повече за проблема. по някакъв начин вероятно ще можете да се придвижите.

името шрифта

x77, Имам 4000 шрифта и трябва да намеря по-красиви сред тях. Защото Windows English FontView в примера пише само с английски букви. И ми трябват руски шрифтове. ACDSEE пише "Шрифт" - също грешно.

Но проблемът вече е решен по два начина:
1) във FontView промени показания ред на моя
2) Търсих информация за GetFontResourceInfo в интернет - имаше само подобни въпроси в други форуми (и по някаква причина без отговори). Използвайки метода за отстраняване на грешки и въвеждане, установих броя и предназначението на параметрите на тази функция. Никога не се знае кой ще ви бъде полезен в бъдеще:
функция GetFontResourceInfoW (FontPath: PWideChar; var BufSize: DWORD; FontName: PWideChar; dwFlags: DWORD): DWORD; stdcall; външен 'GDI32.DLL';
1-ви параметър - указател към Широк низ, съдържащ пътя към файла на шрифта;
Вторият параметър е указател към променлива DWORD, съдържаща размера на изходния буфер. След като функцията бъде изпълнена, тази променлива ще съдържа необходимата дължина на буфера;
3-ти параметър - указател към буфера, ако успее, той ще съдържа широкия низ на името на шрифта;
4-ти параметър - някои флагове, ако се ровите във функцията GetFontResourceInfoW, специален случай е когато dwFlags = 4, но все още не разбирам защо е така - в резултат ще бъде върнат същият път до файла; добре, за да се получи името на шрифта, флагът трябва да е равен на 1.

Пример за повикване: GetFontName ('C: \ MyFonts \ FUTURA.TTF') - ще върне 'FuturaEugenia'.

PS: Всичко би било наред, но въпреки че тази функция е в Win9x, само тя не може да бъде извикана там - пише „Тази функция е валидна само в режим Windows NT“.
FontView в Win9x използва EnumFontFamiliesEx (очевидно според предложеното Вит„о и x77 начин).
FontView в WinNT използва GetFontResourceInfo (въобще няма импортиране на EnumFontFamiliesEx или друг Enum *).