[ubuntu-ko] 한국어용 language-selector.conf 설정에 대한 개선 의견

마잇(Mait) mattengi at gmail.com
Thu Nov 1 05:12:17 GMT 2007


제가 올린 ko_KR의 설정을 적용시 한가지 문제점이 발견 되었습니다.

그놈 터미널이 굴림, 돋움, 바탕, 궁서 같은 윈도우즈의 비트맵 내장 글꼴을 표현할 때 embeddedbitmap 속성을
무시하고 무조건 antialias 속성이 활성화 된 상태로 표현하는 문제가 있습니다.

http://lh5.google.co.kr/mattengi/RylaoDvHwKI/AAAAAAAAACc/QWRSRe5p1eE/gnome-terminal_do_not_show_embeddedbitmap.png?imgdl=1

위 스크린샷은 gedit, gvim, 그놈 터미널을 같은 글꼴 설정에서 동시에 띄워두고 굴림체의  표현을 비교한 것입니다.

이 문제를 해결하기 위해서는 원래의 ko_KR에 담겨 있던 내용을 응용해서 각각의 글꼴들의 정해진 크기에 대해서 명시적으로
antialias 설정을 꺼야 합니다.

이를테면 다음과 같이 설정할 수 있습니다. 11~22픽셀 크기 지정은 원래의 ko_KR 설정에서 빌려 왔습니다.

<match target="font">
<test name="family">
    <string>Gulim</string>
    <string>굴림</string>
    <string>GulimChe</string>
    <string>굴림체</string>
    <string>Batang</string>
    <string>바탕</string>
    <string>BatangChe</string>
    <string>바탕체</string>
    <string>Dotum</string>
    <string>돋움</string>
    <string>DotumChe</string>
    <string>돋움체</string>
    <string>Gungsuh</string>
    <string>궁서</string>
    <string>GungsuhChe</string>
    <string>궁서체</string>
</test>
<test name="pixelsize" compare="more">
    <int>10</int>
</test>
<test name="pixelsize" compare="less">
    <int>22</int>
</test>
<edit name="antialias" mode="assign">
    <bool>false</bool>
</edit>
</match>

이를 수정한 ko_KR 파일을 다시 첨부 합니다.


07. 10. 20, 마잇(Mait) <mattengi at gmail.com>님이 작성:
> 우분투의 경우 글꼴 설정 지역화를 위해서 language-selector 패키지에서
> /etc/fonts/languageselector.conf 파일을 적절한 파일로 링크해주고 있습니다. 이 파일은
> /etc/fonts/conf.d/52-languageselector.conf 파일에 의해서 읽어들여지게 됩니다.
>
> 한국어 설정에 해당하는 파일은 /usr/share/language-selector/fontconfig/ko_KR 입니다.
>
> 우선 이 파일의 우선순위가 50-user.conf, 51-local.conf의 설정을 덮어쓰도록 되어 있다는 점을 말씀드립니다.
>
> 이것은 각각,
> ~/.fonts.conf (개별 사용자의 설정)
> /etc/fonts/local.conf (시스템 전체에 적용되며 패키지 업데이트시 건드려지지 않음)
> 파일들에 대응되는 설정입니다.
>
> 그래서 이 파일에 섣불리 전역 설정을 적용하면 패키지 업그레이드시 덮어씌워지게 되는
> /usr/share/language-selector/fontconfig/ko_KR 파일을 직접 수정해야 하는 번거로움이
> 생깁니다.
>
> 일단 이 문제는 languageselector.conf의 적용 우선순위를 바꾸는 쪽으로 해결해야 한다는 생각이 들구요, 파일
> 내용 자체만을 의논해봤으면 좋겠습니다.
>
> 1) 다음 설정은 영문, 한글 글꼴을 포함한 모든 글꼴의 antialias, hinting, hintstyle을 바꾸는
> 설정입니다. 이러한 전역 설정을 여기서 하는 것은 좋은 접근이 아니라고 보입니다. 그리고 antialias 설정과
> hinting 설정은 기본값과 동일합니다. 반복할 필요는 없습니다. hintstyle의 경우 일단 기본 설정을 따르고 한글
> 글꼴들에 대해서만 따로 적용하는 것이 바람직하다고 생각합니다. 그래서 다음 설정을 모두 삭제하는것을 추천합니다.
>
> <!-- Turn on antialias and hinting with hintmedium -->
> <match target="font" >
>         <edit mode="assign" name="antialias" >
>                 <bool>true</bool>
>         </edit>
> </match>
> <match target="font" >
>         <edit mode="assign" name="hinting" >
>                 <bool>true</bool>
>         </edit>
> </match>
> <match target="font" >
>         <edit mode="assign" name="hintstyle" >
>                 <const>hintmedium</const>
>         </edit>
> </match>
>
> 2) 다음은 한글 고정폭 글꼴을 위한 설정 같아 보이는데 이 내용은 제가 전혀 몰라서 따로 언급하지 않겠습니다. 이 설정을 유지 합니다.
>
> <!-- Control spacing property for Korean -->
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <test name="spacing" compare="eq">
>                 <const>dual</const>
>         </test>
>         <edit name="spacing">
>                 <const>proportional</const>
>         </edit>
>         <edit name="globaladvance" binding="strong">
>                 <bool>false</bool>
>         </edit>
> </match>
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <test name="outline" compare="eq">
>                 <bool>false</bool>
>         </test>
>         <test name="spacing" compare="eq">
>                 <const>mono</const>
>                 <const>charcell</const>
>         </test>
>         <edit name="spacing">
>                 <const>proportional</const>
>         </edit>
>         <edit name="globaladvance" binding="strong">
>                 <bool>false</bool>
>         </edit>
> </match>
>
> 3) 다음 설정은 10픽셀 초과 22픽셀 미만의 한글 영역을 포함한 글꼴을 표시할 때 antialias, autohint
> 설정을 끄고 hintstyle을 변경하는 내용입니다. 이것은 아마도 예전에 fontconfig에서 embeddedbitmap
> 속성을 지원하지 않을때 흔히들 자주 사용하는 굴림, 돋움체를 제대로 보이기 위해서 적용된 설정으로 짐작됩니다. 윈도우즈에
> 포함된 굴림 같은 경우 일부 크기에 대해서 비트맵이 내장되었기 때문에 이렇게 해야 윈도우즈와 동일한 모양의 출력을 얻을 수
> 있었습니다.
>
> 하지만 지금은 embeddedbitmap 속성이 지원되고 기본적으로 켜져 있습니다. 이 의미는 비트맵을 내장한 글꼴의 경우
> antialias 설정과 상관없이 내장된 비트맵이 우선적으로 보여진다는 것입니다. 이제는 의미 없는 설정이라고 여겨지고 비트맵
> 영역이 없는 대부분의 트루타입 글꼴 설치시에 보기 않좋은 출력을 얻을 수 밖에 없는 위험한 설정이라고 생각합니다.
> autohint 속성의 경우 기본값으로 꺼진 상태입니다. 이는 dpkg-reconfigure fontconfig-confg
> 명령으로 켤 수 있습니다.
>
> <!-- Turn off antialias and autohint for Korean fonts depending on pixelsize -->
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <test name="pixelsize" compare="more">
>                 <int>10</int>
>         </test>
>         <test name="pixelsize" compare="less">
>                 <int>22</int>
>         </test>
>         <edit name="antialias" mode="assign">
>                 <bool>false</bool>
>         </edit>
>         <edit name="autohint" mode="assign">
>                 <bool>false</bool>
>         </edit>
>         <edit name="hintstyle" mode="assign">
>                 <const>hintmedium</const>
>         </edit>
> </match>
>
> 4) 위에서 언급한 3)의 설정을 제거하면 은글꼴에 특화된 다음 설정이 의미가 없어집니다. hinting 속성은 기본값으로 켜져있는 상태입니다.
>
> <!-- Turn on antialias and hinting with hintmedium for ttf-Unfonts -->
> <match target="font">
>         <test name="family" compare="contains">
>                 <string>Un</string>
>         </test>
>         <edit name="antialias" mode="assign">
>                 <bool>true</bool>
>         </edit>
>         <edit name="hinting" mode="assign">
>                 <bool>true</bool>
>         </edit>
>         <edit name="hintsytle" mode="assign">
>                 <const>hintmedium</const>
>         </edit>
> </match>
>
> 5) ttf-alee 패키지에 포함된 구슬체에 대한 설정입니다. 구슬체는 자주 사용되는 일반적인 크기에 대해서 비트맵 영역을
> 내장하고 있으며 3)에서 설명한 이유로 antialias 설정은 따로 필요치 않습니다. 다만 그 비트맵 내장된 영역을 벗어날
> 때 autohint를 켜느냐 마느냐를 고민해야 할 필요가 있는데 제가 조절해본 바로는 autohint를 끄는 것이
> 효과적입니다. 꽤 심하게 번짐이 발생하고 볼드체의 경우 특히 그 정도가 심합니다. 끈 상태에서도 글꼴의 모양은 꽤 잘 유지되며
> 또렷함을 유지합니다. 그리고 구슬 모노(Guseul Mono)체는 더이상 ttf-alee 패키지에 존재하지 않습니다. 다음
> 설정을 모두 삭제할것을 추천합니다.
>
> <!-- Turn off antialias and autohint for ttf-alee depending on pixelsize -->
> <match target="font">
>         <test name="family">
>                 <string>Guseul</string>
>         </test>
>         <edit name="autohint" mode="assign">
>                 <bool>true</bool>
>         </edit>
> </match>
> <match target="font">
>         <test name="family">
>                 <string>Guseul</string>
>                 <string>Guseul Mono</string>
>         </test>
>         <test name="pixelsize" compare="more">
>                 <int>11</int>
>         </test>
>         <test name="pixelsize" compare="less">
>                 <int>16</int>
>         </test>
>         <edit name="antialias" mode="assign">
>                 <bool>false</bool>
>         </edit>
>         <edit name="autohint" mode="assign">
>                 <bool>false</bool>
>         </edit>
> </match>
>
> 6) 가장 중요한 설정이라고도 할 수 있는 sans, serif, monospace 대표 글꼴에 어떤 글꼴을 적용할 것인가에
> 대한 설정입니다. 그러나 일반적으로 쓰이는 <alias>, <prefer> 태그를 사용한 방식 대신에 왜 이런 표현식을 쓰는지
> 정확하게 해설할수가 없습니다. 그래서 일단 이 설정을 지우고 /etc/fonts/conf.d/60-latin.conf,
> 65-nonlatin.conf 파일을 이용해서 원하는 글꼴로 수정해본 결과 그것만으로도 잘 작동한다는 결과를 얻었습니다.
>
> 기본 설정으로는 영문의 경우 DejaVu 글꼴이, 한글의 경우는 백묵 바탕, 백묵 돋움이 사용됩니다.
>
> 어쨌든 lang 속성을 테스트하는 코드가 왜 쓰였는지 명확하게 파악하지 못했기 때문에 섣불리 바꾸자고 말하기가 망설여
> 집니다만, 단순히 <alias>, <prefer>태그만을 이용하는 방식만으로도 이상을 발견하지 못했습니다. 저의 경우는 원하는
> 영문 글꼴과 한글 글꼴을 조합하기 위해서 다음과 같은 설정을 사용합니다. 저의 ~/.fonts.conf 파일에서 발췌
> 했습니다.
>
> <alias>
>         <family>sans-serif</family>
>         <prefer>
>                 <family>Lucida Grande</family>
>                 <family>Malgun Gothic</family>
>         </prefer>
> </alias>
>
> 위의 설정으로 대부분의 프로그램에서 영문 영역은 Lucida Grande로 한글 영역은 Malgun Gothic으로
> 표현됩니다. 이것은 물론 둘 다 우분투에 기본 포함된 글꼴이 아니니 적절한 것으로 바꿔야 하겠지요.
>
> <!-- Set preferred Korean fonts -->
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <alias>
>                 <family>serif</family>
>                 <prefer>
>                         <family>UnBatang</family>
>                 </prefer>
>         </alias>
> </match>
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <alias>
>                 <family>sans-serif</family>
>                 <prefer>
>                         <family>UnDotum</family>
>                         <family>Guseul</family>
>                 </prefer>
>         </alias>
> </match>
> <match target="font">
>         <test name="lang" compare="contains">
>                 <string>ko</string>
>         </test>
>         <alias>
>                 <family>monospace</family>
>                 <prefer>
>                         <family>UnDotum</family>
>                         <family>Guseul Mono</family>
>                 </prefer>
>         </alias>
> </match>
>
> 7) 이것도 왜 이렇게 했는지 제가 잘 이해할 수 없는 내용이었습니다. 아마 과거의 어떤 버그때문에 어떤 임시방편을 사용한
> 것인지 추측만 해볼 수 있었습니다. 아래쪽 설정의 구슬 모노는 위에서 언급했다시피 없어진 글꼴 입니다.
>
> <!-- Bind EunGuseul with Bitstream Vera Sans -->
> <match target="pattern">
>         <test name="family">
>                 <string>Guseul</string>
>         </test>
>         <edit mode="append" binding="strong" name="family">
>                 <string>Bitstream Vera Sans</string>
>         </edit>
> </match>
>
> <!-- Bind EunGuseul Mono with Bitstream Vera Sans Mono -->
> <match target="pattern">
>         <test name="family">
>                 <string>Guseul Mono</string>
>         </test>
>         <edit mode="append" binding="strong" name="family">
>                 <string>Bitstream Vera Sans Mono</string>
>         </edit>
> </match>
>
> 결과적으로 고정폭 글꼴 설정을 제외하면 전부 없어져야 한다는 결론에 이르렀습니다. 그리고 fontconfig 패키지의 기본값인
> 백묵 바탕과 백묵 돋움을 사용하는 설정을 은바탕과 은돋움, 구슬로 바꾸는 설정만을 추가 하는 것이 좋을 것 같다는것이 제 결론
> 입니다.
>
> 한가지 애매한 점은 hintstyle을 어떻게 결정하느냐는 문제인데 이것은 그놈 글꼴 설정이나 KDE 제어판에서 변경
> 가능하므로 기본값 그대로 유지해도 괜찮지 않냐는게 제 생각입니다.
>
> autohint 설정은 기본적으로 꺼져 있고 은글꼴, ttf-alle의 글꼴들 모두 이것을 끄는것이 좋다는게 저의 의견입니다.
> 좀 더 또렷해지기는 하지만 상당히 일그러져 보이며 원래의 서체 디자인이 살아나지 않습니다. 어찌 되었든, autohint와
> hintstyle을 어떻게 지지고 볶건 간에 적절한 힌팅 정보가 내장되어 있지 않거나 비트맵 영역을 내장하지 않은 경우는
> 일반적으로 사용하는 크기에서 또렷함과 아름다운 모양 두가지를 유지하기가 불가능합니다. 현실적으로 쉽게 얻을수 있는 이런 글꼴은
> 윈도우즈의 굴림, 돋움, 바탕, 맑은 고딕, ttf-alee(은진, 구슬등), 네이버사전체 정도 입니다.
>
> 하지만 hintstyle과 autohint의 경우 매우 주관적인 판단이며 보편적인 결론을 매우 얻기가 힘들기 때문에 많은
> 의견을 들을수 있으면 합니다.
>
> 수정된 /usr/share/language-selector/fontconfig/ko_KR을 첨부하니, 원본을 백업하시고 이
> 파일을 대체함으로서 원치 않는 결과가 오는지 살펴보시길 부탁드립니다.
>
> serif - DejaVu Serif, 은바탕
> sans - DejaVu Sans, 은돋움
> monospace - DejaVu Sans Mono, 구슬
>
> 이렇게 기본 글꼴을 적용한 상태이며 이 설정은 '어떤 추가적인 설정도 하지 않은 한국어 사용자의 기본 글꼴 환경'이라는 것을
> 생각해 주시고 테스트해 주시기 바랍니다.
>
> 2)에서 언급한 설정에 대해서 추가로 지적해주실 수 있는분 의견도 부탁드립니다.
>
> -- -
> 마잇(Mait)
>
>


-- 
마잇(Mait)
-------------- next part --------------
텍스트가 아닌 첨부를 모두 없애 버렸습니다...
이름: ko_KR
형식: application/octet-stream
크기: 2702 bytes
설명: 이용할 수 없숩니다.
Url : https://lists.ubuntu.com/archives/ubuntu-ko/attachments/20071101/7970559c/attachment.obj