Як дізнатися ім’я шрифту, якщо відомо ім’я файлу

шрифту

Ось приклад коду:

У другому рядку слід вказати ім'я фонту (але не ім'я файлу). Як його дізнатися? Я заздалегідь не знаю ім'я шрифту.

якщо

відомо

відомо

p0s0l, на мою думку, FontView працює через EnumFont, або, швидше, через EnumFontFamilies. йому не треба знати конкретне ім'я.

може, тобі виділити завантаження шрифтів окремо, потім генерувати їхній список, і вже потім нехай юзвер вибирає з цього списку ім'я і цим шрифтом малює?

ти б сказав про завдання докладніше. якось можна напевно обійти.

відомо

x77, у мене є 4000 шрифтів, і треба знайти серед них красивіше. Т.к. вінда англійська FontView у прикладі пише лише англійськими літерами. А мені потрібні українські шрифти. ACDSEE пише "Font" - теж не те. Але проблему вже вирішив двома способами: 1) в FontView змінив рядок, що виводиться на свій 2) Шукав в інеті інфу про GetFontResourceInfo - знаходилися тільки аналогічні питання в інших форумах (і чомусь без відповідей). Методом дебагера і тику з'ясував кількість і призначення параметрів цієї функції. Мало, кому в майбутньому знадобиться: function GetFontResourceInfoW (FontPath : PWideChar; var BufSize : DWORD; FontName : PWideChar; dwFlags : DWORD) : DWORD; stdcall; external 'GDI32.DLL'; перший параметр - покажчик на Wide-рядок, що містить шлях до файлу шрифту; другий параметр - покажчик на DWORD-змінну, що містить розмір вихідного буфера. Після виконання функції в цій змінній буде міститися необхідна довжина буфера; третій параметр - покажчик на буфер, у разі успішного виконання буде містити Wide-рядок імені шрифту; ритися у функції GetFontResourceInfoW особливим випадкомє коли dwFlags=4, але навіщо це, я так і не зрозумів - в результаті буде повернено той самий шлях до файлу; ну а для отримання імені шрифту прапор повинен дорівнювати 1.

Приклад виклику: GetFontName('C:\MyFonts\FUTURA.TTF') - поверне 'FuturaEugenia'.

PS: Все б добре, але ця функція хоч і є у Win9x, тільки її там викликати не можна - пише "This function is only valid in Windows NT mode". FontView у Win9x використовує EnumFontFamiliesEx (мабуть за запропонованимVit'ом іx77способом). FontView у WinNT використовує GetFontResourceInfo (в імпорті взагалі немає EnumFontFamiliesEx або інших Enum*).