Bagaimana cara kerja rendering font?


11

Saya menyadari bahwa pada dasarnya saya tidak tahu apa-apa tentang cara font ditampilkan di komputer saya.

Dari apa yang saya amati, rendering font umumnya dibuat secara konsisten di seluruh sistem. Sebagai contoh, font subpixel mengisyaratkan pengaturan yang saya konfigurasikan di panel kontrol DE saya memiliki pengaruh pada teks yang muncul di perbatasan jendela, di browser saya, di editor teks saya dan sebagainya. (Saya harus mengamati bahwa beberapa aplikasi Java menunjukkan perbedaan yang nyata, jadi saya kira mereka menggunakan mekanisme rendering font yang berbeda).

Apa yang saya dapatkan dari di atas adalah bahwa mungkin semua aplikasi yang membutuhkan rendering font menggunakan beberapa perpustakaan berbasis OS (atau DE).

Di sisi lain, browser biasanya mengelola rendering sendiri melalui mesin rendering, yang menangani penempatan berbagai item - termasuk teks - sesuai dengan aturan aliran tertentu.

Saya tidak yakin bagaimana kedua fakta ini kompatibel. Saya akan berasumsi bahwa browser harus meminta OS untuk menggambar mesin terbang pada posisi tertentu, tetapi bagaimana bisa mengatur aliran teks tanpa mengetahui sebelumnya berapa banyak ruang mesin terbang akan mengambil? Apakah ada panggilan terpisah untuk menentukan ukuran mesin terbang, sehingga browser dapat mengelola aliran seolah-olah karakter adalah kotak kecil yang kemudian diisi oleh OS? (Meskipun ini tidak mengurus kerning). Atau OS bertanggung jawab untuk menggambar seluruh area teks, termasuk aliran teks? Apakah OS mengembalikan mesin terbang yang diberikan sebagai bitmap dan membiarkannya pada aplikasi untuk menggambar itu di layar?


1
Jawaban singkatnya adalah "ya".
Graham Borland

@GrahamBorland ...: - / Ke salah satu dari tiga alternatif yang saya gambarkan adalah jawaban "ya"?
Andrea

Semuanya, tergantung keadaan. Saya akan mencoba menyusun jawaban yang tepat.
Graham Borland

Jawaban:


9

Anda benar bahwa, secara umum, aplikasi menggunakan pustaka yang disediakan oleh OS atau toolkit GUI untuk melakukan rendering font.

Mesin font khas memungkinkan sejumlah mode operasi. Untuk kasus sederhana, aplikasi dapat meminta serangkaian teks untuk ditarik pada posisi tertentu, dan mesin menangani semuanya (pengukuran, pemosisian, menggambar piksel ke layar, dll).

Untuk aplikasi yang memerlukan tingkat kontrol yang lebih baik - browser atau pengolah kata, misalnya - mesin akan mengekspos antarmuka di mana aplikasi dapat meminta bagian teks tertentu untuk diukur terlebih dahulu. Aplikasi kemudian dapat menggunakan pengetahuan ini untuk mengetahui berapa banyak teks yang dapat ditampung pada suatu baris, di mana garis-istirahat seharusnya, berapa banyak ruang paragraf akan mengambil, dll. Aplikasi masih dapat meminta mesin untuk melakukan rendering yang sebenarnya dari piksel.

(Mungkin ada skenario di sela-sela di mana mesin dapat mengambil parameter lebar maksimum, dan mungkin beberapa parameter kerning / padding, dan secara otomatis membuat teks sebanyak mungkin.)

Akhirnya, mesin font mungkin memungkinkan aplikasi untuk mengambil alih render akhir teks, dengan mengembalikan bitmap dari mesin terbang yang dirender pada ukuran tertentu, memungkinkan aplikasi untuk memposisikan dan menggabungkannya ke tampilan akhir. Atau mesin bahkan mungkin menawarkan untuk mengembalikan data garis besar mesin terbang mentah untuk rendering dengan beberapa toolkit vektor.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.