안녕하세요, MoonLight입니다.
이번 Post에서는 임의의 Font를 Application에 Load하여 사용하는 방법에 대해서 알아보도록 하겠습니다.
검색을 통해서 무료로 사용가능하고 예쁜 Font를 하나 찾았습니다.
프리텐다드(Pretendard)라는 Font인데, 깔끔하고 괜찮더라구요.
이 예제에서는 이 Font를 자신의 Application에 Load하여 사용하는 방법을 알아보도록 하겠습니다.
소개
다운로드 후에 압축을 풀면 다양한 Font File들이 나오는데요, 저는 Pretendard-Regular.otf를 사용하도록 하겠습니다.
우선 Windows Form Application을 하나 만들고 아래와 같이 커다란 글자를 출력하도록 해 보겠습니다.
이 Font는 기본 Font인 '굴림'입니다.
이제 이 Font을 방금 우리가 다운받은 프리텐다드로 변경해 보도록 하겠습니다.
Font File은 Application 내에 Embedding시키는 방식으로 해서 Application Release할 때 따로 Font File을
신경쓰지 않아도 되도록 하겠습니다.
아래 그림과 같은 순서로 Resource.resx에 Font File인 Pretendard-Regular.otf를 추가합니다.
그리고, PrivateFontCollection Class를 사용해서 Font File을 Load하는 함수 하나를 만들겠습니다.
using System.Drawing.Text;
private void LoadFont()
{
this.fontCollection = new PrivateFontCollection();
byte[] fontData = Properties.Resources.Pretendard_Regular;
IntPtr fontPtr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(fontData.Length);
System.Runtime.InteropServices.Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
/* PrivateFontCollection에 추가 */
fontCollection.AddMemoryFont(fontPtr, fontData.Length);
// 메모리 해제
System.Runtime.InteropServices.Marshal.FreeCoTaskMem(fontPtr);
}
이제 일반적인 Font처럼 사용하시면 됩니다.
처음에 적은 글자의 Font를 변경해 보도록 하겠습니다.
this.label1.Font = new Font(this.fontCollection.Families[0], 50, FontStyle.Bold);
이제 적용한 결과를 볼까요?
잘 동작하는 군요.
오늘 Post에서는 다른 사람이 만든 Font를 받아서 자신의 Application에 포함시켜서 사용하는 방법에 대해서 알아보았습니다.
도움이 되셨다면 좋겠네요. 그럼에 다음에 또 만나요~!
'Development Tip' 카테고리의 다른 글
Transformer #3 - Overall (0) | 2024.04.29 |
---|---|
MSBuild 오류 MSB8041 - 이 프로젝트에는 MFC 라이브러리가 필요합니다. (0) | 2024.04.26 |
C# - System.InvalidOperationException 크로스 스레드 작업이 잘못되었습니다 (0) | 2024.03.27 |
C# Thread 함수에 Parameter 전달하기 (0) | 2024.03.02 |
C# - "System.InvalidOperationException: 컬렉션이 수정되었습니다" 오류 (0) | 2024.02.24 |