네이티브 리치 텍스트 미디어 질의

네이티브 XHTML 디코더는 style 요소의 media 속성과 중첩 @media 그룹을 평가한 뒤 지원되는 선언을 실제 리치 텍스트 run으로 캐스케이드합니다

미디어 평가는 명시적 네이티브 호스트 프로파일을 쓰며 데스크톱, 브라우저, 디스플레이 장치를 살피지 않습니다

Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'width';
Options.MediaFeatures[0].Value := '800px';
Options.MediaFeatures[1].Name := 'resolution';
Options.MediaFeatures[1].Value := '2dppx';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
<style media="screen and (width >= 600px)">
  @media (resolution >= 2dppx) {
    span.notice { font-size: 14pt }
  }
</style>

조건과 캐스케이드

질의는 all, print, screen 미디어 타입, only와 not 변경자, 쉼표로 나뉜 대안, 괄호친 not, and, or 조건을 지원합니다

숫자 feature는 콜론 등식, min-/max- 형태, =, <, <=, >, >=를 쓰는 순방향, 역방향 또는 연쇄 범위 비교를 받습니다

중첩 그룹은 소스 순서, 선언 importance, selector 명시도, 상속 네임스페이스 선언을 유지합니다. style media 속성과 모든 바깥 미디어 그룹이 일치해야 합니다

CSS 식별자 이스케이프, 주석, 지수 표기, 균형 잡힌 함수 토큰은 같은 유계 파서 안에서 스캔됩니다

알 수 없는 feature, 지원되지 않는 값, general-enclosed 조건은 부정과 불리언 평가를 통과해도 미지의 참값을 유지합니다. 최종 true 질의만 그 선언을 활성화합니다

미래 feature에 호스트 항목을 공급한다고 그 feature가 지원 질의 어휘에 포함되지 않습니다

호스트 프로파일

지원되는 숫자 feature는 width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome, grid입니다

이산 feature는 orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover, any-hover입니다

길이 단위는 pt, px, in, pc, cm, mm, q, em, rem, vw, vh, vmin, vmax이고, 해상도 단위는 dpi, dpcm, dppx, x이며, 비율은 슬래시 표기입니다

미디어 em과 rem은 캐스케이드된 요소 폰트 크기 대신 MediaInitialFontSize를 씁니다. 기본값은 12포인트이고, 0은 0-초기화 legacy 레코드를 위해 같은 12포인트 초기값을 유지합니다

생략된 orientation이나 aspect-ratio는 공급된 width와 height에서 유도될 수 있습니다. 높이 0은 비율을 미지로 남기고, 같은 너비와 높이는 portrait 방향을 씁니다

any-pointer는 coarse와 fine를 함께 담을 수 있습니다. none은 다른 pointer 값과 결합할 수 없고, color-gamut는 더 낮은 지원 gamut 등급을 포함합니다

기본 매체는 print이며, 8색 비트, 인덱스나 모노크롬 색 없음, grid 0, sRGB gamut입니다. update, overflow-inline, pointer, hover, scan 능력이 없고, overflow-block은 paged입니다

크기와 해상도에는 발명된 장치 기본값이 없습니다. 공유 색 기본값 외의 screen 능력은 관련될 때 명시적 호스트 값을 요구합니다

MediaFeatures는 최대 32개의 구별되는 ASCII-무관 이름을 허용하며, 각 이름은 1~64개의 ASCII 문자, 숫자 또는 하이픈, 값은 1~256 UTF-16 코드 유닛입니다. 인식된 항목은 유효한 비음수 숫자 또는 지원되는 이산 값을 써야 합니다

MediaInitialFontSize는 유한해야 하고 0이거나 0.000001~1000000포인트 사이여야 합니다. 무효한 호스트 프로파일은 run을 반환하기 전에 EHPDFHeadlessRichTextCodecError를 일으킵니다

명시적 선호와 접근성

선호는 MediaFeatures 항목으로 공급합니다. 이들은 호출자의 렌더링 환경을 기술하며 운영체제, 브라우저, 활성 데스크톱을 살피지 않습니다

Feature받는 값거짓 불리언 값
prefers-color-schemelight, dark어느 쪽도 아님
prefers-reduced-motionno-preference, reduceno-preference
prefers-reduced-transparencyno-preference, reduceno-preference
prefers-contrastno-preference, less, more, customno-preference
prefers-reduced-datano-preference, reduceno-preference
forced-colorsnone, activenone
inverted-colorsnone, invertednone
scriptingnone, initial-only, enablednone
Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.MediaType := hrmtScreen;
SetLength(Options.MediaFeatures, 2);
Options.MediaFeatures[0].Name := 'prefers-color-scheme';
Options.MediaFeatures[0].Value := 'dark';
Options.MediaFeatures[1].Name := 'prefers-contrast';
Options.MediaFeatures[1].Value := 'more';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
  span.notice { font-size: 20pt; font-weight: bold }
}

여덟 feature 모두 이산적입니다. 등식이나 불리언 조건을 쓰고 min-/max-나 순서 범위 비교를 쓰지 마세요

Light는 불리언 질의에서 활성 color-scheme 값이고, less나 custom은 활성 contrast 선호입니다. custom은 more를 함의하지 않습니다

생략된 선호는 print와 screen 모두에서, not 아래를 포함해 미지로 남습니다. 디코더는 no-preference, light, none 또는 다른 폴백 값을 발명하지 않습니다

인식된 호스트 feature의 무효한 값은 run이 반환되기 전에 프로파일을 거부합니다. CSS 식별자 이스케이프와 주석은 입력 끝까지 소비되는 주석을 포함해 기존 유계 토크나이저를 씁니다

scripting feature는 호출자가 공급한 가용성만 기술합니다. 질의 평가는 JavaScript를 실행하지 않습니다

style media 속성, 중첩 그룹, 호출자 공급 외부 시트는 이 feature 의미론과 기존 캐스케이드 규칙을 공유합니다

저장 문서와 경계

네이티브 호출자는 THPDFHeadlessRichTextDecodeOptions로 사용자 지정 호스트 프로파일을 구성해 HPDFDecodeHeadlessRichText에 직접 전달할 수 있습니다

계산된 run은 저장된 RV와 내장 appearance에 선택된 스타일을 유지합니다. 일반 FDF/XFDF 가져오기는 기본 print 프로파일을 씁니다

미디어 토큰, 중첩 그룹, 호스트 값 파싱, 매칭은 기존 스타일시트 파서와 MaxNodes, MaxTotalCodeUnits, MaxDepth, 취소 회계를 공유합니다

실패한 디코딩은 부분 run을 게시하지 않고, 실패한 가져오기는 주변 트랜잭션의 이전 문서 상태를 유지합니다

import 레이어와 supports 조건, calc와 viewport 단위, 더 많은 미디어 feature, 일반 CSS 레이아웃은 별개의 작업입니다

내부 스타일시트 · 네이티브 옵션

외부 link와 가져오기 조건은 같은 미디어 평가기를 씁니다