Как да разберете името на шрифт, ако името на файла е известно ?
Ето няколко примерни кода:
На втория ред трябва да посочите името на шрифта (но не и името на файла). Как да го разпознаем ?
Не знам предварително името на шрифта.
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 *).
- Как да разберете кой ви обича
- Диалогов прозорец на свойствата на файла (ShellExecuteEx)
- Как да преживеем жегата без климатик у дома
- Как да разберете битовостта на процесора Няколко начина
- Как да разберете резултатите от заключението на медицинската и социална експертиза (ITU)