레이블이 폰트인 게시물을 표시합니다. 모든 게시물 표시
레이블이 폰트인 게시물을 표시합니다. 모든 게시물 표시

2012-10-23

Java] iText 한글 깨짐 문제 해결 및 폰트 찾기



iText 한글깨짐 해결..
출처 : http://blog.pointbre.com/2818/itext-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0.html

라이브러리 설치
iText 2.x.x 선택해야 함, iText 5.x.x는 해보니 아무리 찾아보고 시도해봐도 안되더군요 ㅠ.ㅠ

코딩
BaseFont objBaseFont = BaseFont.createFont("HYGoThic-Medium", "UniKS-UCS2-H", false); 
Font objFont = new Font(objBaseFont, 12);
objDocument.add(new Paragraph("한글테스트", objFont));

폰트설치

윈도우, 리눅스에서 모두 동작하는 것을 확인했습니다 ^^*




===========================================================================
해당 한글 폰트 찾기
출처 : http://blog.pointbre.com/2816/jfreechart-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0.html

fontconfig.properties등을 고치는 건 너무 어렵고 고통스러운 테스트가 동반되어 삽질 중 포기함
jre설치위치/lib/font에 batang.ttc, gulim.ttc, H2GTRM.TTF를 복사해넣어주면 끝!
윈도우, 리눅스에서 모두 확인했슴

H2GTRM.TTF은 iText용으로 일단 copy해두었습니다. 보통의 경우라면 batang.ttc, gulim.ttc만 copy하면 될듯 합니다.

2012-09-09

FreeBSD] x11에서 폰트사용



3.1 Type1폰트

X11에 기본으로 포함된 폰트들은 전형적인 출판프로그램의 것보다 덜하다.  큰폰트는 덜 전문적으로 제작된것처럼 보이고, 적은폰트들은 넷스케이프에서는 거의 알아볼 수 없는 것들도 있다.

어쨋든 몇몇은 공짜이고, 고품질은 Type1(PostScript)폰트를 사용할 수 있다.

일예로 URW폰트컬렉션(x11-fonts/urwfonts)은 고품질의 표준 Type1폰트(Time Roman, Helvetica, Palatino등)를 포함하고 있다.

Freefont컬렉션(x11-fonts/freefonts) 는 많은 폰트를 포함하고 있지만 대부분은 Gimp와 같은 그래픽용 소프트웨어에서 사용될 것이며, 화면용 폰트로는 완전하지가 않다.

게다가 X11에서는 최소한은 노력으로 트루타입폰트를 사용할 수 있다.

자세한것은 X(7) 메뉴얼페이지를 보거나 핸드북의 트루타입폰트 섹션을 참고하세요.

포트컬렉션에서 Type1폰트 컬랙션을 설치하려면 다음의 명령을 입력하세요...


# cd /usr/ports/x11-fonts/urwfonts
# make install clean


freefont나 다른 컬렉션도 마찬가지이다. X서버는 이러한 폰트들을 검출해내고, X서버 /etc/X11/(Xorg:xorg.conf, XFree86:XF86Config) 설정파일에 아래 정보를 추가한다.


 FontPath "/usr/X11R6/lib/X11/fonts/URW/"


또는  , X 세션 실행시에 다음의 명령라인을 입력한다.


% xset fp /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash


이 방법은 X세션이 닫히면 잃어버리며, 그래서 시작파일(~/.xinitrc : 일반 startx세션, ~/.xsession : xdm같은 그래픽로긴관리자를 통해 로긴할경우)에 추가를 해놓는다.

3번째는 새로운 /usr/X11R6/etc/fonts/local.conf 파일에 다음섹션의 anti-aliasing을 사용하는 법이다.


3.2 트루타입폰트

XFree86 4.X 와 Xorg는 트루타입폰트를 지워하도록 되어있다.

이는 두개의 다른 모듈이 하나의 기능으로 가능하도록 할 수 있게 되어있다. freetype모듈은 이 예제에서 사용되어진다. 왜냐면 이것이 백-엔드에서 다른 폰트렌더링에 더 알맞기 때문이다.

freetype폰트 모듈은 "/etc/X11/xorg.conf " 나 "/etc/X11/XF86Config" 파일의 'Module' 섹션에 다음의 라인을 추가하면 된다.

    Load       "freetype"


XFree86 3.3.x 에서는 트루타입폰트서버는 필요에 의해서 분리했다. Xfstt는 일반적으로 앞의 목적을 위해서 사용되었다. Xfstt를 설치하기 위해서는 x11-servers/Xfstt 포트를 설치하면 간단하게 된다.

트루타입폰트를 위한 디렉토리, 예를 들면 /usr/X11R6/lib/X11/fonts/TrueType 을 만들고, 현재 디렉토리에 있는 모든 트루타입폰트를 복사한다. 트루타입폰트는 매킨토시에서 직접가지고 올 수는 없고,  UNIX/MS-DOS/Windows 포맷만이 X11에서 사용될 수 있다. 한번 복사한 후, "ttmkfdir"을 사용해서 fonts.dir 파일을 생성하면,  X 폰트 생성기(렌더러)가 이 새로운 파일들을 알아서 설치할 것이다.

ttmkfdir은 FreeBSD x11-fonts/ttmkfdir 같은 포트컬렉션으로부터 얻을 수 있다.


# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkdir > fonts.dir


다음으로 TrueType 디렉토리에 폰트경로를 추가한다.
이것은 아래의 방법과 같이 하면 되고, 이 방법은 위에 기술된 Type1 과 같은 방법이다.


% xset fp /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash


또는 xorg.conf 나 XF86Config 파일에  FontPath 줄을 추가한다.


이렇게 설치된 트루타입폰트들은 넷스케이프, Gimp, StarOffice 또는 다른 모든 X프로그램에서 인식이 될것이다.  
극히 작은 폰트나 극히 큰 폰트들도 이전보다 나아보일것이다.



3.3 Anti-Aliased Fonts (안티알리아스드 폰트)

Joe Marcus Clarke 가 갱신함

안티알리아싱은 XFree86 4.0.2 때부터 X11에서 사용할 수 있게 되었다.
하여간 폰트 설정은 XFree86 4.3.0 이 소개되기 전까지는 귀찮은 작업이었다.
XFree86 4.3.0 이 나오면서부터 X11의 모든 폰트가  /usr/X11R6/lib/X11/fonts/ 와 ~/.fonts 디렉토리에 있게되고 Xft-aware 프로그램들이 안티알리아싱을 자동적으로 사용가능하게 되었다.

모든 프로그램이 Xft-aware적인 것은 아니지만, 많은 것들이 Xft의 지원을 받게 되었다.   Xft-aware적인 것의 예를 들면 Qt 2.3 과 그이상버전(KDE 데스크탑을 위한 툴킷), GTK 2.0가 그이상버전(GNOME 데스크탑을 위한 툴킷)과 Mozilla 1.2 이상버전들이다.

폰트를 조절하거나 또는 안티알리아싱 속성을 설정하기에 따라서 안티알리아스드되기도 하고,  /usr/X11R6/etc/fonts/local.conf파일을 생성(존재하는것을 수정) 해서 만들기도 한다.

Xft폰트시스템의 더 나은 방법은 이 파일을 튜닝할 수 있다는 것이다.
이 섹션은 단지 약간의 가능성만  보여준다. 더 자세한 사항은 fonts-conf(5)를 보기 바랍니다.

이 파일은 아래와 같은 XML포맷으로 되어 있고  DOCTYPE로 정의된 XML헤더를 따르고 있으며,  <fontconfig>라는 태그를 사용한다.


      <?xml version="1.0"?>

      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">

      <fontconfig>



이전 상태에 따라,/usr/X11R6/lib/X11/fonts/과 처럼 ~/.fonts/ 에 있는 모든 폰트는 Xft-aware 프로그램에서 사용가능하게 만들어졌다.
만약 이런 두개의 디렉토리 트리외에 다른 디렉토리를 더하고자 하면, 다음과 같은 라인을 /usr/X11R6/etc/fonts/local.conf 파일에 추가하면 된다.



     <dir>/path/to/my/fonts</dir>



새 폰트를 추가하거나 새폰트 디렉토리를 추가한 후,  아래의 명령으로 폰트 캐시를 리빌드해야한다.


# fc-cache -f


안티 알리아싱은 경계를 약간 흐리게 만들어,  아주 작은 텍스트와 큰 텍스트의 계단현상을 제거해줌으로 해서 가독성을 높여주지만, 일반 텍스트에 적용하면 눈의 피로의 원인이 될 수 있습니다.

안티알리아싱을 14포인보다 작은 폰트사이즈는 제외하고자하면 애래의 문장을 추가하세요.



        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>



어떤 모노스페이스된 폰트의 간격은 안티알리아싱에 부합하지 않을수도 있다.

특히 KDE에서...  이런 문제를 해결하는 것들 중 하나는 폰트의 간격을 100으로 고정하는것이다.

그 예는 아래에 있다.



       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>




 아래의것도 첨부.



          <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>





Helvetica같은 폰트는 안티알리아싱을 할때 문제가 발생할 수 있다. 이런 문제는  폰트가 수직으로 반절이 잘려진것처럼 보인다는 것이다. 더욱 안좋은 것은 Mozilla와 같은 프로그램과 충돌이 발행하는 원인이 될 수 있다는 점이랍니다.  이현상을 피하기 위해, local.conf 파일에 아래의 사항을 추가하는것을 고려해봄직합니다.




         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>  




local.conf 파일의 수정을 마친후 파일의 끝에 </fontconfig> 태그를 추가해야만 합니다.  이것이 없다면 수정 사항이 무시되니까요....


X11에 설정되어 있는 기본폰트는 안티알리아싱 적용시 적절해 보이지 않는다.  
x11-fonts/bitstream-vera 포트에 있는것이 기본 폰트보다 더 많이 찾을 수 있다.

이 포트는 만약 없다면 /usr/X11R6/etc/fonts/local.conf 파일을 설치할 것이다.
위 파일이 존재한다면, 포트는 /usr/X11R6/etc/fonts/local.conf-vera 파일을 생성한다.

 /usr/X11R6/etc/fonts/local.conf 파일에  /usr/X11R6/etc/fonts/local.conf-vera 의 내용을 합하면, 비트스트림폰트는 X11의 Serif, Sans Serif, Monospaced 폰트를 자동으로 대체하게 될것이다.

마지막으로, 사용자들은 자신의 고유의 설정을 자신들의 .fonts.conf 파일을 통해 추가할 수 있다.

이때 할 일은 각 유저는 ~/.fonts.conf 파일을 생성하기만 하면 된다. 이 파일도 XML형식을 가진다.


마지막 사항: LCD인 경우 sub-pixel 샘플링을 요구할 지도 모른다.

이는 기본적으로 (수평으로분리된) Red, Green, Blue 색상요소들의 향상된 분리(?)로 , 수평주사율을 의미한다.

그 결과물은 드라마틱하다.  이를 가능하게 하려면, local.conf 파일에 다음의 문장을 넣어준다.



          <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>




이렇게 하면 안티알이아싱을 X 서버가 시작되면서 사용할 수 있게 된다.