استعلامات media الأصلية لـ rich-text
يقيِّم مفكك XHTML الأصلي سمة media لعنصر style ومجموعات @media المتداخلة قبل تتالي الإعلانات المدعومة في runs rich-text فعلية
تقييم media يستخدم ملف مضيف أصليًا صريحًا ولا يفحص سطح مكتب أو متصفحًا أو جهاز عرض
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>
الشروط والتتالي
الاستعلامات تدعم أنواع media كلها: all وprint وscreen، ومعدِّلَي only وnot، وبدائل مفصولة بفواصل، وشروط not وand أو بين أقواس
الخصائص العددية تقبل تساويًا بنقطتين وصيغ min-/max- ومقارنات مدى أمامية أو معكوسة أو متسلسلة باستخدام = و< و<= و> و>=
المجموعات المتداخلة تحفظ ترتيب المصدر وأهمية الإعلان وتخصص المُختار وإعلانات namespaces الموروثة؛ وسمة media لعنصر style وكل مجموعات media المحيطة يجب أن تطابق
مهرّبات معرفات CSS والتعليقات والترميز الأُسّي وtokens الدوال المتوازنة تُمسح داخل المحلل المحدود السقف نفسه
الخصائص المجهولة والقيم غير المدعومة والشروط general-enclosed تحفظ قيمة حقيقة مجهولة عبر النفي والتقييم المنطقي؛ واستعلام نهائي true فقط يفعِّل إعلاناته
توفير مدخل مضيف لخاصية مستقبلية لا يجعل تلك الخاصية جزءًا من مفردات الاستعلام المدعومة
ملف المضيف
الخصائص العددية المدعومة هي width وheight وdevice-width وdevice-height وresolution وaspect-ratio وdevice-aspect-ratio وcolor وcolor-index وmonochrome وgrid
الخصائص المتقطعة هي orientation وscan وupdate وoverflow-block وoverflow-inline وcolor-gamut وpointer وany-pointer وhover وany-hover
وحدات الطول هي pt وpx وin وpc وcm وmm وq وem وrem؛ ووحدات الدقة هي dpi وdpcm وdppx وx، والنسب تستخدم تدوين الشرطة المائلة
em وrem في media تستخدمان MediaInitialFontSize لا حجم خط عنصر متتاليًا؛ وقيمتها الافتراضية 12 نقطة، والصفر يحفظ القيمة الابتدائية 12 نقطة نفسها لسجلات legacy المهيَّأة صفريًا
orientation أو aspect-ratio الغائبة قد تُشتق من width وheight المقدَّمَين؛ والارتفاع صفر يترك النسبة مجهولة، بينما width وheight المتساويان يستخدمان orientation عمودية (portrait)
any-pointer قد تحوي coarse وfine معًا؛ وnone لا يمكن دمجه بقيمة pointer أخرى، وcolor-gamut تتضمن رُتب gamut الأدنى المدعومة
الوسيط الافتراضي هو print بـ 8 بتات لون وبلا لون مفهرس أو أحادي وgrid بقيمة 0 وgamut بخاصية sRGB؛ وقدرات update وoverflow-inline وpointer وhover وscan غائبة عنده، وoverflow-block مقسم إلى صفحات (paged)
للأبعاد والدقة لا قيم افتراضية مُختلَقة لجهاز ما؛ وقدرات screen غير افتراضيات اللون المشتركة تتطلب قيمة مضيف صريحة عند الصلة
MediaFeatures تقبل 32 اسمًا مميزًا غير حساس لحالة ASCII كحد أقصى، كل اسم من 1 إلى 64 حرفًا أو رقمًا أو شرطة ASCII وقيمة من 1 إلى 256 وحدة كود UTF-16؛ والمدخلات المعروفة يجب أن تستخدم قيمة عددية غير سالبة صالحة أو قيمة متقطعة مدعومة
MediaInitialFontSize يجب أن تكون منتهية وإما صفرًا أو بين 0.000001 و1000000 نقطة؛ وملفات المضيف غير الصالحة ترفع EHPDFHeadlessRichTextCodecError قبل إعادة runs
التفضيلات الصريحة وإمكانية الوصول
قدِّم التفضيلات كمدخلات MediaFeatures؛ وهي تصف بيئة rendering المستدعي ولا تفحص نظام تشغيل أو متصفحًا أو سطح مكتب نشطًا
| الخاصية | القيم المقبولة | قيمة Boolean الخاطئة |
|---|---|---|
| prefers-color-scheme | light, dark | لا قيمة منهما |
| 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 }
}
الخصائص الثماني كلها متقطعة: استخدم التساوي أو شرط Boolean، ولا تستخدم min-/max- أو مقارنات مدى مرتَّبة
light قيمة color-scheme نشطة في استعلام Boolean، وless أو custom تفضيل تباين نشط؛ وcustom لا يوحي بـ more
التفضيل الغائب يبقى مجهولًا لكل من print وscreen، بما يشمل حالة not؛ والمفكك لا يختلق no-preference أو light أو none أو قيمة احتياطية أخرى
القيم غير الصالحة لخصائص مضيف معروفة ترفض الملف قبل إعادة runs؛ ومهرّبات معرفات CSS والتعليقات تستخدم محلل tokens المحدود القائم، بما يشمل تعليقات تُستهلك حتى نهاية المدخلات
خاصية scripting تصف فقط التوفر الذي يمدّه المستدعي؛ وتقييم الاستعلام لا ينفذ JavaScript
سمات media للأنماط والمجموعات المتداخلة والأوراق الخارجية المقدَّمة من المستدعي تتشارك دلالات الخصائص هذه وقواعد cascade القائمة
المستندات المحفوظة والحدود
يستطيع المستدعون الأصليون تهيئة ملف مضيف مخصص عبر THPDFHeadlessRichTextDecodeOptions وتمريره مباشرةً إلى HPDFDecodeHeadlessRichText
runs المحسوبة تحفظ الأنماط المنتقاة في RV المحفوظ والمظاهر المضمَّنة؛ وimports FDF/XFDF العادية تستخدم ملف print الافتراضي
tokens media والمجموعات المتداخلة وتحليل قيم المضيف والمطابقة تتشارك MaxNodes وMaxTotalCodeUnits وMaxDepth ومحاسبة cancellation مع محلل stylesheet القائم
الفك الفاشل لا ينشر runs جزئية، والـ imports الفاشلة تحفظ حالة المستند السابقة للمعاملة المحيطة
طبقات الاستيراد وشروط supports وحساب calc ووحدات viewport وخصائص media إضافية وتخطيط CSS العام تبقى عملًا منفصلًا
أوراق الأنماط المضمَّنة · الخيارات الأصلية
شروط link وimport الخارجية تستخدم مقيِّم media نفسه