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

마잇(Mait) mattengi at gmail.com
Fri Oct 19 21:38:05 BST 2007


우분투의 경우 글꼴 설정 지역화를 위해서 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)
-------------- next part --------------
텍스트가 아닌 첨부를 모두 없애 버렸습니다...
이름: ko_KR
형식: application/octet-stream
크기: 1384 bytes
설명: 이용할 수 없숩니다.
Url : https://lists.ubuntu.com/archives/ubuntu-ko/attachments/20071020/9e48402d/attachment.obj