프로필 UI 글자 크기를 네 단계와 공통 축소 규칙으로 통일한다

This commit is contained in:
2026-09-29 09:41:39 +00:00
parent 5bafdfc1e7
commit 7c65cf60f3
43 changed files with 1347 additions and 299 deletions
+68
View File
@@ -0,0 +1,68 @@
# 프로필 UI 글자 크기
Gateway를 제외한 모든 게임 profile의 공통 정책이다. 2026-09-29 사용자 요청에
따른 의도적 Core UX 차이이며 Ref의 작은 글자를 그대로 유지하는 계약을 대체한다.
권한, 게임 데이터, 로그 내용·색상, 이미지와 사용자 작성 HTML 저장값은 바꾸지 않는다.
## 기본 단계와 작은 설명
| 역할 | 토큰 / 공통 class | 최대 기본 크기 |
| ------------------ | ---------------------------------- | -------------- |
| 큰 제목 | `title` / `sammo-text-title` | 24px |
| 강조, 소제목 | `emphasis` / `sammo-text-emphasis` | 16px |
| 본문, 일반 조작 | `normal` / `sammo-text-normal` | 14px |
| 보조 정보, 밀집 표 | `small` / `sammo-text-small` | 12px |
토큰 접두사는 `--sammo-font-size-`이다. 화면 selector도 같은 토큰을 쓴다.
반응형 breakpoint는 위 네 단계 중 하나를 선택한다.
공통 `typography.css`는 `small`, `sub`, `sup`, `.sammo-text-smaller`, 게임 로그의
`.legacy-small`에 바로 아래 단계를 적용한다. 24→16→14→12px 순서이며 12px 안의
작은 설명만 10px를 허용한다. 중첩해도 10px 아래로 내려가지 않는다. 일반 본문이나
조작 버튼에 다섯 번째 단계를 직접 지정하지 않는다. 개별 화면의 `small` reset은
추가하지 않는다. 로그 formatter의 semantic 옵션은 game frontend에서만 사용하므로
Gateway 등 다른 소비자의 기존 상대 크기는 유지된다.
사령부 12턴 요약은 12px, 행 높이 16px를 사용한다. 기존 11.25px 행에서 글자만
키우면 겹치므로 두 줄 header는 32px, 카드 224px, 전체 요약 448px로 함께 조정했다.
인사부 모바일 이름은 16px, 명장·명예의 전당 이름과 토너먼트 작은 조작은 12px다.
전투 요약의 이름·병력도 12px로 표시하며 의미와 색상은 유지한다.
## 칸에 맞춘 축소
자동 축소의 최대값도 위 네 단계 중 하나여야 한다. 짧은 글자를 임의의 크기로
확대하지 않는다. 기존 빙의 이름은 16px를 기본으로 긴 이름을 12px로 낮춘다.
명장·명예의 전당의 고정 폭 이름칸은 공통 `vFitText` directive와
`.sammo-fit-text`를 사용한다. CSS의 12px에서 실제 로드된 폰트의 text range를
측정하고 칸보다 길 때만 축소한다. 너비·텍스트·font 로딩이 바뀌면 최대 단계부터
다시 계산하므로 짧아진 이름은 원래 크기를 회복한다. 10px에서도 넘치는 극단적인
반각 이름은 말줄임하며 원문을 DOM과 `title`에 남긴다. 이 경우 10~12px 사이의
실측값은 고정 예외 크기가 아니라 네 단계에 상한을 둔 자동 축소 결과다.
## 별도 콘텐츠 경계
- 국가 소개·임관 권유문 등 사용자 작성 HTML의 명시적 크기와 개인 CSS는 사용자
설정이다. 저장된 HTML이나 editor의 글자 크기 선택지는 변환하지 않는다.
editor의 선택지 UI 자체는 일반 크기를 상속한다.
- 위 HTML을 미리 보여 주는 축소 preview의 transform과 사용자가 고른 화면 배율은
글자 크기 토큰과 별개다. audit에서 computed 크기와 viewport scale을 함께 기록한다.
- 숨김·복사용 marker는 0px를 유지한다. 화면 본문 단계로 세지 않는다.
- Canvas 차트의 축·범례·tooltip도 공통 small 토큰과 화면 font family를 사용한다.
새 고정 크기 예외는 화면 목적과 geometry 근거, 후속 설계 필요성을 문서화한다.
단순히 칸이 좁다는 이유로 11px, 15px 같은 별도 토큰을 만들지 않는다.
## 검증
`typographyPolicy.spec.ts`는 production Chromium에서 실제 폰트 로딩, 단계별 중첩,
최대 이름, 사령부 행 높이, 자동 축소 상한과 말줄임, 로그 크기를 확인한다.
전체 페이지 audit는 [audit 실행 안내](frontend-typography-audit.md)를 따른다.
router의 모든 선언을 scene 목록과 대조하고, 각 scene의 screenshot·DOM·computed
style·text range·이미지 크기와 fixture 응답을 남긴다. 500/1000px와 실제 390px
기기의 화면 모드를 별도로 실행한다. 9개 전각·18개 반각 이름을 사용한다.
API 응답을 고정한 frontend 검증이다. 운영 DB, 실제 계정의 임의 HTML, 공개 HTTPS나
배포 성공의 증거로 확대하지 않는다. 값이 바뀔 수 있는 예외는 고정 토큰으로
위장하지 않고 생성 이유와 상한을 함께 검사한다.