JennySoft · Version 1.001 · SIL Open Font License 1.1 · 무료
제니산스JennySans
제니소프트의 웹·앱·게임·문서에서 공통으로 쓰는 범용 한글·영문(라틴) 고딕입니다.
현대 한글 11,172자 전부, 스페인어를 포함한 서유럽·중앙유럽 라틴, 그리스·키릴 기본, 한국 문서용 기호를
한 패밀리 9 웨이트와 변수 폰트 하나에 담았습니다. 개성보다 중립성과 판독성을 우선한 본문용 서체입니다.
글꼴은 말을 담는 그릇입니다. Los tipos son vasijas de palabras. Type is a vessel for words.
Regular 400
글꼴은 말을 담는 그릇입니다. Los tipos son vasijas de palabras. Type is a vessel for words.
Black 900
글꼴은 말을 담는 그릇입니다. Los tipos son vasijas de palabras. Type is a vessel for words.
세 칸의 줄 간격이 같습니다 — 전 웨이트 ascender/descender 1950/−494 (UPM 2048), line-height: normal ≈ 1.19. 본문은 1.5~1.7 을 권장합니다. 변수 폰트로 설치하면 패밀리 "JennySans Variable" 로 보이며 정적 9종과 함께 설치해도 충돌하지 않습니다.
Character set
문자 범위
유니코드 기준으로 범위를 정의하고(charset/required.txt) 모든 웨이트에 빠짐없이 들어 있는지 전수 검사합니다. 아래 수치는 Regular 파일의 cmap 실측입니다.
영역
내용
실측
한글
현대 한글 완성형 전부(U+AC00–D7A3) · 호환 자모(ㄱ–ㆎ, U+3131–318E) · 첫가끝 자모(U+1100–11FF, NFD 분해 텍스트·옛자모 단독 글립)
11,172 · 94 · 256
라틴
ASCII · Latin-1 Supplement 전부 · Latin Extended-A — 영어·스페인어(ñ ¿¡ áéíóú ü ªº €)·포르투갈어·프랑스어·독일어·이탈리아어·네덜란드어·폴란드어·체코어·슬로바키아어·헝가리어·터키어·크로아티아어·슬로베니아어·루마니아어·리투아니아어·라트비아어·에스토니아어·핀란드어·스웨덴어·덴마크어·노르웨이어·아이슬란드어·카탈루냐어·갈리시아어·바스크어·몰타어·웨일스어·아일랜드어·에스페란토 + 결합 악센트(NFD 입력 대응)
318
그리스 · 키릴
모노토닉 그리스 기본 · 키릴 기본(러시아어 등) — 원본 보유분
69 · 98
기호
KS X 1001 기호 전부(※ ① ㉠ ㈜ ㎏ ㎡ ℃ ← → ★ ○ ■ 「」『』 괘선 등) · 일반 구두점 · 화폐(₩ € ₹ …) · 화살표 · 기본 수학 · 도형 · 로마숫자 · 분수 · 상하첨자 · 전각 영숫자
669원문자·괄호·단위·괘선·화살표·수학·도형 블록 합
범위 밖
한자 · 일본어 가나 · 옛한글 조합 · 이탤릭 · 베트남어 · 이모지 — 폴백 폰트가 담당
—
스페인어 · 유럽 라틴
Ñ ñ ¿ ¡ Á É Í Ó Ú Ü ü ª º € Ç ç Œ œ Ÿ Ą Ł Ż ż Č Ř Š Ž Ő Ű Ğ İ ı Ş Ș Ț Æ Ø Å ß Þ Ð
그리스 · 키릴
Α Β Γ Δ Θ Λ Ξ Π Σ Φ Ψ Ω α β γ δ θ λ π σ φ ω А Б Г Д Ж З И Й Л Ф Ц Ч Ш Щ Ы Э Ю Я а б в г д ж я
원문자 · 괄호문자
① ② ③ ④ ⑤ ⑩ ⑮ ⑳ ⓐ ⓑ ⓒ Ⓐ Ⓑ ㉠ ㉡ ㉢ ㉣ ㉮ ㉯ ㉰ ㈜ ㈎ ㈏ ㈐ ⒜ ⒝ ⒞ ⑴ ⑵ ⑶
숫자는 기본 가변폭(pnum)이며 표·시계에는 font-variant-numeric: tabular-nums(tnum)를 켜세요. 그 밖의 OpenType 기능(kern·case·frac·ordn·sups·subs·zero·ss01–ss15·cv01–cv13 등)은 원본의 것을 보존합니다.
글꼴은 말을 담는 그릇입니다. 화면이 작든 크든, 종이든 유리든, 읽는 사람이 글꼴을 의식하지 않고 내용에만 머물 수 있어야 합니다.
제니산스는 그래서 개성보다 중립을, 장식보다 판독을 택했습니다. 본문에 오래 머무는 글자일수록 튀지 않아야 하고, 굵기를 바꿔도 줄의 높이가 흔들리지 않아야 합니다. 아홉 가지 굵기가 같은 수직 메트릭을 공유하는 이유입니다. 제목에서 900을, 캡션에서 300을 써도 같은 문단 안에서 줄 간격이 어긋나지 않습니다.
한글 11,172자를 모두 담았기 때문에 「똠방각하」·「뷁」·「쒔」 같은 드문 음절도 빠지지 않고, 문서에 자주 나오는 ※ ① ㉠ ㈜ ㎏ ㎡ ℃ 같은 기호와 괘선(─ ┌ ┼ ┘)까지 같은 굵기·같은 회색도로 그려집니다. 표와 코드, 각주와 단위가 섞인 실무 문서에서 서체가 흐트러지지 않는 것이 이 글꼴의 목표입니다.
English
Type is a vessel for words. A text face should disappear into the reading — the same shapes at 12 pixels on a phone and at 12 points on paper, with numbers that line up in tables and punctuation that never shouts. JennySans keeps nine weights on one vertical rhythm, so a heading at 900 and a caption at 300 sit on the same baseline grid.
Español
La tipografía es un recipiente para las palabras. ¿Qué pide un texto largo? Que la letra no se note: la misma forma a 12 píxeles en el móvil y a 12 puntos en papel, con cifras que se alinean en las tablas. JennySans mantiene nueve pesos sobre un mismo ritmo vertical, señor.
Glāžšķūņa rūķīši dzērumā čiepj Baha koncertflīģeļu vākus.
에스토니아어Eesti
Põdur Zagrebi tšellomängija-följetonist läks garaaži.
핀란드어Suomi
Törkylempijävongahdus — hyvän lämmön ääriviivat.
스웨덴어Svenska
Flygande bäckasiner söka hwila på mjuka tuvor.
덴마크어 · 노르웨이어Dansk · Norsk
Høj bly gom vandt frækt på wc — æbler og øl i Åbenrå.
아이슬란드어Íslenska
Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.
카탈루냐어Català
Jove xef, porti whisky amb quinze glaçons d'hidrogen.
갈리시아어Galego
A lingua galega é o noso sinal de identidade máis señeiro.
바스크어Euskara
Euskara ez da hizkuntza arrunta; Iruñean ikasi dugu.
몰타어Malti
Ċikkulata bil-ġobon u ħwawar żgħar fil-belt.
웨일스어Cymraeg
Mae'r ŵy hwn yn flasus iawn, a'r tŷ yn hyfryd.
아일랜드어Gaeilge
Chuaigh bé mhórshách le dlúthspád fíorfhinn.
에스페란토Esperanto
Eĥoŝanĝo ĉiuĵaŭde — ĝi ja ŝajnas facila.
미지원: 베트남어(베트남어) — 성조가 붙은 프리컴포즈 문자(U+1EA0–1EF9 등)를 원본 폰트가 갖고 있지 않아 이번 버전에서는 제외했습니다(후속 검토). 한자·일본어 가나도 이 버전에는 없습니다.
표의 샘플 문장은 각 언어의 판그램·관용 문장이며 이 페이지에서 JennySans 로 그려집니다.
Download
다운로드
버전 1.001 · 패키지 생성 2026-10-24. 모든 zip 에 LICENSE·THIRD-PARTY-NOTICES.md·README-설치안내.txt(한국어)가 들어 있습니다. 크기·SHA-256 은 패키지 생성 시점에 실측한 값입니다.
데스크톱
TTF 9종
Windows · macOS · 한글(HWP) · MS Office · Photoshop/Illustrator · 인쇄 · Flutter · Unity
정적 TTF 1개 ≈ 2.6 MB(Regular), 변수 TTF 7.0 MB, WOFF2 전체본 727 KB(Regular), 변수 WOFF2 2.2 MB. GitHub Releases · npm(jennysans@1.0.1) 공개는 예정입니다.
How to use
사용법
플랫폼을 고르세요. 코드 블록은 오른쪽 위 버튼으로 복사할 수 있습니다. 자세한 내용은 zip 안의 README-설치안내.txt 와 저장소의 docs/INSTALL.md.
데스크톱 zip을 받아 풀고, TTF 9개를 모두 선택 → 마우스 오른쪽 → 설치(내 계정) 또는 모든 사용자용으로 설치(관리자 권한, 서버·공용 PC).
이미 JennySans 가 설치돼 있으면 폰트를 쓰는 프로그램을 모두 닫고 설정 → 개인 설정 → 글꼴에서 JennySans 항목(웨이트별로 여러 개)을 먼저 제거한 뒤 설치합니다.
옛 모양이 계속 보이면 재부팅하거나 관리자 PowerShell 에서 폰트 캐시를 재시작합니다.
Stop-Service FontCache; Start-Service FontCache
설치 확인 — 아래 명령에 JennySans, JennySans Light … 가 보이면 정상입니다(GDI 기준 8개 패밀리명 — Regular·Bold 는 JennySans 하나로 묶임).
Add-Type -AssemblyName System.Drawing
[System.Drawing.Text.InstalledFontCollection]::new().Families | Where-Object Name -like 'JennySans*' | Select-Object -ExpandProperty Name
TTF 를 더블클릭 → 서체 설치(Font Book / 서체 관리자). 여러 파일을 선택해 Font Book 창에 끌어다 놓아도 됩니다.
설치 위치: 사용자(~/Library/Fonts, 내 계정) 또는 컴퓨터(/Library/Fonts, 모든 계정 — 관리자 암호). Font Book 설정에서 기본 위치를 바꿀 수 있습니다.
교체할 때는 Font Book 에서 기존 JennySans 패밀리를 제거 → 새 파일 설치 → 앱 재시작. macOS 는 패밀리 "JennySans" 하나에 9 스타일로 보입니다.
cp JennySans-*.ttf ~/Library/Fonts/ # 터미널로 설치할 때(내 계정)
한글(HWP): 글꼴 목록에 「제니산스」(JennySans)와 웨이트별 항목(「제니산스 Light」, 「제니산스 Medium」 …)이 따로 보입니다. 굵기는 목록에서 고르세요. 「제니산스」(Regular)에서 진하게(Ctrl+B)를 누르면 진짜 Bold 파일로 바뀌지만, Light 등 다른 항목에서 진하게를 누르면 합성 굵게가 되어 품질이 떨어집니다.
MS Office(Word·Excel·PowerPoint): 글꼴 상자에 JennySans, JennySans Light, JennySans SemiBold … 로 웨이트별 항목이 나옵니다. 문서를 다른 PC 로 보낼 때는 Word 옵션 → 저장 → 파일에 글꼴 포함을 켜도 됩니다(OFL 은 임베딩을 허용하며 폰트의 fsType 이 0 입니다).
한글·Office 는 변수 폰트의 축 조절을 지원하지 않습니다 — 문서용은 정적 TTF 9종을 설치하세요.
웨이트가 따로 보이는 이유: Windows 의 옛 폰트 API(GDI)는 한 패밀리에 Regular/Bold/Italic/Bold Italic 4개만 둘 수 있어, 나머지 웨이트는 OpenType 관례대로 "JennySans Light" 같은 별도 이름(name ID 1)을 갖습니다. Pretendard·Noto Sans KR 등도 같습니다.
Photoshop · Illustrator · InDesign · Figma · 브라우저는 name ID 16/17 을 읽어 패밀리 "JennySans" 하나에 스타일 9개(Thin … Black)로 보입니다.
변수 폰트(JennySansVariable.ttf)를 설치하면 "JennySans Variable" 패밀리가 따로 생기고 굵기 슬라이더가 붙습니다. 정적과 변수를 동시에 설치해도 이름이 달라 충돌하지 않습니다.
이탤릭이 없는 서체입니다 — 가짜 기울임(Faux Italic)은 쓰지 마세요.
Photoshop 문자 패널의 OpenType 메뉴에서 분수(frac)·서수(ordn)·위첨자(sups)·스타일 세트(ss01 …)를 켤 수 있습니다.
① 분할 CSS — 한국어 페이지 기본 권장
페이지에 실제로 쓰인 글자가 든 조각(unicode-range, 웨이트당 99 조각)만 내려받습니다. 첫 화면 ≈ 라틴 조각 1개 + 한글 조각 2~3개.
<link rel="preload" as="font" type="font/woff2" crossorigin
href="https://font.jennysoft.co.kr/v/1.001/web/subset/JennySans-Regular.subset.123.woff2">
<link rel="stylesheet" href="https://font.jennysoft.co.kr/v/1.001/css/jennysans-dynamic-subset.css">
<style>
html {
font-family: "JennySans", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", sans-serif;
font-synthesis: none; /* 가짜 기울임·가짜 굵게 금지 */
}
table { font-variant-numeric: tabular-nums; } /* 표 숫자 자릿수 맞춤 */
</style>
네 CSS 모두 font-family: "JennySans" 로 같은 이름을 선언하므로 하나만 링크하세요(둘 이상이면 이중 다운로드). /v/1.001/ 경로는 내용이 바뀌지 않는 영구 캐시(immutable)이고, /latest/ 는 최신 버전 별칭(5분 캐시)입니다. 운영 서비스는 고정 버전 경로를 쓰세요.
④ 직접 서빙(self-host) — CORS 필수
웹 zip의 css/ 와 web/ 을 같은 상대 구조로 올리면 CSS 를 고칠 필요가 없습니다. 페이지와 폰트의 도메인이 다르면 폰트 서버가 Access-Control-Allow-Origin 을 내야 합니다 — 없으면 curl 은 200 이어도 브라우저는 조용히 폴백 폰트로 그립니다.
MaterialApp(theme: ThemeData(fontFamily: 'JennySans', useMaterial3: true));
Text('제니산스 ¿Qué tal, señor?', style: TextStyle(fontWeight: FontWeight.w600));
// 변수 폰트 하나로 대체할 때
Text('제니산스', style: TextStyle(fontFamily: 'JennySansVariable', fontVariations: [FontVariation('wght', 650)]));
Flutter 웹(CanvasKit)은 선언된 폰트 파일을 앱 시작 시 전부 내려받으므로 웨이트 수를 줄이는 것이 가장 큰 절감입니다. 사내 앱 안에서만 쓰는 서브셋본은 이름을 바꿀 필요가 없습니다(외부 재배포 시에만 OFL 조항 3).
Unity — TextMesh Pro
JennySans-<Weight>.ttf 를 Assets/Fonts/ 에 넣고 Window → TextMeshPro → Font Asset Creator.
한글 11,172자를 정적 아틀라스에 다 굽지 마세요(4096² 에서 글립당 약 38 px 로 품질 부족). Atlas Population Mode = Dynamic(+ Multi Atlas Textures) 또는 KS X 1001 2,350자 정적 + Dynamic 을 권장합니다.
Font Asset 의 Font Weights 표에 Bold 등 다른 웨이트 에셋을 연결하면 <b> 가 합성 굵게가 아니라 진짜 Bold 파일을 씁니다. 범위 밖 문자(한자 등)는 Fallback Font Assets 로.
Godot 4
TTF 를 프로젝트에 넣으면 FontFile 로 임포트됩니다. Theme 의 default font 로 지정하고, 변수 TTF 는 FontVariation 으로 굵기를 고릅니다. Import 도크에서 Hinting Light, Antialiasing LCD/Gray, 크기가 계속 변하는 텍스트는 MSDF.
JennySans 는 새로 그린 서체가 아니라, 한국 문서·다국어 실무에 맞게 재구성하고 검증한 OFL 배포판입니다.
아래 수치는 원본 Pretendard 1.3.9 Regular 와
JennySans 1.001 Regular 의 cmap 을 직접 비교한 실측값입니다(tools/origin_diff.py).
영역
Pretendard 1.3.9
JennySans 1.001
증감
첫가끝 자모U+1100–11FF — NFD 분해 텍스트(macOS 파일명)·옛자모 단독
0
256
+256
옛 호환자모U+3131–318E — ㅥ ㅱ ㅸ ㆁ ㆆ ㆍ 등 잔여
53
94
+41
자모 확장 A·BU+A960–A97F · U+D7B0–D7FF
0
101
+101
괘선U+2500–257F — ─ │ ┌ ┼ ┃ ═
0
128
+128
블록 요소U+2580–259F — █ ▒ ▤
0
32
+32
원문자 · 괄호문자U+2460–24FF · U+3200–32FF — ① ⑴ ⓐ ㉠ ㈜ ㈎
59
253
+194
수학 기호U+2200–22FF — ∠ ∴ ∵ ≡ ∫ ∑
16
76
+60
도형 · 기타 기호U+25A0–25FF · U+2600–26FF — ◎ ◐ ☎ ♨ ♬
31
77
+46
단위U+3380–33DF — ㎏ ㎡ ㎐ ㏊
80
96
+16
일본어 가나U+3040–30FF — 한국 문서에 쓰이지 않아 제외(・ 1자만 유지)
184
1
-183
합계
14,336
13,257
원본에 없던 912자 추가 · 범위 밖 1,991자 제외
위 영역에서만 874자를 새로 채웠고, 한국 문서에 쓰이지 않는 일본어 가나 183자를 뺐습니다(・ 1자만 유지).
제외한 1,991자는 가나·PUA 아이콘·라틴 확장 추가(베트남어)·IPA 등 문자 범위 밖의 글자입니다. 채운 글자는 같은 OFL 폰트인 Noto Sans KR 에서 가져와 굵기별로 맞춰 넣었습니다.
두 원본 어디에도 없어 직접 만든 4자
⅔ ∼ ≒ ◈
KS X 1001 에 있는 글자인데 Pretendard·Noto Sans KR 둘 다 갖고 있지 않았습니다.
⅔ 는 ⅓ 의 구조를 그대로 재현해 조립했고, ∼ 는 ∽ 을 좌우 반전, ≒ 는 = 와 · 두 개, ◈ 는 ◇ 와 ◆ 를 합쳐 만들었습니다.
새로 그린 것이 아니라 원본 부품을 조합한 것이라 굵기·획 두께가 주변 기호와 어긋나지 않습니다.
글자 수 말고 달라진 것
수직 메트릭 통일 — 9 웨이트와 변수 폰트가 같은 ascender/descender(1950/−494)를 씁니다. 굵기를 바꿔도 줄 높이가 변하지 않습니다.
웹 분할 — WOFF2 를 웨이트당 99조각(전부 990개 파일)으로 나눠, 페이지에 실제로 쓰인 글자의 조각만 내려받습니다. 실측: 라틴 전용 30.4 KB · 한국어 한 문장 83.4 KB · 한 문단 102.9 KB(tools/first_paint.py).
검사 도구 지적 결함 수정 — fontbakery 가 지적한 6건(대문자 짝 DŽ 누락, 중첩 컴포넌트, Mac name 레코드, prep 없음, 변환 컴포넌트 등)을 고쳤습니다(docs/qa/ISSUES.md).
저작권은 괜찮은가요
한국 법에서 글자체 도안 자체는 저작물이 아닙니다(대법원 1996. 8. 23. 선고 94누5632 — 서체 도안의 저작물성 부정).
반면 폰트 파일(프로그램)은 컴퓨터프로그램저작물로 보호됩니다(대법원 2001. 6. 29. 선고 99다23246 — 서체 파일의 프로그램 저작물성 인정).
그래서 중요한 것은 "모양이 닮았는가"가 아니라 파일을 쓸 권리가 있는가입니다.
JennySans 가 안전한 이유는 단순합니다 — 원본이 SIL Open Font License 1.1 이고, 그 라이선스가 요구하는 네 가지를 모두 지켰기 때문입니다.
Adobe (한글 디자인: 산돌커뮤니케이션 — Jang Soo-young · Kang Joo-yeon)
Pretendard 의 한글 골격
M PLUS 1p
Coji Morishita / The M+ FONTS Project Authors
Pretendard 의 가나(JennySans 에서는 제외, 고지는 보존)
Noto Sans KR 2.004
Adobe (Google Fonts 변수 빌드)
보충원본 — 첫가끝 자모·호환 자모 잔여·괘선·원문자·단위 등
편집·구성·엔지니어링: JennySoft. 표기는 THIRD-PARTY-NOTICES.md 의 원문 고지를 따랐으며, OFL 조항 4 에 따라 기여를 밝히는 것이지 원저작자가 JennySans 를 보증한다는 뜻이 아닙니다.
License
라이선스 — SIL Open Font License 1.1
Reserved Font Names 'JennySans' 와 '제니산스'. 아래는 요지이며 효력이 있는 것은 LICENSE 영문 원문입니다.
허용
개인·기업·관공서, 상업·비상업 구분 없이 무료 사용 — 대가·신고·표기 의무 없음
웹폰트 서빙, 앱·게임·전자책·PDF 에 임베드·번들(유료 소프트웨어 포함)
로고·상표·인쇄물 제작. 결과물(문서·이미지·영상)은 OFL 의 적용을 받지 않음
서브셋·형식 변환·글립 수정 등 수정 — 사내에서만 쓰면 이름을 바꿀 필요 없음
조건
폰트 파일을 재배포할 때는 LICENSE(저작권 고지 포함)를 함께 둡니다 — 폰트 내부(name ID 0/13/14)에도 들어 있습니다
수정본을 밖에 배포하면 OFL 로만 배포하고 이름을 바꿉니다(RFN 'JennySans'·'제니산스' 사용 금지)
보증 없음("있는 그대로") — 인쇄·공식 문서에 쓰기 전에 필요한 글자를 직접 확인하세요
금지
폰트 파일 자체를 단독으로 판매(소프트웨어·서비스에 포함해 파는 것은 가능)
수정본을 "JennySans" · "제니산스" 이름으로 배포
다른 라이선스(MIT·상용 EULA 등)로 재배포
원본과 크레딧
JennySans 는 Pretendard 1.3.9(그 안의 Inter · Source Han Sans · M PLUS 1 포함)와
Noto Sans KR 2.004 의 파생(Modified Version)입니다. 글립을 새로 그리지 않고 문자 집합을 유니코드 기준으로 정의해 선별·보충·재구성하고, 이름·메트릭·웹 패키징을 통일했습니다.
원본 저작권 고지와 Reserved Font Name 은 LICENSE 와 THIRD-PARTY-NOTICES.md 에 그대로 보존됩니다(OFL 조항 4 에 따라 기여를 밝히는 것이며 원저작자가 JennySans 를 보증한다는 뜻이 아닙니다).
원본
저작권자 · 디자이너
JennySans 에서의 역할
Pretendard 1.3.9
Kil Hyung-jin (길형진)
주원본 — 한글·라틴·기호·OpenType 기능·변수 축
Inter
Rasmus Andersson / The Inter Project Authors
Pretendard 의 라틴·그리스·키릴 골격
Source Han Sans / Noto Sans CJK
Adobe (한글: Sandoll Communications)
Pretendard 의 한글 골격
M PLUS 1
The M+ FONTS Project Authors
Pretendard 의 가나(JennySans 에서는 범위 밖으로 제외, 고지는 보존)
Noto Sans KR 2.004
Adobe (Google Fonts 변수 빌드)
보충원본 — 첫가끝 자모·호환 자모 잔여·KS 기호 일부
편집·구성·엔지니어링: JennySoft. OFL 원문·FAQ: openfontlicense.org. 한국어 요지는 저장소 docs/OFL-FAQ-ko.md.