Mengapa saya tidak boleh menggunakan karakter Unicode untuk mensimulasikan gaya tipografi (seperti huruf kecil atau skrip)?

129

Unicode berisi berbagai karakter yang terlihat seperti varian huruf yang khas bergaya alfabet Latin dasar dan yang memungkinkan seseorang untuk menulis teks dalam gaya tipografi yang sesuai tanpa menggunakan mark-up atau serupa. Misalnya, seseorang dapat mensimulasikan:

  • Topi kecil:

    ʙᴇʜᴏʟᴅ ᴛʜɪꜱ ꜰᴀɴᴄɪʟy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • Naskah:

    𝓑𝓮𝓱𝓸𝓵𝓭 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • Blackletter:

    𝕭𝖊𝖍𝖔𝖑𝖉 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

Ini menarik minat pada Stack Exchange (misalnya, di sini , di sini , dan di sini ) dan kritik terhadap teknik tersebut dibuat. Tapi apa yang salah ketika saya menggunakannya?

Wrzlprmft
sumber
224
Saya membaca ini dari ponsel saya dan saya tidak dapat melihat dua teks mewah terakhir.
Scimonster
22
Karena tidak dapat dibaca pada beberapa perangkat: i.stack.imgur.com/kM73J.png
Chris Kent
15
Karena beberapa dari kita ingin melihat halaman web dalam apa yang KAMI anggap sebagai font yang dapat dibaca (dan ukuran, warna, & c), jadi kami menggunakan mis. Lembar gaya CSS pengguna untuk mengganti gaya penulis. Anda mungkin mencatat bahwa meskipun tiga contoh Anda ditampilkan di perangkat saya, tampaknya seperti yang Anda inginkan, bagi saya mereka hanya dapat dibaca oleh batas. Mengapa Anda menempatkan keinginan artistik Anda di atas kemudahan membaca pembaca Anda?
jamesqf
38
Berikut ini pengamatan yang menarik: Edge tidak dapat menemukan teks dalam dua sampel terakhir, dan Chrome tidak dapat menemukan teks di yang pertama. (Coba Ctrl + F'ing untuk BEHOLD di kedua browser.) Belum memeriksa Firefox.
Skisma
22
@ Skisma Firefox tidak menemukan satupun. Sepertinya Chrome mungkin menggunakan normalisasi NFKC / NFKD sebelum mencari, yang menguraikan naskah dan teks blackletter ke Latin Dasar. Firefox sepertinya tidak melakukannya. Edge ... melakukan sesuatu yang aneh.
Bob

Jawaban:

224

Umum

Karakter-karakter itu tidak dimaksudkan untuk teks alfabet Latin biasa tetapi untuk fonetik, teks alfabet Sirilik, untuk digunakan sebagai simbol matematika (mewakili variabel), atau serupa. Satu-satunya cara Unicode-compliant untuk menyandikan teks dalam alfabet Latin dasar adalah dengan menggunakan karakter yang sebagian besar digunakan untuk tujuan ini (yaitu, dari blok Unicode Latin Dasar ).

Seperti banyak standar lainnya, Anda harus berpikir dua kali tentang melanggar Unicode. Selain itu, Unicode terdiri dari begitu banyak sistem penulisan, kasus penggunaan, dan hal-hal yang hanya ada untuk kompatibilitas dengan standar lain 1 yang sepenuhnya memahami semua motivasinya adalah ilmu tersendiri. Singkatnya, kecuali jika Anda benar-benar tahu apa yang Anda lakukan, sangat mungkin ada sesuatu yang tidak Anda pikirkan.

Contoh spesifik

Aksesibilitas

Teks yang disandikan tidak hanya ada untuk dirender dalam beberapa font. Ini juga dapat diartikan, misalnya oleh pembaca layar. Dan pembaca layar tidak perlu menebak apakah

𝓽𝓱𝓮

dimaksudkan untuk menjadi artikel pasti atau produk matematika 2 dari variabel 𝓽, 𝓱, dan 𝓮 - untuk itulah karakter tersebut dibuat. Karenanya, perilaku terbaik adalah menjabarkan karakter-karakter ini, misalnya mengatakan secara harfiah hal berikut:

huruf tebal kecil t, huruf tebal kecil h, huruf tebal kecil e

Seharusnya tidak hanya mengatakan "itu" sebagai gantinya karena itu tidak akan benar membaca teks matematika yang simbolnya membentuk kata yang dapat diucapkan. 3

Portabilitas

Jika teks Anda ditampilkan dengan baik di mesin Anda, ini tidak berarti bahwa itu juga akan menjadi milik pembaca. Contoh yang paling jelas adalah bahwa pembaca tidak memiliki font yang mendukung karakter ini atau teks yang diberikan oleh perangkat lunak tidak mendukung font fallback. Memang, ini menjadi semakin tidak umum. Perlu diingat bahwa beberapa orang yang menyukai disleksia memerlukan font khusus yang kecil kemungkinannya mendukung karakter ini.

Tetapi bahkan jika mesin pembaca hanya menggunakan font yang berbeda, ini mungkin membuat teks jauh lebih mudah dibaca. Sebagai contoh pertama , ini 𝓉𝒽ℯ diterjemahkan dengan dua font berbeda:

𝓉𝒽ℯ diterjemahkan dengan FreeSerif dan STIX

Serif Gratis merender teks karena Anda mungkin ingin membuatnya ditampilkan saat menggunakan karakter khusus untuk mensimulasikan teks, yaitu mensimulasikan tulisan tangan dengan goresan terus menerus. Namun, karakter ini dibuat untuk digunakan sebagai simbol matematika, menghubungkan yang tidak masuk akal. Oleh karena itu rendering oleh STIX , yang secara khusus dirancang untuk tujuan matematika, lebih sesuai dengan bagaimana karakter ini dimaksudkan untuk digunakan.

Dalam contoh kedua , misalkan Anda atau pembaca menulis miring “сᴜт мy вᴀʀ” untuk beberapa alasan. Dengan font yang bagus, Anda akan mendapatkan 4 :

сᴜт мy вᴀʀ diterjemahkan dengan huruf miring dan miring.  cetak miring terbaca "cum my bar"

Alasan untuk ini adalah bahwa topi kecil itu (sebagian) disimulasikan dengan huruf Cyrillic, dan huruf miring Cyrillic kadang-kadang terlihat sangat berbeda dari rekan-rekan mereka yang tegak . Jadi sekali lagi, ini adalah perilaku yang tepat.

Ketelusuran

Sebagai contoh pertama, pertimbangkan apa yang Anda inginkan dari pencarian wajar dengan karakter 𝒲 (skrip matematika W ). Asumsikan bahwa pencarian memiliki dua mode, mode default dan mode persis (biasanya disebut case-sensitive ). Karakter ini harus:

  • ditemukan ketika mencari w atau W dalam mode default - bagi mereka yang tidak ingin repot memasukkan atau menyalin-paste karakter khusus ke dalam kolom pencarian;

  • ditemukan ketika mencari 𝒲 dalam mode tepat - bagi mereka yang ingin mencari di mana variabel yang sesuai disebutkan dalam dokumen matematika³;

  • tidak ditemukan saat mencari 𝓌, w atau W dalam mode tepat karena melanggar pencarian yang mirip dengan di atas.

Namun jika Anda menggunakan karakter ini untuk mensimulasikan teks biasa, itu harus ditemukan ketika mencari W atau 𝒲 dalam mode yang tepat, yang bertentangan dengan yang di atas.

Sebagai contoh kedua pertimbangkan bahwa karakter Cyrillic tidak boleh ditemukan ketika mencari karakter Latin dan sebaliknya, karena mereka sama sekali berbeda. Namun jika menggunakan karakter Cyrillic untuk mensimulasikan huruf kecil Latin, Anda perlu ini terjadi, jika Anda tidak ingin kemampuan pencarian untuk dipatahkan. Ini akan menyebabkan orang menemukan banyak hal yang tidak berguna jika mereka mencari kata alfabet Latin langka yang kebetulan sesuai dengan tutup kecil palsu dari beberapa kata alfabet Cyrillic populer (dan sebaliknya).

Opsi pencarian yang tepat tidak dapat menyelesaikan masalah ini, karena ini disediakan untuk keperluan lain dalam huruf-huruf itu.

Secara umum , tidak mungkin untuk membangun pencarian (tanpa jumlah pilihan yang gila) yang tidak rusak dengan menggunakan karakter khusus untuk mensimulasikan teks gaya Latin.


1  Anda tahu XKCD tentang kegagalan standar pemersatu yang tidak terhindarkan ? Yah, Unicode berhasil.
2  atau apa pun operator kosong dalam konvensi terkait
3  Saya menyadari bahwa sangat sedikit teks matematika saat ini mendukung pengkodean ini atau sesuatu yang kompatibel dengan itu tetapi intinya adalah bahwa suatu hari nanti mereka diharapkan melakukannya. Teks yang menyalahgunakan Unicode Anda mungkin masih ada dan baca kemudian.
4  Kecuali jika Anda melokalisasi untuk Makedonia atau Serbia, di mana Anda akan mendapatkan hasil yang berbeda tetapi masih tidak diinginkan.

Wrzlprmft
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Journeyman Geek
1
Bagaimana dengan contoh ketiga? Mengapa teks blackletter bahkan ada di Unicode versus hanya beberapa font?
posfan12
2
@ posfan12: Ini digunakan sebagai alfabet matematika yang berbeda - seperti karakter skrip. (Perhatikan bahwa contoh penomoran di sini tidak ada hubungannya dengan poin-poin dalam pertanyaan.)
Wrzlprmft
3
Contoh small-cpas Anda menyarankan puzzle / competitoin: Temukan kalimat yang valid yang menjadi kalimat yang berbeda saat dicetak miring ... (keduanya diartikan oleh pembaca berbasis manusia Latin, katakanlah)
Hagen von Eitzen
67

Apa yang salah? Baiklah, saya melihat ini:

masukkan deskripsi gambar di sini

di Firefox 50.1.0 pada Windows 7.

Masalah mesin terbang yang hilang , dalam hal ini pada perangkat seluler, lebih lanjut diilustrasikan dalam gambar yang diberikan oleh pengguna Chris Kent dalam komentar , yang telah saya potong dan ubah ukurannya dari aslinya :

masukkan deskripsi gambar di sini

Dan oal pengguna dengan baik berkontribusi contoh lain:

masukkan deskripsi gambar di sini

Andrew Morton
sumber
7
@ Lilienthal Saya terkesan dengan berapa tahun Anda harus pergi tanpa memeriksa atau menginstal pembaruan. Maksud saya, saya masih menggunakan sesuatu yang didasarkan pada Firefox 3.5 pada beberapa perangkat, tapi saya tidak punya pilihan dalam hal ini (perangkat terlalu bagus, tetapi tidak ada browser yang dapat digunakan yang lebih baru tersedia)
mtraceur
16
@ Lilienthal Beberapa waktu di tahun 2020, nomor versi utama Firefox mungkin memerlukan angka 64-bit. Tak lama setelah itu, nomor versi akan mengambil lebih banyak tempat daripada program yang sebenarnya. Dalam upaya untuk mendapatkan kembali pangsa pasar, nomor versi Chrome akan membutuhkan seluruh planet untuk menyimpannya.
Andrew Morton
2
Kalian tahu berapa banyak kerentanan keamanan yang diketahui dan aktif yang Anda paparkan dengan menggunakan browser kuno seperti itu?
Zach Lipton
3
@ Zak Lipton: Apakah Anda menyadari bahwa itu berada di daftar prioritas saya? # 1 memiliki sesuatu yang benar-benar dapat saya gunakan. Meskipun mungkin orang-orang Firefox (dan banyak lainnya) telah menganut paradigma baru: keamanan melalui ketidakbergunaan.
jamesqf
29

Saya mengalami masalah XY dengan ini.

Y dan X tampak lebih kecil daripada teks lainnya

Di sini, kita melihat bahwa Y dan X tampak lebih kecil daripada teks lainnya. Pada tingkat zoom tertentu ukurannya tampak sama, tetapi ini tampaknya telah memunculkan masalah dengan mesin terbang khusus ini dalam font khusus ini.

Michael Hampton
sumber
Saya dapat menawarkan tiga penjelasan yang mungkin untuk apa yang Anda lihat: 1) Petunjuk buruk . 2) Font fallback digunakan untuk segala sesuatu tetapi x dan y. 3) Desain font yang buruk: Huruf kecil dirancang sedikit lebih besar dari huruf kecil (yang merupakan pilihan yang valid) dan kemudian digunakan untuk karakter Unicode fonetik dan Cyrillic - yang bukan pilihan yang baik karena, misalnya, dalam penggunaan Fonetik, karakter-karakter ini harus diselaraskan dengan karakter latin dasar. - Either way: Poin 1) dan 3) bukan karena penyalahgunaan Unicode. Poin 2) sudah dibahas dalam jawaban lain.
Wrzlprmft
12
@Wrzlprmft: Menurut definisi mereka adalah penyalahgunaan unicode karena unicode tidak memiliki batasan kecil. Apa yang dimiliki unicode adalah huruf-huruf yang terlihat seperti huruf kecil di blok abjad Fonetik dan blok Latin Extended-D. Secara khusus, baik dua blok Fonetik maupun blok Extended-D Latin tidak berisi huruf yang tampak seperti huruf kecil X , oleh karena itu dugaan saya adalah bahwa X berasal dari tempat lain, mungkin blok Cyrillic. Perbedaannya disebabkan oleh tidak 1, 2 atau 3. Ini disebabkan oleh surat milik alfabet lain.
slebetman
@slebetman: The small-caps x hanya huruf kecil biasa x (Anda hanya dapat menyalin karakter dari pertanyaan dan memeriksa sendiri). Dan huruf kecil x harus diselaraskan dengan karakter fonetik, karena ini juga digunakan sebagai karakter fonetik. Ini juga harus memiliki ketinggian yang sama dengan huruf kecil Sirilik, karena Anda tidak ingin kata-kata Sirilik tunggal menonjol dari teks Latin (dan sebaliknya).
Wrzlprmft
19
Terpilih untuk lol di "masalah XY" :)
Andrew Morton
13

Menggunakan karakter non-Latin yang agak mirip dengan karakter Latin menempatkan Anda di perusahaan spammer, pelaku pornografi, dan siapa yang tahu apa yang sedang mereka lakukan terhadap orang yang ingin teksnya tidak dapat dicari, tidak dapat dijelaskan, dan dapat disangkal. ("Aku tidak pernah bilang itu aman !! Aku bilang itu sigma-alpha-integral-sign-epislon !!! Tidak bisa menuntutku !!!")

Jika Anda nyaman di klub itu, maka lakukanlah.

CCTO
sumber