Semantik Perenderan Lanjutan
Perenderan halaman yang dimuat mempertahankan status Form XObject bertingkat sambil menerapkan grup transparansi, soft mask, prosedur glyph Type 3, dan decoding region gambar terlihat yang sadar resolusi
Stroke path putus-putus
Perenderan path native mempertahankan array dash yang lengkap beserta phase-nya, termasuk array berpanjang ganjil, panjang fraksional, dan dash berpanjang nol yang tetap dicat dengan cap round atau square; pola dash dimulai ulang di setiap subpath
Stroke warna solid dan clip stroke berpola gradien berbagi satu path geometri dash yang terbatas, mempertahankan join di dalam bagian tercat yang berkesinambungan, dan menyambung bagian tercat melintasi titik awal kontur tertutup
Panjang dash mempertahankan skala transformasi rata-rata milik renderer, sementara pemecahan kurva memakai flattening device-space adaptif; pengisian fill dan clipping yang tertunda tetap memakai path asli yang belum dipecah
Grup transparansi
- Nilai
/MatrixForm XObject digabungkan dengan matriks transformasi saat ini sebelum konten grup dijalankan - Grup terisolasi menggunakan bidang alfa terpisah sehingga konten hitam tetap dapat dibedakan dari piksel transparan
- Grup knockout menggantikan kontribusi grup sebelumnya di area yang dicat tumpang tindih
- Konten grup dimulai dari blend mode Normal: blend mode, alfa konstan, dan soft mask yang berlaku pada
Doditerapkan pada grup sebagai keseluruhan - Grup yang digambar dengan blend mode lain mencampur warna dan alfa miliknya dengan backdrop; grup non-isolated yang status grafisnya sendiri blend secara normal digambar di atas hitam dan di atas putih untuk memulihkan alfanya
- Grup dipecah menjadi tile 768 piksel yang dibatasi sementara penggambaran GDI, fase halftone, grup bertingkat, soft mask, dan pengomposisian mempertahankan koordinat perangkat absolut
- Byte Form didekode dan ditokenisasi sekali sebelum eksekusi tile, dan mask lokal per tile sementara dilepaskan sebelum tile berikutnya
- Grup bertingkat didukung dengan rekursi yang dibatasi dan pemulihan status grafis lengkap setelah setiap pemanggilan Form
Soft mask
- Mask
/S /Alphadan/S /Luminositydievaluasi dari grup mask - Grup mask digambar dengan blending Normal, apa pun blend mode yang dibawa oleh status grafis yang menyetel mask tersebut
- Mask luminosity menyelesaikan
/CSgrup transparansi dan membobot warna yang diselesaikan dengan pendekatan DeviceGray PDF, seperti yang dilakukan viewer umum; setelRenderColorimetricLuminosityMasksuntuk memakai Y CIE colourimetric bagi ruang berbasis CIE sebagai gantinya /BCdivalidasi terhadap jumlah komponen ruang blend yang tepat dan menyediakan luminosity terkonversi di luar konten mask yang dicat- Cat Separation dan DeviceN dikonversi melalui ruang alternatif Lab atau ICCBased sehingga komponen spot tidak pernah bocor ke soft mask
- Fungsi transfer
/TRmendukung fungsi sampled, eksponensial, stitching, dan kalkulator PostScript melalui evaluator fungsi bersama /SMask /Nonemenghapus mask aktif danqatauQmempertahankan status mask secara normal- Mask yang dikompilasi digunakan kembali hanya ketika dictionary sumber, matriks transformasi saat ini, dan niat perenderan semuanya cocok
Fungsi transfer dan sampled
/TR2 diutamakan daripada /TR, satu fungsi berlaku untuk setiap saluran keluaran RGB, dan array empat fungsi menerapkan tiga entri pertamanya secara independen sambil mempertahankan entri /Identity dan /Default
Menerapkan status transfer baru menggantikan setiap saluran secara atomik, sehingga entri identitas tidak dapat mewarisi nilai lookup dari status grafis sebelumnya
Fungsi sampled Type 0 mendukung satu hingga empat dimensi input dan output, nilai /BitsPerSample 1, 2, 4, 8, 12, 16, 24, dan 32, pemetaan /Encode terbalik atau maju, rentang /Decode independen, interpolasi multilinear, interpolasi kubik multidimensi, dan spline kubik alami untuk data /Order 3 satu dimensi
Byte sampel yang didekode, dimensi tervalidasi, pemetaan, dan turunan kubik berbagi LRU delapan entri yang dibatasi 64 MiB per thread perenderan, sementara fungsi yang terlalu besar atau salah bentuk gagal tanpa mengganti sebagian tabel lookup transfer aktif
Layar halftone
Array ambang Type 6, Type 10, dan Type 16 dieksekusi langsung dengan panjang terdekode yang tepat, ambang 16-bit big-endian, perbandingan komponen aditif, dan strip periodik ringkas yang menghindari memperluas layar miring atau dua persegi panjang
Dictionary Type 5 memilih layar /Red, /Green, dan /Blue independen dengan fallback /Gray dan /Default yang diperlukan, sementara setiap layar terpilih dapat menimpa fungsi transfer global
Byte ambang tervalidasi dan geometri ternormalisasinya berbagi LRU 64 entri yang dibatasi 64 MiB per renderer, dan dimensi yang salah bentuk, alokasi berlebihan, dictionary Type 5 bertingkat, atau ketidakcocokan panjang payload meninggalkan status layar aktif lengkap dalam mode continuous-tone
Glyph Type 3
CharProc Type 3 berjalan melalui mesin operator konten lengkap dengan cakupan resource dictionary font saat ini, dukungan Form, kliping, gambar, pola, dan rekursi yang dibatasi
d0 dan d1 menyediakan metrik glyph sementara prosedur d1 mempertahankan warna pilihan pemanggil sesuai yang disyaratkan model pencitraan PDF
CharProc berulang menggunakan kembali display list yang didekode dan ditokenisasi ketika font, glyph, matriks perangkat linier, dan status warna cocok; translasi tetap dinamis sehingga karakter berulang pada posisi berbeda berbagi satu entri
LRU per renderer mempertahankan paling banyak 256 entri dan 131.072 token, melewati CharProc apa pun di atas 16.384 token, dan melaporkan perilakunya melalui GetLastType3GlyphCacheStats
Region gambar terklip dan diperkecil
XObject gambar yang sejajar sumbu hanya meminta batas sumber terlihat dan meneruskan ukuran piksel perangkat terlihat ke jalur dekode
Gambar dengan soft mask didekode utuh pada ukuran saat digambar, dan mask-nya pada ukuran yang sama, sehingga mask tetap sejajar dengan gambar sementara clipping membatasi apa yang dicat; mask JPEG memakai dekoder DCT ukuran-diperkecil
Saat merender, region terdekode yang berukuran setidaknya dua kali ukuran gambar pada kedua arah diperkecil tepat ke ukuran gambar dengan perataan area sebelum digambar atau di-cache; gambar besar yang digambar kecil lalu muat di cache dekode, sehingga grup yang digambar dua kali atau halaman berulang memakai ulangnya, dan soft mask-nya diterapkan piksel demi piksel pada ukuran tersebut. Mask image stencil mempertahankan resolusi penuhnya, dan metode dekode region publik mengembalikan ukuran yang terdokumentasi
JPEG 2000 menggabungkan API region native decoder dengan tingkat resolusi pangkat dua yang dipilih untuk memenuhi kedua dimensi target sebelum rekonstruksi wavelet dan ekspansi raster
Codestream JPEG 2000 yang dapat dialamatkan per tile juga dapat mendekode satu tile tervalidasi secara langsung melalui THPDFJpeg2000Decoder.LoadTileFromByteArray, dengan metadata grid tile dan batas byte keluaran yang diekspos oleh decoder
Ketika region native berpotongan dengan beberapa tile independen, LoadRegionFromByteArrayParallel menetapkan status OpenJPEG privat per worker dan menyusun raster yang selesai dalam urutan row-major yang deterministik; pembatalan, batas keluaran, dan anggaran memori puncak efektif dapat menghentikan penjadwalan atau memilih fallback sekuensial
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;