Coder Social home page Coder Social logo

빌드 자동화 about pretendard HOT 9 CLOSED

orioncactus avatar orioncactus commented on May 20, 2024 1
빌드 자동화

from pretendard.

Comments (9)

black7375 avatar black7375 commented on May 20, 2024 4

최근에 시간이 나서 자동화 작업을 진행했습니다.
릴리즈에서 v1.2.0, v1.2.1처럼 태그를 생성 후 릴리즈를 누르면 서브셋을 생성후
다이나믹 서브셋을 제외한 dist를 zip으로 업로드하는 형식입니다.

https://github.com/black7375/pretendard/runs/3935316576

== Static woff ======
Convert Pretendard-Black.otf -> Pretendard-Black.woff
Convert Pretendard-Bold.otf -> Pretendard-Bold.woff
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.woff
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.woff
Convert Pretendard-Light.otf -> Pretendard-Light.woff
Convert Pretendard-Medium.otf -> Pretendard-Medium.woff
Convert Pretendard-Regular.otf -> Pretendard-Regular.woff
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.woff
Convert Pretendard-Thin.otf -> Pretendard-Thin.woff

== Static woff2 ======
Convert Pretendard-Black.otf -> Pretendard-Black.woff2
Convert Pretendard-Bold.otf -> Pretendard-Bold.woff2
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.woff2
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.woff2
Convert Pretendard-Light.otf -> Pretendard-Light.woff2
Convert Pretendard-Medium.otf -> Pretendard-Medium.woff2
Convert Pretendard-Regular.otf -> Pretendard-Regular.woff2
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.woff2
Convert Pretendard-Thin.otf -> Pretendard-Thin.woff2

== Static woff-subset ======
Convert Pretendard-Black.otf -> Pretendard-Black.subset.woff
Convert Pretendard-Bold.otf -> Pretendard-Bold.subset.woff
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.subset.woff
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.subset.woff
Convert Pretendard-Light.otf -> Pretendard-Light.subset.woff
Convert Pretendard-Medium.otf -> Pretendard-Medium.subset.woff
Convert Pretendard-Regular.otf -> Pretendard-Regular.subset.woff
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.subset.woff
Convert Pretendard-Thin.otf -> Pretendard-Thin.subset.woff

== Static woff2-subset ======
Convert Pretendard-Black.otf -> Pretendard-Black.subset.woff2
Convert Pretendard-Bold.otf -> Pretendard-Bold.subset.woff2
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.subset.woff2
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.subset.woff2
Convert Pretendard-Light.otf -> Pretendard-Light.subset.woff2
Convert Pretendard-Medium.otf -> Pretendard-Medium.subset.woff2
Convert Pretendard-Regular.otf -> Pretendard-Regular.subset.woff2
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.subset.woff2
Convert Pretendard-Thin.otf -> Pretendard-Thin.subset.woff2

== Variable woff2 ======
Convert PretendardVariable.ttf -> PretendardVariable.woff2



> [email protected] dynamic-subset
> NODE_ENV=production node ./dynamic-subset.js

== Static woff-dynamic-subset ======
Convert Pretendard-Black.otf -> Pretendard-Black.subset.n.woff
Convert Pretendard-Bold.otf -> Pretendard-Bold.subset.n.woff
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.subset.n.woff
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.subset.n.woff
Convert Pretendard-Light.otf -> Pretendard-Light.subset.n.woff
Convert Pretendard-Medium.otf -> Pretendard-Medium.subset.n.woff
Convert Pretendard-Regular.otf -> Pretendard-Regular.subset.n.woff
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.subset.n.woff
Convert Pretendard-Thin.otf -> Pretendard-Thin.subset.n.woff

== Static woff2-dynamic-subset ======
Convert Pretendard-Black.otf -> Pretendard-Black.subset.n.woff2
Convert Pretendard-Bold.otf -> Pretendard-Bold.subset.n.woff2
Convert Pretendard-ExtraBold.otf -> Pretendard-ExtraBold.subset.n.woff2
Convert Pretendard-ExtraLight.otf -> Pretendard-ExtraLight.subset.n.woff2
Convert Pretendard-Light.otf -> Pretendard-Light.subset.n.woff2
Convert Pretendard-Medium.otf -> Pretendard-Medium.subset.n.woff2
Convert Pretendard-Regular.otf -> Pretendard-Regular.subset.n.woff2
Convert Pretendard-SemiBold.otf -> Pretendard-SemiBold.subset.n.woff2
Convert Pretendard-Thin.otf -> Pretendard-Thin.subset.n.woff2

일반 서브셋 문자는 여기 있습니다.
https://github.com/black7375/pretendard/blob/main/subset_glyphs.txt

괜찮으시다면 마지막 폰트 커밋은 제거하고, PR로 열겠습니다.

from pretendard.

hiddenest avatar hiddenest commented on May 20, 2024 2

@black7375 네, 말씀주신대로 Pretendard에서 지원하지 않는 문자셋을 제거하여 [89]까지 표시됩니다.

부연설명을 붙이자면, 기존 Noto Sans KR에는 한국어 외에도 일본어, CJK 문화권의 공통 한자가 포함되어 있습니다. 다만 Pretendard에는 해당 문자가 없고 불필요한 파일을 생성한다고 판단하여 제거하였습니다.

from pretendard.

orioncactus avatar orioncactus commented on May 20, 2024 2

아닙니다! 저야말로 감사드립니다 🥺 그리고 @hiddenest 댓글을 남겨주셔서 감사합니다! ☺️

일반 서브셋의 한글 범위는 현재 업계에서 표준으로 통용되는 Adobe-KR-0를 따라 2780자(자모 포함 2831자)로 두었습니다. 제가 서브셋으로 둔 문자 세트는 따로 공유를 드리면 될까요?

한글을 제외한 글리프는 동적 서브셋으로 나눌 때 조금 더 살펴볼 점이 있는데요, 라틴 글꼴에는 보통 글자와 글자 사이에 여백을 조절하는 커닝이 적용되어 있는데 Noto Sans CJK의 동적 서브셋 사례와 같이 같은 라틴이라도 서로 다른 파일로 구성돼 커닝이 적용되지 않는 경우가 있어서, 완성도를 고려하면 다음과 같이 동적 서브셋을 나눠 구성하면 어떨까 싶습니다:

  1. 커닝을 지원하는 라틴 및 숫자 등 글리프
  2. 커닝에 구애받지 않는 CJK를 포함한 글리프

고려해볼 만하다면 Pretendard에 포함된 글리프에 커닝 값을 확인해 위에 적은 것처럼 범위를 정리해보겠습니다. 추가적으로 궁금하신 부분이 있으시면 언제든 알려주세요!

from pretendard.

black7375 avatar black7375 commented on May 20, 2024 2
  1. 제가 만든 다이나믹 서브셋의 경우 Pretendard-Black.css같은 CSS 파일 내용을 기준으로부터 unicode-range 내용을 추출해서 서브셋합니다. (해당코드) CSS 파일을 업데이트해줘야 할거에요.
    pretendard-dynamic-subset.css 파일은 Pretendard-Thin.css ~ Pretendard-Thin.css의 내용을 하나로 만들어 놓은 것 같더군요.
    각 css 파일을 업데이트하면 릴리즈시, 하나로 합쳐볼 수 있을 것 같습니다.
    각 css 파일도 만약 unicode-range나 속성들이 같다면 생성할 수 있을 것 같고요.
    기존에 다이나믹 서브셋이 어떻게 생성되었는지는 잘 모르겠습니다. 저는 구글에서 머신러닝으로 만들어낸 서브셋 범위를 이용하려는 생각으로 만든거라서요.

  2. 제가 업데이트해서 풀리퀘스트를 만들겠습니다!!

  3. 오타네요. subset glyph를 업데이틀 할때 함께 고치겠습니다.

  4. 기여자로 표시해주셔서 감사합니다. 앞으로도 감사히 쓰도록 하겠습니다 👍

from pretendard.

black7375 avatar black7375 commented on May 20, 2024 1

음... fontmake로 빌드가 안되네요.

fontmake -g Pretendard.glyphs -o otf  

INFO:fontmake.font_project:Building master UFOs and designspace from Glyphs source
INFO:glyphsLib.classes:Parsing "Pretendard.glyphs" file into <GSFont>
fontmake: Error: In 'Pretendard.glyphs': Loading Glyphs file failed: invalid literal for int() with base 10: 'bit 29'
fontmake -g Pretendard-base.glyphs -o otf

INFO:fontmake.font_project:Building master UFOs and designspace from Glyphs source
INFO:glyphsLib.classes:Parsing "Pretendard-base.glyphs" file into <GSFont>
WARNING:glyphsLib.builder.components:Glyph 'A': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'AE': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'AE': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'C': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'C': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'F': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'F': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'G': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'G': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Khook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Khook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Q_rthook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Thook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Thook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'uni01F6': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'uni01F6': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Nsmallcap': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Nsmallcap': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'ascript': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'b': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'b': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bhook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bhook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'c': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'c': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'ccurl': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'eth': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dzcurl': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dzcurl': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dzcurl': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'e': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'e': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'h': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'm': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'n': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'qrthook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'qrthook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'r': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'r': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'tccurl': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'tccurl': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'tcurl': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'tcurl': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'y': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'y': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'yhook': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'yhook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'yhook': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'zcurl': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'zhook': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'iacyrillic': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'iacyrillic': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'izhitsacyrillic': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'izhitsacyrillic': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Delta': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Delta': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Lambda': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Lambda': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Omega': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Omega': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'eta': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'eta': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'chi': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'four': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'six': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'nine': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'comma': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'comma': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'comma': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'trianglebullet': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'asterisk.case': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'hyphen': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'hyphen': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'braceleft': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'braceleft': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'braceright': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bracketleft': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketleft': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketleft': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketleft': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketright': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketright': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'anglebracketright': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketleft': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketleft': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketleft': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketright': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketright': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'cornerbracketright': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'florin': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dngb_ballotx': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dngb_ballotx': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'Rx': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'published': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'published': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'returnsymbol': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'austral': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'austral': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'plus': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'minus': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'equal': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'approxequal': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'perthousand': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'perthousand': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'pertenthousand': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'pertenthousand': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'leftHookArrow': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'G.1': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'G.1': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'jcrosstail.ccmp': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'three.1': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'three.1': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'four.ss01': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'four.ss01': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'one.tf.ss01': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bracketleft.sups': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bracketleft.sups': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bracketright.sups': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bracketright.sups': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'six.dnomf': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'macrongravecomb.cn': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dieresisacutecomb.cn': All components of the background layer of 'Regular' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dieresisacutecomb.cn': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'u1002C2': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'u1002C2.large': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'u10046A.large': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'u1002B4.small': All components of the background layer of 'Heavy' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'u1002C2.small': All components of the background layer of 'Thin' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'ae': All components of the background layer of 'Jun 17, 21 0:31' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'b': All components of the background layer of 'Nov 25 18, 17:40' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'bhook': All components of the background layer of 'Nov 23 18, 12:34' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'c': All components of the background layer of 'Oct 6 18, 11:04' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'e': All components of the background layer of 'May 15, 21 16:48' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'e': All components of the background layer of 'May 15, 21 16:48' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'g': All components of the background layer of 'Nov 23 18, 15:17' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'h': All components of the background layer of 'Oct 7 18, 23:36' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'lyogh': All components of the background layer of 'Oct 9 18, 18:02' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'y': All components of the background layer of 'May 15, 21 16:47' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'y': All components of the background layer of 'May 15, 21 16:47' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'eta': All components of the background layer of 'Oct 8 18, 00:05' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'eta': All components of the background layer of 'Oct 3 18, 09:37' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'two': All components of the background layer of 'May 22, 21 11:14' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'three': All components of the background layer of 'May 22, 21 11:16' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'Dec 27 18, 11:55' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'Dec 27 18, 11:59' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'Dec 27 18, 12:06' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'May 22, 21 11:17' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'five': All components of the background layer of 'May 22, 21 12:37' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'six': All components of the background layer of 'May 22, 21 11:18' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 18, 23:20' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 - crazy1' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 - slice center' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 - trad 2' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 - conjoined' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'interrobang': All components of the background layer of 'Sep 23 - slice side' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'hyphen': All components of the background layer of 'low' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'hyphen': All components of the background layer of 'low' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'May 29, 21 21:22' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'May 29, 21 21:23' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'whitecornerbracketright': All components of the background layer of 'May 29, 21 21:24' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dngb_ballotx': All components of the background layer of 'Jan 1 19, 20:32' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'dngb_ballotx': All components of the background layer of 'Jan 1 19, 20:40' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'May 29, 21 16:06' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'May 29, 21 16:12' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'May 29, 21 20:04' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Jun 9, 21 21:56' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Jun 9, 21 23:15' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'May 29, 21 15:50' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'May 29, 21 20:07' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Jun 9, 21 23:27' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'at': All components of the background layer of 'Jun 11, 21 10:09' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'brokenbar': All components of the background layer of 'Jun 16, 21 23:11' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'leftHookArrow': All components of the background layer of 'wire' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'G.1': All components of the background layer of 'Feb 3 19, 14:20' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'three.1': All components of the background layer of 'Dec 25 18, 18:14' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'three.1': All components of the background layer of 'May 22, 21 12:25' will be decomposed.
WARNING:glyphsLib.builder.components:Glyph 'four.ss01': All components of the background layer of 'May 22, 21 12:26' will be decomposed.
WARNING:glyphsLib.builder.builders.UFOBuilder:Pretendard Base Regular: Glyph u1002C2, layer Jun 19, 21 0:56: Duplicate glyph layer name
INFO:fontmake.font_project:Building OTF for PretendardBase-Thin
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters.base:Running DecomposeComponentsFilter on PretendardBase-Thin
INFO:ufo2ft.filters.base:Running RemoveOverlapsFilter on PretendardBase-Thin
INFO:ufo2ft:Building OpenType tables
INFO:ufo2ft.outlineCompiler:The copyright was normalized for storage in the CFF table and consequently some characters were dropped: 'Copyright Copyright 2021 Kil Hyung-jin'
fontmake: Error: In 'Pretendard-base.glyphs' -> 'master_ufo/PretendardBase.designspace' -> 'master_ufo/PretendardBase-Thin.ufo': Compiling UFO failed: /home/black7375/문서/pretendard/src/master_ufo/PretendardBase-Thin.ufo/features.fea:933:1: Feature cv06 has not been defined

from pretendard.

black7375 avatar black7375 commented on May 20, 2024 1

엄청 작은 플젝인데 기억해주셔서 감사합니다.

그럼 서브셋 문제부터 해보는게 좋겠네요.
혹시 예전에는 서브셋 대상 글자들은 KS 코드 완성형 한글을 사용하고 계셨을까요?

저 같은 경우 웹 폰트용 서브셋 만들때 노민지, 윤민구 - KS 코드 완성형 한글의 추가 글자 제안(2574자, 리스트)를 참고했었습니다.

다이나믹 서브셋의 경우, 현재 [89]까지만 존재하는 것 같습니다.
[119]까지 있는 본고딕과 지원 문자 현황이 달라서 그런걸까요?

from pretendard.

orioncactus avatar orioncactus commented on May 20, 2024 1

아하! 확인했습니다. css를 업데이트하면 되겠군요. weight별로 나뉘어진 다이나믹 서브셋 css의 unicode-range는 전부 동일합니다. 이 부분은 저도 나중에 한 번 다듬어보겠습니다.
풀 리퀘스트 확인했습니다! 바로 머지하고 Readme에도 추가해두겠습니다. 대단한 작업에 다시 한 번 진심으로 감사드립니다!

from pretendard.

orioncactus avatar orioncactus commented on May 20, 2024

안녕하세요! 소중한 시간에 Pretendard의 작업 효율화를 고려해주셔서 진심으로 감사드리며, 몇 달 전에 font-range 레포지터리를 감명 깊게 봤었는데 이렇게 이야기를 나눌 수 있어 영광입니다.

  1. 말씀하신 것처럼 이전에 자동화를 해보려고 살펴보았는데, glyphs 파일을 일반 글꼴 파일로 컴파일하는 데 세부적인 지식을 몰라 보류해둔 상태입니다. 우선 Google에서 제공하는 fontmake를 통해 glyphs 소스를 ufo로 변환하는 프로세스를 진행하면 Pretendard-base.glyphs는 진행하신 것처럼 어찌 생성이 되긴 하는데, Pretendard.glyphs는 소스 파일에서 문제가 있는지 되지 않아서, 이 부분은 제가 소스 파일을 업데이트하는 등의 해결 방법을 찾아 해결이 되었을 때 다시 알려드리겠습니다.

  2. 그러나 1번과 같은 방식으로 ufo를 생성해도 google에서 제공하는 fontmake에서는 한글 글꼴 호환성을 위해 필요한 cid-key 기반 글꼴로 내보내진 못하는 듯해 다른 GitHub 한글 글꼴 레포지터리(Sarasa Gothic, 고운바탕 등)를 살펴보았으나, 소스에서 온전한 한글 글꼴로 보내는 프로세스를 전부 이해하지 못해 난관이 있는 상황입니다.

  3. 그래서 그동안 제가 진행한 방법은 글꼴을 제작하는 Glyphs 애플리케이션에서 제공하는 글꼴 내보내기 기능으로 TTF/OTF/Variable TTF 파일을 만든 다음, 생성된 OTF 파일로 fontTools을 이용해 subset 파일을 만들고, 또 @hiddenest님께서 만들어주신 google-like-subset으로 동적 서브셋을 만들어 나온 파일을 dist에 올리는 식이었는데, 제가 1번과 2번을 해결하기 전까지는 일단 이전과 동일하게 TTF/OTF/Variable TTF를 만들고, 이중 OTF 파일을 가져와 서브셋을 만드는 과정을 자동화할 수 있지 않을까 싶습니다.

추가적으로 궁금하신 부분이 있으시면 답장해드리겠습니다! Pretendard의 자동화를 고려해주셔서 다시 한 번 감사드립니다.

from pretendard.

orioncactus avatar orioncactus commented on May 20, 2024

와우! 정말 대박이네요 🤭 Pretendard를 보다 수월하게 배포할 수 있게 도와주셔서 너무 영광입니다. 소중한 시간에 이렇게 멋진 작업을 만들어주셔서 너무나 감사드립니다.

몇가지 궁금한 부분이 있는데요, 확인해주시면 감사하겠습니다!

  • 기존 다이나믹 서브셋을 생성할 때 총 글리프 개수에 따라 unicode-range와 서브셋 파일 개수가 달라지는 것을 이번 1.2 업데이트에서 확인했는데요, 혹시 제가 다음 업데이트 때 글리프 개수가 변동되면 pretendard-dynamic-subset.css 파일도 자동으로 업데이트되는 것인가요?

  • 보내주신 일반 서브셋 글리프 세트에는 Pretendard에 있는 글리프와 조금 달라 수동으로 서브셋을 만들 때 쓰던 것으로 바꾸려고 하는데요, 풀 리퀘스트를 보내주시면 머지 이후에 제가 수정하면 될까요? 기존 서브셋 세트는 다음과 같습니다!: subset_glyphs.txt

  • 작성하신 GitHub 액션 목록에서 오타가 있는 것 같아요! Subset이 맞는지요?

    • 스크린샷 2021-10-20 오전 9 47 23
  • 머지한 다음 Readme 기여자 목록에 작성하려고 하는데, 이렇게 적으면 될지 확인 부탁드립니다!

    • @black7375 서브셋 및 동적 서브셋 빌드 자동화, 릴리즈 파일 자동화를 제작해주셨습니다.

멋진 작업물을 공유해주셔서 다시 한 번 감사드립니다!

from pretendard.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.