Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

Определить моноширинный шрифт   Найти похожие ветки 

 
Alextp ©   (2006-06-07 22:47) [0]

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

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

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


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

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


 
Johnmen ©   (2006-06-08 01:30) [2]

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;


 
Alextp ©   (2006-06-08 19:37) [3]

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


 
Johnmen ©   (2006-06-09 00:00) [4]

Это ты кому?


 
Alextp ©   (2006-06-09 22:02) [5]


> Это ты кому?


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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1148317964
Krants
2006-05-22 21:12
2006.07.02
Как получить реальное изображение компонента


8-1130929059
Provodnick
2005-11-02 13:57
2006.07.02
Проблема с тесселяцией многоугольника в OpenGL


15-1149331012
Gydvin
2006-06-03 14:36
2006.07.02
Разгон ПК


6-1140767270
integery
2006-02-24 10:47
2006.07.02
indy10 TIdAttachmentFile(Msg.MessageParts.Items[intIndex]).Filena


2-1149882602
and31
2006-06-09 23:50
2006.07.02
Визуализация компонентов в цикле