Development Tip

C# - Font Load하여 사용하기

MoonLight314 2024. 3. 29. 14:51
728x90

안녕하세요, MoonLight입니다.

이번 Post에서는 임의의 Font를 Application에 Load하여 사용하는 방법에 대해서 알아보도록 하겠습니다.

검색을 통해서 무료로 사용가능하고 예쁜 Font를 하나 찾았습니다.

프리텐다드(Pretendard)라는 Font인데, 깔끔하고 괜찮더라구요.

이 예제에서는 이 Font를 자신의 Application에 Load하여 사용하는 방법을 알아보도록 하겠습니다.

소개

 

 
 

Pretendard

Pretendard 프리텐다드 Pretendard 프리텐다드 글꼴 다운로드 일본어 버전 다운로드 GitHub에서 보기 system-ui를 대체하는 글꼴 Apple의 system-ui가 익숙한 나로서는 San Francisco와 Apple SD 산돌고딕 Neo가 없는

cactus.tistory.com

 

 

 

다운로드 후에 압축을 풀면 다양한 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에 포함시켜서 사용하는 방법에 대해서 알아보았습니다.

도움이 되셨다면 좋겠네요. 그럼에 다음에 또 만나요~!

728x90