Typography
Sets typefaces, type roles, line length, and Korean text rules.
Principles
- Choose a role, not a size. A role sets size, line height, and tracking together, so text reads the same everywhere.
- Set the heading level and the role separately. The HTML level sets the outline and size sets the look, so the outline survives any design.
- Use two weights. Headings, buttons, links, and emphasis take 500, and everything else takes 400.
- Keep reading lines short. Long lines make the next line hard to find, so reading text keeps to a set measure.
- Let text grow. Role sizes are in rem and wrapping text keeps room between lines, so zoom and wider text spacing never break a layout.
Typefaces
Each script takes its own face. Set lang on a block in another language so its glyphs come from that face.
Display / Manrope + Pretendard
Platform engineering
플랫폼 개발의 공통 언어
Body / Manrope, Pretendard, Noto Sans JP
Ship every service through the same pipeline.
모든 서비스를 같은 파이프라인으로 배포합니다.
サービスのデプロイ状況を確認します。
Get the files from Google Fonts and each typeface's package. Check each license before you redistribute a font.
Type roles
Pick a role by what the text does. Display and title grow with the screen; every other role keeps one size.
플랫폼 서비스 / Platform services
플랫폼 서비스 / Platform services
플랫폼 서비스 / Platform services
플랫폼 서비스 / Platform services
플랫폼 서비스 / Platform services
빌드 0123456789를 API로 배포합니다.
빌드 0123456789를 API로 배포합니다.
빌드 0123456789를 API로 배포합니다.
빌드 0123456789를 API로 배포합니다.
빌드 0123456789를 API로 배포합니다.
service_id = "platform-api-v2"
128 / 256
In the samples below, the subhead, the emphasis, and the button take 500.
Card and column subhead
Review the deployment plan and check the build status before continuing.
Last deployed in the selected time zone.
service_id = "platform-api-v2"
Put surf-typography on body so dialogs, menus, and other portals take the roles too.
Line length and line height
Reading text stops at --surf-layout-reading-measure (54ch), about 70 Latin or 50 Hangul characters per line. Prose and Markdown apply it to paragraphs and lists; tables, code, and images keep the full width.
Wrapping text keeps a line height of 1.5 or more, and headings tighten from 1.4 to 1.2 as they grow. Layouts hold at 200% text and with wider text spacing (WCAG 1.4.4, 1.4.12).
Korean text
Set lang='ko' on Korean text so these rules apply.
- Lines break between words (word-break: keep-all). Only a word longer than the line breaks inside.
- Word spaces widen by --surf-type-hangul-word-spacing (0.05em) to match Pretendard's space.
- Hangul has no italic. Emphasize with weight 500 instead.