화면 글꼴을 깔끔하게 보이게 만들어 봅시다

** Infinality 패치 **
PPA주소:[url:2808orui]https://launchpad.net/~no1wantdthisname/+archive/ppa?field.series_filter=[/url:2808orui]
Infinality 패치는 freetype 라이브러리를 패치하여 추가적인 기능들을 제공하여, 화면에서 글꼴을 보다 깔끔하게 보이게 할 수 있습니다.

** Infinality 설정에 대한 경험적 가이드 **

[code:2808orui]
#세번째 값이 클수록 extra weight가 커짐(30-40정도)
#두번째,네번째값이 커질수록 sharp해짐, 작을 수록 흐릿하고 부드러워짐
export INFINALITY_FT_FILTER_PARAMS="00 33 40 33 00"

STEM이라는 것은 줄기라는 것으로

"이"라는 글자에서 "ㅣ" 이것은 세로줄기가 됩니다.

"으"라는 글자에서 "ㅡ" 이것은 가로줄기가 됩니다.

export INFINALITY_FT_STEM_ALIGNMENT_STRENGTH=25
export INFINALITY_FT_STEM_FITTING_STRENGTH=25
export INFINALITY_FT_CHROMEOS_STYLE_SHARPENING_STRENGTH=0
#export INFINALITY_FT_AUTOFIT_FORCE_SLIGHT_HINTING=false
export INFINALITY_FT_AUTOFIT_FORCE_SLIGHT_HINTING=true
#export INFINALITY_FT_AUTOFIT_STEM_SNAP_LIGHT=true

Embolden이란 굵은 글씨체가 없을 때, 이를 흉내내어 굵게 만드는 것을 말합니다.

export INFINALITY_FT_AUTOFIT_EMBOLDEN_LIGHT=true
export INFINALITY_FT_PSEUDO_GAMMA="9 70"
export INFINALITY_FT_AUTOFIT_ADJUST_HEIGHTS=true
export INFINALITY_FT_ENHANCED_EMBOLDEN=true
export INFINALITY_FT_EMBOLDEN_MAINTAIN_WIDTH=true
export INFINALITY_FT_AUTO_AUTOHINT=true
[/code:2808orui]

** fontconfig설정 **
글꼴에 대한 거의 모든 부분을 설정하는 것으로 /etc/fonts가 기본 디렉토리이고,
기본 설정은 개인은 $HOME/.fonts.conf, 전역은 /etc/fonts/local.conf 파일을 수정하시면 됩니다.

실제 글꼴은 아니지만 기본적으로 분류되는 글꼴집합(font-family)로
Sans|Sans Serif 는 고딕형의 글꼴, Serif는 삐침이 있는 글꼴로 명조형의 글꼴,
Monospace는 고정폭 글꼴집합입니다.

예제.

[code:2808orui]
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>Droid Sans Mono Dotted</family>
<family>NanumGothicCoding</family>
</prefer>
</alias>
[/code:2808orui]
이것은 monospace(고정폭 글꼴)을 Droid Sans Mono Dotted로 설정하고, 위 글꼴이 없거나,
언어가 다를 경우, 나눔고딕코딩을 매칭합니다.
즉 영문의 경우, Droid Sans Mono Dotted를 한글은 나눔코딕코딩을 사용하도록 설정하는 것입니다.
대부분의 글꼴표현방식은 /etc/fonts/conf.d 디렉토리내에 설정되어 있습니다.

자세하게 설명하기엔 방대한 자료이기 때문에… 추가 설명은 생략합니다.
man fonts-conf로 메뉴얼을 보시던가 구글신에 물어보세요.

** X용 글꼴표현방식 설정 **
$HOME/.Xdefaults

[code:2808orui]
Xft.dpi: 96
Xft.antialias: 1
Xft.hinting: 1
Xft.autohint: 1
Xft.hintstyle: hintmedium
Xft.rgba: rgb
Xft.lcdfilter: 1
[/code:2808orui]

** 크로미엄에서 보다 글꼴을 보다 깔끔하게 **
$HOME/.config/chromium/Default/User\ StyleSheets/Custom.css

[code:2808orui]

  • {
    -webkit-font-smoothing:antialiased;
    }
    [/code:2808orui]

** 파이어폭스에서 글꼴표현방식 관련 설정 **
about:config 에서 gfx.으로 검색해보세요

글꼴 자동다운로드 설정: gfx.downloadable_fonts.enabled
글꼴 부드럽게하기: gfx.use_text_smoothing_setting

일단 좋은 팁 감사합니다.

12.10 버전 부터 아래 ppa에서 패키지를 다운 받아 설치 하실 수 있습니다.
예전 부터 유명했는 데 우분투 사용자에게는 약간 생소한 것 같습니다.

$ sudo add-apt-repository ppa:no1wantdthisname/ppa
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install fontconfig-infinality

주의 하셔야 할 것은 기본 디스플레이 매니저가 gdm인 경우 부팅시 로우 그래픽 현상이
발생 할 수 있습니다. 소스를 보니 우분투에서 제공하는 gdm 패키지가 페도라나 수세에서 배포되는 패키지와
소스가 약간 다르더군요!

이점을 배포하시는 분께 버그 리포트를 작성하여 보내드렸드니
엔비디아 일부 그래픽 카드를 사용하는 컴에서 발생한다고 합니다.

LightDM 이나 KDM을 디스플레이 매니저로 사용하시는 경우에는
마음 놓고 설치 하셔도 됩니다.

위의 분의 팁과는 약간 설정 방법이 다르지만 폰트 설정에 까다로움을 느끼는 사용자 분께는
유용하게 쓰일 수 있을 겁니다. (페도라 유저모임의 팁앤테크 게시판의 설정 방법을 참고하십시오.)

덤으로 다음과 같은 설정도 병행해서 자신에게 맞는 설정을 찾아보는 것도 좋습니다.

[quote:6rejvkj3]$ sudo /etc/fonts/infinality/infctl.sh setstyle[/quote:6rejvkj3]
고를 수 있는 스타일은 아래와 같습니다.

[quote:6rejvkj3]
Infinality
Windows 7
Windows XP
Windows 98
OSX
OSX2
Linux
[/quote:6rejvkj3]
Infinality가 깔끔하게 영문이 표현되지만, 한글은 다소 흐릿하게 표현되서 싫어하는 분들이 좀 계실 듯 합니다.
저는 OSX2를 선호합니다. 살짝 흐릿하게 보여도 깔끔해서 좋더군요.

[quote="koolmint":3lsx8qf0]
Infinality가 깔끔하게 영문이 표현되지만, 한글은 다소 흐릿하게 표현되서 싫어하는 분들이 좀 계실 듯 합니다.
저는 OSX2를 선호합니다. 살짝 흐릿하게 보여도 깔끔해서 좋더군요.[/quote:3lsx8qf0]
음 나눔명조체와 나눔고딕체 출력 화면 스샷 부탁드려도 될까요.
어떻게 나오는지 비교하고 싶네요.

[quote="protochaos":15kubktj]
음 나눔명조체와 나눔고딕체 출력 화면 스샷 부탁드려도 될까요.
어떻게 나오는지 비교하고 싶네요.[/quote:15kubktj]
잘 보이실지 모르겠는데 일단 올려봅니다.
가급적이면 두 이미지를 다운 받아서, 왔다갔다 하면서 비교하시는게 차이점이 보일 겁니다.

[img:15kubktj]http://i40.tinypic.com/2ytp7w4.png[/img:15kubktj]
Infinality 스타일입니다.

[img:15kubktj]http://i40.tinypic.com/2nip1qp.png[/img:15kubktj]
OSX2 스타일입니다.

제 눈에는 OSX2 스타일이 깔끔하고 좋은 거 같습니다.

나눔명조체는 없군요.
전 명조체를 선호하는 편 인데, 명조체가 화면상에서 깔끔하게 보이게 하기가 쉽지 않더군요.

한글 폰트 중 나눔 글꼴 자체에 힌트 값이 있어
폰트가 아주 잘 나오는 데 아마도 설정을 hintslight 그대로 사용 하시나 봅니다.

나눔 명조는 조금 어설프게 표현되는 편이지만 나눔 고딕은 그래도 사프하게 나오는 편입니다.
맑은 고딕은 따로 설정이 필요 합니다.

/etc/fonts/infinality/conf.d 의 파일을 적절히 조절하시면 윈도우 보다 놀라운 랜더링을
직접 확인 하실 수 있습니다.

참고로 맑은 고딕은 infinality 설정을 이용 하지 마시고
/etc/fonts/conf.d 에 따로 파일을 하나 만드셔서 autohint를 false로 적용하시면
나름 괜찮게 나옵니다. 참고 하십시오.

따로 설명이 필요하시면 댓글 주시기 바랍니다.

[quote="bahzu":rhedsmj4]한글 폰트 중 나눔 글꼴 자체에 힌트 값이 있어
폰트가 아주 잘 나오는 데 아마도 설정을 hintslight 그대로 사용 하시나 봅니다.

나눔 명조는 조금 어설프게 표현되는 편이지만 나눔 고딕은 그래도 사프하게 나오는 편입니다.
맑은 고딕은 따로 설정이 필요 합니다.

/etc/fonts/infinality/conf.d 의 파일을 적절히 조절하시면 윈도우 보다 놀라운 랜더링을
직접 확인 하실 수 있습니다.

참고로 맑은 고딕은 infinality 설정을 이용 하지 마시고
/etc/fonts/conf.d 에 따로 파일을 하나 만드셔서 autohint를 false로 적용하시면
나름 괜찮게 나옵니다. 참고 하십시오.

따로 설명이 필요하시면 댓글 주시기 바랍니다.[/quote:rhedsmj4]
설정하신 세팅 공유 가능하시면 이곳에 게시 부탁드려도 될까요?

음…! 설정 내용이 길어서 적으려니 조금 힘들 것 같아
대략적인 맥락만 설명해 드리도록 하겠습니다.

일단 해당 ppa를 통해 설치를 하시고 아래 내용을 참고하여 설정하시기 바랍니다.
부연하자면 한글은 autohint를 false로 hintstyle은 full 영문은 autohint를 true로 hintstyle은 slight로 설정하시는 것이
가독성이 좋은 것 같더군요! 참고하시기 바랍니다.

cd /etc/fonts/infinality

sudo vi infinality.conf (기본 설정, 비트맵만 설정 하십시오.)

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>true</bool>
</edit>
</match>

sudo ./infctl.sh setstyle (저는 3번 linux 선호)

cd conf.d

sudo vi 20-aliases-default-linux.conf (디폴트 글꼴 선정)

sudo vi 30-non-latin-osx-lin.conf (비영문 설정: 나눔 글꼴 추가 하십시오.)

sudo vi 50-base-rendering-inf-osx-lin.conf (랜더링 설정)

<match target="font">
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
</match>

sudo vi 60-group-non-tt-fonts.conf (나눔 글꼴 추가하십시오.)

<match target="font">
<test name="font_type">
<string>NON TT Instructed Font</string>
</test>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>

sudo vi 61-group-tt-rendering-linux.conf (영문 폰트 설정, 영문은 hintslight, autohint를 true로 설정 하십시오.)

sudo vi 62-tt-monospace-rendering.conf (고정폭 글꼴 설정, bitmap_monospace를 true로 하시면 비트맵 비슷함, 그러나 비추천)

<match target="font">
<test name="tt-monospace-rendering">
<string>use-bitmaps-if-set</string>
</test>
<test name="bitmap_monospace">
<bool>false</bool>
</test>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
<edit name="embeddedbitmap" mode="assign">
<bool>true</bool>
</edit>
</match>

sudo vi /etc/fonts/conf.avail/90-ttf-아무이름.conf (맑은 고딕 설정)

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<test name="family" qual="any">
<string>Malgun Gothic</string>
</test>
<edit name="antialias" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="hinting" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="autohint" mode="assign" binding="strong"><bool>false</bool></edit>
<edit name="hintstyle" mode="assign" binding="strong"><const>hintfull</const></edit>
</match>

<match target="font">
<test name="family" qual="any">
<string>맑은 고딕</string>
</test>
<edit name="antialias" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="hinting" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="autohint" mode="assign" binding="strong"><bool>false</bool></edit>
<edit name="hintstyle" mode="assign" binding="strong"><const>hintfull</const></edit>
</match>
<match target="font">
<test name="family" qual="any">
<string>Malgun Gothic Bold</string>
</test>
<edit name="antialias" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="hinting" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="autohint" mode="assign" binding="strong"><bool>false</bool></edit>
<edit name="hintstyle" mode="assign" binding="strong"><const>hintfull</const></edit>
</match>

<match target="font">
<test name="family" qual="any">
<string>맑은고딕 Bold</string>
</test>
<edit name="antialias" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="hinting" mode="assign" binding="strong"><bool>true</bool></edit>
<edit name="autohint" mode="assign" binding="strong"><bool>false</bool></edit>
<edit name="hintstyle" mode="assign" binding="strong"><const>hintfull</const></edit>
</match>

</fontconfig>

sudo ln -s /etc/fonts/conf.avail/90-ttf-아무이름.conf /etc/fonts/conf.d/ (심볼릭 생성)

infinality도 기본 한글 폰트는 맑은 고딕 입니다. 그러나 저의 경우 Open Sans를 기본 폰트로 사용하므로
영문에 autohint를 true로 설정하면 힌트 정보가 없는 맑은 고딕은 조금 번지는 모양세 입니다.

그대서 따로 맑은 고딕에 대해 설정하면 아주 그럴싸 하게 가독성이 향상 됩니다.
위의 각각의 파일에 원하시는 폰트를 추가 하시되 한글의 경우 힌팅 정보가 없는 폰트의 경우
맑은 고딕의 예를 참고 하시면 될 것 같습니다.

나머지 파일들은 우리나라와는 조금 동 떨어진 내용들이므로 대충 보시면 감이 오실 겁니다.

참고로 /etc/fonts/conf.d의 10번으로 시작하는 파일들은 infinality 설정과 중복 되므로 백업 처리 하십시오.
그러면 root 모드에서 gedit 이용시 자간이 조금 더 나아지더군요!

보다 자세한 정보는 제가 페도라 유저모임 팁 앤 테크 게시판에 적어 놓은 글이 있습니다.
우분투 모임에서 페도라 선전하는 것 같아 죄송 하지만 보다 자세한 내용은 그 글을 참고 하십시오.

참 protochaos님에게 조금 여쭤 보겠습니다.
크롬에선 -webkit-font-smoothing:antialiased; 가 더 이상 적용되지 않는 것 같은 데
혹시 다른 방법 알고 계시면 정보 공유 부탁 드립니다.

userChrome.css에서 적용이 안되나요?

넵! 폰트 랜더링은 불여우가 조금 나은 것 같습니다.
이전 19.x 이하에서는 되었는데 이상 버전에서는 해당 팁이 적용 되지 않는 것 같습니다.

그래서 -webkit-text-stroke 옵션을 사용하고 있는 데 별로 성에는 안차네요!

-text-rendering: optimzeLegibility
스타일을 적용해보세요.

legibility는 글자가 눈에 띄기 쉽다는걸 뜻하고, 이것은 Glyph(자형)에 관계된 문제이고,
readability는 가독성을 뜻하고, 이것은 문장을 읽기 쉽다는 것을 의미합니다.

보통 readabilty라면 serif(명조체)가 낫다고 보이고,
legibility는 sans-serif(고딕체)가 낫다고 보더라구요.

일단 적용해 보니 위에서 말씀드린 옵션과 함께 적용해본 결과 조금 더 나은 것 같습니다.
그나저나 밤 늦은 시간에 이렇게 답변 주셔서 대단히 감사드립니다.

저야 철야 작업 중이라 조금 쉬면서 놀고 있습니다만…^^
어째든 저도 구글링 중이니 적절한 옵션을 발견하면 댓글 드리겠습니다.

감사합니다.

패치하고 설정하면 이미지 편집기 김프에서 글꼴 색상이 이상하게 나오는데… 이거 해결하신 분 있으시나요?