성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>cmd.exe 창에서 사용할 폰트를 추가하는 방법</h1> <p> cmd.exe 창에서 사용할 수 있는 폰트는 아래의 글에서 설명했던 제어판의 시스템 로케일 값에 따라 다릅니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 개발자 PC 환경 - 유니코드(Unicode)를 위한 설정 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/762'>http://www.sysnet.pe.kr/2/0/762</a> </pre> <br /> 윈도우 8.1에서는 "제어판" / "국가 또는 지역(Region)"으로 선택할 수 있는데, "관리자 옵션(Administrative)" 탭의 "유니코드를 지원하지 않는 프로그램용 언어(Language for non-Unicode programs)"를 "한국어(Korean)"로 설정하는 것과 영어(English)로 설정하는 것에 따라 다음과 같이 기본 폰트 제공이 다릅니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='font_in_console_1.png' src='/SysWebRes/bbs/font_in_console_1.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 시스템 로케일이 <span style='color: blue; font-weight: bold'>영문</span>인 경우: - Lucida Console - Consolas - Raster Fonts 시스템 로케일이 <span style='color: blue; font-weight: bold'>한글</span>인 경우: - Raster Fonts - 굴림체 </pre> <br /> 위의 그림에서 왼쪽은 시스템 로케일 언어가 영문인 경우의 cmd.exe 속성창을 본 것입니다. 보시는 바와 같이 한글이 없습니다. 하지만 시스템 로케일 언어가 한글인 경우의 오른쪽 그림은 "굴림체" 폰트가 등록되어 있습니다. 이는 윈도우 자체를 영문 윈도우로 설치했느냐, 한글 윈도우로 설치했느냐와 무관합니다. 즉, 영문 윈도우를 설치했어도 시스템 로케일 값을 한글로 바꾸면 콘솔(cmd.exe) 창에서 한글 입력 및 출력이 가능합니다.<br /> <br /> 콘솔(cmd.exe) 창에서 사용할 수 있는 폰트는 레지스트리에 등록되어 있기 때문에 다음과 같이 확인할 수 있습니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='font_in_console_2.png' src='/SysWebRes/bbs/font_in_console_2.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 경로: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 기본값 목록 0: Lucida Console 00: Consolas 932: *MS ゴシック 936: *新宋? <span style='color: blue; font-weight: bold'>949</span>: *굴림체 950: *細明體 </pre> <br /> 확실한 내부 동작은 알 수 없지만 영문과 한글의 경우 폰트가 다르게 보이는 것은 코드 페이지와 연관이 있는 것 같습니다. 가령, chcp 명령어로 해당 콘솔 창의 코드 페이지를 확인할 수 있는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 시스템 로케일 == 영문인 경우) c:\temp>chcp Active code page: <span style='color: blue; font-weight: bold'>437</span> 시스템 로케일 == 한글인 경우) c:\temp>chcp Active code page: <span style='color: blue; font-weight: bold'>949</span> </pre> <br /> 시스템 로케일이 한글인 경우 기본 코드 페이지가 949이고, 이는 레지스트리에 등록된 "949: *굴림체" 항목과 무관하지는 않을 것 같습니다. (더 이상의 자세한 설명은 관련된 자료를 찾지 못해서 할 수가 없군요. ^^)<br /> <br /> 그렇다면 혹시 시스템 로케일이 영문인 경우 코드 페이지만 변경해서 한글 폰트를 사용할 수 있도록 만들 수 있지 않을까요? 직접 해보면 알 수 있지만 아쉽게도 cmd.exe 창의 특별한 설계 탓인지 949 코드 페이지 변경은 실패합니다. 그 외에 유니코드 코드 페이지인 Little Endian 용 1200과 Big Endian 용 1201로의 전환도 실패합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 시스템 로케일 == 영문인 경우) C:\temp>chcp 949 Invalid code page C:\temp>chcp 1200 Invalid code page C:\temp>chcp 1201 Invalid code page </pre> <br /> 유니 코드 용으로 허용되는 것은 UTF-8 코드 페이지인 65001입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp>chcp 65001 Active code page: 65001 </pre> <br /> 재미있는 것은 이렇게 바꾸고 dir 같은 명령어를 치면 다음과 같은 식으로 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp>dir Volume in drive C has no label. Volume Serial Number is 8A2C-9CD0 Directory of C:\temp <span style='color: blue; font-weight: bold'>The system cannot write to the specified device.</span> </pre> <br /> 저 오류 메시지를 본 기억이 나는군요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > cmd.exe - The system cannot write to the specified device. ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/1277'>http://www.sysnet.pe.kr/2/0/1277</a> </pre> <br /> 위의 글에서 설명했던 대로 "dir > con"과 같은 식으로 출력을 redirect시키면 실행 결과가 보입니다. ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> 글의 주제로 돌아와서, cmd.exe 창에서 사용할 폰트를 추가하는 것이 가능합니다. 하지만 이것이 녹록치 않은데, 마이크로소프트의 엄격한 기준을 통과해야 하기 때문입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Necessary criteria for fonts to be available in a command window ; <a target='tab' href='http://support.microsoft.com/kb/247815/en-us'>http://support.microsoft.com/kb/247815/en-us</a> - The font must be a fixed-pitch font. - The font cannot be an italic font. - The font cannot have a negative A or C space. - If it is a TrueType font, it must be FF_MODERN. - If it is not a TrueType font, it must be OEM_CHARSET. </pre> <br /> 저야 폰트 전문가가 아니기 때문에 위의 내용을 자세하게 이해하지는 못하겠지만 (또한 저 기준으로 만족하는 폰트인지 어떻게 확인할 수 있는지도 모르지만) 어쨌든 '고정 폭' 폰트여야 한다는 것이 기본 전제입니다. 이를 "monospaced font"라고도 말하는 것 같은데, 다음의 폰트 관련 사이트에서 이 기준을 만족하는 폰트를 찾아볼 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > FONTSPACE ; <a target='tab' href='http://www.fontspace.com/'>http://www.fontspace.com/</a> ; <a target='tab' href='http://www.fontspace.com/search/?q=monospace'>http://www.fontspace.com/search/?q=monospace</a> FONT ex ; <a target='tab' href='http://www.fontex.org/'>http://www.fontex.org/</a> ; <a target='tab' href='http://www.fontex.org/monospaced-fonts.html'>http://www.fontex.org/monospaced-fonts.html</a> FONTS2U ; <a target='tab' href='http://www.fonts2u.com'>http://www.fonts2u.com</a> ; <a target='tab' href='http://www.fonts2u.com/category.html?id=17'>http://www.fonts2u.com/category.html?id=17</a> </pre> <br /> 위의 사이트에 등록된 모든 monospaced font들을 테스트 해본 것은 아니지만 "<a target='tab' href='http://support.microsoft.com/kb/247815/en-us'>Necessary criteria for fonts to be available in a command window</a>"의 엄격한 규칙 때문에 "monospaced font"라고 해서 모두 cmd.exe 창에서 등록되는 것은 아닐 것 같습니다. 어쨌든 요행을 바라고 ^^ 한번 등록해 보는 식으로 사용하는 수밖에 없습니다.<br /> <br /> 예를 들어, 제가 해보니까 다음의 폰트들이 등록 가능했습니다. (물론, 더 있겠지만!)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > White Rabbit font ; <a target='tab' href='http://www.dafont.com/white-rabbit.font'>http://www.dafont.com/white-rabbit.font</a> DejaVuSansMono.ttf ; <a target='tab' href='http://dejavu-fonts.org/wiki/Main_Page'>http://dejavu-fonts.org/wiki/Main_Page</a> Free UCS Outline Fonts (FreeMono) ; <a target='tab' href='http://savannah.gnu.org/projects/freefont/'>http://savannah.gnu.org/projects/freefont/</a> </pre> <br /> 등록 방법은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 경로에 다음과 같이 간단하게 "0"을 이어붙이는 방식으로 등록하고 재부팅을 해야 합니다. 그럼 cmd.exe 속성 창에서 다음과 같이 등록된 폰트들을 선택할 수 있습니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='font_in_console_3.png' src='/SysWebRes/bbs/font_in_console_3.png' /><br /> <br /> 그런데, 폰트 이름은 어디서 구하는 걸까요? 역시 레지스트리의 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" 경로에 가면 시스템에 등록된 폰트 목록이 나오고 그중에서 "Name" 영역에 해당하는 것 중 괄호를 제외한 영역을 이름으로 사용하면 됩니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='font_in_console_4.png' src='/SysWebRes/bbs/font_in_console_4.png' /><br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, 폰트 폴더에 대해 다음의 명령을 실행하면 특수 폴더의 뷰가 아닌 일반 파일 뷰로 볼 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > attrib -r -s c:\Windows\Fonts </pre> <br /> 또한 폰트 파일을 구해서 설치하는 중에 실수로 윈도우 탐색기에서 제공하는 암호화된 상태의 TTF 파일을 더블 클릭한 후 "Install" 버튼을 눌러 설치했는데 해당 폰트들은 탐색기의 "C:\Windows\Fonts"에 보이지 않았고, 부팅 속도가 눈에 띄게 저하되었습니다. 이런 경우 attrib 명령을 통해 일반 파일 뷰로 바꾸면 파일이 암호화된 상태임을 알리는 색상으로 파일명이 표시되는데, 해당 암호화 기능을 풀어주면 됩니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1610
(왼쪽의 숫자를 입력해야 합니다.)