WPF - Arial Narrow 폰트 문제
요즘 진행하고 있는 프로젝트에서, 예기치 않은 문제가 발생했습니다.
먼저, Windows Form 응용 프로그램에서의 Arial 폰트와 Arial Narrow 폰트를 비교해 보면,
[그림 1: Arial 폰트 비교 - Windows Form]
정상적으로 나오는 것을 확인할 수 있습니다. 그런데, WPF에서는 다음과 같이 Narrow로 지정된 모양이 "Bold Italic"으로 적용되어 나오는 것을 볼 수 있습니다.
[그림 2: Arial 폰트 비교 - WPF]
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="168" Width="272">
<Grid>
<StackPanel>
<Label FontFamily="Arial" FontSize="18">Arial Normal Font</Label>
<Label FontFamily="Arial Narrow" FontSize="18">Arial Font Narrow</Label>
</StackPanel>
</Grid>
</Window>
WPF 프레임워크 단에서 그런 처리를 해주니 어쩔 수 없는 문제인데,
connect 사이트에도 이와 관련된 피드백이 올라와 있습니다.
WPF 피드백 - Font mapper incorrect results with Arial Narrow
; https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=343874&SiteID=212
패치 등을 통한 직접적인 해결 방법은 제공되지 않고 있으며, 단지 RenderTransform을 통한 우회 방법만이 "Steve1105"라는 계정을 쓰는 사람에 의해서 제공되고 있습니다.
우회 해결 방법
; https://connect.microsoft.com/feedback/Workaround.aspx?FeedbackID=343874&SiteID=212
위의 WPF 코드를 RenderTransform을 이용하면 다음과 같습니다.
[그림 3: RenderTransform을 이용하여 흉내낸 Arial Narrow 폰트]
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="168" Width="272">
<Grid>
<StackPanel>
<Label FontFamily="Arial" FontSize="18">Arial Normal Font</Label>
<Label FontFamily="Arial" FontSize="18" Content="Arial Narrow Font">
<Label.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0.8"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
</StackPanel>
</Grid>
</Window>
[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]