안녕하세요?
우선 Noto Sans CJK 글꼴을 사용해 주셔서 감사합니다.
구축하시는 웹 페이지가 한중일 언어를 동시에 사용하지 않는다면, Noto Sans CJK {KR,JP,SC,TC}보다는 Noto Sans {KR,JP,SC,TC}를 쓰시는 게 좋을 것입니다. 말씀하신 대로 그 파일의 크기도 3 ~ 8MB로 큽니다. woff2로 압축할 경우 꽤 줄어들기는 합니다.
몇 가지 방법이 있습니다.
1. dcrossland@가 제안한 대로 tachyfontf를 쓰는 것입니다. Chrome에서는 확실히 잘 됩니다. 다른 브라우저는 확실하지 않습니다. 이 방법은 현재 웹 페이지에서 필요한 글자만 다운로드하고, 다른 웹 페이지에서 새로운 글자가 필요하면 (이미 다운로드되지 않은 새로운 글자) 또 그것을 다운로드합니다. 이런 식으로 여러 페이지를 방문하다 보면 지원하는 글자가 계속 축적되어서 (웹 방문자는 신경 쓰지 않고도) 폰트 다운로드에 신경쓰지 않아도 됩니다.
에서 제공하고 있습니다. 위 페이지에서 Noto Sans KR과 Noto Sans JP를 사용하시면 됩니다.
woff2 (woff보다 효율이 훨씬 좋습니다)를 지원하는 브라우저라면 이렇게 줄인 글꼴의 크기가 한국처럼 네트웍 속도가 빠른 곳에서는 그다지 크게 문제 되지 않습니다.
3. 또다른 방법은 unicode-rangef를 써서 폰트를 여러 개로 쪼개는 것입니다. 다만, 현재 Chrome에서만 지원합니다. subset1은 가장 많이 쓰는 글자를 담고, subset2에는 그 다음으로 많이 쓰는 글자, subset3에는 그 다음으로 많이 쓰는 글자를 담는 방식입니다. 그리고, unicode-range에서 지원하는 code points를 나열해 주면 됩니다.
에 들어 있는 pyftsubset이 좋습니다. 그 도구는 woff, woff2 등 압축도 같이 해 줍니다. 그리고, 그 도구의 옵션 중에 desubroutinize를 켜시면 gzip, woff, woff2로 압축했을 때 크기가 더 작아집니다.
또, Linux, Andorid, iOS, Mac 클라이언트에 내보낼 때에는 hint도 제거하시면 크기를 더욱 줄일 수 (CFF의 경우 최소 10% 이상.) 있습니다. Windows에는 hint를 제거하시면 안 되고요. pyftsubset에서 hint를 제거하는 옵션도 제공합니다. hint를 제거할 때에는 desubroutinize도 같이 하셔야 합니다. 그렇지 않으면 현재 버그 때문에 결과물에 문제가 있을 수 있습니다.
그럼, 도움이 되셨길 빕니다.
신정식