이 팁은 다국어 버전의 프로그램을 만들때, OS마다 폰트가 약간씩 차이날때 유용하게 써먹을 수 있는 팁입니다.

  1. unit Unit1;

  2. interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;

    type
    TfrmSystemFont = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    lblSysFont: TLabel;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    frmSystemFont: TfrmSystemFont;

    implementation

    {$R *.DFM}

    procedure TfrmSystemFont.FormCreate(Sender: TObject);
    begin
    // frmSystemFont 폼의 폰트를 시스템의 MenuFont로 설정합니다.
    Self.Font.Assign(Screen.MenuFont);
    // 이폼의 폰트가 부모 폰트가 되도록 설정합니다.
    // 하위 컨트롤들은 부모 폰트를 따르게 됩니다.
    Self.ParentFont := True;
    end;

    end.

 

 윈도우에 폰트 설치 / 제거 하기

  1. // 폰트 설치
    AddFontResource(PChar('XXXFont.TTF'));
    SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

    // 폰트 제거
    RemoveFontResource(PChar('XXXFont.TTF'));
    SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 

 

 폰트에 안티알리아스 적용하기

  1. procedure TForm1.Button1Click(Sender: TObject);
    var
    LogFont : TLogFont;
    begin
    Canvas.Font.Name := '굴림체';
    Canvas.Font.Size := 40;
    {*}GetObject(Canvas.Font.Handle, SizeOf(LogFont), Addr(LogFont));
    {*}LogFont.lfQuality := ANTIALIASED_QUALITY;
    {*}Canvas.Font.Handle := CreateFontIndirect(LogFont);
    Canvas.TextOut(100,100,'안녕하세요');
    end; 

 

사용가능한 폰트 확인하기

  1. .....
  2. uses
  3.  ..., printers;
  4.  
  5. ....
  6. ....
  7. procedure aaaa;
  8. begin
  9. .... := screen.fonts // 스트링리스트 형식으로 사용가능한 폰트를 보여줌.
  10. end;

+ Recent posts