Работа с КАЗАХСКИМИ ШРИФТАМИ.
Здравствуйте Уважаемые Господа Програмисты.
Моя небольшая статья будет, скорее всего, интересна програмистам из региона - КАЗАХСТАН.
Так как програмисты проживающиее и работающие в этом регионе чаще всего встречаются
с проблемой вывода нестандартных КАЗАХСКИХ ШРИФТОВ.
 

 Я также долго мучился над проблемой решения этого вопроса, и ниже я излагаю свои выводы на основании моих многочисленных экспериментов.

 Свойство, отвечающее за размер шрифта важно, но не менее важны в этом вопросе и другие характеристики.

 

 

Code:

procedure TConsole.FontChanged(Sender: TObject);

var

DC: HDC;

Save: THandle;

Metrics: TTextMetric;

Temp: string;

begin

if Font.Handle <> FOldFont.Handle then

begin

   DC := GetDC(0);

   Save := SelectObject(DC, Font.Handle);

   GetTextMetrics(DC, Metrics);

   SelectObject(DC, Save);

   ReleaseDC(0, DC);

   if not (((Metrics.tmPitchAndFamily and ff_Modern) <> 0) and

     ((Metrics.tmPitchAndFamily and $01) = 0)) then

   begin

     Temp := 'TConsole: ' + Font.Name +

       ' не является шрифтом с фиксированной шириной';

     Font.Name := FOldFont.Name; { Возвращаем предыдущие атрибуты шрифта }

     raise EInvalidFont.Create(Temp);

   end;

   SetMetrics(Metrics);

end;

FOldFont.Assign(Font);

if csDesigning in ComponentState then

   InternalClrScr;

end;

 

Эти установки должны показать шрифты совместимые либо с принтером либо с экраном. В примере диалог Windows ChooseFont вызывается напрямую чтобы показать список шрифтов, совместимых одновременно и с экраном и с принтером.