from . import wgetHandler import os github_NotoSansMonoCJKkr = "https://github.com/googlefonts/noto-cjk/raw/main/Sans/Mono/NotoSansMonoCJKkr-Regular.otf" # 폰트 다운로드와 열기 def getFontPath(): if not os.path.exists("assets"): os.mkdir("assets") if not os.path.exists("assets/NotoMonoCJKkr.otf"): wgetHandler.download(github_NotoSansMonoCJKkr,"assets/NotoMonoCJKkr.otf") return "assets/NotoMonoCJKkr.otf" def pasteGlyphs(target,source,baseSize=550,JapaneseGlyphs=False,CJKUnifiedIdeographs=False): source.cidFlatten() def select(font): font.selection.none() font.selection.select(("more","ranges","unicode"),0x3131,0x32BF) # ㄱ ~ ㊿ font.selection.select(("more","ranges","unicode"),0xAC00,0xD7A3) # 가 ~ 힣 select(source) # 넓은 글자 크기 (한글에 모두 적용) wideWidth = baseSize*2 for glyph in source.selection.byGlyphs: widthDiff = wideWidth-glyph.width # 타겟 너비와 얼마나 크기 차이가 나는지 sideAdjust = widthDiff/2 # 좌우 사이드 조정해야하는 정도 glyph.left_side_bearing = int(glyph.left_side_bearing + math.floor(sideAdjust)) # 좌우 베어링을 조정함 glyph.right_side_bearing = int(glyph.right_side_bearing + math.ceil(sideAdjust)) glyph.width = wideWidth # 타겟 너비로 정확하게 설정 # 타겟으로 글리프 복사 source.copy() select(target) target.paste() if __name__ == "__main__": getFontPath()