본문 바로가기

C#/Silver Light

실버라이트 4 폰트 변경..

실버라이트1 ~ 2에서는 한글이 완전히 불가능 한 것은 아니었지만 사용이 힘들었다.
TextBlock에서 공식적으로 지원이 불가능 했었고.. 몇가지 편법(?!)을 이용해서
한글을 사용할 수 있었다.

 현재 실버라이트 5가 발표되고 주력으로 실버라이트 4를 사용하는 상황에서는
저런 문제가 해결되어 한글 폰트를 쉽게 사용할 수 있다.

 http://msdn.microsoft.com/ko-kr/library/cc189010%28v=VS.95%29.aspx
에 의하면 이에 관한 내용을 확인할 수 있다.

실버라이트 3에서는 클라이언트 컴퓨터에 설치된 폰트를 이용할 수 있다는 내용이며,
실버라이트 4에서는 실버라이트의 모든 텍스트 요소에 클라이언트 컴퓨터에 설치된
모든 폰트를 적용할 수 있다는 내용이다.

실버라이트 4에서 폰트를 변경하는 방법은 간단하나 약간의 문제가 존재한다.
문제는 윈도우의 로컬라이징에 의한 폰트명이 다르게 표시된다는 것이다

예로 “돋움”, “바탕체”와 같은 한글 폰트명이 내부적으로 “Dotum”, “BatangChe”의 
영문 폰트명을 가지고 있다는 것이다.

그리고 실버라이트에서는 이 영문 폰트명을 입력을 해야 폰트가 정확히 적용된다.

이는 실버라이트나 WebSite개발과 같은 여러 플렛폼에서 실행되는 프로그램을 개발시에는 
영문 폰트명을 사용하는 것이 문제 발생을 낮출 수 있기 때문에 이렇게 설계되었다고 한다.

이 문제만 해결하면 실버라이트에서 폰트를 변경하는 것은 정말 간단하다.

ex ) TextBlock의 폰트를 '안상수2006보통' 으로 변경
textBlock.FontFamily = new FontFamily("ahn2006-M");

이 간단한 문구 하나로 폰트의 변경이 가능하다

하지만 여기서 발생하는 문제..
어떻게 한글 폰트의 영문 폰트명을 알 수 있느냐 하는 것인데..
이는 공도님의 블로그에서 해결방법을 얻을 수 있었다.

공도님의 시스템에 설치된 폰트의 한글명과 영문명, 파일명을 출력해 주는 프로그램을
사용해서 영문폰트명을 'FontFamily()'에 적용시키면 문제가 해결된다.

물론 이방법을 사용한다고 해서 모든 폰트가 해결되는 것인 아닌것 같다.
대부분의 문제가 해결되긴 하지만 몇몇 한글폰트의 경우에는 폰트가 출력되지 못하고
그냥 빈문자로 표시되는 현상이 있었다.



첨부된 파일은 공도님의 블로그에서 구한 것입니다
공도님의 블로그에 소스도 있으니 더 많은 정보는 공도님의 블로그에서 확인하시기 바랍니다.

'C# > Silver Light' 카테고리의 다른 글

SilverLight의 WebBrowser 컨트롤 사용시 스크롤바 없애기  (0) 2011.07.20
URLEncoding 문제..  (0) 2011.03.26