Mengapa transparansi menonaktifkan rendering subpiksel di Adobe Reader?

9

Saya biasanya lebih suka Adobe Reader (masih v9 di Linux) daripada semua pemirsa PDF lainnya karena saya pikir itu memiliki kualitas rendering terbaik, meskipun yang lain baru-baru ini menyusul. Kualitas rendering ini tampaknya sebagian besar karena CoolType, implementasi rendering subpixel dari Adobe. Sayangnya saya telah menemukan bahwa Adobe Reader secara konsisten menonaktifkan rendering subpixel (berdasarkan per-halaman) segera setelah halaman tersebut mengandung elemen transparan. Sebuah contoh:

Bentuk biru buram, teks dirender menggunakan subpiksel:

buram

Bentuk biru 50% transparan, teks diberikan dengan antialiasing standar:

transparan

Dua file pdf yang sesuai telah dihasilkan dengan cara yang persis sama (menggunakan TikZ / PGF dengan pdflatex), kecuali untuk menentukan transparansi dalam kasus kedua. Saya membuat pdf ini sendiri, tetapi saya sering mengamati efek yang sama dengan pdf dari sumber yang sama sekali berbeda. Anehnya, Foxit Reader dan Okular membuat dua pdf yang sama dengan cara yang persis sama (kecuali tentu saja untuk bagian transparan itu sendiri), tetapi pada kualitas IMHO yang umumnya lebih buruk.

Pertanyaan saya: Apakah seseorang tahu mengapa ini terjadi, dan apakah / bagaimana hal itu dapat dihindari?

A. Donda
sumber
Ini mungkin bug di Adobe, lebih baik dibesarkan di forum mereka. Anda dapat mencoba meningkatkan tampilan font di Linux (versi apa?) Dengan menggunakan Infinality . Lihat juga Archlinux Font Configuration - Infinality .
harrymc
@harrymc Saya ragu ini mempengaruhi rendering font Adobe Reader, tapi ini tip yang menarik. Mungkin Okular menjadi lebih baik dengan cara ini. Terima kasih!
A. Donda
Sslhck, saya pikir saya telah memberi hadiah pada ini? Apakah Anda mengambil alih ini entah bagaimana, atau saya hanya bingung? Bagaimanapun, terima kasih!
A. Donda

Jawaban:

1

Rendering subpixel dilakukan dengan menggunakan warna individual dari suatu piksel. Setiap piksel pada layar dibuat oleh piksel yang bahkan lebih kecil dengan warna merah, hijau dan biru.

Jika Anda ingin membuat objek dengan lebar 10,3 piksel, Anda hanya akan menggunakan warna merah dari piksel ke-11. Layar kemudian akan memancarkan cahaya dari 31 subpiksel, yaitu 10 piksel penuh dan kemudian sepertiga piksel.

Jika Anda mencoba mensimulasikan efek ini sendiri, cukup dengan menggambar lebar 10 piksel putih, lalu piksel merah di sebelah kanan dengan latar belakang hitam, Anda akan melihat efeknya sendiri.

Masalahnya adalah Anda akan melihat bahwa tepi kanan akan berwarna merah, ini jika Anda melakukannya dengan cara itu. Kemungkinan besar, Adobe harus menggunakan algoritma canggih untuk membatalkan efek itu - mungkin dengan memperkuat nilai merah dan hijau dari piksel ke-10.

Menambahkan transparansi ke suatu algoritma yang sudah cukup maju mungkin adalah sesuatu yang belum mereka pecahkan dan oleh karena itu, mereka cukup menonaktifkan rendering subpixel.

Saya percaya ini adalah masalahnya, karena saya telah mencoba menerapkan rendering subpixel dengan cara naif ini dan saya melihat bahwa "sisi berwarna" berpengaruh pada diri saya sendiri.

frodeborli
sumber
Ya, efek tepi berwarna jelas ada di sana, Anda dapat melihatnya juga dalam tangkapan layar yang diperbesar di atas, dan saya tidak benar-benar melihat bagaimana hal itu dapat dihindari. Saya pikir rendering subpixel hanya masuk akal ketika seluruh piksel sudah kecil. Mungkin Anda benar, itu terlalu rumit.
A. Donda
Saya percaya mereka terlalu rumit. Jika tidak, teknologinya tidak akan layak untuk nama-nama keren seperti itu :)
frodeborli
Hanya sebuah catatan: urutan subpiksel mungkin tidak selalu RGB. Jika kita melihat tangkapan layar yang disediakan oleh OP, tampaknya BGR dipesan: subpiksel di tepi kiri berwarna merah, sedangkan subpiksel di tepi kanan berwarna biru.
Johan Boulé
0

Ini mungkin bug di Adobe, lebih baik dibesarkan di forum mereka.

Untuk meningkatkan tampilan font di Linux, Anda dapat mencoba menggunakan Infinality:

Infinality adalah seperangkat tambalan Freetype yang mencoba memberikan rendering font yang ditingkatkan untuk Linux dan juga, untuk memungkinkan kustomisasi yang mudah sehingga pengguna dapat menyesuaikan pengaturan sesuai selera mereka. Dengan menggunakannya, Anda dapat dengan mudah mengatur gaya font untuk meniru OSX, OSX2, Windows 98, WIndows XP atau Windows 7 atau Anda dapat menggunakan gaya "Linux" atau "Infinality" (default).

Lihat :

Rendering font yang lebih baik di linux dengan infinality
archlinux konfigurasi font - infinality .

harrymc
sumber
Saya menghargai tipnya, dan saya akan bertanya di forum Adobe. Namun, saya tidak menganggap ini sebagai jawaban.
A. Donda
Tidak masalah. Apakah Anda ingin saya menghapus ini?
harrymc
Tidak, saya hanya ingin menjelaskan mengapa saya tidak berubah pendapat.
A. Donda
Sayangnya, ini sepertinya satu-satunya jawaban yang akan Anda dapatkan.
harrymc