티스토리 블로그 계정을 신설하고 싶은데 초대장이 없던 분들은 메일이나 댓글에 블로그를 어디에 어떻게 쓸 것 인지
자세한 취지와 함께 비밀글로 작성해주시길 바랍니다. 혹시라도 제가 초대했던 분이 음흉한 블로그를 운영하면
괜히 속이 상하기 때문에 그런 걸로 양해해주시고 이해를 하셨으면 좋겠습니다.

출저 : 삼국지 도원결의 카페

 
Posted by - Hanguel Sarang 성군처럼



Posted by - Hanguel Sarang 성군처럼
2011.12.02 12:56
24.GDI (4) Font - CreateFont(), LOGFONT 구조체, CreateFontIndirect(), SetTextColor(), SetBkColor(), SetBkMode()

- HFONT CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace )

리턴값 : 생성된 폰트의 핸들.

인수 설명
nHeight 폰트의 높이를 논리적인 단위로 지정한다. 이 값이 0일 경우는 디폴트 크기가 사용된다.
hWidth 폰트의 폭을 지정하되 이 값이 0이면 nHeight에서 지정한 높이에 따라 폭을 자동으로 결정한다. 즉 이 값이 0이면 폰트의 종횡비(장평)가 일정하다.
nEscapement 폰트의 각도를 0.1도 단위로 설정한다. 이 각도는 문자가 출력될 X출과 문자열과의 각도이며 일상적인 360분법의 각도 체계를 사용한다. 즉 세시 방향이 0도로 사용되며 반시계 방향으로 각도가 증가한다.
nOrientation 글자 한자와 X축과의 각도를 지정한다. nEscapement는 전체 문자열의 기울기를 지정하는데 비해 이 인수는 개별 문자의 기울기를 설정한다.
nWeight 폰트의 무게를 0~1000까지의 값으로 설정한다. 쉽게 말해서 폰트의 두께를 설정한다. 0~1000까지의 값을 지정할 수 있으며 보통 굵기인 FW_NORMAL이 400이다.
bItalic, bUnderline, cStrikeOut 기울임체, 밑줄, 관통선 속성을 설정한다. 데이터형이 BYTE이지만 불린형처럼 사용한다. 속성을 주고 싶으면 0 이외의 값(TRUE)를 주고 속성을 주지 않으려면 0(FALSE)를 준다.
nCharSet 문자 셋을 설정한다. 여러 가지 값이 있지만 실제 사용될 수 있는 옵션은 ANSI_CHARSET과 OEM_CHARSET가 있다. ANSI_CHARSET가 윈도우즈에서 사용하는 문자셋이고 OEM_CHARSET가 도스에서 사용하는 문자셋이라고 생각하면 된다.
nOutPrecision 출력 정확도를 설정한다.
nClipPrecision 클리핑 정확도를 설정한다.
nQuality 논리적 폰트를 물리적 폰트에 얼마나 근접시킬 것인가를 지정한다.
nPitchAndFamily 폰트의 피치와 그룹을 설정한다.
lpszFacename 글꼴의 이름을 나타내는 문자열을 설정한다.

인수는 www.winapi.co.kr 에서 발취.

 

쉬운 설명 :

1. CreateFont로 FONT생성, 핸들을 받음(이하 HFONT) 

2. SelectObject로 FONT핸들을 선택(hdc가 HFONT을 사용하게끔..) 

3. 사용(이때 hdc는 HFONT를 사용하게 된다) 

4. 사용이 끝났으면 SelectObject로 복구(복구를 안하면 차후 hdc 는 HFONT를 이용하게 됨)

5. DelectObject로 HFONT를 지움.

 

 

 

- LOGFONT 구조체

 LOGFONT 구조체의 내용은 CreateFont()함수의 매개변수 들과 같다. CreateFontIndirect() 에 사용하기 위해 제작된다.

 

 

 

- HFONT CreateFontIndirect( CONST LOGFONT *lplf )

LOGFONT 구조체의 정보를 이용하여 폰트를 생성한다.

리턴값 : 생성된 폰트의 핸들

lplf : LOGFONT 구조체의 포인터

 

쉬운 설명 : (CreateFont()와 차이점은 LOGFONT 구조체로 인스턴스 생성, 정보 입력한다는 것뿐.)

1. LOGFONT 구조체로 인스턴스 생성, 정보 입력.

1. CreateFontIndirect()로 FONT생성, 핸들을 받음(이하 HFONT) 

2. SelectObject로 FONT핸들을 선택(hdc가 HFONT을 사용하게끔..) 

3. 사용(이때 hdc는 HFONT를 사용하게 된다) 

4. 사용이 끝났으면 SelectObject로 복구(복구를 안하면 차후 hdc 는 HFONT를 이용하게 됨)

5. DelectObject로 HFONT를 지움.

 

윈도우 API 함수들 중에서 *****Indirect() 의 형태( Indirect 가 붙은..) 함수들은 대부분(특수한 목적의) 구조체의 포인터를 인수로 취한다.

 

 

 

-COLORREF SetTextColor( HDC hdc, COLORREF crColor );

Text의 컬러를 설정한다.

리턴값 : 성공하면 이전컬러값을 리턴한다. 실패하면 CLR_INVALID를 리턴.

hdc : 현재 값을 사용할 DC

crColor  : 설정할 색

현재 Text의 색을 가져오는 GetTextColor() 함수도 있음.

 

 

 

- COLORREF SetBkColor( HDC hdc, COLORREF crColor );

Text의 배경 컬러를 설정한다.

리턴값 : 성공하면 이전 배경 컬러값을 리턴한다. 실패하면  CLR_INVALID를 리턴.

hdc : 현재 값을 사용할 DC

crColor  : 설정할 색

현재 Text 배경의 색을 가져오는 GetBkColor()함수도 있음.

 

 

 

-int SetBkMode( HDC hdc, int iBkMode );

배경색상을 사용할 방법 설정

리턴값 : 성공하면 이전 iBkMode 의 값을 리턴. 실패하면 0 을 리턴.

hdc : 현재 값을 사용할 DC

iBkMode : 배경색상을 사용 상수

 

iBkMode

OPAQUE : 디폴트, 불투명한 배경을 사용한다. 배경색상에 의해 뒷쪽의 그림이 지워진다.

TRANSPARENT : 투명한 배경을 사용한다. 문자를 출력한 뒤에도 배경이 바뀌지지 않는다.

출저 : http://angelkkm80.blog.me/20040757916

Posted by - Hanguel Sarang 성군처럼



일단 게임을 테스트 삼아 엔딩까지 급 진행을 시켜 엔딩을 봤다. 엔딩까지는 문제가 없다.
게임의 버그도 대사 이외엔 기타 특별한 점이 발견되지 않았다. 문제가 되는 부분들은 바로 간간히 번역되지 않은
문장이나 오출력되는 이벤트 메세지들이다. 이건만 완전하게 고치면 1.0버전으로 배포해도 될 것으로 보인다.
사실 랑펠로 한글화 계획은 오래 전부터 정확히 말하면 군입대하기 전에 계획이 잡혀 있었던 것이였지만
개인사정상 그리고 내 컴퓨터 지식이 부족한 한계로 인해 의욕없이 중단할 때가 많았다. 하지만 요번패치는
많이 도움을 받고 또 전역을 이미 마찬 뒤였으며 내가 배우면서 패치를 해나가서 의의가 크다.
물론 매니악한 한글패치라 난 누구를 두고 한글패치를 하지 않는다. 내가 하기 위해서다...
영문판으로 해도 되는데 영문판은 그래픽이 이식하면서 많이 바뀌어서 손이 가지 않았다.
여하튼 엔딩이나 시스템적으로 이상은 없으나 뒤생각안하고 패치를 완료해야겠다는 일념으로
약간의 미번역과 오출력이 문제로 남아있다. 이 부분만 어서 빨리 뭐가 문젠지 찾아내야 겠다.




PS.이제 다른 걸 염두해두고 밖을 거닐 시간이다..... 
Posted by - Hanguel Sarang 성군처럼


이번 한글패치에 번역을 도맡우셨던 분께서 반각에서 전각으로 처리할 수 있게 어셈블리로 코딩을 해주셨습니다.
문제가 되는 부분은 1바이트를 사용했던 터라 2바이트 전각을 처리할 수 있는 바이트 공백이 부족하여
어쩔 수 없이 명칭 부분에서 가독성을 높일 수가 없을 것 같습니다. 아마 축약적인 단어를 쓰고 변경된 표에다 본래의
단어들의 정보를 알려두고 패치를 시작해야 될 것으로 보이네요. 여하튼 한글출력을 고심했는데 힘써주신 분들이 많아
제대로된 한글패치를 마무리 짓고 싶습니다. 되도록이면 문장 또한 길이를 확장하고 싶지만 아직 포인터 개념이나
계산 능력이 딸리는 머리라서 차후로 미뤄두게 될 것 같습니다. 
Posted by - Hanguel Sarang 성군처럼
게임 한글화를 하는 대다수의 패치자 즉 초도 배포를 전재로 하는 사람은 ReadMe 파일과
패치용 프로그램을 배포한다. 단, 롬파일은 절대 배포를 금한다.

왜 롬파일로 패치를 안 하는 가 또 왜 ReadMe파일을 배포하는가?

이런 걸 두고 의아해서 묻는 사람들이 포럼이나 검색사이트에 종종 올라오고 있다.
정말 몰라서 묻는 질문인지는 모르지만 초도 배포자의 ReadMe파일은 패치자의 정보를 내포하고
차후에 일어나는 패치 파일의 입출력 오류를 제보받고 보완 수정을 위함임을 인지해야 한다.
또 배포에 대한 유무가 누락되면서 한글화를 누가했는지의 대한 명확한 구분이 서 있지 않아
무슨 권위적인 사람들이 된 것 마냥 한글화 롬에 대한 공유자체가 개인의 전시물인양 치부된다.
이를테면 한글판 롬을 소지한 사람이 타포럼에서 난 "한글판임 님들은 이거 없음, 갖고 싶으면
나한테 조공하삼"뭐 이런 류의 글을 게시하면서 그 모양새가 무지 꼴불견이다.
또한 배포로 인한 법적인 유무도 존재하고 있다, 아무리 저작권이 50년 제한을 두지만
저작권이라는 건 같은 게임의 플랫폼이 새로 생기면 저작권에 대한 실효는 재기능을 거두기 때문에
잘 못 배포되었다가는 패치로 인한 법적인 책임을 한글화한 사람이 묻는 사태가 발생할 수 있으니
조심하여야 한다. 말 그대로 배부처(초도 배포)가 이루어진 곳에서 배포가 이루어져야 하고.
배포된 파일로 게임을 즐기는 다운로드한 사람은 본인 컴퓨터에서 즐겨야 한다.
그런데 꼭 이를 어기고 에뮬 포럼에 롬 자체를 패치한 파일을 업로드하는 경향이 크다.
이번 랑펠로는 배포할 때 신중해야 겠다.


Posted by - Hanguel Sarang 성군처럼
이전버튼 1 2 3 4 5 이전버튼