Native rich-text media query'leri
Native XHTML decoder'ı, desteklenen bildirimleri gerçek rich-text run'larına cascade etmeden önce bir style öğesinin media attribute'ını ve iç içe @media gruplarını değerlendirir
Media değerlendirmesi açık bir native host profili kullanır; masaüstüne, tarayıcıya ya da görüntü cihazına bakmaz
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>
Koşullar ve cascade
Query'ler all, print ve screen media türlerini, only ve not değiştiricilerini, virgülle ayrılmış alternatifleri ve parantezli not, and ve or koşullarını destekler
Sayısal feature'lar iki nokta eşitliğini, min-/max- biçimlerini ve =, <, <=, > ve >= ile ileri, ters ya da zincirlenmiş aralık karşılaştırmalarını kabul eder
İç içe gruplar kaynak sırasını, bildirim importance'ını, selector özgüllüğünü ve kalıtsal namespace bildirimlerini korur; bir style media attribute'ı ve onu saran tüm media grupları eşleşmelidir
CSS tanımlayıcı kaçışları, yorumlar, üslü gösterim ve dengeli fonksiyon token'ları aynı sınırlı ayrıştırıcı içinde taranır
Bilinmeyen feature'lar, desteklenmeyen değerler ve general-enclosed koşullar olumsuzlama ve Boolean değerlendirme boyunca bilinmeyen bir doğruluk değeri korur; yalnızca son true bir query bildirimlerini etkinleştirir
Gelecekteki bir feature için host girişi sağlamak, o feature'ı desteklenen query sözlüğünün parçası yapmaz
Host profili
Desteklenen sayısal feature'lar width, height, device-width, device-height, resolution, aspect-ratio, device-aspect-ratio, color, color-index, monochrome ve grid'dir
Ayrık feature'lar orientation, scan, update, overflow-block, overflow-inline, color-gamut, pointer, any-pointer, hover ve any-hover'dır
Uzunluk birimleri pt, px, in, pc, cm, mm, q, em ve rem'dir; çözünürlük birimleri dpi, dpcm, dppx ve x'tir, oranlar eğik çizgi gösterimini kullanır
Media em ve rem'i, kademeli bir öğe yazı tipi boyutu yerine MediaInitialFontSize'u kullanır; varsayılanı 12 puntodur ve sıfır, sıfırla başlatılmış legacy kayıtlar için aynı 12 punto başlangıç değerini korur
Atlanan orientation ya da aspect-ratio, verilen width ve height'tan türetilebilir; sıfır height oranı bilinmeden bırakır, eşit width ve height ise dikey (portrait) orientation kullanır
any-pointer hem coarse hem fine içerebilir; none başka bir pointer değeriyle birleştirilemez ve color-gamut, desteklenen alt gamut ranglarını içerir
Varsayılan medium print'tir; 8 renk biti, indeksli ya da monokrom renk yok, grid 0 ve sRGB gamut ile. Update, overflow-inline, pointer, hover ve scan yetenekleri yoktur ve overflow-block sayfalamalıdır (paged)
Boyutlar ve çözünürlük için uydurulmuş cihaz varsayılanları yoktur; paylaşılan renk varsayılanları dışındaki screen yetenekleri ilgili olduğunda açık bir host değeri gerektirir
MediaFeatures, her biri 1-64 ASCII harf, rakam ya da tire isimli ve 1-256 UTF-16 code unit değerli en fazla 32 ayrı ASCII-duyarsız ad kabul eder; tanınan girişler geçerli negatif-olmayan sayısal ya da desteklenen ayrık bir değer kullanmalıdır
MediaInitialFontSize sonlu ve ya sıfır ya da 0.000001 ile 1000000 punto arasında olmalıdır; geçersiz host profilleri run'lar döndürülmeden önce EHPDFHeadlessRichTextCodecError raised eder
Açık tercihler ve erişilebilirlik
Tercihleri MediaFeatures girişleri olarak sağlayın; bunlar çağıranın rendering ortamını tanımlar ve işletim sistemine, tarayıcıya ya da etkin masaüstüne bakmaz
| Feature | Kabul edilen değerler | False Boolean değeri |
|---|---|---|
| prefers-color-scheme | light, dark | İkisi de değil |
| prefers-reduced-motion | no-preference, reduce | no-preference |
| prefers-reduced-transparency | no-preference, reduce | no-preference |
| prefers-contrast | no-preference, less, more, custom | no-preference |
| prefers-reduced-data | no-preference, reduce | no-preference |
| forced-colors | none, active | none |
| inverted-colors | none, inverted | none |
| scripting | none, initial-only, enabled | none |
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 }
}
Sekiz feature'ın tamamı ayrıktır: eşitlik ya da Boolean koşulu kullanın, min-/max- ya da sıralı aralık karşılaştırmaları kullanmayın
Light, Boolean bir query'de etkin bir color-scheme değeridir; less ya da custom etkin bir contrast tercihidir ve custom, more'u ima etmez
Atlanan bir tercih, not altında dâhil, hem print hem screen için bilinmeden kalır; decoder no-preference, light, none ya da başka bir yedek değer uydurmaz
Tanınan host feature'ları için geçersiz değerler, run'lar döndürülmeden önce profili reddeder; CSS tanımlayıcı kaçışları ve yorumlar, girdi sonuna kadar tüketilen yorumlar dâhil mevcut sınırlı tokenzier'ı kullanır
Scripting feature'ı yalnızca çağıranın sağladığı erişilebilirliği tanımlar; query'yi değerlendirmek JavaScript çalıştırmaz
Style media attribute'ları, iç içe gruplar ve çağıranın sağladığı dış sheet'ler bu feature semantiğini ve mevcut cascade kurallarını paylaşır
Kaydedilen belgeler ve sınırlar
Native çağıranlar THPDFHeadlessRichTextDecodeOptions üzerinden özel bir host profili yapılandırabilir ve onu doğrudan HPDFDecodeHeadlessRichText'e geçirebilir
Hesaplanan run'lar seçilen stilleri kaydedilen RV'de ve gömülü appearance'larda korur; sıradan FDF/XFDF import'ları varsayılan print profilini kullanır
Media token'ları, iç içe gruplar, host-değer ayrıştırma ve eşleşme, mevcut stylesheet ayrıştırıcısıyla MaxNodes, MaxTotalCodeUnits, MaxDepth ve cancellation muhasebesini paylaşır
Başarısız çözme kısmi run yayınlamaz ve başarısız importlar çevreleyen işlemin önceki belge durumunu korur
Import katmanları ve supports koşulları, calc ve viewport birimleri, başka media feature'ları ve genel CSS layout'u ayrı iş olarak kalır
Inline stylesheet'ler · Native options
Dış link ve import koşulları aynı media değerlendiricisini kullanır