CSS 텍스트 장식 모듈 레벨 4

W3C 워킹 드래프트,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2022/WD-css-text-decor-4-20220504/
최신 공개 버전:
https://www.w3.org/TR/css-text-decor-4/
에디터스 드래프트:
https://drafts.csswg.org/css-text-decor-4/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-text-decor-4
피드백:
CSSWG 이슈 저장소
트래커
명세 내 인라인
에디터:
Elika J. Etemad / fantasai (초청 전문가)
(Google)
이 명세에 대한 수정 제안:
GitHub 에디터

요약

이 모듈은 밑줄, 텍스트 그림자, 강조 표시 등 텍스트 장식에 관련된 CSS 기능을 포함합니다.

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

이 문서의 상태

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

이 문서는 CSS 워킹 그룹워킹 드래프트권고안 트랙을 사용하여 발행하였습니다. 워킹 드래프트로서의 발행은 W3C와 그 회원들의 보증을 의미하지 않습니다.

이 문서는 초안 문서이며, 언제든지 다른 문서로 업데이트, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 외의 목적으로 인용하는 것은 적절하지 않습니다.

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

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

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

1. 소개

이 절은 비규범적입니다.

이 모듈은 텍스트 글리프를 폰트 및 타이포그래피 규칙에 따라 조판한 후 장식하는, 즉 텍스트 장식에 대해 다룹니다. ([CSS-TEXT-3][CSS-FONTS-3] 참고.) 이러한 기능들은 전통적으로 단순히 장식 목적뿐만 아니라, 강조 표시, 경칭, 삽입/삭제/오탈자와 같은 편집적 변화를 나타내기 위해서도 사용됩니다.

CSS 레벨 1 및 2는 서양 타이포그래피 전통에 맞는 매우 기본적인 선 장식(밑줄, 윗줄, 취소선)만 정의했습니다. 이 모듈의 3단계에서는 이러한 장식의 색상, 스타일, 위치, 연속성을 변경할 수 있고, 강조 표시(동아시아 타이포그래피에서 전통적으로 사용됨)와 그림자(2단계에서 제안되었다가 연기됨)를 도입하였습니다. 4단계에서는 이러한 장식에 대한 추가 제어 기능을 도입합니다.

1.1. 모듈 상호작용

이 모듈은 [CSS-TEXT-DECOR-3]에서 정의한 텍스트 장식 기능을 대체하고 확장합니다.

이 모듈의 모든 속성은 ::first-line::first-letter 의사 요소에 적용할 수 있습니다.

1.2. 값 정의

이 명세는 [CSS2]CSS 속성 정의 규약을 따르며, [CSS-VALUES-3]의 값 정의 문법을 사용합니다. 이 명세에서 정의되지 않은 값 타입은 CSS 값 및 단위 [CSS-VALUES-3]에서 정의됩니다. 다른 CSS 모듈과의 조합은 이러한 값 타입의 정의를 확장할 수 있습니다.

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

1.3. 용어

이 명세에서 사용하는 타이포그래픽 문자 단위(문자), 타이포그래픽 글자 단위(글자), 그리고 콘텐츠 언어[CSS-TEXT-3]에서 정의됩니다. 이 명세에서 사용하는 기타 용어나 개념은 [CSS2][CSS-WRITING-MODES-4]에서 정의됩니다.

2. 선 장식: 밑줄, 윗줄, 취소선

다음 속성들은 요소의 콘텐츠에 추가되는 선 장식에 대해 설명합니다. 인라인 박스에 지정되거나 전파되면, 해당 박스는 해당 장식을 위한 장식 박스가 되어, 모든 박스 조각에 장식을 적용합니다. 장식은 이후 인라인을 분할하는 in-flow 블록 레벨 박스에도 전파됩니다 (CSS2.1 9.2.1.1절 참고). 블록 컨테이너에 지정되거나 전파되어 인라인 포맷팅 컨텍스트를 생성하면, 장식은 익명 인라인 박스에 전파되어 in-flow 인라인 레벨 자식 전체를 감쌉니다. 루비 컨테이너에 지정되거나 전파되면, 장식은 루비 베이스에만 전파됩니다. 그 외의 박스 타입에는 모든 in-flow 자식에게 장식이 전파됩니다.

텍스트 장식은 out-of-flow 자손이나 인라인 블록, 인라인 테이블 등 원자적 인라인 레벨 자손의 내용에는 전파되지 않습니다. 또한 인라인 박스의 인라인 자식에게도 전파되지는 않지만, 해당 박스에는 적용됩니다.

밑줄, 윗줄, 취소선은 non-replaced 인라인 박스에만 그려지며, 모든 텍스트(공백, 글자 간격, 단어 간격 포함)에 대해 그려집니다 단, 줄의 처음과 끝의 공백(공백, 글자 간격, 단어 간격)은 제외됩니다. 원자적 인라인(예: 이미지, 인라인 블록)에는 장식이 적용되지 않습니다. 장식 박스의 마진, 테두리, 패딩은 항상 건너뛰지만, 자식 인라인 박스의 마진, 테두리, 패딩은 건너뛰지 않습니다.

CSS 2.1에서는 항상 마진, 테두리, 패딩을 건너뛰도록 요구했습니다. 3단계 이후로는 기본적으로 장식 박스의 마진, 테두리, 패딩만 건너뜁니다. 앞으로 CSS2.1도 이 새로운 기본값에 맞게 업데이트될 수 있습니다.

자식의 상대 위치 지정은 해당 자식에 적용된 모든 텍스트 장식을 자식의 텍스트와 함께 이동시키지만, 해당 줄에서 장식의 최초 위치 계산에는 영향을 주지 않습니다. visibility 속성, text-shadow, 필터, 기타 그래픽 변환 역시 해당 박스에 적용된 모든 텍스트 장식(조상 박스에서 전파된 장식 포함)에 영향을 주며, 장식의 최초 위치나 두께 계산에는 영향을 주지 않습니다. (라인 장식이 원자적 인라인에 그려지거나, non-replaced 인라인 박스의 마진/테두리/패딩에 걸쳐 그려질 경우, 해당 장식은 장식 박스가 아니라 영향을 받는 원자적 인라인/인라인 박스와 연관됩니다.)

다음 스타일시트와 문서 조각에서:
blockquote { text-decoration: underline; color: blue; }
em { display: block; }
cite { color: fuchsia; }
<blockquote>
 <p>
  <span>
   Help, help!
   <em> I am under a hat! </em>

   <cite> —GwieF </cite>
  </span>
 </p>
</blockquote>

...blockquote 요소의 밑줄이 span 요소를 감싸는 익명 인라인 박스로 전파되어, "Help, help!" 텍스트가 파란색이 되고, 익명 인라인의 파란 밑줄이 그 아래 그려집니다. 색상은 blockquote 요소에서 가져옵니다. em 블록의 <em>텍스트</em>도 밑줄이 그어지며, 밑줄이 전파된 in-flow 블록에 속합니다. 마지막 줄의 텍스트는 푸시아색이지만, 그 아래 밑줄은 여전히 익명 인라인 요소의 파란 밑줄입니다. Sample rendering of the above underline example 이 도식은 위 예제에 관련된 박스들을 보여줍니다. 둥근 아쿠아 라인은 단락 요소의 인라인 콘텐츠를 감싸는 익명 인라인 요소를, 둥근 파란 라인은 span 요소를, 주황색 라인은 블록 요소를 나타냅니다.

참고: 선 장식은 상속이 아닌 박스 트리를 따라 전파되며, display: contents가 지정된 요소에 대해선 자손에 아무 효과도 없습니다.

2.1. 텍스트 장식선: text-decoration-line 속성

이름: text-decoration-line
값: none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error
초기값: none
적용 대상: 모든 요소
상속: 아니오 (위 본문 참고)
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 text-decoration 축약형의 하위 속성으로, 요소에 어떤 선 장식이 추가되는지를 지정합니다. text-decoration-line이 아닌 값은 요소가 해당 텍스트 장식을 생성하고, 위 설명에 따라 적용 및 전파하게 합니다.

참고: 선의 색상, 스타일, 두께가 cascade에서 더 낮은 선언에 의해 설정되길 원하지 않는 한, 이 text-decoration 축약형을 이 긴 형식 대신 사용하는 것이 더 안전합니다.

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

none
텍스트 장식을 생성하거나 방지하지 않습니다.
underline
각 줄의 텍스트에 밑줄을 긋습니다.
overline
각 줄의 텍스트 위에 선을 긋습니다 (즉, 밑줄과 반대쪽).
line-through
각 줄 텍스트의 중간에 선을 긋습니다.
blink
텍스트가 깜빡입니다(보였다 안 보였다 반복). 구현 UA는 텍스트를 깜빡이지 않을 수도 있습니다. 깜빡이지 않는 것은 WAI-UAAG 체크포인트 3.3을 만족시키는 한 방법입니다. 이 값은 Animations [CSS3-ANIMATIONS]을 권장하며 더는 권장되지 않습니다.
spelling-error
UA가 맞춤법 오류를 강조하는 데 사용하는 텍스트 장식 유형을 나타냅니다. 모양은 UA가 정의하며, 플랫폼에 따라 다를 수 있습니다. 일반적으로 빨간 물결 밑줄로 표시됩니다.
grammar-error
UA가 문법 오류를 강조하는 데 사용하는 텍스트 장식 유형을 나타냅니다. 모양은 UA가 정의하며, 플랫폼에 따라 다를 수 있습니다. 일반적으로 초록색 물결 밑줄로 표시됩니다.

참고: 세로 쓰기 모드에서는 text-underline-position에 따라 밑줄과 윗줄의 위치가 바뀔 수 있습니다. 이를 통해 밑줄 위치가 언어별 선호도에 맞게 자동으로 조정됩니다.

spelling-errorgrammar-error 장식은 전적으로 UA가 정의하므로, UA는 하위 속성이나 선 장식의 모양에 영향을 주는 기타 속성(text-underline-position, color, stroke, fill 등)을 무시할 수 있습니다. 하지만 UA의 선택적 렌더링에 따라 이러한 속성 중 일부를 적용하는 것이 의미 있고 실용적이라면, UA는 기본 스타일에 대한 수정으로 이를 적용해야 합니다.

2.2. 텍스트 장식 스타일: text-decoration-style 속성

이름: text-decoration-style
값: solid | double | dotted | dashed | wavy
초기값: solid
적용 대상: 모든 요소
상속: 아니오
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 text-decoration 축약형의 하위 속성으로, 요소에 text-decoration-line으로 지정된 밑줄, 윗줄, 취소선의 선 그리기 스타일을 설정합니다. 하위 박스가 다른 스타일을 지정하더라도, 이 요소에서 시작된 모든 장식에 영향을 미칩니다.

값의 의미는 border-style 속성 [CSS-BACKGROUNDS-3]과 동일합니다. wavy는 물결선임을 나타냅니다.

2.3. 텍스트 장식 색상: text-decoration-color 속성

이름: text-decoration-color
값: <color>
초기값: currentcolor
적용 대상: 모든 요소
상속: 아니오
백분율: 해당 없음
계산값: 계산된 색상
정규 순서: 문법에 따름
애니메이션 타입: 계산값 유형에 따라

이 속성은 text-decoration 축약형의 하위 속성으로, 요소에 text-decoration-line으로 지정된 밑줄, 윗줄, 취소선의 색상을 설정합니다. 하위 박스가 다른 색상을 지정하더라도, 이 요소에서 시작된 모든 장식에 영향을 미칩니다.

2.4. 텍스트 장식선 두께: text-decoration-thickness 속성

이름: text-decoration-thickness
값: auto | from-font | <length> | <percentage>
초기값: auto
적용 대상: 모든 요소
상속: 아니오
백분율: 해당 없음
계산값: 지정된 키워드 또는 절대 길이
정규 순서: 문법에 따름
애니메이션 타입: 계산값에 따라

이 속성은 text-decoration 축약형의 하위 속성으로, 요소에 text-decoration-line으로 지정된 밑줄, 윗줄, 취소선의 선 두께를 설정합니다. 하위 박스가 다른 두께를 지정하더라도, 이 요소에서 시작된 모든 장식에 영향을 미칩니다.

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

auto
UA가 텍스트 장식선에 적합한 두께를 선택합니다. 아래 참고.
from-font
첫 사용 가능 폰트가 선호하는 밑줄 두께 메트릭을 제공하는 경우 해당 두께를 사용하고, 그렇지 않으면 auto처럼 동작합니다.
<length>
텍스트 장식선의 두께를 고정 길이로 지정합니다. UA는 실제 값을 장치의 한 픽셀로 내림해야 합니다.

참고: 길이는 고정값으로 상속되며, 폰트 크기에 따라 스케일되지 않습니다.

<percentage>

텍스트 장식선의 두께를 1em의 백분율로 지정합니다. UA는 실제 값을 장치의 한 픽셀로 내림해야 합니다.

참고: 백분율은 상대값으로 상속되어, 상속 시 폰트 크기 변화에 따라 스케일됩니다.

2.4.1. 텍스트 장식선의 자동 두께

일부 폰트 포맷(OpenType 등)은 선 장식에 적합한 두께 정보를 제공합니다. UA는 auto 두께를 선택할 때 가능하면 이러한 폰트 기반 정보를 사용해야 합니다.

2.5. 선 장식의 위치와 두께 결정

이 절은 Text Decoration Level 3의 초기 초안에서 복사된 내용입니다. 아직 검토 중이며, text-underline-offsettext-decoration-thickness와의 통합이 필요합니다.

선 장식은 다양한 폰트 크기와 수직 정렬을 가진 요소에 걸칠 수 있으므로, 선 장식의 최적 위치는 장식 박스에 의해 이상적으로 지정된 위치와 반드시 일치하지는 않습니다. 대신, 각 줄마다 해당 줄에서 장식 박스가 장식하는 모든 텍스트로부터 계산되며, 이를 대상 텍스트라 합니다. 그러나 장식 박스의 자손 중 text-decoration-skip으로 인해 건너뛰는 자손, text-decoration-skip: ink이 지정된 자손 인라인, 그리고 장식 박스의 인라인 포매팅 컨텍스트에 참여하지 않는 모든 자손은 대상 텍스트 집합에서 제외됩니다.

선 장식의 위치는 각 줄마다 다음과 같이 계산됩니다 (over 위치의 밑줄은 over 선, under 위치의 윗줄은 under 선으로 처리합니다):

over
선 장식을 over EM-box의 가장 높은 edge에 맞춥니다. (기준: 대상 텍스트)
알파벳 밑줄
알파벳 밑줄 위치는 각 대상 텍스트 run의 이상적 오프셋(알파벳 기준선으로부터)을 취해 평균을 내고, 실제로는 가장 낮은 알파벳 기준선을 사용해 선을 위치시킵니다. (지배적 기준선이 비알파벳일 경우, baseline 정렬된 박스 간 기준선이 다를 수 있음.) 윗첨자/아랫첨자가 위치를 어긋나게 하지 않도록, vertical-align이 기본값이 아닌 인라인은 부모의 이상적 밑줄 위치를 갖는 것으로 처리합니다.
비알파벳 under
선 장식을 under EM-box의 가장 낮은 edge에 맞춥니다. (기준: 대상 텍스트)
취소선(line-through)
취소선은 알파벳 밑줄과 유사한 평균값 산출을 사용하지만, 자손에 다른 font-size가 있을 때마다 위치를 다시 계산합니다. (이로써 폰트 크기가 달라져도 텍스트가 효과적으로 "취소선" 처리됨을 보장합니다.) 동일한 font-size를 가진 대상 텍스트의 각 run마다 폰트 메트릭에서 이상적 위치를 평균내어 계산합니다. 윗첨자/아랫첨자가 위치를 어긋나게 하지 않도록, vertical-align이 기본값이 아닌 인라인은 부모의 이상적 밑줄 위치를 갖는 것으로 처리합니다. 각 장식된 조각마다 해당 위치에 선을 그립니다.

단순화를 위해, 취소선은 각 요소에서 그 요소의 선호/평균 위치에 그려야 합니다. 이로 인해 다소 튀는 현상이 나타날 수 있지만, 모든 경우에 정답이 될 수 있는 방법이 없고, 모든 시도는 지나치게 복잡해집니다. 대상 텍스트 없이 font-size만 다른 요소 위에서는 취소선 위치를 어떻게 해야 할까요?

CSS는 선 장식의 두께를 정의하지 않습니다. 텍스트 장식선의 두께를 결정할 때, 사용자 에이전트는 적절한 평균 두께를 제공하기 위해 자손의 폰트 크기, 폰트 패밀리, 두께를 고려할 수 있습니다.

다음 그림은 밑줄의 평균 위치 산출을 보여줍니다:

첫 번째 밑줄 텍스트 '1st a'에서 'st'가 윗첨자이며, '1st'와 'a' 모두 작은 폰트로 렌더링됨. 두 번째 렌더링에선 'a'만 큰 폰트, 세 번째에선 둘 다 큰 폰트.

세 개의 밑줄 텍스트 조각에서, 큰 텍스트의 비율이 증가할수록 밑줄이 점점 더 아래쪽에 굵게 그려집니다.

같은 예시에서, 취소선의 경우 두 번째 조각에서는 두 폰트 크기의 평균값을 내기보다 취소선을 두 개의 구간으로 나누어 그립니다:

두 경우 모두 윗첨자는 수직 정렬 이동으로 인해 선의 위치에 영향을 주지 않습니다.

2.6. 텍스트 장식 축약형: text-decoration 속성

이름: text-decoration
값: <'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'>
초기값: 각 속성별 참고
적용 대상: 각 속성별 참고
상속: 각 속성별 참고
백분율: 각 속성별 참고
계산값: 각 속성별 참고
애니메이션 타입: 각 속성별 참고
정규 순서: 문법에 따름

이 속성은 text-decoration-line, text-decoration-thickness, text-decoration-style, text-decoration-color를 한 번에 지정하는 축약형입니다. 생략된 값은 각 속성의 초기값으로 설정됩니다.

다음 예시는 방문하지 않은 링크에 대해 CSS1, CSS2 UA에서는 파란색 실선 밑줄, CSS3 UA에서는 네이비 점선 밑줄을 적용합니다.
:link {
  color: blue;
  text-decoration: underline;
  text-decoration: navy dotted underline; /* CSS1/CSS2 UA에서는 무시됨 */
}

참고: 축약형에는 text-underline-position 속성이 의도적으로 포함되어 있지 않습니다. 이 속성은 언어/쓰기 체계에 따라 콘텐츠에 맞게 달라지는 세팅이므로, (상속되지 않는) text-decoration 축약형의 스타일 설정과는 독립적으로 계단식/상속될 수 있도록 합니다.

2.7. 밑줄 위치: text-underline-position 속성

이름: text-underline-position
값: auto | [ from-font | under ] || [ left | right ]
초기값: auto
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 text-decoration 축약형의 하위 속성이 아닙니다. 이 속성은 밑줄을 텍스트에 대해 어느 위치에 그릴지 지정하며, 제로 위치를 정의하여 text-underline-offset로 추가 조정할 수 있습니다. 하위 박스가 다른 위치를 지정하더라도, 이 요소에서 시작된 모든 장식에 영향을 미칩니다. 조상 요소가 지정한 밑줄에는 영향을 주지 않습니다.

다음 예시는 현대 중국어, 일본어, 한국어 텍스트를 수평/수직 텍스트 모두에서 적절한 밑줄 위치로 스타일링합니다:
:root:lang(ja), [lang|=ja], :root:lang(ko), [lang|=ko] { text-underline-position: under right; }
:root:lang(zh), [lang|=zh] { text-underline-position: under left; }

left 또는 right만 지정된 경우, auto도 암시됩니다. 값의 의미는 다음과 같습니다:

auto
사용자 에이전트는 밑줄 위치를 결정하는 어떤 알고리즘도 사용할 수 있습니다. 단, 반드시 알파벳 기준선 또는 그 아래에 위치해야 합니다.

참고: 기본 밑줄 위치는 알파벳 기준선 바로 아래가 적합하나, 만약 그 위치가 아래첨자(또는 그 외로 내려간) 텍스트를 가로지르거나, 한자, 티베트 문자 등 아시아 문자처럼 알파벳 기준선이 너무 높은 경우에는 밑줄을 더 아래로 내리거나 under 설명처럼 em box edge에 맞추는 것이 더 적합할 수 있습니다.

일반적인 라틴 폰트에서 밑줄은 알파벳 기준선 바로 아래에 위치하여 대부분의 라틴 글자 하단과 선 사이에 공간이 생기지만, 'p'의 다리처럼 내려오는 부분은 선과 겹친다.

일반적인 “알파벳형” 밑줄은 알파벳 기준선 바로 아래에 위치합니다.

from-font
첫 사용 가능 폰트가 선호하는 밑줄 오프셋 메트릭을 제공하는 경우 해당 값을 사용하고, 그렇지 않으면 auto처럼 동작합니다.
under
밑줄을 요소의 텍스트 콘텐츠 아래에 위치시킵니다. 이 경우 밑줄이 보통 글자의 내려오는 부분(descender)을 가로지르지 않습니다. (때로 "회계 밑줄"이라 부르기도 함.) 이 값은 수직 타이포그래피 모드에서 left 또는 right와 조합할 수 있습니다.
text-underline-position은 상속되며, text-decoration 축약형에 의해 초기화되지 않으므로, 다음 예시는 문서 전체에 under 밑줄을 사용하도록 전환합니다. 이 방식은 내려오는 부분이 많은 문자체계, 수학/화학 등 첨자가 많은 텍스트에 적합합니다.
:root { text-underline-position: under; }

참고: under 값이 밑줄이 글리프와 겹치지 않음을 보장하지는 않습니다. 일부 폰트는 내려오는 부분이나 분음부가 폰트의 descent 메트릭 아래로 확장될 수 있습니다.

left
수직 타이포그래피 모드에서 밑줄은 under와 같이 정렬하되, 항상 텍스트의 왼쪽에 맞춥니다. 이로 인해 밑줄이 텍스트의 "over" 쪽에 그려지면, 윗줄도 위치를 바꿔 "under" 쪽에 그려집니다.
right
수직 타이포그래피 모드에서 밑줄은 under와 같이 정렬하되, 항상 텍스트의 오른쪽에 맞춥니다. 이로 인해 밑줄이 텍스트의 "over" 쪽에 그려지면, 윗줄도 위치를 바꿔 "under" 쪽에 그려집니다.
혼합 일본어-라틴 수직 텍스트에서 'text-underline-position: left'는 밑줄을 텍스트 왼쪽에 둔다. 혼합 일본어-라틴 수직 텍스트에서 'text-underline-position: right'는 밑줄을 텍스트 오른쪽에 둔다.
left right

수직 타이포그래피 모드에서 text-underline-positionleftright 는 밑줄을 텍스트의 어느 쪽에 둘지 지정할 수 있습니다. (수평 타이포그래피 모드에서는 두 값 모두 auto로 취급됩니다.)

2.8. 밑줄 오프셋: text-underline-offset 속성

이름: text-underline-offset
값: auto | <length> | <percentage>
초기값: auto
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드 또는 절대 길이
정규 순서: 문법에 따름
애니메이션 타입: 계산값에 따라

이 속성은 text-decoration 축약형의 하위 속성이 아닙니다. 이 속성은 밑줄의 제로 위치로부터의 오프셋을 지정합니다. 양수 오프셋은 텍스트로부터 바깥쪽, 음수 오프셋은 안쪽 거리를 의미합니다. 하위 박스가 다른 위치를 지정하더라도, 이 요소에서 시작된 모든 장식에 영향을 미칩니다. 조상 요소가 지정한 밑줄에는 영향을 주지 않습니다.

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

auto

UA가 밑줄의 적절한 오프셋을 선택합니다.

단, text-underline-position의 계산값이 from-font이고, UA가 폰트에서 적절한 메트릭을 추출해 사용할 수 있었다면 이 오프셋은 0이어야 합니다.

<length>

밑줄의 오프셋을 고정 길이로 지정합니다.

참고: 길이는 고정값으로 상속되며, 폰트 크기에 따라 스케일되지 않습니다.

<percentage>

밑줄의 오프셋을 1em의 백분율로 지정합니다.

참고: 백분율은 상대값으로 상속되어, 상속 시 폰트 크기 변화에 따라 스케일됩니다.

text-decoration-line 속성 값이 spelling-error 또는 grammar-error일 때, UA는 text-underline-position 값을 무시할 수 있습니다.

2.8.1. 밑줄 오프셋 기준점(제로 위치)

제로 위치는 밑줄의 기준점이며, 아래에 설명된 text-underline-position 값에 따라 달라집니다.

text-underline-positiontext-underline-offset의 상호작용
text-underline-position 제로 위치 양의 방향
auto 알파벳 기준선 under
from-font 폰트 메트릭에서 지정한 위치, 없으면 알파벳 기준선 under
under 텍스트 아래(edge) under
left 텍스트 아래(왼쪽) edge under
right 텍스트 위(오른쪽) edge over

밑줄은 지정된 위치의 바깥쪽(positive 방향)으로 두께가 확장되도록 정렬됩니다.

자손 콘텐츠에 맞춘 자동 조정이 있다면 그대로 유지되며, text-underline-offset는 그 위에 추가로 적용됩니다.

2.8.2. 폰트 메트릭을 이용한 자동 위치 지정

일부 폰트 포맷(OpenType 등)은 선 장식에 적합한 위치 정보를 제공합니다. UA는 auto 오프셋을 선택할 때 적절하다면 이러한 폰트 기반 정보를 사용해야 하며, from-fonttext-underline-position에 지정된 경우 반드시 사용해야 합니다.

참고: 일반적으로 OpenType 폰트 메트릭은 alphabetic 밑줄 위치를 제공합니다. (CJK 폰트 등 일부 경우에는 under left 밑줄 위치를 제공하기도 합니다. 이때 폰트의 밑줄 메트릭은 em 박스 하단 edge에 닿는 경우가 많습니다.) UA는 폰트 메트릭이 잘못된 경우 보정할 수도 있고, 반드시 보정하지 않아도 됩니다.

2.9. 텍스트 장식선의 균일성

선 장식의 정확한 위치와 두께는 위에서 정의한 text-underline-position, text-underline-offset, text-decoration-thickness 값에 따라 달라지며, 그 외 부분은 UA가 정의합니다. 단, 밑줄과 윗줄의 경우 UA는 한 장식 박스에서 파생된 장식에 대해 한 줄마다 두께와 위치를 통일해 사용해야 합니다.

여러 폰트 크기와 수직 위치에 밑줄을 그릴 때, 한 줄에는 반드시 하나의 선만 그려져야 한다. vs. 장식된 텍스트에 따라 위치와 두께가 다른 여러 선분을 그리는 것은 잘못된 구현이다.

올바른/잘못된 렌더링 예시: <u>A<sup>B</sup><big>C</big>D</u>

참고: 선 장식은 다양한 폰트 크기와 수직 정렬을 가진 요소에 걸칠 수 있으므로, 선 장식의 최적 위치는 장식 박스에 의해 지정된 이상적 위치와 반드시 일치하지는 않습니다. 예를 들어, 작은 폰트에 맞춘 윗줄은 그 요소에 큰 폰트 텍스트가 포함될 경우 실질적으로 취소선이 될 수 있습니다. 밑줄의 경우도, 텍스트가 알파벳 기준선에 정렬되지 않으면 (예: 세로 조판 스타일에서 텍스트는 기본적으로 중앙 기준선에 정렬됨 [CSS-WRITING-MODES-4]) 큰 폰트 자식의 텍스트를 밑줄이 관통하게 됩니다. UA가 자손 콘텐츠를 고려하면 더 나은 타이포그래피 결과를 얻을 수 있습니다.

세로 텍스트의 중앙 기준선 정렬로 인해, 작은 세로 텍스트의 왼쪽 밑줄은 더 큰 폰트 크기의 자식 텍스트를 관통하게 됩니다. 밑줄을 분리해서 그릴 수는 없으며, 위치를 더 왼쪽으로 조정하면 모든 밑줄 텍스트를 제대로 감쌀 수 있습니다.

UA는 vertical-alignbaseline이 아니거나 [CSS2]에서 첨자(sup/sub) 처리된 장식 박스에 대해 반드시 선 위치를 해당 박스의 이동된 메트릭에 맞추어 조정해야 하며, font-variant-position [CSS-FONTS-3] 등으로 첨자 처리된 경우에도 마찬가지입니다. 단, 이렇게 스타일된 장식 박스의 자손에 대해서는 선 위치나 두께를 조정하면 안 됩니다 (다만, 위에서 언급한 것처럼 단지 폰트 크기가 다른 자손 등은 조정해도 무방). 이를 통해 윗첨자/아랫첨자에 장식(밑줄, 취소선 등)을 제대로 적용할 수 있으면서도, 조상 장식의 위치가 왜곡·분리되는 것을 방지할 수 있습니다.

‘1st’에서 윗첨자(st)에만 밑줄을 적용하면 그 아래에, 전체 텍스트에 적용하면 전체 크기에 맞춰 밑줄이 그어진다.

윗첨자에만 밑줄 적용한 경우와, 윗첨자를 포함한 텍스트 전체에 밑줄 적용한 예

2.10. 텍스트 장식선 연속성: text-decoration-skip 축약형 및 하위 속성

CSSWG에서는 text-decoration-skip-ink과 같이 개별 속성으로 나누어 계단식 동작을 개선하기로 결정했습니다. 관련 논의결의 참고. 이 절은 초안이며 CSSWG의 검토를 거치지 않았습니다.

이름: text-decoration-skip
값: none | auto
초기값: 각 하위 속성 참고
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 각 하위 속성 참고
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

text-decoration-skip 및 그 하위 속성(text-decoration-skip-self, text-decoration-skip-box, text-decoration-skip-inset, text-decoration-skip-spaces, text-decoration-skip-ink) 는 해당 요소 또는 조상이 장식 박스일 때 장식선이 중단되는 방식을 제어합니다. none 값은 모든 하위 속성을 none으로 설정하며, auto 값은 모든 하위 속성을 초기값으로 설정합니다.

none 정의가 웹 호환성이 있는지? 웹 호환성을 위해 ink 값도 추가해야 할까요?

이 속성들은 상속되며, 자손 요소는 서로 다른 설정을 가질 수 있습니다.

HTML 기본 UA 스타일시트에는 다음 내용이 추가됩니다:

ins, del { text-decoration-skip: none; }

text-decoration-line 속성 값이 spelling-error 또는 grammar-error일 때, UA는 이 속성들을 모두 무시할 수 있습니다.

2.10.1. 공백 건너뛰기: text-decoration-skip-self 속성

이름: text-decoration-skip-self
값: none | objects
초기값: objects
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

CSSWG에서는 text-decoration-skip을 하위 속성으로 분할하기로 결정했으나, 이 값 집합은 아직 CSSWG의 검토를 거치지 않았습니다.

이 속성은 조상에 의해 그려진 텍스트 장식선이 이 요소에 전파되거나 가로지르는지 여부를 지정합니다. 값의 의미는 다음과 같습니다:

none
아무것도 건너뛰지 않음: 조상 장식 박스의 장식선이 이 박스에 전파되거나 가로질러 그려짐.
objects
이 요소가 원자적 인라인(예: 이미지, 인라인 블록)일 경우, 이 요소(전체 margin box)를 건너뜀.

2.10.2. 공백 건너뛰기: text-decoration-skip-box 속성

이름: text-decoration-skip-box
값: none | all
초기값: none
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

CSSWG에서는 text-decoration-skip을 하위 속성으로 분할하기로 결정했으나, 이 값 집합은 아직 CSSWG의 검토를 거치지 않았습니다.

이 속성은 해당 요소에 영향을 주는 텍스트 장식선이 요소의 박스 영역 중 어느 부분을 건너뛰어야 하는지 지정합니다. 이 속성은 조상에 의해 그려진 텍스트 장식선에만 영향을 줍니다. 값의 의미는 다음과 같습니다:

none
아무것도 건너뛰지 않음: 조상 장식 박스의 장식선은 margin에서 margin까지 전체 영역에 그려짐.
all
조상 장식 박스에 적용된 텍스트 장식선을 그릴 때, 이 박스의 margin, border, padding 영역은 건너뛰고 content 영역 내에서만 선을 그림.

이 값은 조상에 의해 적용된 장식선에만 효과가 있으며, 장식 박스 자신은 자기 박스 장식 위에 선을 그리지 않음.

2.10.3. 인셋 에지: text-decoration-skip-inset 속성

이름: text-decoration-skip-inset
값: none | auto
초기값: none
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

CSSWG에서는 text-decoration-skip을 하위 속성으로 분할하기로 결정했으나, 이 값 집합은 아직 CSSWG의 검토를 거치지 않았습니다.

이 속성은 요소의 박스 영역 중 텍스트 장식이 건너뛰어야 하는 부분을 지정합니다. 이 속성은 해당 요소가 그리는 모든 텍스트 장식선에만 적용되며, 조상이 그리는 텍스트 장식선에는 적용되지 않습니다. 값의 의미는 다음과 같습니다:

none
아무것도 건너뛰지 않음: 텍스트 장식선이 박스 에지에서 에지까지 그려집니다.
auto
UA는 장식선의 시작과 끝을 장식 박스의 콘텐츠 에지에서 약간 안쪽으로 배치해야 하며, 예를 들어 두 개의 밑줄 요소가 나란히 있을 때 단일 밑줄처럼 보이지 않도록 해야 합니다. 인셋의 크기는 UA에 따라 다르지만(예: 선 두께의 절반) 0이 아니어야 합니다. (중국어에서 밑줄은 구두점의 한 형태이기 때문에 중요합니다.)

한 줄의 한자 밑에 밑줄이 있고, 서로 인접한 밑줄 요소 사이에는 간격이 있다.

text-decoration-skip-inset: auto<u>石井</u><u>艾俐俐</u>

이 속성은 text-decoration-skip 세트의 일부가 아니라 독립 속성이어야 할 수도 있습니다. 선 길이를 명시적으로 제어하는 것에 대한 이슈 4557도 참고하세요.

2.10.4. 공백 건너뛰기: text-decoration-skip-spaces 속성

이름: text-decoration-skip-spaces
값: none | all | [ start || end ]
초기값: start end
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

웹 호환성을 위해 초기값을 none으로 해야 할까요? 아니라면, INS와 DEL에는 최소한 UA 기본 스타일시트에서 none을 할당해야 할 것입니다. 이슈 4653도 참고하세요.

이 속성은 텍스트 장식이 공백을 건너뛸지 여부를 지정합니다. 이 속성은 해당 요소가 그리는 모든 텍스트 장식선과 조상이 그리는 모든 텍스트 장식선에도 영향을 줍니다. 값의 의미는 다음과 같습니다:

none
공백 문자는 건너뛰지 않습니다. 다른 문자와 동일하게 장식이 적용됩니다.
all
모든 공백 문자와 인접한 letter-spacing 또는 word-spacing도 건너뜁니다.
start
줄의 시작에 위치한 모든 공백 문자와 인접한 letter-spacing 또는 word-spacing을 건너뜁니다.
end
줄의 끝에 위치한 모든 공백 문자와 인접한 letter-spacing 또는 word-spacing을 건너뜁니다.

이 속성에서 공백 문자란, Unicode White_Space 속성 [UAX44]을 가진 타이포그래픽 문자 단위(단, U+202F NARROW NO-BREAK SPACE 제외)나, 단어 분리자를 의미합니다.

2.10.5. 글리프 건너뛰기: text-decoration-skip-ink 속성

이름: text-decoration-skip-ink
값: auto | none | all
초기값: auto
적용 대상: 모든 요소
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 장식선이 글리프를 가로지를 때 윗줄/밑줄을 어떻게 그릴지 제어합니다. 이 속성은 하위 박스가 다른 스타일을 지정하더라도 이 요소에서 시작된 모든 장식에 영향을 줍니다.

활성화 시, 장식선은 글리프가 그려진 부분을 건너뜁니다: 장식선이 글리프를 가로지를 위치에서 선을 끊어 텍스트 모양이 드러나도록 합니다. UA는 글리프 외곽선 양쪽에 약간의 간격도 건너뛰어야 합니다.

미얀마 문자의 알파벳 밑줄이 내림꼴과 결합 문자 세로줄을 피해서 그려짐.

글리프 잉크 건너뛰기

표의문자(한자 등)는 auto일 때 건너뛰기를 원하지 않습니다. 이 동작을 어떻게 정의할까요? 더 건너뛰기를 원하지 않는 문자체계가 있을까요? auto 동작 정의가 필요합니다. telcon minutes, alreq#86, csswg#1288 참고

이 속성은 윗줄/밑줄에만 적용되며, 취소선(line-through)에는 항상 연속적으로 선이 그려집니다.

auto
UA는 밑줄/윗줄이 글리프 잉크를 가로지르는 곳과 외곽선 양쪽 일정 거리에서 선을 멈추어도 됩니다. UA는 어떤 콘텐츠 범위에 잉크 건너뛰기를 적용할지 결정할 때(아래 주 참고) 텍스트의 문자체계를 고려해야 합니다.
all
UA는 밑줄/윗줄이 글리프 잉크를 가로지르는 곳과 외곽선 양쪽 일정 거리에서 반드시 선을 멈춰야 합니다.
none
UA는 밑줄/윗줄이 글리프를 가로지르더라도 반드시 연속적으로 선을 그려야 합니다.
참고: 구현 경험상, 밑줄 텍스트에 표의문자(한자 등)가 포함된 경우 잉크 건너뛰기 동작은 종종 바람직하지 않은 결과를 만듭니다. 밑줄 위치가(폰트와 UA에 따라 다르지만) 거의 모든 글리프와 충돌하므로 실제로는 선의 일부 조각만 남게 됩니다.

원칙적으로, 저자는 text-underline-position: under 또는 text-underline-offset을 사용해 밑줄이 글리프와 충돌하지 않는 낮은 위치로 내릴 수 있지만, UA가 이를 지원하더라도 저자가 그 가능성을 인지하지 못할 수도 있고 항상 현실적인 방법은 아닙니다. 특히, 페이지에 임의의 사용자 생성 콘텐츠가 포함될 경우 디자인 담당 저자는 CJK 콘텐츠가 포함될지 알 수 없습니다. 혼합 문자체계의 경우도, CJK에 맞춘 밑줄 위치는 비-CJK가 많은 텍스트에는 어색할 수 있습니다.

따라서 auto가 적용될 때, 잉크 건너뛰기를 구현하는 UA는 CJK 문맥에서는 이를 적용하지 않아야 합니다. (CJK에도 잉크 건너뛰기를 적용하고 싶은 저자는 always 값을 명시적으로 사용하면 됩니다.)

구체적으로는, 유니코드 Script property가 CJK 문자체계(Han, Hiragana, Katakana, Bopomofo, Hangul) 중 하나이거나, Script property가 Inherited 또는 Common이고, ScriptExtensions property에 CJK가 포함된 경우에는 잉크 건너뛰기를 적용하지 않아야 합니다.

또한, Common/Inhertied 스크립트(주로 일반 구두점/기호)는 CJK 문자 구간에 포함될 수 있으므로 구간 내 모든 텍스트에 일관되게 처리하는 것이 바람직합니다. 따라서 UA는 “Implementation Notes” [UAX24] 5.1, 5.2절에서 설명한 대로 텍스트를 문자체계 런으로 분할해야 합니다. 해당 휴리스틱(또는 유사 분석) 적용 후, UA는 CJK 문자 런에는 잉크 건너뛰기를 비활성화해야 합니다.

(CJK 외에) 기본적으로 잉크 건너뛰기를 비활성화하는 것이 바람직한 문자체계가 또 있을까요? 예를 들어 Yi, 아랍어 등. (이슈 1288 논의 참고)

2.10.6. 모양 방해 처리

UA가 밑줄 또는 윗줄을 글리프 경계에서 끊을 때, 해당 경계의 선 모양은 글리프의 형태를 따라야 합니다.

참고: 이 명세는 의도적으로 "글리프 형태 따르기"의 특정 방법을 강제하지 않으므로, UA는 심미성과 성능을 고려해 적절한 방식을 사용할 수 있습니다. 예를 들어, 성능상 임계값 이하에서는 선 끝을 사각형으로 처리할 수도 있고, 얇은 장식선에서는 곡선을 근사하기 위해 사다리꼴 끝을 사용할 수도 있습니다. 심미성 측면에서는, 글리프 경계가 선 두께의 일부만 교차하거나 거의 수평에 가까울 때 곡선을 정확히 따를 경우 어색한 잔여선이 생길 수 있습니다. 글리프 내부에 닫힌 영역이 있을 때 선을 보일지 여부도 또 다른 고려점입니다.
예: 'goal'에서 'g'의 아래 고리에 밑줄이 겹칠 때, 밑줄의 위치/두께에 따라 밑줄이 고리 전체를 채우거나 일부만 보일 수 있음. 마스킹된 두 가지 예시.

고리 내부의 밑줄을 숨기면 더 깔끔한 인상을 주며, 외곽 곡선을 따라가는 밑줄 끝은 해당 글자를 통해 밑줄이 이어짐을 암시해줍니다.

3. 강조 표시를 위한 추가 제어

동아시아 문서에서는 전통적으로 텍스트 일부를 강조하기 위해 각 글리프 옆에 작은 기호(강조 부호)를 사용합니다. 예시:

일본어 텍스트 위에 강조 부호가 적용된 예시

일본어 텍스트에 적용된 악센트 강조(파란색으로 표시)

text-emphasis 축약형과, 그 하위 text-emphasis-style, text-emphasis-color 속성으로 텍스트에 강조 부호를 적용할 수 있습니다. 별도로 상속되는 text-emphasis-position 속성은 강조 부호의 위치를 텍스트 기준으로 지정할 수 있게 합니다.

크기/위치 연속성 관련 이슈도 참고하세요.

3.1. 강조 부호 스타일: text-emphasis-style 속성

이름: text-emphasis-style
값: none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>
초기값: none
적용 대상: 텍스트
상속:
백분율: 해당 없음
계산값: 키워드 none, 형태 및 채움 쌍의 키워드, 또는 문자열
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 요소의 텍스트에 강조 부호를 적용합니다. 값의 의미는 다음과 같습니다:

none
강조 부호 없음.
filled
모양이 실색으로 채워집니다.
open
모양이 비어 있습니다.
dot
작은 원 모양 부호를 표시합니다. 채워진 점은 U+2022 '•', 빈 점은 U+25E6 '◦'입니다.
circle
큰 원 모양 부호를 표시합니다. 채워진 원은 U+25CF '●', 빈 원은 U+25CB '○'입니다.
double-circle
이중 원 모양 부호를 표시합니다. 채워진 이중 원은 U+25C9 '◉', 빈 이중 원은 U+25CE '◎'입니다.
triangle
삼각형 모양 부호를 표시합니다. 채워진 삼각형은 U+25B2 '▲', 빈 삼각형은 U+25B3 '△'입니다.
sesame
깨 모양 부호를 표시합니다. 채워진 깨는 U+FE45 '﹅', 빈 깨는 U+FE46 '﹆'입니다.
<string>
지정한 문자열을 부호로 표시합니다. 작성자는 <string>에 하나의 문자만 지정해야 하며, UA는 하나 이상의 그래핀 클러스터로 구성된 문자열은 잘라내거나 무시할 수 있습니다.

모양 키워드가 지정되었으나 filled 또는 open이 지정되지 않은 경우, filled가 기본값입니다. filled 또는 open만 지정한 경우, 수평 타이포그래픽 모드에서는 circle, 세로 타이포그래픽 모드에서는 sesame로 계산됩니다.

부호는 요소의 폰트 설정(추가로 ruby 기능 추가, 크기는 50% 축소)에 따라 그려야 합니다. 단, 모든 폰트가 모든 글리프를 갖고 있지 않거나 부호 코드 포인트에 부적절한 크기를 사용하는 경우가 있으므로, UA는 강조 부호에 적합한 폰트를 사용할 수 있고, 또는 UA가 부호를 합성할 수도 있습니다. 세로 타이포그래픽 모드에서는 부호를 반드시 세워서(회전하지 않고) 그려야 하며, CJK 문자처럼 쓰기 방향에 따라 회전하지 않습니다. 수평 타이포그래픽 모드를 가진 세로 쓰기 모드의 경우 부호의 방향은 이 레벨에서 정의하지 않습니다(필요하다면 미래 레벨에서 정의될 수 있음).

참고: 강조 부호에 적합한 폰트의 예로 Adobe의 오픈소스 Kenten Generic OpenType Font가 있습니다.

부호는 각 타이포그래픽 문자 단위마다 한 번씩 그려집니다. 단, 다음과 같은 경우에는 강조 부호가 그려지지 않습니다:

참고: 어떤 문자에 부호를 그릴지 제어하는 기능은 레벨 4에서 추가될 예정입니다. (구두점 목록 역시 특히 비-CJK 구두점에 대해 더 정교해질 수 있습니다.)

3.2. 강조 부호 색상: text-emphasis-color 속성

이름: text-emphasis-color
값: <color>
초기값: currentcolor
적용 대상: 텍스트
상속:
백분율: 해당 없음
계산값: 계산된 색상
정규 순서: 문법에 따름
애니메이션 타입: 계산값 유형에 따라

이 속성은 강조 부호의 전경색을 지정합니다.

참고: currentcolor 키워드는 그 자체로 계산되며, 상속 후 color 값으로 해석됩니다. 즉, text-emphasis-color는 기본적으로 텍스트 color와 동일하게 적용되며, color가 요소마다 달라져도 이를 따릅니다.

3.3. 강조 부호 축약형: text-emphasis 속성

이름: text-emphasis
값: <'text-emphasis-style'> || <'text-emphasis-color'>
초기값: 각 속성 참고
적용 대상: 각 속성 참고
상속: 각 속성 참고
백분율: 각 속성 참고
계산값: 각 속성 참고
애니메이션 타입: 각 속성 참고
정규 순서: 문법에 따름

이 속성은 text-emphasis-styletext-emphasis-color를 한 번에 지정하는 축약형입니다. 생략된 값은 각 속성의 초기값으로 설정됩니다.

참고: text-emphasis-position은 이 축약형에서 재설정되지 않습니다. 일반적으로 모양/색상은 바뀌더라도 위치는 언어마다 문서 전체에 걸쳐 일관되게 사용되므로, 위치는 별도로 상속되어야 합니다.

3.4. 강조 부호 위치: text-emphasis-position 속성

이름: text-emphasis-position
값: [ over | under ] && [ right | left ]?
초기값: over right
적용 대상: 텍스트
상속:
백분율: 해당 없음
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속(discrete)

이 속성은 강조 부호가 어디에 그려질지 지정합니다. [ right | left ]를 생략하면 기본값은 right입니다. 값의 의미는 다음과 같습니다:

over
수평 타이포그래픽 모드에서 텍스트 위에 부호를 그립니다.
under
수평 타이포그래픽 모드에서 텍스트 아래에 부호를 그립니다.
right
세로 타이포그래픽 모드에서 텍스트 오른쪽에 부호를 그립니다.
left
세로 타이포그래픽 모드에서 텍스트 왼쪽에 부호를 그립니다.

강조 부호는 각 문자가 해당 부호를 루비 주석 텍스트로 할당받고 루비 위치는 text-emphasis-position, 정렬은 중앙인 것처럼 정확히 그려집니다. 단, 이 위치가 밑줄/윗줄 장식과 충돌하는 경우 조정될 수 있습니다.

강조 부호가 줄 높이에 미치는 영향은 루비 텍스트와 동일합니다.

참고: 강조 부호의 선호 위치는 언어에 따라 다릅니다. 예를 들어 일본어의 기본 위치는 over right이고, 중국어는 under right입니다. 아래 표는 중국어·일본어의 선호 강조 부호 위치를 요약한 것입니다:
언어별 권장 강조 부호 및 루비 위치
언어 권장 위치 예시
수평 수직
일본어 over right 수평 일본어 텍스트에서 각 강조 글자 위에 부호가 나타남. 수직 일본어 텍스트에서 각 강조 글자 오른쪽에 부호가 나타남.
한국어
몽골어
중국어 under right 수평 중국어 텍스트에서 각 강조 글자 아래에 부호가 나타남.

강조 부호가 루비와 같은 위치에 그려지는 문자에 적용된 경우, 강조 부호는 루비 바깥쪽에 배치됩니다. 여기에는 auto-hidden 및 빈 루비 주석도 포함됩니다.

이 예제에서 강조 부호는 4글자에 적용되고, 이 중 2글자는 루비도 있음.
		       점은 루비가 없는 글자 위에는 바로, 루비가 있는 글자 위에는 루비 위에 정렬됩니다.

루비가 있는 2글자, 없는 2글자에 모두 강조 부호가 적용된 예시

일부 편집기는 루비와 강조 부호가 겹치면 강조 부호를 감추는 방식을 선호합니다. HTML에서는 다음과 같이 스타일 규칙으로 처리할 수 있습니다:
ruby { text-emphasis: none; }

다른 일부 편집기는 강조 부호와 루비가 겹칠 때 루비를 감추는 방식을 선호합니다. HTML에서는 다음과 같이 처리할 수 있습니다:

em { text-emphasis: dot; } /* <em> 요소에 강조 부호 적용 */
em rt { display: none; }   /* <em> 내부 루비 감추기 */

3.5. 강조 표시 건너뛰기: text-emphasis-skip 속성

이 섹션은 아이디어 수집 중입니다. 출판물마다 원하는 동작이 다름에도 불구하고 이 속성이 실제로 필요한지 여부는 아직 명확하지 않습니다.

이름: text-emphasis-skip
값: spaces || punctuation || symbols || narrow
초기값: spaces punctuation
적용 대상: text
상속: yes
백분율: N/A
계산값: 지정된 키워드
표준 순서: 문법 순서
애니메이션 타입: 불연속(discrete)

이 속성은 어떤 문자에 강조 표시가 그려지는지를 설명합니다. 값은 다음과 같은 의미를 가집니다:

spaces
단어 구분자 또는 기타 문자로서 유니코드 구분자 범주(Z*)에 속하는 문자를 건너뜁니다. (단, 결합 문자와 결합된 공백에는 강조 표시가 그려집니다.)
punctuation
구두점을 건너뜁니다. 여기서 구두점은 유니코드 P* 범주에 속하지만 아래의 symbols로 정의되지 않은 문자를 포함합니다.
symbols
기호를 건너뜁니다. 여기서 기호는 모든 전형적 문자 단위 중 유니코드 S* 일반 범주에 속하는 것과 NFKD 동등한 [UAX15] 값이 아래의 유니코드 Po 범주 문자와 동일한 것을 포함합니다:
# U+0023 넘버 기호
% U+0025 퍼센트 기호
U+2030 퍼밀 기호
U+2031 만분율 기호
٪ U+066A 아랍어 퍼센트 기호
؉ U+0609 아랍-인디언 퍼밀 기호
؊ U+060A 아랍-인디언 만분율 기호
& U+0026 앰퍼샌드
U+204A TIRONIAN SIGN E[[
@ U+0040 상업용 앳(@)
§ U+00A7 섹션 기호
U+00B6 필크로우(문단 기호)
U+204B 반전 필크로우
U+2053 물결 대시
〽️ U+303D 파트 교대 기호
narrow
유니코드 데이터베이스의 East_Asian_Width 속성 [UAX11] 값이 F(전각) 또는 W(와이드)가 아닌 문자들을 건너뜁니다. [UAX44]

제어 코드 및 할당되지 않은 문자(Cc, Cf, Cn)로 유니코드 클래스에 속하는 문자는 이 속성 값과 관계없이 항상 건너뜁니다.

이 문법은 UA가 공백에 대해 강조 표시를 그릴 것을 요구합니다. 실제로 그런 경우가 필요한가요? 필요 없다면, 문법을 수정하여 공백에 강조 표시를 그리지 않도록 해야 할까요?

초기값 논의도 참고하세요.

4. 텍스트 그림자: text-shadow 속성

이름: text-shadow
값: none | <shadow>#
초기값: none
적용 대상: text
상속: yes
백분율: n/a
계산값: 키워드 none 또는 각 항목이 네 개의 절대 길이와 계산된 색상(필요시 inset 키워드 포함)으로 구성된 리스트
표준 순서: 문법 순서
애니메이션 타입: shadow 리스트로

이 속성은 요소의 텍스트에 적용할 쉐도우 효과를 쉼표로 구분된 리스트로 받습니다. 값은 box-shadow [CSS-BACKGROUNDS-3]와 동일하게 해석됩니다. 각 계층은 요소의 텍스트 및 모든 텍스트 장식(합성된 상태) 위에 그림자를 만듭니다. 쉐도우 효과는 앞쪽(첫 번째 쉐도우가 맨 위)에 적용됩니다. 따라서 그림자가 서로 겹칠 수 있습니다.

box-shadow와 달리, 확산 거리(spread distance)는 항상 글리프 윤곽선의 임의의 점에서 바깥쪽 거리로 해석되며, 블러 반지름과 유사하게 둥근 모서리를 만듭니다. 음수 확산 값은 유효하지 않습니다.

모서리의 형태를 정의하지 않은 채 둘 것인가요? [Issue #7250]

외부 텍스트 그림자 (inset 키워드 없이 지정된 경우) 텍스트—및 텍스트 스트로크 [FILL-STROKE-3] 포함—를 잘라내어 주변 캔버스 위로 띄운 것처럼 그림자를 만듭니다. box-shadow와 달리, 외부 텍스트 그림자는 그림자 형태에 클리핑되지 않으며, 텍스트가 반투명할 경우 그림자가 비칠 수 있습니다.

내부 텍스트 그림자 (inset 키워드와 함께 지정된 경우) 텍스트를 잘라내어 주변 캔버스 아래로 떨어뜨린 것처럼 캔버스와 텍스트 스트로크 [FILL-STROKE-3]에 그림자를 만듭니다. 따라서 스트로크의 내부 경계 내에서만 그려집니다.

외부 텍스트 그림자는 요소의 테두리/배경(존재한다면)과 요소의 텍스트 및 텍스트 장식 사이의 스택 레벨에 그려져야 합니다. 내부 텍스트 그림자는 텍스트 및 장식 위에 그려져야 합니다. UA는 동일한 스택 레벨 및 스태킹 컨텍스트에 속하는 인접 요소의 텍스트 위에 텍스트 그림자를 그리는 것을 피해야 합니다. (이것은 그림자의 정확한 스택 레벨이 요소에 테두리나 배경이 있는지에 따라 달라질 수 있음을 의미함: 텍스트 그림자의 정확한 스태킹 동작은 UA 정의입니다.)

스트로크와의 스태킹 관계? [Issue #7251]

box-shadow와 마찬가지로, 텍스트 그림자는 레이아웃에 영향을 주지 않으며, 스크롤을 유발하거나 스크롤 가능한 오버플로우 영역의 크기를 증가시키지 않습니다.

text-shadow 속성은 ::first-line::first-letter 의사 요소 모두에 적용됩니다.

5. 텍스트 장식 그리기

5.1. 텍스트 장식의 그리기 순서

[CSS2]와 같이, 텍스트 장식은 장식 대상 텍스트 바로 위/아래에 다음 순서(가장 아래부터)로 그려집니다:

선 장식이 박스 장식이나 원자 인라인 위에 그려질 경우, 비포지셔닝 콘텐츠 위에, 포지셔닝된 자식 바로 아래(즉 CSS2.1 부록 E의 레이어 #8 바로 아래)에 그려집니다.

5.2. 텍스트 장식의 오버플로우

박스 바깥으로 넘치는 텍스트 장식은 잉크 오버플로우로 간주됩니다: 스크롤 가능한 오버플로우 영역을 확장하지 않습니다. [css-overflow-3]

부록 A: 감사의 글

이 명세서는 다음 분들의 도움 없이는 불가능했을 것입니다: Ayman Aldahleh, Bert Bos, Tantek Çelik, Stephen Deach, John Daggett, Martin Dürst, Laurie Anna Edlund, Ben Errez, Yaniv Feinberg, Arye Gittelman, Ian Hickson, Martin Heijdra, Richard Ishida, Masayasu Ishikawa, Michael Jochimsen, Eric LeVine, Ambrose Li, Håkon Wium Lie, Chris Lilley, Ken Lunde, Nat McCully, Shinyu Murakami, Paul Nelson, Chris Pratley, Marcin Sawicki, Arnold Schrijver, Rahul Sonnad, Michel Suignard, Takao Suzuki, Frank Tang, Chris Thrasher, Etan Wexler, Chris Wilson, Masafumi Yabe 그리고 Steve Zilles.

부록 B: 기본 UA 스타일시트

이 부록은 참고용이며, UA 개발자가 기본 스타일시트를 구현하는 데 도움을 주기 위한 것이나, UA 개발자는 이를 무시하거나 변경할 수 있습니다.

/* HTML의 일반적인 스타일링 */
blink {
  text-decoration-line: blink;
}
s, strike, del {
  text-decoration: line-through;
}
u, ins, :link, :visited {
  text-decoration: underline;
}
abbr[title], acronym[title] {
  text-decoration: dotted underline;
}

/* 루비 텍스트에 text-emphasis 마크 상속 비활성화:
  강조 마크는 본문 텍스트에만 적용 */
rt { text-emphasis: none; }

/* 언어별 기본 강조 마크 위치 지정 */
:root:lang(zh), [lang|=zh] { text-emphasis-position: under right; }
[lang|=ja], [lang|=ko]     { text-emphasis-position: over right; }

/* 언어별 기본 밑줄 위치 지정 */
:root:lang(ja), [lang|=ja],
:root:lang(mn), [lang|=mn],
:root:lang(ko), [lang|=ko] { text-underline-position: right; }
:root:lang(zh), [lang|=zh] { text-underline-position: left;  }
/* auto는 위에서 under 대신 콘텐츠 호환성 문제로 선택됨 */

문제, 추가 제안 혹은 정정 사항이 있다면 www-style@w3.org[css-text-decor]를 제목에 포함하여 보내주세요.

text-decoration-line: blink는 다른 속성으로 완전히 재현할 수는 없지만, 저자는 다음 CSS로 매우 유사한 효과를 얻을 수 있습니다:
@keyframes blink {
  0% {
    visibility: hidden;
    animation-timing-function: step-end;
  }
  25%, 100% {
    visibility: visible;
  }
}
blink {
  animation: blink 1s infinite;
}

부록 C: 변경사항

2020년 5월 6일 워킹드래프트 이후 변경사항

2020년 5월 6일 워킹드래프트 이후 중요한 변경사항:

Level 3 이후 추가사항

다음 기능이 Level 3 이후 추가되었습니다:

6. 프라이버시 및 보안 고려사항

이 명세는 새로운 프라이버시 또는 보안 고려사항을 도입하지 않습니다.

적합성

문서 규약

적합성 요구사항은 기술적 주장과 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는 반드시 접근 가능한 대안을 제공해야 합니다.

적합성 클래스

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

스타일시트
CSS 스타일시트.
렌더러
UA로, 스타일시트의 의미를 해석하고 이를 사용하는 문서를 렌더링합니다.
저작 도구
스타일시트를 작성하는 UA.

이 명세에 적합한 스타일시트는, 이 모듈에서 정의한 문법 및 해당 기능별 개별 문법에 따라 유효한 모든 구문을 사용해야 합니다.

이 명세에 적합한 렌더러는, 스타일시트를 적절한 명세에 따라 해석하는 것 외에도, 이 명세에서 정의한 모든 기능을 지원하여 이를 올바르게 파싱하고 문서를 올바르게 렌더링해야 합니다. 단, 디바이스의 한계로 인해 UA가 문서를 올바르게 렌더링하지 못하는 경우 UA가 비적합한 것은 아닙니다. (예: 단색 모니터에서 색상을 렌더링할 필요는 없음.)

이 명세에 적합한 저작 도구는, 이 모듈의 일반 CSS 문법 및 각 기능별 문법에 따라 구문적으로 올바른 스타일시트를 작성하며, 이 모듈에 설명된 스타일시트의 기타 모든 적합성 요구사항을 충족해야 합니다.

부분 구현

작성자가 전방 호환 파싱 규칙을 활용하여 폴백 값을 지정할 수 있도록, CSS 렌더러는 반드시 지원하지 않는 모든 @규칙, 속성, 속성값, 키워드 및 기타 구문 구조를 (해당되는 경우 무시) 무효로 처리해야 합니다. 특히, UA는 지원하지 않는 구성값만 무시하고 지원되는 값은 적용하는 식으로 다중 값 속성 선언에서 일부 값만 선택적으로 무시해서는 안 됩니다: 어떤 값이 무효(지원하지 않는 값이어야 함)로 간주된다면, CSS는 전체 선언을 무시하도록 요구합니다.

불안정 및 독점 기능의 구현

향후 안정적인 CSS 기능과의 충돌을 피하기 위해, CSSWG는 미래 대비 모범 사례를 따를 것과 불안정독점 확장 기능 구현에 대해 권장합니다.

비실험적 구현

명세가 Candidate Recommendation 단계에 도달하면, 비실험적 구현이 가능하며, 구현자는 스펙에 따라 올바르게 구현되었음을 입증할 수 있는 CR 수준의 기능에 대해 접두사 없는 구현을 제공해야 합니다.

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

테스트케이스 및 구현 보고서 제출에 관한 자세한 정보는 CSS 워킹 그룹 웹사이트 https://www.w3.org/Style/CSS/Test/에서 확인할 수 있습니다. 문의 사항은 public-css-testsuite@w3.org 메일링 리스트로 보내주세요.

색인

이 명세서에서 정의된 용어

참조로 정의된 용어

참고 문헌

규범적 참고 문헌

[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2021년 7월 26일. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 4. 2018년 12월 18일. WD. URL: https://www.w3.org/TR/css-break-4/
[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-COLOR-4]
Tab Atkins Jr.; Chris Lilley; Lea Verou. CSS Color Module Level 4. 2021년 12월 15일. WD. URL: https://www.w3.org/TR/css-color-4/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 2021년 9월 3일. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-FONTS-3]
John Daggett; Myles Maxfield; Chris Lilley. CSS Fonts Module Level 3. 2018년 9월 20일. REC. URL: https://www.w3.org/TR/css-fonts-3/
[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; Steve Zilles. CSS Inline Layout Module Level 3. 2020년 8월 27일. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-OVERFLOW-3]
David Baron; Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 2021년 12월 23일. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 3. 2021년 12월 16일. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 2020년 12월 31일. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-RUBY-1]
Elika Etemad; et al. CSS Ruby Annotation Layout Module Level 1. 2021년 12월 2일. WD. URL: https://www.w3.org/TR/css-ruby-1/
[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-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS Text Module Level 3. 2021년 4월 22일. CR. URL: https://www.w3.org/TR/css-text-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2019년 6월 6일. 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. 2021년 12월 16일. WD. URL: https://www.w3.org/TR/css-values-4/
[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/
[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/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS Fill and Stroke Module Level 3. 2017년 4월 13일. WD. URL: https://www.w3.org/TR/fill-stroke-3/
[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
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 2018년 11월 21일. WD. URL: https://www.w3.org/TR/selectors-4/
[UAX11]
Ken Lunde 小林劍󠄁. East Asian Width. 2021년 8월 23일. Unicode Standard Annex #11. URL: https://www.unicode.org/reports/tr11/tr11-39.html
[UAX15]
Ken Whistler. Unicode Normalization Forms. 2021년 8월 27일. Unicode Standard Annex #15. URL: https://www.unicode.org/reports/tr15/tr15-51.html
[UAX24]
Ken Whistler. Unicode Script Property. 2021년 8월 27일. Unicode Standard Annex #24. URL: https://www.unicode.org/reports/tr24/tr24-32.html
[UAX44]
Ken Whistler; Laurențiu Iancu. Unicode Character Database. 2021년 8월 30일. Unicode Standard Annex #44. URL: https://www.unicode.org/reports/tr44/tr44-28.html

비규범적 참고 문헌

[CSS-CASCADE-6]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 6. 2021년 12월 21일. WD. URL: https://www.w3.org/TR/css-cascade-6/
[CSS-TEXT-DECOR-3]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 3. 2019년 8월 13일. CR. URL: https://www.w3.org/TR/css-text-decor-3/
[CSS3-ANIMATIONS]
Dean Jackson; et al. CSS Animations Level 1. 2018년 10월 11일. WD. URL: https://www.w3.org/TR/css-animations-1/

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 타입 표준 순서 계산값
text-decoration <'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'> 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 문법 순서 개별 속성 참조
text-decoration-color <color> currentcolor 모든 요소 아니오 n/a 계산값 타입에 따라 문법 순서 계산된 색상
text-decoration-line none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error none 모든 요소 아니오 (상단의 설명 참조) n/a 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-skip none | auto 개별 속성 참조 모든 요소 N/A 불연속(discrete) 문법 순서 개별 속성 참조
text-decoration-skip-box none | all none 모든 요소 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-skip-ink auto | none | all auto 모든 요소 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-skip-inset none | auto none 모든 요소 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-skip-self none | objects objects 모든 요소 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-skip-spaces none | all | [ start || end ] start end 모든 요소 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-style solid | double | dotted | dashed | wavy solid 모든 요소 아니오 n/a 불연속(discrete) 문법 순서 지정된 키워드
text-decoration-thickness auto | from-font | <length> | <percentage> auto 모든 요소 아니오 N/A 계산값에 따라 문법 순서 지정된 키워드 또는 절대 길이
text-emphasis <'text-emphasis-style'> || <'text-emphasis-color'> 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 문법 순서 개별 속성 참조
text-emphasis-color <color> currentcolor 텍스트 n/a 계산값 타입에 따라 문법 순서 계산된 색상
text-emphasis-position [ over | under ] && [ right | left ]? over right 텍스트 n/a 불연속(discrete) 문법 순서 지정된 키워드
text-emphasis-skip spaces || punctuation || symbols || narrow spaces punctuation 텍스트 N/A 불연속(discrete) 문법 순서 지정된 키워드
text-emphasis-style none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string> none 텍스트 n/a 불연속(discrete) 문법 순서 none 키워드, 도형 및 채우기 쌍 키워드 또는 문자열
text-shadow none | <shadow># none 텍스트 n/a shadow 리스트로 문법 순서 none 키워드 또는 각 항목이 네 개의 절대 길이, 계산된 색상, 필요시 inset 키워드로 구성된 리스트
text-underline-offset auto | <length> | <percentage> auto 모든 요소 N/A 계산값에 따라 문법 순서 지정된 키워드 또는 절대 길이
text-underline-position auto | [ from-font | under ] || [ left | right ] auto 모든 요소 n/a 불연속(discrete) 문법 순서 지정된 키워드

이슈 색인

이 섹션은 Text Decoration Level 3 초기 초안에서 복사된 것입니다. 현재 검토 중이며, text-underline-offsettext-decoration-thickness와의 통합이 필요합니다.
단순화를 위해, line-through는 각 요소에서 그 요소의 선호/평균 위치에 그려져야 합니다. 이는 바람직하지 않은 점프 현상을 만들 수 있지만, 모든 경우에 올바른 방법으로 이를 피할 방법은 없어 보이며, 모든 시도는 걱정될 만큼 복잡합니다. 폰트 크기가 다르지만 대상 텍스트가 없는 요소 위에서는 line-through가 어떤 위치를 가져야 할까요?
CSSWG는 text-decoration-skip-ink와 같이 개별 속성으로 skip 기능을 분리하기로 결정하였으며, 이는 캐스케이딩 동작을 개선하기 위함입니다. 논의결의를 참고하세요. 이 섹션은 대략적인 초안이며 CSSWG의 검토를 아직 받지 않았습니다.
none 정의가 웹 호환성에 맞는가요? 웹 호환성을 위해 ink 값을 추가해야 하나요?
CSSWG는 text-decoration-skip을 하위 속성들로 분리하기로 결정했으나, 이 값 집합은 CSSWG의 검토를 아직 받지 않았습니다.
CSSWG는 text-decoration-skip을 하위 속성들로 분리하기로 결정했으나, 이 값 집합은 CSSWG의 검토를 아직 받지 않았습니다.
CSSWG는 text-decoration-skip을 하위 속성들로 분리하기로 결정했으나, 이 값 집합은 CSSWG의 검토를 아직 받지 않았습니다.
이 부분은 text-decoration-skip 집합의 일부가 아니라 독립 속성으로 하는 것이 좋을 수 있습니다. 선 길이 제어에 대한 Issue 4557도 참고하세요.
초기값을 웹 호환성을 위해 none으로 해야 할까요? 아니라면, INS와 DEL에는 UA 기본 스타일시트에서 최소한 none을 할당해야 합니다. Issue 4653도 참고하세요.
표의문자 스크립트는 auto일 때 건너뛰기를 원하지 않습니다. 이 동작을 어떻게 정의할 수 있을까요? 건너뛰기를 원하지 않는 다른 스크립트가 더 있을까요? auto가 어떻게 동작하는지에 대한 규범적 설명이 필요합니다. telcon minutes, alreq#86, csswg#1288도 참고하세요.
다른 (비CJK) 스크립트 중에서도 (auto가 적용될 때) ink-skipping을 기본적으로 비활성화하는 것이 더 나은 경우가 있을까요? Yi? 아랍어? (Issue 1288 논의도 참고하세요.)
크기/위치 연속성 이슈도 참고하세요.
이 섹션은 아이디어 수집 중입니다. 출판물마다 원하는 동작이 다름에도 불구하고 이 속성이 실제로 필요한지 여부는 아직 명확하지 않습니다.
이 문법은 UA가 공백에 대해 강조 표시를 그릴 것을 요구합니다. 실제로 그런 경우가 필요한가요? 필요 없다면, 문법을 수정하여 공백에 강조 표시를 그리지 않도록 해야 할까요?
초기값 논의도 참고하세요.
모서리 형태를 정의하지 않은 채 둘 것인가요? [Issue #7250]
스트로크와의 스태킹 관계? [Issue #7251]
문제, 추가 제안 혹은 정정 사항이 있다면 www-style@w3.org[css-text-decor]를 제목에 포함하여 보내주세요.