ความหมายเชิงการแสดงผลขั้นสูง
การแสดงผลหน้าที่ยุบชั้น Form XObject ที่ซ้อนกันในขณะที่ใช้กลุ่มความโปร่งใส มาสก์แบบนุ่ม ขั้นตอน glyph ชนิด 3 และการถอดรหัสบริเวณภาพที่มองเห็นที่คำนึงถึงความละเอียด
การขีดเส้น path แบบประ (dash)
การ render path แบบ native เก็บ dash array มาครบชุดพร้อม phase ของมัน ทั้ง array ที่ยาวเป็นเลขคี่ ความยาวแบบเศษส่วน และ dash ความยาวศูนย์ที่ยังลงหมึกด้วยปลายมนหรือปลายเหลี่ยม pattern ของ dash จะเริ่มนับใหม่ทุก subpath
เส้นขีดสีทึบกับ clip ของเส้นขีดที่ใช้ gradient pattern แบ่งกันใช้เส้นทาง dash geometry แบบมีขอบเขตเส้นเดียวกัน คง joint ไว้ภายในช่วงที่ลงหมึกต่อเนื่อง และเชื่อมช่วงที่ลงหมึกข้ามจุดเริ่มต้นของ contour แบบปิด
ความยาว dash ยึดสเกลเฉลี่ยของ transformation ปัจจุบันตามที่ renderer คำนวณ ส่วนการแบ่งเส้นโค้งใช้ device-space flattening แบบปรับตัว การระบาย fill และ clipping ที่ยังรออยู่ยังคงใช้ path เดิมที่ไม่ถูกแบ่งต่อไป
กลุ่มความโปร่งใส
- ค่า
/Matrixของ Form XObject ถูกรวมเข้ากับเมทริกซ์การแปลงปัจจุบันก่อนที่จะรันคอนเทนต์ของกลุ่ม - กลุ่มแบบ Isolated ใช้ระนาบ alpha แยกต่างหากเพื่อให้คอนเทนต์สีดำยังคงแยกแยะได้จากพิกเซลโปร่งใส
- กลุ่มแบบ Knockout แทนที่การมีส่วนร่วมของกลุ่มก่อนหน้าในบริเวณที่วาดทับซ้อนกัน
- คอนเทนต์ของกลุ่มเริ่มต้นจาก blend mode Normal: blend mode, alpha คงที่ และ soft mask ที่มีผลอยู่ ณ
Doใช้กับกลุ่มทั้งก้อน - กลุ่มที่วาดด้วย blend mode อื่นจะผสมสีและ alpha ของตัวเองกับ backdrop; กลุ่มแบบ non-isolated ที่ graphics state ของตัวเองผสมแบบปกติจะถูกวาดบนพื้นดำและพื้นขาวเพื่อกู้คืน alpha ของมัน
- กลุ่มถูกแบ่งเป็นไทล์ 768 พิกเซลแบบจำกัด ในขณะที่การวาด GDI เฟส halftone กลุ่มที่ซ้อนกัน มาสก์แบบนุ่ม และการคอมโพสิตยังคงใช้พิกัดอุปกรณ์แบบสัมบูรณ์
- ไบต์ Form ถูกถอดรหัสและแปลงเป็นโทเคนหนึ่งครั้งก่อนการรันไทล์ และมาสก์เฉพาะไทล์ชั่วคราวถูกปล่อยก่อนไทล์ถัดไป
- กลุ่มที่ซ้อนกันรองรับการเรียกซ้ำแบบจำกัดและการคืนสถานะกราฟิกอย่างสมบูรณ์หลังทุกการเรียก Form
มาสก์แบบนุ่ม
- มาสก์
/S /Alphaและ/S /Luminosityถูกประเมินจากกลุ่มของมาสก์ - กลุ่มของมาสก์ถูกวาดด้วยการผสมแบบ Normal ไม่ว่า blend mode ที่ graphics state ซึ่งตั้งมาสก์จะพามา
- มาสก์แบบ Luminosity แก้ไข
/CSของกลุ่มความโปร่งใส และถ่วงน้ำหนักสีที่แก้ไขแล้วด้วยการประมาณ DeviceGray ของ PDF อย่างที่ viewer ทั่วไปทำ; ตั้งRenderColorimetricLuminosityMasksเพื่อใช้ CIE Y แบบ colorimetric สำหรับพื้นที่แบบ CIE-based แทน /BCถูกตรวจสอบกับจำนวนคอมโพเนนต์พื้นที่ผสมที่แน่นอนและให้ค่า luminosity แปลงแล้วภายนอกคอนเทนต์มาสก์ที่วาด- การทาสี Separation และ DeviceN ถูกแปลงผ่านพื้นที่ Lab หรือ ICCBased ทางเลือก เพื่อไม่ให้คอมโพเนนต์ spot รั่วไหลเข้าสู่มาสก์แบบนุ่ม
- ฟังก์ชันถ่ายโอน
/TRรองรับฟังก์ชันแบบ sampled แบบเลขชี้กำลัง แบบ stitching และเครื่องคิดเลข PostScript ผ่านตัวประเมินฟังก์ชันร่วม /SMask /Noneล้างมาสก์ที่แอ็กทีฟ และqหรือQเก็บสถานะมาสก์ตามปกติ- มาสก์ที่คอมไพล์แล้วถูกนำมาใช้ซ้ำเมื่อพจนานุกรมต้นทาง เมทริกซ์การแปลงปัจจุบัน และเจตนาการแสดงผลตรงกันทั้งหมด
ฟังก์ชันถ่ายโอนและแบบ sampled
/TR2 มีความสำคัญเหนือ /TR ฟังก์ชันเดียวใช้กับช่องเอาต์พุต RGB ทุกช่อง และอาร์เรย์สี่ฟังก์ชันใช้สามรายการแรกของมันอย่างอิสระพร้อมกับเก็บรายการ /Identity และ /Default ไว้
การใช้สถานะถ่ายโอนใหม่แทนที่ทุกช่องแบบ atomic เพื่อให้รายการ identity ไม่รับค่าการค้นหาจากสถานะกราฟิกก่อนหน้า
ฟังก์ชันแบบ sampled ชนิด 0 รองรับมิติอินพุตและเอาต์พุตหนึ่งถึงสี่มิติ ค่า /BitsPerSample 1, 2, 4, 8, 12, 16, 24 และ 32 การแมป /Encode แบบย้อนกลับหรือไปข้างหน้า ช่วง /Decode อิสระ การประมาณค่าแบบ multilinear การประมาณค่าแบบลูกบาศก์หลายมิติ และ spline ลูกบาศก์ธรรมชาติสำหรับข้อมูล /Order 3 หนึ่งมิติ
ไบต์ตัวอย่างที่ถอดรหัสแล้ว มิติที่ตรวจสอบแล้ว การแมป และอนุพันธ์ลูกบาศก์ใช้ LRU แปดรายการร่วมกันที่จำกัด 64 MiB ต่อเธรดการแสดงผล ในขณะที่ฟังก์ชันที่ใหญ่เกินไปหรือเสียรูปแบบล้มเหลวโดยไม่แทนที่ตารางการค้นหาถ่ายโอนแอ็กทีฟบางส่วน
จอกล halftone
อาร์เรย์เกณฑ์ ชนิด 6 ชนิด 10 และชนิด 16 รันโดยตรงด้วยความยาวที่ถอดรหัสแบบแน่นอน เกณฑ์ 16 บิตแบบ big-endian การเปรียบเทียบคอมโพเนนต์แบบบวก และแถบคาบแบบกระชับที่หลีกเลี่ยงการขยายจอแบบมุมหรือแบบสองสี่เหลี่ยม
พจนานุกรมชนิด 5 เลือกจอ /Red, /Green และ /Blue แบบอิสระพร้อมการถอยหลัง /Gray และ /Default ที่กำหนด ในขณะที่แต่ละจอที่เลือกสามารถแทนที่ฟังก์ชันถ่ายโอนระดับโลก
ไบต์เกณฑ์ที่ตรวจสอบแล้วและเรขาคณิตที่ปรับให้เป็นปกติใช้ LRU 64 รายการที่จำกัด 64 MiB ต่อตัวแสดงผล และมิติที่เสียรูปแบบ การจัดสรรที่ใหญ่เกินไป พจนานุกรมชนิด 5 ที่ซ้อนกัน หรือความยาวเพย์โหลดที่ไม่ตรงกันปล่อยสถานะจอแอ็กทีฟที่สมบูรณ์ไว้ในโหมด continuous-tone
glyph ชนิด 3
CharProc ชนิด 3 รันผ่านเอนจินตัวดำเนินการคอนเทนต์ที่สมบูรณ์พร้อมขอบเขตทรัพยากรปัจจุบันของพจนานุกรมฟอนต์ รองรับ Form คลิป ภาพ แพทเทิร์น และการเรียกซ้ำแบบจำกัด
d0 และ d1 ให้เมตริก glyph ในขณะที่ขั้นตอน d1 เก็บสีที่ผู้เรียกเลือกตามที่แบบจำลองการสร้างภาพ PDF ต้องการ
CharProc ที่ซ้ำกันนำรายการจอแสดงผลที่ถอดรหัสและแปลงเป็นโทเคนแล้วมาใช้ซ้ำเมื่อฟอนต์ glyph เมทริกซ์อุปกรณ์เชิงเส้น และสถานะสีตรงกัน การแปลยังคงเป็นแบบไดนามิกเพื่อให้อักขระซ้ำที่ตำแหน่งต่างกันใช้รายการเดียวร่วมกัน
LRU ต่อตัวแสดงผลเก็บอย่างมาก 256 รายการและ 131,072 โทเคน ข้าม CharProc ใดที่อยู่เหนือ 16,384 โทเคน และรายงานพฤติกรรมผ่าน GetLastType3GlyphCacheStats
บริเวณภาพที่ถูกคลิปและลดขนาด
Image XObject ที่เรียงแนวแกนขอเฉพาะขอบเขตต้นทางที่มองเห็นและส่งผ่านขนาดพิกเซลอุปกรณ์ที่มองเห็นไปยังเส้นทางการถอดรหัส
ภาพที่มี soft mask จะถูกถอดรหัสทั้งภาพที่ขนาดที่วาด และมาสก์ของมันก็ที่ขนาดเดียวกัน เพื่อให้มาสก์ยังอยู่แนวเดียวกับภาพในขณะที่ clipping จำกัดสิ่งที่ถูกวาด; มาสก์ JPEG ใช้ตัวถอดรหัส DCT ขนาดลด
ตอน render ภาพที่ถอดรหัสแล้วที่ใหญ่กว่าขนาดที่วาดอย่างน้อยสองเท่าในทั้งสองแกน จะถูกย่อลงให้พอดีขนาดที่วาดด้วยการเฉลี่ยพื้นที่ก่อนถูกวาดหรือเก็บในแคช ภาพใหญ่ที่ถูกวาดเล็ก ๆ จึงพออยู่ใน decode cache กลุ่มที่วาดซ้ำสองครั้งหรือหน้าที่วาดซ้ำจึงนำมันกลับมาใช้ได้ และ soft mask ของมันถูกใช้เป็นพิกเซลต่อพิกเซลที่ขนาดนั้น มาสก์ภาพแบบ stencil ยังคงความละเอียดเต็ม และเมธอดถอดรหัสบริเวณสาธารณะคืนขนาดตามที่ระบุไว้
JPEG 2000 รวม API บริเวณเนทีฟของตัวถอดรหัสเข้ากับระดับความละเอียดแบบ power-of-two ที่เลือกเพื่อให้ตรงกับมิติเป้าหมายทั้งสองก่อนการสร้างคลื่นใหม่และการขยาย raster
Codestream JPEG 2000 ที่ระบุที่อยู่แบบไทล์ยังสามารถถอดรหัสไทล์ที่ตรวจสอบแล้วหนึ่งไทล์โดยตรงผ่าน THPDFJpeg2000Decoder.LoadTileFromByteArray โดยมีเมตาดาต้าโครงข่ายไทล์และขีดจำกัดไบต์เอาต์พุตเปิดเผยโดยตัวถอดรหัส
เมื่อบริเวณเนทีฟตัดไทล์อิสระหลายไทล์ LoadRegionFromByteArrayParallel กำหนดสถานะ OpenJPEG ส่วนตัวต่อ worker และประกอบ raster ที่เสร็จแล้วตามลำดับ row-major แบบกำหนดเชิงกำหนด การยกเลิก ขีดจำกัดเอาต์พุต และงบประมาณหน่วยความจำสูงสุดที่มีผลสามารถหยุดการกำหนดตารางเวลาหรือเลือกทางเลือกถอยหลังแบบลำดับ
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;