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

Вниз

Печать-принтер-шрифт   Найти похожие ветки 

 
bbgone   (2004-04-05 20:54) [0]

есть программа...

var
 tm          : TTextMetric;
 lf          : TLOGFONT;

   with lf do
   begin
     lf.lfHeight := StdHeight;
     lf.lfWidth := 0;
     lf.lfEscapement := 0;
     lf.lfOrientation := 0;
     lf.lfWeight := FW_MEDIUM;
     lf.lfCharSet := OEM_CHARSET;
     lf.lfPitchAndFamily := FIXED_PITCH or FF_MODERN;
     lf.lfClipPrecision := CLIP_DEFAULT_PRECIS;
     lf.lfOutPrecision := OUT_DEFAULT_PRECIS;
     lf.lfQuality := DEFAULT_QUALITY;
     lf.lfFaceName := "Courier New";
   end;
   Font1 := CreateFontIndirect(lf);
   SelectObject( hDC,Font1);
   SetBkMode( hDC, TRANSPARENT);
   GetTextMetrics( hDC, tm);
   StdHeight := tm.tmHeight;
   StdWidth := tm.tmAveCharWidth;

   StdWidthCond := StdWidth * 5 div 8;

   // Condensed font - Font2
   with lf do
   begin
     lf.lfHeight := StdHeight;
     lf.lfWidth := StdWidthCond;
     lf.lfEscapement := 0;
     lf.lfOrientation := 0;
     lf.lfWeight := FW_MEDIUM;
     lf.lfCharSet := OEM_CHARSET;
     lf.lfPitchAndFamily := FIXED_PITCH or FF_MODERN;
     lf.lfClipPrecision := CLIP_DEFAULT_PRECIS;
     lf.lfOutPrecision := OUT_DEFAULT_PRECIS;
     lf.lfQuality := DEFAULT_QUALITY;
     lf.lfFaceName := "Courier New";
   end;
   Font2 := CreateFontIndirect(lf);

При печати на реальный принтер(использую TextOut)под NT/Win2k/XP
ширина строки больше, чем под Win95/98/Me.
В чем секрет?


 
MBo ©   (2004-04-06 05:59) [1]

hDC относится к принтеру?
Вообще логический шрифт может соответствовать различным физическим реализациям шрифта в зависимости, например, от драйвера принтера. Кроме того, tmAveCharWidth - только оценочная характеристика. Если требуется узнать ширину строки, можно использовать GetTextExtentPoin32, но и это не гарантирует абсол.тной точности. См. также GetCharABCWidth и т.п. функции


 
bbgone   (2004-04-06 17:23) [2]

hDC относится к принтеру.
Полученный логический шрифт под разными платформами получается
абсолютно одинаковый , кроме одного параметра - PitchAndFamily.
Под Win95/98/Me - 49 (т.е. FIXED_PITCH or FF_MODERN) а под NT/Win2k/XP - 62 (видимо FIXED_PITCH or FF_MODERN or FF_SWISS)
в результате ширина контрольной строки 3752 под Win98
и 4200 под NT(Для Font1).



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
4-1077697735
denik
2004-02-25 11:28
2004.04.25
Как получить адрес текущего окна?


8-1074335022
Fox
2004-01-17 13:23
2004.04.25
Редактирование текста в файлах PSD (Adobe Photoshop)


6-1078175573
TALLA
2004-03-02 00:12
2004.04.25
Как избавиться от многопоточности DdeClientConv ? :(


3-1080303288
Виктор
2004-03-26 15:14
2004.04.25
Fireebird 1.5-сколько подключено пользователей


7-1073774726
murdor
2004-01-11 01:45
2004.04.25
Комнонент для работы с LPT