CSS 폰트 모듈 레벨 5

W3C 워킹 드래프트,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2024/WD-css-fonts-5-20240206/
최신 발행 버전:
https://www.w3.org/TR/css-fonts-5/
에디터스 드래프트:
https://drafts.csswg.org/css-fonts-5/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-fonts-5/
피드백:
CSSWG 이슈 저장소
명세 내 인라인
에디터:
Chris Lilley (W3C)
이전 에디터:
(전 Apple Inc.)
이 명세 편집 제안:
GitHub 에디터
델타 스펙:
테스트 스위트:
https://wpt.fyi/results/css/css-fonts/

요약

이 명세는 기존 CSS Fonts 4 명세의 수정 사항과 추가 기능을 정의합니다.

CSS는 구조화된 문서(예: HTML 및 XML)의 화면, 인쇄물 등에서의 렌더링을 기술하는 언어입니다.

이 문서의 현황

이 섹션은 본 문서가 발행된 시점에서의 상태를 설명합니다. 현재 W3C의 전체 발행물 목록과 이 기술 리포트의 최신 버전은 W3C 기술 리포트 색인 https://www.w3.org/TR/에서 확인할 수 있습니다.

이 문서는 CSS 워킹 그룹권고 절차에 따라 워킹 드래프트로 발행한 것입니다. 워킹 드래프트로 발행되었다고 해서 W3C 및 그 회원의 승인을 의미하지는 않습니다.

이 문서는 초안으로, 언제든지 갱신, 교체 또는 폐기될 수 있습니다. 진행 중인 작업 이외의 용도로 본 문서를 인용하는 것은 부적절합니다.

피드백은 GitHub에 이슈 등록(권장)으로 보내주시고, 제목에 “css-fonts” 명세 코드를 포함하여 “[css-fonts] …의견 요약…”과 같이 작성해 주세요. 모든 이슈와 의견은 아카이브에 저장됩니다. 또는 (아카이브됨) 공개 메일링 리스트 www-style@w3.org로 보낼 수도 있습니다.

이 문서는 2023년 11월 3일 W3C 프로세스 문서의 적용을 받습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성되었습니다. W3C는 관련 산출물에 대해 공개적으로 특허 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법 안내도 포함되어 있습니다. 어떤 개인이 본인이 알고 있는 특허가 필수 청구항을 포함한다고 판단하는 경우, W3C 특허 정책 6항에 따라 정보를 공개해야 합니다.

1. 소개

CSS Fonts Level 4 명세([CSS-FONTS-4])는 문서 내에서 폰트를 선택하고 사용하는 데 있어 CSS가 제공하는 제어 기능을 설명하며, 가변 폰트 및 컬러 폰트 지원도 포함합니다. 여기의 아이디어들은 CSS Fonts Level 4에서 정의된 속성과 규칙에 대한 추가 또는 수정 사항입니다.

이 명세는 현재 CSS Fonts Level 4 명세에 대한 델타입니다. 여기서 언급되지 않은 내용이 삭제되었다고 가정하지 마십시오.

1.1. 값 정의

이 명세는 CSS 속성 정의 규약[CSS2]에서 따르며, 값 정의 문법[CSS-VALUES-3]을 사용합니다. 이 명세에서 정의되지 않은 값 타입은 CSS Values & Units [CSS-VALUES-3]에서 정의되어 있습니다. 다른 CSS 모듈과의 결합으로 이러한 값 타입의 정의가 확장될 수 있습니다.

속성 정의에 명시된 속성별 값 외에, 이 명세에서 정의된 모든 속성은 CSS 전역 키워드(CSS-wide keywords) 역시 속성 값으로 허용합니다. 가독성을 위해 별도로 반복하지 않았습니다.

2. 기본 폰트 속성

w3c/csswg-drafts/126[css-fonts] 폴백 폰트의 매개변수 변경 명세화

2.1. 글꼴 패밀리: font-family 속성

2.1.1. 일반 글꼴 패밀리

CSS Fonts Level 4의 CSS Fonts 4 § 2.1.3 일반 글꼴 패밀리 외에도, 아래와 같은 새로운 일반 글꼴 패밀리도 정의됩니다.

w3c/csswg-drafts/4910[meta] [css-fonts] 일반 글꼴 패밀리의 기준
xxx
xxx 일반 글꼴 패밀리에 대한 플레이스홀더 텍스트입니다.
w3c/csswg-drafts/4566[css-fonts] 추가적인 일반 글꼴을 위한 레지스트리를 시작해야 할까요?

2.2. 글꼴 두께: font-weight 속성

w3c/csswg-drafts/2690[css-fonts-4] font-weight에서의 백분율에 의한 상대 두께

2.3. 글꼴 스타일: font-style 속성

w3c/csswg-drafts/4044[css-fonts] 세로 텍스트는 font-style, font-stretch와 잘 호환되지 않음

2.4. 상대적 크기: font-size-adjust 속성

이름: font-size-adjust
값: none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ]
초기값: none
적용 대상: 모든 요소 및 텍스트
상속:
퍼센트값: N/A
계산된 값: 키워드 none 또는 메트릭 키워드와 <number>의 쌍
정식 순서: 문법에 따름
애니메이션 유형: 키워드가 다르면 불연속, 그렇지 않으면 계산된 값 타입 기준

동일한 폰트 크기에서도 텍스트의 실제 크기와 가독성은 폰트의 디자인에 따라 달라집니다. 예를 들어, 대소문자를 구분하는 라틴어나 키릴 문자와 같은 이중문자계 스크립트의 경우, 소문자의 크기가 대문자에 비해 상대적으로 얼마나 높은가가 가독성에 중요한 영향을 미칩니다. 폰트 폴백이 발생하는 상황에서는, 폴백 폰트가 원하는 글꼴 패밀리와 주요 타이포그래피 메트릭의 비율이 다를 수 있으므로, 결과적으로 크기가 달라 보이거나 가독성이 떨어질 수 있습니다.

w3c/csswg-drafts/8792[css-fonts-5] font-size-adjust: ic-height

font-size-adjust 속성은 폰트 폴백이 발생했을 때에도 텍스트의 가독성과 실제 크기를 유지할 수 있는 방법을 제공합니다. 지정된 메트릭이 어떤 폰트에서도 동일하게 되도록 사용되는 폰트 크기를 조정합니다.

값의 의미는 다음과 같습니다:

none
font-size에 대해 특별한 조정이 적용되지 않습니다.
ex-height | cap-height | ch-width | ic-width | ic-height
정규화할 폰트 메트릭을 지정하며, 기본값은 ex-height입니다:
ex-height
폰트의 aspect value를 정규화하며, x-height를 폰트 크기로 나눈 값을 사용합니다.
cap-height
폰트의 cap-height를 정규화하며, cap-height를 폰트 크기로 나눈 값을 사용합니다.
ch-width
폰트의 수평 협폭(pitch)을 정규화하며, “0” (ZERO, U+0030)의 advance width를 폰트 크기로 나눈 값을 사용합니다.
ic-width
폰트의 수평 광폭(pitch)을 정규화하며, “水” (CJK 물 수자, U+6C34)의 advance width를 폰트 크기로 나눈 값을 사용합니다.
ic-height
폰트의 수직 광폭(pitch)을 정규화하며, “水” (CJK 물 수자, U+6C34)의 advance height를 폰트 크기로 나눈 값을 사용합니다.
<number [0,∞]>
각 폰트의 사용된(used) 크기는 선택된 폰트 메트릭이 계산된(computed) font-size의 이 비율이 되도록 정규화됩니다. 즉, 각 글리프에 대해 사용될 조정된 폰트 크기 u는 다음과 같이 계산됩니다:
u  =  ( m / m′ ) s

각 항목의 의미:

s  =  계산된 'font-size!!property'm  =  'font-size-adjust' 속성에 지정된 메트릭
m′ =  실제 폰트에서의 메트릭
u  =  사용될 조정된 폰트 크기

음수 값은 유효하지 않습니다.

from-font
지정된 메트릭에 해당하는 <number> 값을 첫 번째 사용 가능한 폰트에서 계산합니다.
테스트
아래 스타일은 원하는 폰트 패밀리로 Verdana를 지정하고, Verdana가 없으면 Futura 또는 Times가 사용됩니다. 한 단락에는 font-size-adjust도 지정되어 있습니다.
p {
  font-family: Verdana, Futura, Times;
}
p.adj {
  font-size-adjust: 0.545;
}

<p>Lorem ipsum dolor sit amet, ...</p>
<p class="adj">Lorem ipsum dolor sit amet, ...</p>

Verdana는 상대적으로 높은 aspect value(0.545)를 가지므로, 소문자가 대문자에 비해 비교적 높아 작은 크기에서도 텍스트가 읽기 쉽습니다. Times는 aspect value가 0.447로 낮아 폴백이 발생하면 font-size-adjust를 사용하지 않는 한 작은 크기에서 Verdana보다 읽기 어렵습니다.

참고: 발음 구별 부호(다이아크리틱)를 사용하는 텍스트의 경우, x-height가 너무 크면 오히려 가독성이 떨어질 수 있습니다. 왜냐하면 다이아크리틱이 좁게 배치되기 때문입니다.

아래는 각 폰트로 렌더링된 텍스트의 비교입니다. 각 열은 Verdana, Futura, Times로 렌더링된 텍스트를 보여줍니다. 각 행 내에서는 동일한 font-size 값이 사용되고, 빨간 선으로 x-height 차이를 보여줍니다. 상단은 각 행이 동일한 font-size 값으로 렌더링된 경우이고, 하단은 font-size-adjust 속성도 0.545로 지정되어 실제 폰트 크기가 Verdana의 x-height를 유지하도록 조정된 경우입니다. 하단에서 작은 텍스트도 행마다 비교적 읽기 쉬운 것을 확인할 수 있습니다.

text with and without 'font-size-adjust'
font-size-adjust 사용 전후 텍스트 비교

font-size-adjust의 값은 used font-size 값에 영향을 주지만 computed 값에는 영향을 주지 않습니다. 따라서 ex, ch와 같이 폰트 메트릭 기반의 상대 단위 크기에 영향을 줄 수 있지만, em 단위 크기에는 영향을 주지 않습니다. 또한 line-height 속성의 숫자 값은 computed font-size 크기를 기준으로 하므로, font-size-adjustused line-height 값에도 영향을 주지 않습니다.

참고: font-size-adjustline-height에 포함되지 않으므로, 줄 높이를 너무 타이트하게 지정하면 텍스트 줄이 겹칠 수 있습니다. 예를 들어, aspect value가 낮은 폴백 폰트를 aspect value가 높은 폰트와 맞추도록 정규화하면, 그 폰트의 어센더와 디센더가 line-height: 1일 때 줄 박스 밖으로 나올 수 있습니다.

font-size-adjust 조정은 선택된 모든 폰트에 적용되지만, 일반적으로는 font-family 리스트의 첫 번째(가장 선호하는) 폰트의 해당 메트릭 값을 기반으로 사용합니다. 이를 정확히 지정하면, 조정 공식의 (m/m′) 항이 첫 번째 폰트에서는 1이 되어 조정이 없고, 나머지 폰트는 이에 맞춰지게 됩니다. 값을 부정확하게 지정하면, font-size-adjust를 지원하지 않는 구버전 사용자 에이전트에서 첫 번째 폰트로 렌더링될 때 다르게 보일 수 있습니다.

작성자는 aspect value를 동일한 내용이지만 font-size-adjust 속성이 다른 span을 비교하여 계산할 수 있습니다. 같은 font-size를 사용하면, 해당 폰트에 맞는 font-size-adjust 값을 지정할 때 두 span의 박스가 일치합니다.

테두리가 있는 두 span을 사용하여 폰트의 aspect value를 측정합니다. 두 span 모두 font-size는 같고, 오른쪽 span만 font-size-adjust가 지정되어 있습니다. 0.5에서 시작하여 값을 조정하면 두 글자 테두리가 맞춰질 때 aspect value를 찾을 수 있습니다.

p {
  font-family: Futura;
  font-size: 500px;
}

span {
  border: solid 1px red;
}

.adjust {
  font-size-adjust: 0.5;
}

<p><span>b</span><span class="adjust">b</span></p>
Futura with an aspect value of 0.5
Futura의 aspect value가 0.5일 때

오른쪽 박스가 왼쪽보다 약간 커서, 이 폰트의 aspect value는 0.5보다 작습니다. 값을 조정해 두 박스가 맞춰질 때까지 시도해보세요.

참고: 지정된 메트릭이 @font-face에서 예를 들어 size-adjust로 오버라이드된 경우, 오버라이드된 메트릭이 font-size-adjust 계산에 사용됩니다. 따라서 font-size-adjustsize-adjust를 함께 적용하면 size-adjust가 별도의 효과가 없는 것처럼 보일 수 있습니다.

3. 폰트 리소스

3.1. @font-face 규칙

참고: 디스크립터는 요소별이 아니라 폰트별로 적용됩니다. 하나의 요소 안에서도 여러 폰트가 사용될 수 있습니다. 예를 들어 첫 번째 사용 가능한 폰트가 지원하지 않는 문자가 있을 때 적용됩니다.

3.2. 폰트 참조: src 디스크립터

3.2.1. src 디스크립터 파싱

src 디스크립터 값은 CSS Syntax 3 § 5.3.11 컴마로 구분된 구성 값 목록 파싱에 따라 파싱되어야 합니다. 그리고 각 구성 값은 아래 문법에 따라 파싱됩니다:

<url> [ format(<font-format>)]? [ tech( <font-tech>#)]? | local(<family-name>)
<font-format>= [<string> | collection | embedded-opentype | opentype
 | svg | truetype | woff | woff2 ]
<font-tech>= [<font-features-tech> | <color-font-tech>
  | variations | palettes | 
    incremental-patch | incremental-range | incremental-auto ]
<font-features-tech>= [features-opentype | features-aat | features-graphite]
<color-font-tech>= [color-COLRv0 | color-COLRv1 | color-SVG | color-sbix | color-CBDT ]

구성 값이 올바르게 파싱되어 CSS Fonts 4 § 11.2 폰트 포맷 또는 CSS Fonts 4 § 11.1 폰트 기술에서 지원된다면, 지원되는 소스 목록에 추가합니다. 구성 값 파싱 중 오류가 발생하거나 해당 포맷 또는 기술이 지원되지 않을 경우, 지원 소스 목록에 추가하지 않습니다.

이 과정이 끝났을 때 지원되는 항목이 없다면, src 디스크립터 값은 파싱 오류가 됩니다.

이러한 파싱 규칙은 특정 폰트 기술이나 포맷을 지원하지 않는 사용자 에이전트에서도 폰트의 점진적 폴백이 가능하게 합니다.

예를 들어, 점진적 전송이 지원되지 않을 때는, 성능 최적화를 위해 폰트의 woff2 압축 버전을 제공합니다. 그리고, range-request 방식의 점진적 전송을 위해, 압축되지 않은 원본 OpenType 폰트도 제공하여 클라이언트가 바이트 범위 요청을 할 수 있도록 합니다.
@font-face {
  font-family: "MyIncrementallyLoadedWebFont";
  src: url("FallbackURLForBrowsersWhichDontSupportIncrementalLoading.woff2") format("woff2");
  src: url("MyIncrementallyLoadedWebFont.otf") format(opentype)  tech(incremental-range);
}

3.3. 폰트 속성 디스크립터: font-size

w3c/csswg-drafts/806[css-fonts-5] optial sizing을 위한 범위를 허용하는 @font-face의 font-size 디스크립터 추가
w3c/csswg-drafts/731[css-fonts] ex 단위를 위한 font-size 디스크립터
이름: font-size
대상: @font-face
값: auto | [<number>]{1,2}
초기값: auto
auto
폰트가 모든 폰트 크기에 매칭됩니다.
<number>
<number> 하나만 주어지면 폰트는 해당 크기에만 매칭됩니다. <number> 두 개가 주어지면, 해당 범위의 폰트 크기에 매칭됩니다.

3.4. 글리프 크기 배수: size-adjust 디스크립터

이름: size-adjust
대상: @font-face
값: <percentage [0,∞]>
초기값: 100%

size-adjust 디스크립터는 해당 폰트의 글리프 윤곽선 및 메트릭에 곱해지는 배수를 정의하여, 작성자가 동일한 font-size로 렌더링할 때 폰트 디자인이 조화롭게 보이도록 할 수 있습니다.

이 폰트에 연결된 모든 메트릭(글리프 advance, 기준선 테이블, @font-face 디스크립터로 제공된 오버라이드 등)은 주어진 백분율만큼 스케일되며, 렌더링된 글리프 이미지도 마찬가지입니다. 따라서, 해당 폰트에서 파생된 값들(예: ex, ch 단위 또는 from-font 값의 text-decoration-thickness 등)도 영향을 받습니다. 단, 계산된 font-size(및 그로부터 파생되는 em 단위, text-underline-offset 등의 백분율 등)는 영향을 받지 않습니다.

w3c/csswg-drafts/8967[css-fonts-5] font-size-adjust와 폰트 메트릭 오버라이드

참고: size-adjust 디스크립터는 font-size-adjust 속성과 유사하게 동작합니다. 이는 본질적으로 ex-height를 맞추어 폰트마다 조정을 계산하지만, 마찬가지로 계산된 font-size에는 영향을 주지 않습니다.

테스트

3.5. 줄 높이 폰트 메트릭 오버라이드: ascent-override, descent-override, line-gap-override 디스크립터

이름: ascent-override
대상: @font-face
값: [ normal | <percentage [0,∞]> ]{1,2}
초기값: normal
이름: descent-override
대상: @font-face
값: [ normal | <percentage [0,∞]> ]{1,2}
초기값: normal
이름: line-gap-override
대상: @font-face
값: [ normal | <percentage [0,∞]> ]{1,2}
초기값: normal

ascent-override, descent-override, line-gap-override 디스크립터는 각각 폰트의 ascent 메트릭, descent 메트릭, line gap 메트릭을 지정합니다. 첫 번째 값은 x축, 두 번째 값은 y축 값(생략 시 기본값은 normal)을 의미합니다.

normal
해당 메트릭 값은 폰트에서 통상적으로 얻어지며, 이 디스크립터가 @font-face 블록에 없다고 가정한 것과 같습니다.

참고: 일부 폰트 포맷에는 이러한 메트릭의 여러 소스가 있을 수 있으므로, UA/플랫폼에 따라 텍스트 레이아웃이 달라질 수 있습니다.

<percentage>
해당 메트릭이 주어진 백분율 × 사용된 폰트 크기로 대체됩니다.
테스트

font-size-adjust 속성은 size-adjust 디스크립터 적용 후 적용됩니다.

참고: font-size-adjustsize-adjust 다음에 적용되면 size-adjust가 효과가 없는 것처럼 보일 수 있습니다.

참고: 이 디스크립터들은 font-size, line-height, 폰트 상대 길이(font-relative lengths)의 계산(computed)에는 영향을 주지 않습니다. 그러나 line-height: normal의 동작이나, 인라인 레벨(inline-level) 콘텐츠의 기준선 정렬 등에 영향을 줄 수 있습니다.

참고: 이러한 메트릭은 block 축에만 적용되므로, y축 값은 수직 활자 조판(typesetting upright)에서만 사용됩니다.

백분율은 요소마다 다른 폰트 크기에 대해 계산됩니다.
@font-face {
  font-family: overridden-font;
  ascent-override: 50%;
  ...
}

<span style="font-family: overridden-font; font-size: 20px;">
  Outer span content
  <span style="font-size: 150%;">Inner span content</span>
</span>

바깥쪽 span은 ascent 값이 10px, 안쪽 span은 15px을 사용합니다.

로컬 폴백 폰트의 메트릭을 웹폰트와 일치하도록 오버라이드할 수 있습니다. 이렇게 하면 폴백에서 주 폰트로 전환할 때 레이아웃 이동을 줄일 수 있습니다.
@font-face {
  font-family: cool-web-font;
  src: url("https://example.com/font.woff");
}

@font-face {
  font-family: fallback-to-local;
  src: local(Some Local Font);
  /* cool-web-font에 맞춰 메트릭 값을 오버라이드 */
  ascent-override: 125%;
  descent-override: 25%;
  line-gap-override: 0%;
  size-adjust: 96%;
}

<div style="font-family: cool-web-font, fallback-to-local">Title goes here</div>
<img src="https://example.com/largeimage" alt="A large image that you don’t want to shift"

사용자 에이전트가 웹폰트 로딩을 마치고 전환할 때(오버라이드 값이 실제 웹폰트와 유사하다면) 이미지는 이전보다 덜 이동합니다.

3.6. 위첨자/아래첨자 메트릭 오버라이드: superscript-position-override, subscript-position-override, superscript-size-override, subscript-size-override 디스크립터

이름: superscript-position-override
대상: @font-face
값: [ normal | from-font | <percentage> ]{1,2}
초기값: normal
이름: subscript-position-override
대상: @font-face
값: [ normal | from-font | <percentage> ]{1,2}
초기값: normal
이름: superscript-size-override
대상: @font-face
값: [ normal | from-font | <percentage [0,∞]> ]{1,2}
초기값: normal
이름: subscript-size-override
대상: @font-face
값: [ normal | from-font | <percentage [0,∞]> ]{1,2}
초기값: normal

superscript-position-override, subscript-position-override, superscript-size-override, subscript-size-override 디스크립터는 각각 폰트의 위첨자 오프셋, 아래첨자 오프셋, 위첨자 크기, 아래첨자 크기 메트릭을 지정하며, font-variant-position에 의해 글리프를 합성할 때 사용됩니다. 첫 번째 값은 x축, 두 번째 값은 y축 값(생략 시 첫 번째 값을 사용)입니다.

normal
UA가 폰트 또는 휴리스틱으로부터 어떤 메트릭 값을 사용할지 결정합니다.
from-font
해당되는 폰트 데이터의 메트릭이 있으면 이를 사용합니다. (메트릭이 없으면 normal과 동일하게 처리됩니다.)
<percentage>
해당 메트릭을 주어진 백분율 × 사용된 폰트 크기로 대체합니다.

참고: 이 메트릭들은 block 축에만 적용되므로, y축 값은 수직 활자 조판(vertical typographic modes)에서만 사용됩니다.

4. 폰트 기능 속성

4.1. 폰트 언어 오버라이드: font-language-override 속성

w3c/csswg-drafts/5484[css-fonts-5] font-language-override 삭제 논의

5. 폰트 기능 및 변형 해상도

w3c/csswg-drafts/5635[CSS-Fonts] 가변 폰트 설정 보간 방법 필요

6. 폰트 변형 속성

6.1. 광학 사이징 제어: font-optical-sizing 속성

w3c/csswg-drafts/5466[css-text][css-fonts] 한 줄의 optical bounds

7. 보안 고려사항

이 명세에 대해 새로운 보안 관련 고려사항은 보고되지 않았습니다.

8. 개인정보 고려사항

이 명세에 대해 새로운 개인정보 관련 고려사항은 보고되지 않았습니다.

9. 감사의 글

먼저, 편집자들은 이 모듈의 이전 레벨에 기여한 모든 분들께 감사드립니다.

또한, 이 Level 5의 개선에 기여해주신 PDFReactor의 DerKoun, Google의 Xiaocheng Hu, 그리고 Mozilla의 Jonathan Kew 에게도 감사를 표합니다.

10. 변경사항

10.1. 2021년 12월 21일 WD 이후 변경사항 (WD of 21 December 2021)

10.2. 2021년 7월 29일 WD 이후 변경사항 (WD of 2021-07-29)

10.3. 2021년 6월 29일 FPWD 이후 변경사항 (FPWD of 2021-06-29)

적합성

문서 규약

적합성 요구사항은 설명적 단언과 RFC 2119 용어의 조합으로 표현됩니다. 규범적 부분에서 사용되는 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL” 등의 키워드는 RFC 2119에 따라 해석되어야 합니다. 다만 가독성을 위해 본 명세에서는 이러한 단어들을 모두 대문자로 표기하지 않을 수 있습니다.

이 명세의 모든 텍스트는, 명시적으로 비규범적이라 표기된 섹션, 예시 및 주석을 제외하고는 규범적입니다. [RFC2119]

이 명세의 예시는 “for example”이라는 표현으로 소개되거나, class="example"로 규범 텍스트와 구분됩니다. 예:

이것은 정보 제공용 예시입니다.

정보성 주석은 “Note”로 시작하며 class="note"로 구분되어 다음과 같이 표시됩니다:

참고, 이것은 정보 제공용 주석입니다.

권고(advisement)는 규범적 섹션 중 특별히 주의를 환기시키기 위해 스타일링된 것으로 <strong class="advisement">로 구분됩니다. 예: UA는 접근 가능한 대체 수단을 반드시 제공해야 합니다.

테스트

이 명세의 내용과 관련된 테스트는 이와 같은 “테스트” 블록에 문서화될 수 있습니다. 이러한 블록은 모두 비규범적입니다.


적합성 클래스

이 명세에 대한 적합성은 세 가지 클래스(Conformance classes)로 정의됩니다:

스타일시트
CSS 스타일시트.
렌더러
스타일시트의 의미를 해석하고 해당 스타일시트를 사용하는 문서를 렌더링하는 UA(관련 정의).
작성 도구
스타일시트를 작성하는 UA(관련 정의).

스타일시트가 이 명세에 적합하려면, 본 모듈에서 정의된 문법을 사용하는 모든 선언이 일반 CSS 문법 및 각 기능의 개별 문법에 따라 유효해야 합니다.

렌더러가 이 명세에 적합하려면, 스타일시트를 적절한 명세에 따라 해석할 뿐만 아니라, 본 명세에서 정의한 모든 기능을 올바르게 파싱하고 문서를 그에 맞게 렌더링해야 합니다. 다만 디바이스의 한계로 인해 UA가 문서를 완벽히 렌더링하지 못하는 경우에는 비적합으로 간주되지 않습니다(예: 단색 모니터에서 색상 렌더링이 불가능한 경우).

작성 도구가 이 명세에 적합하려면, 일반 CSS 문법 및 본 모듈의 각 기능에 대한 개별 문법에 따라 문법적으로 올바른 스타일시트를 생성하고, 이 모듈에서 요구하는 스타일시트 적합성 요구사항을 충족해야 합니다.

부분 구현

작성자가 앞으로의 호환 가능한 파싱 규칙을 활용해 폴백 값을 지정할 수 있도록, CSS 렌더러는 지원하지 않는 @규칙, 속성, 속성값, 키워드 및 기타 문법 구조를 적절히 무효로 처리(무시)해야 합니다. 특히 사용자 에이전트는 지원하지 않는 구성요소 값을 선택적으로 무시하고 같은 선언 내에서 지원되는 값만 적용하는 것을 해서는 안 됩니다: 어떤 값이 무효(지원되지 않아야 하는 경우 포함)로 간주되면, CSS는 전체 선언을 무시하도록 요구합니다.

불안정 및 독점 기능의 구현

향후 안정적인 CSS 기능과의 충돌을 피하기 위해, CSSWG는 베스트 프랙티스를 준수하여 불안정한 기능 및 독점 확장을 구현할 것을 권장합니다.

비실험적 구현

명세가 후보 권고(Candidate Recommendation) 단계에 도달하면 비실험적 구현이 가능하며, 구현자는 명세에 맞게 올바르게 구현된 CR 수준의 기능에 대해 접두어 없는 구현을 배포해야 합니다.

CSS의 상호운용성을 확립하고 유지하기 위해 CSS 워킹그룹은 비실험적 CSS 렌더러가 접두어 없는 구현을 배포하기 전에 구현 보고서(및 필요 시 해당 구현에 사용된 테스트케이스)를 W3C에 제출할 것을 요청합니다. W3C에 제출된 테스트케이스는 CSS 워킹그룹의 검토 및 수정 대상이 됩니다.

테스트케이스 및 구현 보고서 제출에 대한 추가 정보는 CSS 워킹그룹 웹사이트 https://www.w3.org/Style/CSS/Test/에서 확인하시고, 문의는 public-css-testsuite@w3.org 메일링리스트로 해주시기 바랍니다.

색인

이 명세에서 정의된 용어

참조 명세에서 정의된 용어

참고 문헌

규범 참조

[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-FONTS-4]
John Daggett; Myles Maxfield; Chris Lilley. CSS Fonts Module Level 4. 2021년 12월 21일. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-INLINE-3]
Dave Cramer; Elika Etemad. CSS Inline Layout Module Level 3. 2023년 4월 1일. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. 2021년 12월 24일. CR. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 4. 2022년 5월 4일. WD. URL: https://www.w3.org/TR/css-text-decor-4/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2022년 12월 1일. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2023년 12월 18일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[CSS22]
Bert Bos. Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification. 2016년 4월 12일. WD. URL: https://www.w3.org/TR/CSS22/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119

정보성 참조

[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 3. 2023년 3월 30일. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2019년 7월 30일. CR. URL: https://www.w3.org/TR/css-writing-modes-4/

속성 색인

이름 초기값 적용 대상 상속 퍼센트 애니메이션 유형 정식 순서 계산된 값
font-size-adjust none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ] none 모든 요소 및 텍스트 해당 없음 키워드가 다르면 불연속, 그렇지 않으면 계산된 값 타입 기준 문법에 따름 none 키워드 또는 메트릭 키워드와 <number>의 쌍

@font-face 디스크립터

이름 초기값
ascent-override [ normal | <percentage [0,∞]> ]{1,2} normal
descent-override [ normal | <percentage [0,∞]> ]{1,2} normal
font-size auto | [<number>]{1,2} auto
line-gap-override [ normal | <percentage [0,∞]> ]{1,2} normal
size-adjust <percentage [0,∞]> 100%
subscript-position-override [ normal | from-font | <percentage> ]{1,2} normal
subscript-size-override [ normal | from-font | <percentage [0,∞]> ]{1,2} normal
superscript-position-override [ normal | from-font | <percentage> ]{1,2} normal
superscript-size-override [ normal | from-font | <percentage [0,∞]> ]{1,2} normal

이슈 색인

w3c/csswg-drafts/126[css-fonts] 폴백 폰트의 매개변수 변경 명세화
w3c/csswg-drafts/4910[meta] [css-fonts] 일반 글꼴 패밀리의 기준
w3c/csswg-drafts/4566[css-fonts] 추가적인 일반 글꼴을 위한 레지스트리를 시작해야 할까요?
w3c/csswg-drafts/2690[css-fonts-4] font-weight에서의 백분율에 의한 상대 두께
w3c/csswg-drafts/4044[css-fonts] 세로 텍스트는 font-style, font-stretch와 잘 호환되지 않음
w3c/csswg-drafts/8792[css-fonts-5] font-size-adjust: ic-height
w3c/csswg-drafts/6384[css-fonts-5] font-size-adjust와 메트릭 누락
w3c/csswg-drafts/6384[css-fonts-5] font-size-adjust와 메트릭 누락
w3c/csswg-drafts/806[css-fonts-5] optial sizing을 위한 범위를 허용하는 @font-face의 font-size 디스크립터 추가
w3c/csswg-drafts/731[css-fonts] ex 단위를 위한 font-size 디스크립터
w3c/csswg-drafts/8967[css-fonts-5] font-size-adjust와 폰트 메트릭 오버라이드
w3c/csswg-drafts/5484[css-fonts-5] font-language-override 삭제 논의
w3c/csswg-drafts/5635[CSS-Fonts] 가변 폰트 설정 보간 방법 필요
w3c/csswg-drafts/5466[css-text][css-fonts] 한 줄의 optical bounds