font와 panose

Posted 2007.04.17 11:57 by 선율아빠

1. PANOSE란 무엇인가?
  이놈을 어떻게 발음해야 할지는 모르겠다. 사전에도 없는 단어다 ^^; 그냥 "파노스"라고 간단하게 발음하면 되지 않을까 싶다. PANOSE라는 녀석은 폰트를 classifying하는, 즉 폰트를 여러 가지 특징에 따라 구분짓는 방법이다. PANOSE는 폰트를 총 10가지 종류의 특징으로 구분짓는다. ElseWare라는 회사에서 처음 고안되었고 현재는 HP가 이 회사를 인수해서 기술을 소유하고 있다. 현재는 W3를 통해 관리되며 표준화되었다고 하겠다.

2. PANOSE가 왜 유용한가?
  간단하다. 우리는 문서를 좀더 멋있고 아름답게 만들기 위해서 갖가지 폰트를 사용한다. 하지만 내가 사용하는 폰트를 다른 사람들이 100% 가지고 있다고 확신할 수 있을까? 하다못해 우리들이 항상 접하고 쉽게 사용하고 있는 "바탕"이라는 폰트는 리눅스나 맥에는 없다! Wingdings로 기호를 삽입하여 문서를 만들어서 다른 사람에게 보냈는데 이 사람 PC에 Wingdings가 없다면 이 기호는 깨져 보일 것이다. 그래서 필요한 것이 PANOSE이다. PANOSE는 폰트를 10가지 특징으로 구분지어 놓고 시스템에 해당 폰트가 존재하지 않을때 가장 비슷한 대체 폰트를 찾기 위해 사용된다. 상대방 PC에 내가 사용한 폰트가 없더라도 가장 비슷한 폰트를 찾아 텍스트를 표현해 줄 수 있는 것이다. 이 특징은 웹에서 가장 빛을 발할 수 있을 것이다. 내가 만드는 doc 문서는 웹에서 누구나 다운로드 받을 수 있도록 공유하지 않는 이상 불특정 다수가 사용한다고 할 수 없다. 하지만 웹문서는 틀리다. 전세계의 갖가지 시스템을 사용하는 그 누구든 내가 만든 웹문서를 볼 수 있다!

3. PANOSE의 Attributes
  위에서 PANOSE는 폰트를 10가지의 특징으로 구분짓는다고 했었다. 즉 PANOSE는 폰트의 비쥬얼한 특징을 나타내는 10바이트의 정보이다. 각각의 특징이 1바이트로 표현된다. 이러한 특징에는 family, serif style, weight 등등이 있다.


  각각의 Attribute에 대한 설명은 여기서 구구절절이 하지 않도록 하고 http://www.w3.org/Printing/stevahn.html 여기를 참고하기 바란다.

4. Windows에서 비슷한 폰트 찾아보기
  Windows XP를 기준으로 보도록 하자. 제어판의 글꼴을 실행하면 다음과 같은 눈에 익은 창이 뜬다.

사용자 삽입 이미지

 위 툴바에서 오른쪽에서 두번째 있는 아이콘(AB라고 써있는, 유사성이라는 툴팁이 뜨는 버튼)을 눌러보자. 다음과 같이 폰트 목록의 뷰가 바뀔 것이다.
사용자 삽입 이미지

그냥 한눈에 봐도 뭘 보여주는지 알 수 있을 것이다.

5. Microsoft Word에서의 PANOSE
  PANOSE를 잘 활용하고 있는 application 중의 하나가 Microsoft Office이다. 다음은 Word 2007의 docx 형식으로 저장된 파일의 일부이다.
 <w:font w:name="Times New Roman">
  <w:altName w:val="Times" />
  <w:panose1 w:val="02020603050405020304" />
  <w:charset w:val="00" />
  <w:family w:val="roman" />
  <w:pitch w:val="variable" />
  <w:sig w:usb0="20002A87" w:usb1="80000000" w:usb2="00000008" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000" />
 </w:font>

MS Word는 문서를 저장할 때 이렇게 문서에서 사용된 폰트들의 PANOSE 정보도 같이 저장하여 문서를 읽는 PC에서 이 이름을 갖는 폰트가 존재하지 않을 때 활용하고 있다.

6. Java에서 폰트의 PANOSE 얻어오기
  PANOSE 정보를 가져오는 방법은 여러가지가 있겠지만 여기서는 apache foundation의 batik 라이브러리를 활용해 보도록 하겠다. batik에 대한 정보와 download는 http://xmlgraphics.apache.org/batik/ 에서 가능하다. 각설하고 batik를 다운로드해서 classpath에 걸고 다음과 같이 해보자.

  Font font = Font.create("C:\\WINDOWS\\Fonts\\ARIAL.TTF");
  System.out.println(font.getOS2Table().getPanose());

  그럼 다음과 같은 결과물을 얻게 될 것이다.

  2 11 6 4 2 2 2 2 2 4

  간단하다. 아쉬운 점은 아직까지 폰트 이름으로 해당 폰트의 물리적인 파일을 얻어올 수 없다는 데 있다. java forum 등을 열심히 찾아봤는데 혹자는 방법이 없다고 하더라. batik의 소스를 확인해 보면 알겠지만 PANOSE를 얻는 것은 폰트 파일의 header 부분에서 10바이트를 읽어오는 간단한 동작이다. 폰트의 물리적인 파일에 접근하지 못한다면 PANOSE도 얻기 힘들 듯하다. 누군가 폰트 이름으로 폰트 파일을 얻을 수 있는 방법을 아시는 분은 알려주시라~ㅜㅜ

7. References
http://www.panose.com/ProductsServices/pan1.aspx
http://www.w3.org/Printing/stevahn.html
http://en.wikipedia.org/wiki/PANOSE
http://www.w3.org/TR/REC-CSS2/notes.html#panose
신고

Tag : , ,

« PREV : 1 : ··· : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : ··· : 26 : NEXT »

티스토리 툴바