응용 프로그램을 작성하다 보면 운영체제의 기본폰트로 등록되지 않은 폰트를 사용해야 할 경우가 있습니다. 이 경우 보통은 설치프로그램에서 폰트를 운영체제에 등록하여 사용하죠.
하지만, 시스템상에 폰트를 많이 설치하면 그만큼 시스템이 평소에 로드하고 있어야 하는 폰트가 많아 지므로 시스템이 느려지게 될 것이고, 자주 사용하지 않는 폰트파일이라면 굿이 등록시켜 사용할 필요가 없습니다.

그렇다면, 폰트파일을 운영체제에 등록하지 않고, 필요 할때만 잠시 로드하여 사용하면 좋겠죠?
이 부분을 지원을 지원하기 위해서 .NET Framework 에서는  System.Drawing.Text.PrivateFontCollection 클래스를 제공하고 있습니다.

PrivateFontCollection 클래스는 운영체제에 등록된 폰트가 아닌 같은 이름의 개인 버전 폰트를 사용할 수 있도록 해주고, 운영체제에 등록되지 않은 글꼴을 임시로 설치해서 사용할 수 있도록 해줍니다.

다음은 운영체제에 등록되지 않은 3of9_new.ttf 라는 바코드 폰트를 이용해서 Label에 바코드를 출력하는 예제입니다.

 

솔루션내에 3of9_new.ttf 가 포함되어 있으며 출력 디렉토리로 복사 속성이 항상 복사로 설정되어 있습니다.
코드를 보면

   1: using System.Data;
   2: using System.Drawing;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Windows.Forms;
   6:  
   7: namespace UsePrivateFont
   8: {
   9:     public partial class Form1 : Form
  10:     {
  11:         public Form1()
  12:         {
  13:             InitializeComponent();
  14:         }
  15:  
  16:         private void Form1_Load(object sender, EventArgs e)
  17:         {
  18:             System.Drawing.Text.PrivateFontCollection privateFonts = 
new System.Drawing.Text.PrivateFontCollection();
  19:             privateFonts.AddFontFile("3of9_new.ttf");
  20:             Font font = new Font(privateFonts.Families[0], 24f);
  21:             label1.Text = "*12315161321*";
  22:             label1.Font = font;
  23:         }
  24:     }
  25: }

코드는 간단합니다.
PrivateFontCollection 클래스의 객체를 생성하고 사용하고자 하는 폰트파일의 경로를 추가하는 것 만으로 사용준비가 완료됩니다.
그리고, 사용할때는  PrivateFontCollection 클래스의 Families 속성을 이용하여 추가한 폰트를 가져옵니다.

실행결과 입니다. 운영체제에 설치되지 않은 바코드 폰트를 이용하여 Label로의 출력이 완료되었습니다.

마지막으로 MSDN에 보면 운영체제에 설치된 컬렉션을 보려면 System.Drawing.Text.InstalledFontCollection클래스를 사용한다고 되어 있습니다.
이 두가지 클래스를 이용하면 설치된 폰트를 확인하고, 내가 원하는 폰트파일을 임시로 등록하여, 각 폰트별로 내가 원하는 텍스트에 대한 출력을 미리보기가 가능할 뿐만 아니라 포토샵과 다른 프로그램에서 프로그램이 실행 중일 동안만 사용이 가능하도록 할 수 도 있는 아래와 같은 프로그램을 만들 수 있을 듯합니다. ^^;



폰트다운로드:

Posted by WHiSTLE
TAG Barcode, Font

트랙백 주소 http://blog.ntils.com/trackback/42 관련글 쓰기

댓글을 달아 주세요

집에 있는 데스크톱 컴퓨터에 문제가 생겨서 포맷을 하고 재설치중입니다.
운영체제 및 업데이트는 대충 다 이뤄진듯 하고 이제 Visual Studio를 설치하고 개발환경을 셋팅하고 있는데요.
그동안은 집에서는 영문버전 Visual Studio를 사용했었는데 이번에는 아무리 찾아도 영문판 Visual Studio 설치DVD가 보이질 않아서 어쩔수 없이 한글판 Visual Studio를 설치하였습니다.
얼마 전 Visual Studio 2008 SP1의 경우에는 이미 한글판이 출시되어 있어서 설치를 했습니다. 하지만, 이번 SP1의 경우에는 ASP.NET MVC 는 포함되지 않아서 아직 ASP.NET MVC의 경우에는 아직 한글판이 존재하지 않습니다. 물론, 현재 배포버전인 MVC Preview 3이후에 Preview 4가 나올 듯 하니 아직까지 정식버전 및 한글지원 버전은 좀 더 기다려야 할 듯 합니다.

하지만, 저같은 경우에는 이전에 MVC로 진행하던 것도 있고 해서 ASP.NET MVC Preview 3를 설치하였습니다. 설치시에는 문제가 없었지만, Visual Studio 실행시 새 프로젝트에서 "ASP.NET MVC Web Application" 프로젝트가 보이질 않았습니다. 설치는 정상적으로 이뤄졌는데, 프로젝트 템플릿이 제대로 로드가 되지 않는듯 하여, 인터넷을 뒤지기 시작했습니다.

역시, 제가 생각하는 것은 이미 다른 누군가가 고맙게도 해결책을 내놓아 두었더군요.
이번의 경우에는 taeyo.net에서 찾았습니다.

[MVC] MVC 애플리케이션 개발환경 설정 글과
VS2008 한글 RTM 설치후 추가 작업 해야할 것들 이라는 두개의 글에 걸쳐서 해결방법이 제시되어 있었습니다.

다음을 위해서 여기에 정리해 두자면,
설치후 프로젝트 템플릿이 로드 되지 않는 이유는 영문판과 한글판의 경우 프로젝트 템플릿이 저장되는 경로(버전)이 다르기 때문이며, 영문 버전(1033)폴더에 등록되어 있는 프로젝트 템플릿파일(zip파일)을 한글 버전(1042)폴더로 복사해 넣고, 등록과정을 거치면 사용이 가능합니다.
유의할 점은 ASP.NET MVC의 경우 WEB 프로젝트 외에 Test 프로젝트 템플릿도 함께 등록해줘야 합니다. ASP.NET MVC는 MVC용 테스트 프로젝트가 따로 존재하기 때문입니다.
그리고, 프로젝트에서 추가할 수 있는 Controller 클래스등의 아이템 템플릿들도 등록해야 합니다.

  1. ASP.NET MVC 프로젝트 템플릿 복사
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1033 폴더(VS 영문판용 폴더)에 존재하는 MvcWebApplicationProjectTemplateP3.cs.zip 파일을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1042 폴더(VS 한글판용 폴더)로 복사한다.
  2. ASP.NET MVC용 테스트 프로젝트 템플릿 복사
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1033 폴더(VS 영문판용 폴더)에 존재하는
    MvcWebApplicationTestProjectTemplateP3.cs 파일을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1042 폴더(VS 한글판용 폴더)로 복사한다.
  3. MVC용 아이템 템플릿을 생성
    MVC용 아이템 템플릿은 영문판용 폴더만 존재하고 한글판용 폴더는 존재하지 않습니다.
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1033 폴더에 포함된 파일들을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1042 폴더를 새로 생성하여 추가합니다.
  4. Visual Studio 2008 명령 프롬프트에서
    devenv.exe /installvstemplates
    devenv.exe /setup

    명령을 실행한다.

MVC Project가 추가된 화면

Posted by WHiSTLE

트랙백 주소 http://blog.ntils.com/trackback/41 관련글 쓰기

댓글을 달아 주세요

이전버튼 1 이전버튼