전 글에서 http://yiunsr.tistory.com/714 폰트를 줄이는 방법을 알아봤다.
그 상태에서 폰트 손실이 발생하지만 더 줄이는 방법이 있다. fontforge의 simplify 기능(https://fontforge.github.io/elementmenu.html#Simplify) 을 이용하면 glyph 모양이 달라지긴 하지만 더 용량이 줄어든다. Simplify 동작은 https://fontforge.github.io/pfaeditmath.html#Approximating 에 있는 것처럼 정보를 삭제하기 때문에 폰트 가독성이 떨어질 수 있다. 특히, 폰트 크기가 작을수록 더 심해질 것이다.
#-*- coding: utf-8 -*-
import traceback
import fontforge;
import unicodedata2
def filtering_simple():
try:
print "== Open File =="
font = fontforge.open("NanumGothicHang.ttf")
for index in font :
item = font[index]
if item.unicode == -1:
continue
ch = unichr( item.encoding )
if unicodedata2.script( ch ) not in ( 'Common', 'Latin', 'Hangul' ) :
continue
item = item.simplify()
item = item.validate(True)
flags = ("opentype", "apple")
font.generate("NanumGothicHangSimple.ttf", flags=flags )
font.generate("NanumGothicHangSimple.woff", flags=flags )
print "== Close File =="
except Exception as e:
print traceback.format_exc()
return font
if __name__ == "__main__":
print "======== FF Start ========"
filtering_simple()
print "======== FF END ========"
위 과정을 거치고 지난 글 처럼 PS Glyph Name 제거하면 최종적으로 아래와 같이
줄어든다.
NanumGothic.ttf |
원본 파일 |
4.14MB |
NanumGothicHang.ttf |
일부 Character 제거 |
2.33MB |
NanumGothicHangSimple.ttf |
일부 Character 제거 + Simplify |
1.67MB |
NanumGothicHangSimple2.ttf | 일부 Character 제거 + Simplify + PS Glyph Name 제거 | 1.52MB |
NanumGothic.woff | 원본 파일 | 2.35MB |
NanumGothicHang.woff | 일부 Character 제거 | 1.01MB |
NanumGothicHangSimple.woff | 일부 Character 제거 + Simplify | 636KB |
NanumGothicHangSimple2.woff | 일부 Character 제거 + Simplify + PS Glyph Name 제거 | 576KB |
폰트를 줄이기 위해서는 기술적인 문제외에도 라이센스문제도 따져봐야한다. 나눔폰트의 경우 OFL이기 때문에 폰트를 수정하는 것은 문제가 되지 않으나, 일반 상용폰트의 경우 구매를 한다고 해도 수정을 허용하지 않는 경우가 대부분이다. 따라서 폰트 라이센스도 꼭 확인이 필요하다.