티스토리 뷰
매트랩의 불편한 점이 하나 있습니다. 폰트를 한번에 한 종류밖에 쓰지 못합니다. 그래서 한글이 포함되지 않은 폰트를 쓰면 한글이 제대로 표시되지 않습니다. 매트랩 설치 후 기본 폰트는 monospaced입니다. monospaced에는 한글이 포함되어 있습니다.
음. 못생겼습니다. 이걸 제가 사랑하는 Consolas[1]로 바꾸면 아래처럼 돼버립니다.
제대로 된 글자는 다 깨지면서 원래는 없는 글자인 “맽”은 제대로 표시되는게 아이러니하군요. 이 문제는 매트랩의 데스크탑 언어를 한글로 해도 똑같이 발생합니다. 원래는 아래처럼 나와야 할 것이
폰트를 Consolas로 바꾸면 아래처럼 한글이 깨져버리는 어이없는 현상이 발생합니다.
표시 언어와 환경 언어의 불일치라니… 꽤 오래된[2] 문제인[3] 것으로 알고 있는데 왜 mathworks는 고쳐주지 않는 걸까요. [3]의 질문자는 한국 분[4]이신 듯한데, 혹시 답을 찾았다면 알려주세요!
그나저나 새로 설치한 매트랩에는 왜 데스크탑 언어를 바꾸는 부분이 안 보일까요…? 도움말 센터에서 시키는 대로[5] 윈도우 로캘도 바꿔봤지만[6] 소용이 없군요. 매스웍스 일해라!
참고로 vscode는 폰트를 여러 개 설정해둘 수 있습니다. 그래서 첫 번째 폰트에 없는 글자는 그 뒤에 따라오는 폰트들에서 찾아서 표시합니다. 매트랩도 이렇게 할 수 있으면 좋을텐데 말이죠.
매트랩 기본 패키지에 없는 폰트를 쓰고 싶다면 폰트를 다운받아서 설치하면 됩니다. 그런데 여기에도 함정이 있습니다.
1. 폰트를 모든 사용자용으로 설치해야 합니다.[7]
이유는 모르겠지만 그냥 설치하면 설정 창의 폰트 목록에 폰트가 나오지 않습니다. 폰트를 모든 사용사용으로 설치하고 매트랩을 재시작하면 설치한 폰트가 목록에 뜹니다. D2 Coding은 이렇게 하니까 설치가 되네요.
2. 위 방법이 통하지 않는다면 폰트 폴더에 폰트를 직접 넣어야 합니다.[7][8]
폰트 폴더는 <matlabroot>\sys\java\jre\win64\jre\lib\fonts입니다. 모르겠다면 매트랩 command window에서 아래를 실행해보세요.
fullfile(java.lang.System.getProperty('java.home').toCharArray', 'lib', 'fonts')
경로를 찾아 들어가면 폰트가 이미 몇 개 있을 겁니다. 여기에 원하는 폰트 파일들을 직접 옮기면 됩니다. 이제 매트랩을 재실행하면 폰트가 보일 것입니다. Ubuntu mono는 1번 방법으로 되지 않아서 2번 방법을 썼습니다.
예전에 어느 분께서 Consolas와 맑은 고딕을 합친 폰트를 블로그[9]에 올린 적이 있습니다. 이 폰트는 영어는 Consolas로, 한글은 맑은 고딕으로 표시해줍니다. 한동안 잘 썼던 것으로 기억하고 있는데, 오랜만에 생각이 나서 설치해봤더니 이상한 문제가 발생하네요.
위는 맑은 고딕과 합친 Consolas, 아래는 원래의 Consolas입니다. 폰트 굵기가 살짝 다른게 보이시나요? 이게 bold냐 아니냐의 문제가 아닙니다. 위 폰트에 bold를 주면 아래보다 훨씬 굵어지거든요. 저는 Consolas가 적당히 두께가 있으면서 둥글둥글한 느낌이라 좋아하는데 위 폰트는 그 맛을 잃어버렸습니다. 그렇다고 폰트가 잘못 만들어졌냐 하면 그건 또 아닙니다. 폰트 파일을 열어보면 Consolas 특유의 Q, i, j, l 모양이 그대로 살아있습니다. 왜 두 폰트의 굵기가 다르게 표시되는지는 저도 모르겠습니다. hohoya33[10]님 답을 알려주세요!
폰트는 fontforge[11]라는 앱으로 합칠 수 있는 것 같은데, 저는 조금 만져보다가 포기했습니다. 포기하면 편하거든요.
그래서 아쉽지만 불편한대로 평소에는 Consolas를 쓰고 한글이 필요한 경우는 monospaced로 바꾸기로 했습니다. D2 Coding은 뭔가 길쭉길쭉해서 안 이쁘더라고요. 저는 동글동글한 폰트를 좋아합니다. 그런데 폰트를 바꿀 때마다 설정을 들어가려니 불편하네요. 해결방법이 있습니다.[12] 아래 두 줄을 실행하면 코드 폰트가 monospaced로 바뀝니다.
s = settings;
s.matlab.fonts.codefont.Name.PersonalValue = 'monospaced';
이왕 하는거 함수로 만들어버리면 더 편하겠군요.
이제 두 함수를 실행하여 폰트를 쉽게 바꿀 수 있습니다.
아참, 폰트 크기도 바꿀 수 있습니다. 아래 한줄이면 됩니다.
s.matlab.fonts.codefont.Size.PersonalValue = 10; % 10 대신 원하는 숫자 입력
settings의 matlab.fonts에는 이 외에도 재밌는 설정이 많습니다. 특히 라이브 에디터 폰트를 하나하나 만질 수 있는게 신기하네요. 자세한 내용은 여기[13]를 들어가보세요.
코딩에서 폰트가 중요하냐고요? 중요합니다. 기사[14]도 있습니다.
Arial을 보고 있자니 화가 나는군요. 심지어 소문자 엘과 대문자 아이는 구분조차 되지 않습니다. 부들부들…
이건 사족입니다만, 코딩에서 serif가 쓰이는 건 본 적이 없습니다. (참고: serif vs sans serif[15]) 옛날 저해상도 모니터에서 어차피 serif를 표현할 방법이 없다보니 sans serif만 사용했고 그것이 지금까지 굳어져있다는 것 같습니다. 출력물에서는 sans serif가, 화면으로는 serif가 낫다고 알려져 있는데, 이게 과학적인 이유가 있는건지 그냥 레거시의 문제인지는 모르겠네요. 이유를 아시는 분이 계시면 댓글 남겨주세요.
게으른 맽랩
참고한 곳들
[1] https://docs.microsoft.com/ko-kr/typography/font-list/consolas
[4] https://kr.mathworks.com/matlabcentral/profile/authors/6593740
[5] https://kr.mathworks.com/help/matlab/matlab_env/matlab-desktop-language-preference.html
[6] https://kr.mathworks.com/help/matlab/matlab_env/setting-locale-on-windows-platforms.html
[9] https://hohoya33.tistory.com/73
[10] https://hohoya33.tistory.com/
[11] https://superuser.com/questions/490922/merging-two-fonts
[13] https://kr.mathworks.com/help/matlab/ref/matlab.fonts-settings.html
[14] http://www.codingworldnews.com/news/articleView.html?idxno=2898
[15] https://www.impactplus.com/blog/sans-serif-vs-serif-font-which-should-you-use-when
'matlab' 카테고리의 다른 글
수분부족이라고? (2) | 2022.10.13 |
---|---|
매트랩 레이아웃을 command로 저장/불러오기 (0) | 2022.07.23 |
매트랩 및 툴박스 설치 (0) | 2022.07.21 |
ccc 패턴을 빠르게 입력하는 방법 (0) | 2022.06.16 |
40 - 32÷2 = 4! (0) | 2022.06.12 |