เหตุใดความโปร่งใสจึงปิดใช้งานการแสดงพิกเซลย่อยใน Adobe Reader


9

ปกติฉันชอบ Adobe Reader (ยัง v9 บน Linux) กับโปรแกรมอ่าน PDF อื่น ๆ ทั้งหมดเพราะฉันคิดว่ามันมีคุณภาพการแสดงผลที่ดีที่สุด คุณภาพการแสดงผลนี้เป็นส่วนใหญ่เนื่องจาก CoolType ซึ่งเป็นการนำ Adobe ไปใช้ในการเรนเดอร์พิกเซลย่อย น่าเสียดายที่ฉันพบว่า Adobe Reader ปิดการแสดงผลพิกเซลย่อยอย่างสม่ำเสมอ (ในรูปแบบต่อหน้า) ทันทีที่หน้ามีองค์ประกอบโปร่งใส ตัวอย่าง:

รูปร่างสีน้ำเงินทึบแสงข้อความจะแสดงโดยใช้ subpixels:

ทึบแสง

รูปร่างสีน้ำเงินโปร่งใส 50% ข้อความแสดงผลด้วยการลดรอยหยักมาตรฐาน:

โปร่งใส

ไฟล์ pdf ที่เกี่ยวข้องสองไฟล์ถูกสร้างขึ้นในลักษณะเดียวกัน (โดยใช้ TikZ / PGF กับ pdflatex) ยกเว้นการระบุความโปร่งใสในกรณีที่สอง ฉันสร้างไฟล์ PDF เหล่านี้ด้วยตัวเอง แต่ฉันได้สังเกตเห็นผลกระทบเดียวกันกับไฟล์ PDF จากแหล่งที่แตกต่างกันอย่างสมบูรณ์ น่าแปลกที่ Foxit Reader และ Okular แสดงไฟล์ PDF สองไฟล์ในลักษณะที่เหมือนกันทุกประการ (ยกเว้นส่วนที่โปร่งใส) แต่มีคุณภาพแย่กว่า IMHO

คำถามของฉัน:มีใครรู้บ้างไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้นและสามารถหลีกเลี่ยงได้หรือไม่?


นี่อาจเป็นข้อผิดพลาดใน Adobe ซึ่งดีขึ้นในฟอรัม คุณอาจจะพยายามปรับปรุงการแสดงผลตัวอักษรในลินุกซ์ (ซึ่งรุ่น?) โดยใช้Infinality ดูเพิ่มเติมArchLinux การกำหนดค่าแบบอักษร - Infinality
harrymc

@harrymc ฉันสงสัยว่าสิ่งนี้จะส่งผลกระทบต่อการแสดงผลแบบอักษรของ Adobe Reader แต่เป็นเคล็ดลับที่น่าสนใจ บางที Okular อาจจะดีขึ้นด้วยวิธีนี้ ขอบคุณ!
A. Donda

@slhck ฉันคิดว่าฉันได้รับรางวัลนี้บ้างไหม? คุณเอาไปใช้อย่างใดอย่างหนึ่งหรือฉันแค่สับสน? ขอบคุณอยู่ดี!
A. Donda

คำตอบ:


1

การเรนเดอร์พิกเซลย่อยทำได้โดยใช้แต่ละสีของพิกเซล ทุกพิกเซลบนหน้าจอประกอบด้วยพิกเซลที่เล็กลงด้วยสีแดงเขียวและน้ำเงิน

หากคุณต้องการแสดงวัตถุที่มีความกว้าง 10.3 พิกเซลคุณจะใช้สีแดงของพิกเซลที่ 11 เท่านั้น หน้าจอก็จะเปล่งแสงจาก 31 subpixels นั่นคือ 10 พิกเซลเต็มรูปแบบและหนึ่งในสามของพิกเซล

หากคุณพยายามจำลองเอฟเฟกต์นี้ด้วยตัวเองเพียงแค่วาดความกว้าง 10 พิกเซลสีขาวแล้วพิกเซลสีแดงทางด้านขวาบนพื้นหลังสีดำคุณจะเห็นเอฟเฟกต์ด้วยตนเอง

ปัญหาคือคุณจะสังเกตเห็นว่าขอบขวาจะเป็นสีแดงถ้าคุณทำแบบนั้น เป็นไปได้มากที่สุดที่ Adobe จะต้องใช้อัลกอริธึมขั้นสูงเพื่อยกเลิกเอฟเฟกต์นั้น - โดยการขยายค่าของสีแดงและสีเขียวของพิกเซลที่ 10

การเพิ่มความโปร่งใสให้กับอัลกอริทึมที่ค่อนข้างก้าวหน้าไปแล้วอาจเป็นสิ่งที่พวกเขายังไม่ได้แก้ไขดังนั้นพวกเขาจึงปิดใช้งานการแสดงผลพิกเซลย่อย

ฉันเชื่อว่านี่เป็นสิ่งที่เกิดขึ้นเพราะฉันได้พยายามที่จะใช้การแสดงผลพิกเซลย่อยด้วยวิธีที่ไร้เดียงสาและฉันเห็นว่า "ด้านสี" มีผลกับตัวเอง


ใช่เอฟเฟกต์ขอบสีอยู่ที่นั่นอย่างแน่นอนคุณสามารถเห็นได้ในภาพหน้าจอขยายด้านบนและฉันไม่เห็นว่าจะหลีกเลี่ยงได้อย่างไร ฉันคิดว่าการเรนเดอร์พิกเซลย่อยจะใช้งานได้ก็ต่อเมื่อพิกเซลทั้งหมดมีขนาดเล็กแล้ว บางทีคุณพูดถูกมันซับซ้อนเกินไป
A. Donda

ฉันเชื่อว่ามันซับซ้อนเกินไป ถ้าไม่ได้เทคโนโลยีที่จะไม่คุ้มค่าของชื่อเย็นเช่น :)
frodeborli

เพียงแค่ทราบ: ลำดับของ subpixels อาจไม่ใช่ RGB เสมอไป หากเราดูภาพหน้าจอที่ให้ไว้โดย OP ดูเหมือนว่าจะสั่ง BGR: subpixels ที่ขอบซ้ายเป็นสีแดงในขณะที่ subpixels ที่ขอบด้านขวาเป็นสีน้ำเงิน
Johan Boulé

0

นี่อาจเป็นข้อผิดพลาดใน Adobe ซึ่งดีขึ้นในฟอรัม

เพื่อปรับปรุงการแสดงแบบอักษรใน Linux คุณอาจลองใช้ Infinality:

Infinality เป็นชุดของแพทช์ Freetype ที่พยายามให้การแสดงผลแบบอักษรที่ดีขึ้นสำหรับ Linux และเพื่อให้สามารถปรับแต่งได้ง่ายเพื่อให้ผู้ใช้สามารถปรับการตั้งค่าให้เหมาะกับรสนิยมของพวกเขา คุณสามารถตั้งค่ารูปแบบตัวอักษรเพื่อเลียนแบบ OSX, OSX2, Windows 98, WIndows XP หรือ Windows 7 ได้อย่างง่ายดายหรือคุณสามารถใช้รูปแบบ "Linux" หรือ "Infinality" (ค่าเริ่มต้น)

ดู:

ดีกว่าการแสดงผลตัวอักษรในลินุกซ์ด้วย Infinality
ArchLinux การกำหนดค่าแบบอักษร - Infinality


ฉันขอขอบคุณเคล็ดลับและฉันจะไปและถามในฟอรัม Adobe อย่างไรก็ตามฉันไม่คิดว่าสิ่งนี้มีคุณสมบัติเป็นคำตอบ
A. Donda

ไม่มีปัญหา. คุณต้องการให้ฉันลบสิ่งนี้หรือไม่?
harrymc

ไม่ฉันแค่อยากอธิบายว่าทำไมฉันถึงไม่โหวต
A. Donda

น่าเสียดายนี่เป็นคำตอบเดียวที่คุณจะได้รับ
harrymc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.