유닉스용 유니코드 인코딩 폰트를 사용하여 현대 한글 11,172자 출력 방법


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :김덕태 1998년 5월 04일 18:14:25

In Reply to: JDK 1.1, 1.2의 한글 관련 인코딩과 기타 posted by 김덕태 on 1998년 4월 22일 16:13:34:

다음은 han.comp.lang.java 뉴스 그룹에서 퍼온 내용임.


In <6hmojf$35t$1@photon.hgs.yale.edu>, Jungshik Shin wrote:
: JDK 1.1.5가 기본으로 제공하는 font.properties* 파일에서 쓰지 않는
: "glyph index scheme"을 가지는 폰트를 쓰기 위해 아래 두 문서를 보았는데,
: 제가 하려는 일에 직접 응용하기가 힘든 것 같아 질문합니다.


: http://java.sun.com/products/jdk/1.1/docs/guide/intl/fontprop.html
: http://java.sun.com/products/jdk/1.1/docs/guide/intl/unicode_font.doc.html


: 보다 구체적으로 Unix/X11에서 UCS-2와 똑같은 "폰트 인코딩"을 가지는
: 한글 폰트(11,172자를 모두 다 가지고 있는)를 Java application/applet 에서
: 쓰려고 합니다. 위의 두 파일에 보면 Java 내부의 UCS-2 encoding을 쓰고자


그냥 첫 번째 문서에 나온 보기를 아래처럼 살짝 바꿨더니 잘 동작하는군요.
byte-ordering이 조금 걸리긴 하지만(혹시 더 나은 방법이 있으면 알려
주십시오), 아래와 같은 파일을 컴파일한 다음에 적절한 디렉토리에 class
파일을 두고, 위의 문서에서 설명한 방식대로 font.properties에 converter와
폰트(한글 음절 11,172자를 UCS-2 encoding의 code point와 같은 곳에 가지고
있는)를 지정했더니, applet에서 한글 음절 모두가 잘 보이더군요. UCS-2
encoding 혹은 다른 인코딩으로 한글 음절 모두를 제공하는 폰트를 가진
경우에는(Solaris 2.6이나 IRIX 6.x 사용자, 또 Linux 사용자 중에 mizi의
폰트 서버를 설치한 분은 해 보세요) X11에서도 Java
applet/application에서 한글 음절 모두를 볼 수 있겠군요. 어쩌면, 한텀에서
쓰는 조합 폰트의 경우에도 가능할 수도 있다는 생각이 듭니다.


신정식


----------Cut--------here-----------
package mypkg.converter;


import sun.io.CharToByte8859_1;
import sun.io.CharToByteConverter;
import sun.io.ConversionBufferFullException;


public class CharToByteUCS2KR extends sun.io.CharToByte8859_1 {


/*
* This method indicates the range this font covers.
*/
public boolean canConvert(char ch) {
if (ch >= 0xac00 && ch <= 0xd7af) {
return true;
}
return false;
}


/*
* This method converts the unicode to this font index.
*/
public int convert(char[] input, int inStart, int inEnd,
byte[] output, int outStart, int outEnd)
throws ConversionBufferFullException {
int outIndex = outStart;
for (int i = inStart; i < inEnd; i++) {
char ch = input[i];
if (ch >= 0xac00 && ch <= 0xd7af) {
if (outIndex >= outEnd)
throw new ConversionBufferFullException();
output[outIndex++] = (byte)( ch / 256 );
output[outIndex++] = (byte)( ch % 256 );
}
}
return outIndex - outStart;
}


/*
* This method indicates the charset name for this font.
*/
public String toString() {
return "UCS2KR";
}
}
-----------------------





다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]