본문 바로가기
Programing/C#

[C#] 글씨체가 한글 영문 크기가 다른 경우

by TEXTBOX 2023. 2. 10.
728x90

글꼴에 글자 크기가 앞 첫글자가 영문인지 한글인지에 따라 다르다는 특징이 있는 것은, 한글과 영문의 레이아웃 및 장식에 대한 의도에 기인한다고 한다.

한글은 보통 크기가 좀 더 큰 글자로 표현되어야 할 경우가 많고 반면에 영문은 좀 더 작은 글자로 표현되어야 할 경우가 많아서 각각의 언어에서의 레이아웃과 장식에 대한 의도에서 그렇다고 한다.

사이즈를 비슷하게 맞추기 위해서는, 맑은 고딕 글꼴은 각각의 언어에 맞춰 글자 크기를 조정하여 표시하는 것이 맞다고 한다.

그러나 언제 글자마다 영문인지 한글인지 체크를 하여 보여줄 수가 없어 다른 방법을 더 찾아보았다.

아래와 같은 방법도 있었다.


C#에서 맑은 고딕 글꼴에서 한글과 영문의 글자 높이를 동일하게 설정하는 방법은 다음과 같습니다.

  1. 글자 크기를 동일하게 설정하는 방법: 사용할 글꼴의 글자 크기를 동일하게 설정하여 한글과 영문의 글자 높이가 동일하게 나타나도록 할 수 있습니다.
  2. 폰트 크기에 따른 자동 조절 방지: 글자 크기가 자동으로 조절되는 것을 방지하기 위해 각 글자에 고정된 크기를 적용할 수 있습니다.
label1.Font = new Font("Malgun Gothic", 12, FontStyle.Regular);

위와 같이 C# 코드를 작성하여 글자 크기를 동일하게 설정하면, 한글과 영문의 글자 높이가 동일하게 나타날 것입니다.


 

그리고 다른 방법도 추가적으로 더 찾아본 결과...

글꼴의 경우, 첫 글자가 영문인지 한글인지에 따라 글자 크기가 다르는 현상은 글꼴의 내장 문자 높이 설정에 의한 것입니다. 이는 C# 코드만으로는 해결하기 어려울 수 있습니다.

하지만, 아래와 같은 방법으로 글자 높이를 강제로 조절할 수 있습니다.

  1. 강제로 글자 높이를 설정하는 방법: 다음과 같이 글자 높이를 직접 설정할 수 있습니다.
label1.Font = new Font("Malgun Gothic", 12, FontStyle.Regular, GraphicsUnit.Pixel);
label1.Height = 16;

 

2. 유니코드 글자 높이를 강제로 설정하는 방법: 다음과 같이 유니코드 글자 높이를 강제로 설정할 수 있습니다.

label1.Font = new Font("Malgun Gothic", 12, FontStyle.Regular, GraphicsUnit.World);
label1.Height = 16;

위와 같이 글자 높이를 강제로 조절하면, 한글과 영문의 글자 높이가 동일하게 나타날 것입니다.

 


 

마지막으로 방법 하나더 추가...

맑은 고딕 글꼴의 경우, 첫 글자의 높이를 강제로 지정하는 다른 방법으로는 다음과 같은 것들이 있습니다.

  1. GDI+ API 사용: GDI+ API를 사용하여 글자 높이를 강제로 지정할 수 있습니다. 아래와 같이 코드를 작성하면 됩니다.
using System.Drawing;
using System.Drawing.Text;

...

private void Form1_Load(object sender, EventArgs e)
{
    Label label = new Label();
    label.Font = new Font("Malgun Gothic", 12, FontStyle.Regular, GraphicsUnit.Pixel);
    label.Text = "Hello, world!";
    label.AutoSize = true;

    PrivateFontCollection pfc = new PrivateFontCollection();
    pfc.AddFontFile(@"C:\Windows\Fonts\malgun.ttf");
    Font font = new Font(pfc.Families[0], 12);

    label.Font = font;

    label.Height = 16;

    this.Controls.Add(label);
}
 
  1. 글자 높이 지정 전용 글꼴 사용: 글자 높이를 강제로 지정할 수 있는 특수한 글꼴을 사용할 수 있습니다. 예를 들어, 아래와 같은 글꼴을 사용할 수 있습니다.
  • Noto Sans CJK KR Regular

글자 높이 지정 전용 글꼴을 사용하면 글자 높이를 강제로 지정할 수 있어, 한글과 영문의 글자 높이가 동일하게 나타날 것입니다.

728x90

댓글