Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
10-1121155518
Sinsin
2005-07-12 12:05
2006.07.02
Как можно узнать, был ли запущен сервер вручную?


15-1149687062
oldman
2006-06-07 17:31
2006.07.02
Вам не надоела сотовая связь MTS?


15-1147255423
Колдун
2006-05-10 14:03
2006.07.02
Написание многопотчной качалки


3-1146997440
Phantomouse
2006-05-07 14:24
2006.07.02
Определить тип базы


2-1150208248
VitV
2006-06-13 18:17
2006.07.02
DBgrid нижний скролбар.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский