Courier Font seperti baru dengan dukungan Unicode?

8

Saya seorang programmer dan saya benar-benar terbiasa dengan font Courier New. Saya cukup pilih-pilih - saya menemukan font lain (termasuk font monospace lainnya) jelek dibandingkan.

Namun, sekarang saya harus mengerjakan beberapa kode yang menyertakan string Unicode, dan Courier New tidak memiliki dukungan penuh untuk Unicode.

Bisakah seseorang merekomendasikan font (monospace) yang sangat mirip dengan Courier New, tetapi memiliki dukungan Unicode?

Komandan Tinggi4
sumber
3
Courier New memiliki jangkauan Unicode yang jauh lebih baik daripada kebanyakan font. Ini akan membantu jika Anda memberi tahu kami karakter / bahasa / skrip mana yang perlu Anda liput.
thomasrutter
@ thomasrutter: Saya perlu cakupan simbol matematika dan logis.
HighCommander4

Jawaban:

11

Beberapa font memiliki "dukungan penuh untuk Unicode". Unicode 6.0 memiliki 109.449 poin kode. Cukup mahal dari perspektif desain untuk secara manual membuat masing-masing mesin terbang ketika kebanyakan orang hanya akan menggunakan sebagian kecil dari mereka, belum lagi dari perspektif ukuran file.

Courier New sebenarnya di antara font dengan dukungan Unicode yang relatif baik pada 3248 mesin terbang (dibandingkan Lucida Sans Unicode hanya memiliki 1776).

Fon MingLiU / PMingLiU juga mendukung sejumlah besar titik kode, tetapi itu karena ini adalah font CKJ (Cina, Korea, Jepang), dan sebagian besar titik kode yang didukung berasal dari blok CKJ. Jadi, kecuali Anda membutuhkan font CKJ, mereka tidak banyak digunakan. Dan bahkan kemudian, mereka dipecah menjadi ~ 6 font berbeda yang meliputi blok kode yang berbeda dengan masing-masing 30 ~ 40k kode poin.

Untuk dukungan bahasa tujuan umum, Arial Unicode MS adalah yang terbaik yang saya tahu. Ini memiliki dukungan hampir lengkap di 64 blok kode yang berbeda, yang mencakup 50.377 poin kode.

Di luar itu, hanya ada font Unicode BMP Fallback SIL , yang merupakan font debugging. Ini mencakup semua titik kode Unicode 5.1, tetapi setiap mesin terbang hanya kotak persegi panjang yang berisi kode hex untuk titik kode itu. Dan sebagian besar OS datang dengan font ini dan akan menampilkannya ketika font Unicode tidak memiliki mesin terbang untuk karakter tertentu.

Maksud saya, mungkin saja ada juru ketik atau pengecoran gila di luar sana yang membuat font dengan mesin terbang untuk semua titik kode Unicode 5.1 atau 6.0, tetapi mungkin akan sangat, sangat mahal.

Kebanyakan orang lebih suka memiliki font yang menutupi blok bahasa tertentu dan menggunakan banyak font untuk memberikan dukungan multibahasa penuh. Terutama karena rumpun bahasa yang berbeda memiliki gaya tipografi yang secara intrinsik berbeda, sehingga mesin terbang pada akhirnya akan tampak sangat berbeda pula.

Sunting: Seperti yang ditunjukkan Mr Lister, tidak ada font saat ini yang dapat mendukung set karakter Unicode penuh karena setiap font hanya dapat berisi 65536 glyphs maks. Anda mungkin dapat melampaui batas ini dengan TruTypeCollections tetapi itu masih berupa font yang terpisah, hanya dalam satu file.

Lèse majesté
sumber
1
Terima kasih atas jawaban terinci. Saya tidak tahu Unicode cukup besar. Karakter Unicode dalam kode saya adalah simbol matematika dan logis - apakah Anda tahu font monospace yang layak dengan dukungan untuk mereka?
HighCommander4
4
@ HighCommander4: Maka yang Anda butuhkan adalah blok Simbol Matematika dan blok Operator Matematika. Anda dapat melihat daftar blok Unicode di sini . Setelah mengklik pada masing-masing, Anda dapat menemukan daftar font umum yang mendukung setiap blok. Atau cukup klik pada salah satu font dan kemudian cari daftar blokir yang didukung, misalnya ini untuk Code2000 , yang menunjukkan semua blok yang didukungnya dan berapa persen.
Lèse majesté
2
Saya pikir saya membaca suatu tempat bahwa 65536 mesin terbang adalah maksimum yang dapat berisi file font tunggal, sehingga Anda tidak akan pernah menemukan font dengan dukungan Unicode "penuh".
Tn. Lister
1
@ Mr Lister: itu mungkin keterbatasan beberapa editor font , tetapi poin kode Unicode naik ke E0FFF (atau 10FFFF termasuk area penggunaan pribadi). Jadi, jika sebuah font dapat mereferensikan poin kode kelas atas ini, mereka harus dapat referensi apa pun di bawahnya.
Lèse majesté
2
@ Lèsemajesté Tidak, itu tidak benar. Font tidak diperlukan untuk memuat setiap karakter hingga karakter dengan indeks Unicode tertinggi yang mereka miliki. Kalau tidak, setiap font yang kompatibel dengan Windows-1252 harus mengandung lebih dari 8400 karakter!
Tn. Lister
3

Coba Mono Gratis Font Bebas GNU . Ini, pada kenyataannya, sejauh ini satu-satunya font monospace yang saya temukan yang terbaca dan relatif lengkap dalam hal cakupan unicode.

Bahkan lebih ideal untuk kasus khusus Anda, itu pada akhirnya didasarkan pada Kurir.

emacsomancer
sumber
2

Anda selalu dapat menggunakan Courier New sebagai font utama Anda, dan kembali ke font lain dengan palet karakter yang lebih luas (seperti DejaVu Sans Mono atau mungkin Everson Mono) untuk simbol yang hilang.

Inilah yang dilakukan browser Anda jika Anda menetapkan Courier New sebagai font monospace yang Anda sukai dan kemudian memintanya untuk menampilkan sesuatu ∀x: ∃y: x ∊ y. (Ya, kecuali fakta bahwa situs ini sudah menentukan daftar font monospace pilihannya sendiri, dengan Courier New cukup jauh di bawah daftar, jadi Anda mungkin tidak akan melihat xdan ydi atas dalam Courier New kecuali Anda juga menonaktifkan atau menimpa gaya SE lembar.)

Tentu saja, ini tidak akan selalu terlihat terlalu bagus, tetapi dalam kasus Anda, Anda mengatakan bahwa karakter tambahan yang Anda butuhkan sebagian besar adalah simbol matematika. Ini terlihat sangat berbeda dari huruf Latin normal, jadi ketidakcocokan antara font yang berbeda mungkin tidak begitu jelas karena mungkin sebaliknya, terutama jika Anda memilih font fallback dengan hati-hati.

Ilmari Karonen
sumber
Menarik ... Saya tidak tahu browser melakukan itu. Apakah ini perilaku universal di semua browser?
Lèse majesté
2
Cukup banyak, ya. Sejauh yang saya tahu, semua browser modern utama mendukung penggantian mesin terbang. IE 6 dan yang lebih tua tidak, tetapi Anda benar-benar tidak seharusnya merancang untuk IE 6 hari ini - itu sudah hilang dari dinosaurus, dan bagus juga.
Ilmari Karonen
Itu ide yang bagus tetapi memerlukan aplikasi di mana saya bekerja dengan kode (editor saya, dalam hal ini), mendukung jenis mekanisme "fallback", yang sayangnya tidak.
HighCommander4
1

Saya tahu ini adalah pertanyaan lama tapi saya pikir sebagai seorang programmer saya mungkin bisa memberikan beberapa saran. Saya menggunakan FreeMono di semua editor teks dan IDE saya. Itu terlihat sangat mirip dengan Courier New dan memiliki dukungan yang lebih baik untuk Unicode. Dari informasi yang saya dapat dapatkan dari file font sendiri, Courier New mendukung 3.248 karakter berbeda sementara FreeMono mendukung 4.177 karakter. Saya tidak yakin persis berapa banyak dukungan FreeMono haS untuk simbol Unicode matematika dan logika, tetapi saya tahu bahwa itu lebih baik daripada Courier New dengan selisih yang cukup besar.

Zack Frost
sumber
1
Apa artinya "memiliki dukungan yang lebih baik untuk Unicode"? Bagaimana? Silakan bandingkan!
Mensch
@Kurt Maaf atas kebingungan! Courier baru memiliki dukungan untuk 3.248 karakter Unicode sementara mono gratis mendukung 4.177 karakter Unicode. Saya harap itu membantu.
Zack Frost