Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить моноширинный шрифт


Alextp ©   (2006-06-07 22:47:00) 

Как определить, является ли шрифт (TFont) моноширинным?
Пока придумал только так:

 with Canvas do
 Mono:= TextWidth('.')=TextWidth('W');

есть ли более нормальный способ?


Johnmen   (2006-06-12 00:02:00) [1]

Не знаю что и как ты проверял, но код 100% рабочий.


Alextp   (2006-06-09 22:02:00) [2]


> Это ты кому?


Тебе :) - ты же написал код, проверяющий шрифты на флаг FIXED_PITCH:

Result:=integer((EnumLogFont.elfLogFont.lfPitchAndFamily and FIXED_PITCH)=FIXED_PITCH);
end;


Так вот, этот флаг установлен не у всех моноширинных шрифтов. Я и привел пример.


Johnmen   (2006-06-09 00:00:00) [3]

Это ты кому?


Alextp   (2006-06-08 19:37:00) [4]

Сделал проверку на FIXED_PITCH. Для шрифтов Courier New/FixedSys
не работает: у них установлен DEFAULT_PITCH.
Win98, может в XP не так?


Johnmen   (2006-06-08 01:30:00) [5]

var
 YourFont : TFont; // твой шрифт

function EnumFontsProc(var EnumLogFont: TEnumLogFont;
                       var TextMetric: TNewTextMetric;
                             FontType: Integer;
                                 Data: LPARAM): Integer; export; stdcall;
begin;
 Result:=integer((EnumLogFont.elfLogFont.lfPitchAndFamily and FIXED_PITCH)=FIXED_PITCH);
 end;

procedure FixedPitch_OR_NotFixedPitch; // быть или не быть
var
 DC : HDC;
begin;
 DC:=GetDC(0);
 try
   if EnumFontFamilies(DC,PChar(YourFont.Name),@EnumFontsProc,0) then
     ShowMessage('моноширинный')
   else ShowMessage('НЕмоноширинный');
 finally
   ReleaseDC(0,DC);
   end;
 end;


McSimm   (2006-06-08 00:43:00) [6]

Может быть TFont.Pitch = fpFixed


Наверх

Титульная страница Поиск, карта сайта Написать письмо