NanumGothicHang.ttf


NanumGothicHang.woff




NanumGothicHang2.ttf


NanumGothicHang2.woff




 기존 나눔고딕 폰트를 웹폰트로 사용하기에는 좀 파일이 크다는 단점이 있다.  한글이외의 다른 글자(이를테면 한자)를 빼면 파일을 줄일 수 있다고 생각되어어서 이 부분을 빼는 방법을 찾았다.  Fontforge에 embeded 한 Python 을 이용해서 불필요하다고 생각하는 부분을 제거할 수 있다. 

 Character 에 대해 어떤 언어인지 분석하기 위해서는 https://gist.github.com/anonymous/2204527 를 이용한다. 이를 이용해서 불필요한 언어의 폰트라고 생각하면 지워 버릴 수 있다. 


 아래는 그 예제이다. 

사용하는 유니코드 스크립트는 Common, Latin, Hangul 만 선택했다. Common 때문에 의외로 좀 불필요한 글자가 더 들어가는 느낌이 든다. 


이렇게 해서 TTF 폰트 기준으로 4.14MB 가 2.33MB로 줄어 들었다. woff 파일 기준으로는 

2.35MB에서 1.01MB로 줄어들었다. 


#-*- coding: utf-8 -*-

import traceback


import fontforge;

import unicodedata2


def filtering_hang():

    try:

        print "== Open File =="

        font = fontforge.open("NanumGothic.ttf")

        for index in font :

            item = font[index]

            if item.unicode == -1:

                continue

            ch = unichr( item.encoding )

            if unicodedata2.script( ch ) in ( 'Common', 'Latin', 'Hangul' ) :

                continue

            font.removeGlyph( item )

        flags  = ("opentype",  "apple")

        font.generate("NanumGothicHang.ttf", flags=flags )

        font.generate("NanumGothicHang.woff", flags=flags )

        print "== Close File =="

    except Exception as e:

        print traceback.format_exc() 

        

    return font


if __name__ == "__main__": 

    print "======== FF Start ========"

    filtering_hang()

    print "======== FF END ========"



 여기서 한 번 더 파일 크기를 줄일 수 있는데 이 폰트들을 Fontforge 에서 열어 File->Generate Fonts... 에서 저장시  뜨는  Generate Fonts 창에서  Options 버튼을 누르면 폰트 생성시 저장되는 정보를 선택할 수 있다. 이 화면에서 PS Glyph Name 부분을 체크 해제 해주고 저장하면 폰트크기를 더 줄일 수 있다. (물론 Truetype Hints 부분을 선택하면 파일 크기가 더 줄어 들기는 한다. 그런데 이 경우 폰트의 질이 떨어질 수 있다. )






 이 경우 폰트 새로운 ttf 파일은 2.18MB, woff 파일은 976KB 까지 줄어든다.


 더 이상 폰트 크기를 줄이기 위해서는 폰트 랜더링 정보를 지울경우 가능하다. 그 것에 대해서는 다음에 계속 테스트 하겠다.







 adobe와 google 이 협력해서 본고딕이라는 폰트를 내놓았다. ( http://blog.typekit.com/alternate/source-han-sans-kor/    http://googledevkr.blogspot.kr/2014/07/cjkfont.html )

이 폰트는 한글도 지원한다.  (근데 왜 Google 과 Adobe 에서 부르는 이름이 다른지는 잘 모르겠다. ) 


 구글 사이트를 보면 옛한글도 지원한다고 한다.


Noto Sans CJK는 현대 한국어에 쓰이는 11,172 음절 뿐 아니라  유니코드 한글 자모(한글 첫가끝 자모)로 조합 가능한 백만 자가 넘는 모든 한글 음절과 고어 문헌에 쓰이는 방점을 지원합니다


 Unicode 에 보면 현대 한국어부분과 조합할 수 있는 한글영역도 지원하고 있다. 첫가끝 형식은 초성, 중성, 종성의 조합형 방식과 유사하다고 생각하면 된다. 유니코드 2 ~ 3 글자를 사용해서 한글 한글자를 만드는 방법이다. (이렇게 하면 옛한글 한글자가 UTF8에서  6,9 바이트가 되는 것인가??? 나중에 한글 글자셋과 인코딩은 따로 글을 적어야 할 것 같다.)  (아마 이 방식은 브라우저에서는 Firefox 에서만 지원하는 것으로 알고 있다. ) 



 저자권은 Adobe 있고 라이센스는 아파치 라이센스이다.  (갑자기 개념이 혼돈되는데, 저자권과 라이센스의 차이는 어떻게 되는지 모르겠다. 저 폰트를 이용해 새로운 폰트는 만들면 어떻게 되는 것인지 모르겠다. 아파치 라이센스라서 폰트 자체를 파는 것이 아닌 이상 사용상의 문제는 없을 것 같은데, 폰트를 수정해서 배포하는 것은 저자권 위배가 아닐까?? 뭔가 Open Font License 보다 이용사의 제약이 있다고 느껴지는 것은 뭐지..) 


 조금 아쉽다면 라이센스가 OFL 이 아니다는 것과 이탤릭이 없다는 점이 조금 아쉽다. 그리고 웬지 Serif 계열도 나올 것 같은 느낌이다. 





 폰트를 분류하는 방법은 여러가지가 있겠지만 가장 기본적인 방법은 Serif 와 San-Serif 로 분류한다. 

Serif(세리프) : 세리프(serif)는 타이포그래피에서 글자와 기호를 이루는 획의 일부 끝이 돌출된 형태를 가리킨다.  (http://ko.wikipedia.org/wiki/%EC%84%B8%EB%A6%AC%ED%94%84)

Sans-serif(산세리프) : 세리프가 없는 글꼴이다.  (http://ko.wikipedia.org/wiki/%EC%82%B0%EC%84%B8%EB%A6%AC%ED%94%84)



(출처 : http://en.wikipedia.org/wiki/File:Serif_and_sans-serif_03.png )


Serif 와 Sans-serif 의 차이는 붉은색 부분이다. Serif 는 붉은 쌕의 돌출된 형태가 있다.


Serif 계열의 폰트 중 유명한 폰트를 꼽자면Arial,  Times New Roman, Droid Serif (안드로이드 단말에서 볼 수 있다. ), Impact 가 있다. 

Sans-serif 계열의 폰트는  Droid Sans(안드로이드 단말에서 볼 수 있다) Helvetica

http://en.wikipedia.org/wiki/List_of_typefaces#Sans_serif )


 영문 폰트라서 이 내용이 그다지 와 닿지 않을 것이다. 한글 폰트 중 Serif 인 글꼴은 궁서, 명조가 계열에 속한다. ( http://ko.wikipedia.org/wiki/%EB%B6%84%EB%A5%98:%EC%84%B8%EB%A6%AC%ED%94%84_%EA%B8%80%EA%BC%B4,  http://ko.wikipedia.org/wiki/%EB%AA%85%EC%A1%B0%EC%B2%B4  ) 


Sans-serif 계열의 한글 폰트는 고딕(그 유명한 맑은 고딕도 Sans-serif 계열이다.), 돋음, 굴림, 바탕체가 있다. ( http://ko.wikipedia.org/wiki/%EB%8F%8B%EC%9B%80%EC%B2%B4,  http://ko.wikipedia.org/wiki/%EB%B0%94%ED%83%95%EC%B2%B4 )





 다른 방법으로는 고정폭과 가변폭으로 구별하기도 한다. 여기서 폭은 글자의 width 로  영문자 i 와 L 은 가로폭이 다를 수 있다. 가변폭 글꼴에서는 i 은 좁고 L 은 i 보다 넓은 폭을 가진다. 

 일반적으로 가변폭글꼴을 많이 사용하고 좀 특수한 경우 고정폭 글꼴을 사용한다. 특히 개발시 이런 글꼴을 많이 사용하게 되는데 이 글꼴을 사용하면 cording 시 탭과 글자의 간격이 일정하게 유지 할 수 있다

  고정폭 글꼴로 많이 사용하는 것은 Courier, Fixed 폰트가 이 계열이다. 한글 폰트의 경우, 끝에 ~체  로 끝나는 글꼴이 고정폭 글꼴이다. 굴림과 굴림체의 차이는 가변폭 글꼴인가, 고정폭인가의 차이이다.