C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[43116] 비트맵 폰트를 이용한 shift-jis 출력
elliclaura [kiss2u] 1461 읽음    2005-12-29 19:02
unsigned int TForm1::sjis2num(unsigned int code)
{
    unsigned int cl, ch;
    /* to jis */
    ch = (code >> 8) & 0xFF;
    cl = code & 0xFF;

    ch -= (ch > 0x9F) ? 0xC1: 0x81;
    if (cl >= 0x9F) {
        ch = (ch << 1) + 0x22;
        cl -= 0x7E;
    } else {
        ch = (ch << 1) + 0x21;
        cl -= ((cl <= 0x7E) ? 0x1F: 0x20);
    }
    /* to num */
    if (ch > 0x2A){
        return (cl - 0x40 + (ch - 0x25) * 96) << 5;
    }else{
        return (cl - 0x20 + (ch - 0x20) * 96) << 5;
}

먼저 하려고 하는 작업은 첨부된 비트맵폰트(16X16)를 이용해서
일본어(shift-jis)코드를 뿌려주려고 합니다.
폰트를 읽어서 화면에 출력 하는 부분은 되었습니다만,
해당 일본어문자의 s-jis코드를 가지고 fnt파일내의 오프셋 주소를 계산하는게 여의치 않습니다.

예를 들어 ぁ,あ 의 경우 0x829F, 0x82A0 입니다. 이것의 fnt내 시작주소는 0x3140, 0x3160이 되지요
제 나름데로 여러 자료 찾아가며 구현하여 일단 위 소스라는 약간 어의없는결과물이 나왔습니다. 계산하면 0x3040이 나오더군요. ㅡㅡ; 그리고 폰트가 그냥 쭉 이어진 도 아니고 중간중간 건너뛰기도 하고 해서
어지럽네요.

아시는 분 계시면 설명 부탁 드리고 싶습니다.

+ -

관련 글 리스트
43116 비트맵 폰트를 이용한 shift-jis 출력 elliclaura 1461 2005/12/29
43125     Re:비트맵 폰트를 이용한 shift-jis 출력 . 1233 2005/12/30
43140         Re:Re:비트맵 폰트를 이용한 shift-jis 출력 elliclaura 2172 2006/01/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.