Tại sao tôi không nên sử dụng các ký tự Unicode để mô phỏng các kiểu chữ (chẳng hạn như chữ hoa hoặc chữ viết nhỏ)?


129

Unicode chứa các ký tự khác nhau trông giống như các biến thể cách điệu của các ký tự của bảng chữ cái Latinh cơ bản và cho phép người ta viết văn bản theo các kiểu chữ tương ứng mà không cần dùng đến cách đánh dấu hoặc tương tự. Ví dụ: người ta có thể mô phỏng:

  • Mũ nhỏ:

    ᴛʜɪꜱ y ᴇɴᴄᴏᴅᴇᴅ xᴛ.

  • Kịch bản:

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

  • Bảng đen:

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

Điều này đã đáp ứng sự quan tâm trên Stack Exchange (ví dụ, ở đây , ở đâyở đây ) và sự chỉ trích về các kỹ thuật như vậy đã được thực hiện. Nhưng những gì có thể đi sai khi tôi sử dụng chúng?


224
Tôi đang đọc nó từ điện thoại của tôi và tôi không thể thấy hai văn bản ưa thích cuối cùng.
Scimonster

22
Bởi vì nó không thể đọc được trên một số thiết bị: i.stack.imgur.com/kM73J.png
Chris Kent

15
Bởi vì một số người trong chúng tôi muốn xem các trang web trong những gì chúng tôi coi là phông chữ có thể đọc được (và kích thước, màu sắc, & c), vì vậy chúng tôi sử dụng các biểu định kiểu CSS của người dùng để ghi đè các kiểu tác giả. Bạn có thể lưu ý rằng mặc dù ba ví dụ của bạn hiển thị trên thiết bị của tôi, rõ ràng giống như bạn dự định chúng xuất hiện, với tôi chúng chỉ có thể đọc được đường biên. Tại sao bạn lại đặt sự thèm muốn nghệ thuật của mình lên trên sự dễ đọc của độc giả?
jamesqf

38
Đây là một quan sát thú vị: Edge không thể tìm thấy văn bản trong hai mẫu sau và Chrome không thể tìm thấy văn bản trong mẫu đầu tiên. (Hãy thử Ctrl + F'ing cho BEHOLD trong cả hai trình duyệt.) Chưa kiểm tra Firefox.
Schism

22
@Schism Firefox không tìm thấy ai trong số họ. Có vẻ như Chrome có thể sử dụng chuẩn hóa NFKC / NFKD trước khi tìm kiếm, trong đó phân tách tập lệnh và văn bản bản đồ thành tiếng Latin cơ bản. Firefox dường như không làm như vậy. Edge ... đang làm điều gì đó kỳ lạ.
Bob

Câu trả lời:


224

Chung

Những ký tự này không dành cho văn bản bảng chữ cái Latinh thông thường mà dành cho ngữ âm, văn bản bảng chữ cái Cyrillic, để sử dụng làm ký hiệu toán học (đại diện cho các biến) hoặc tương tự. Cách duy nhất tuân thủ Unicode để mã hóa văn bản trong bảng chữ cái Latinh cơ bản là sử dụng các ký tự được sử dụng chủ yếu cho mục đích này (nghĩa là từ khối Unicode Latin cơ bản ).

Cũng như nhiều tiêu chuẩn khác, bạn nên suy nghĩ kỹ về việc vi phạm Unicode. Ngoài ra, Unicode bao gồm rất nhiều hệ thống chữ viết, trường hợp sử dụng và nội dung tồn tại để tương thích ngược với các tiêu chuẩn 1 khác , hiểu đầy đủ tất cả các động lực của nó là một khoa học của riêng nó. Câu chuyện dài, trừ khi bạn thực sự thực sự biết những gì bạn đang làm, rất có khả năng một cái gì đó bị phá vỡ mà bạn thậm chí không nghĩ đến từ xa.

Ví dụ cụ thể

Khả năng tiếp cận

Văn bản được mã hóa không chỉ tồn tại để được hiển thị trong một số phông chữ. Nó cũng có thể được giải thích, ví dụ, bởi các trình đọc màn hình. Và một trình đọc màn hình không cần phải đoán xem

𝓽𝓱𝓮

có nghĩa là bài viết xác định hoặc sản phẩm toán học 2 của các biến 𝓽, và - đó là những gì các ký tự được tạo ra cho. Do đó, hành vi tốt nhất sẽ là loại bỏ các ký tự này, ví dụ như nói theo nghĩa đen như sau:

script đậm t nhỏ, script đậm h nhỏ, script đậm e nhỏ

Thay vào đó, không nên chỉ nói tiếng Nhật bởi vì sau đó nó sẽ không đọc đúng các văn bản toán học có biểu tượng xảy ra để tạo thành một từ có thể phát âm được. 3

Tính di động

Nếu văn bản của bạn được hiển thị độc đáo trên máy của bạn, điều này không có nghĩa là nó cũng sẽ nằm trên văn bản của người đọc. Ví dụ rõ ràng nhất là người đọc không có bất kỳ phông chữ nào hỗ trợ các ký tự này hoặc văn bản được hiển thị bởi một phần mềm không hỗ trợ phông chữ dự phòng. Phải thừa nhận rằng điều này ngày càng trở nên ít phổ biến hơn. Hãy nhớ rằng mặc dù một số người thích chứng khó đọc cần các phông chữ đặc biệt ít có khả năng hỗ trợ các ký tự này.

Nhưng ngay cả khi máy của người đọc chỉ sử dụng một phông chữ khác, điều này có thể làm cho văn bản dễ đọc hơn đáng kể. Đối với một ví dụ đầu tiên , đây là 𝓉𝒽ℯ được hiển thị với hai phông chữ khác nhau:

được hiển thị với FreeSerif và STIX

Free Serif hiển thị văn bản như bạn có thể muốn nó được hiển thị khi sử dụng các ký tự đặc biệt để mô phỏng văn bản, cụ thể là mô phỏng chữ viết tay với một nét vẽ liên tục. Tuy nhiên, các ký tự này được tạo ra để sử dụng làm biểu tượng toán học, kết nối không có ý nghĩa. Do đó, kết xuất bởi STIX , được thiết kế đặc biệt cho mục đích toán học, phù hợp hơn với cách sử dụng các ký tự này.

Trong một ví dụ thứ hai , giả sử bạn hoặc người đọc in nghiêng cho tôi vì một số lý do. Với một phông chữ tốt, bạn sẽ nhận được 4 :

Làm cho nó đứng thẳng và in nghiêng.  chữ nghiêng đọc là "kiêm thanh của tôi"

Lý do cho điều này là vì các chữ hoa nhỏ được mô phỏng (một phần) bằng các chữ cái Cyrillicchữ in nghiêng Cyrillic đôi khi trông rất khác so với các bản sao thẳng đứng của chúng . Vì vậy, một lần nữa, đây là hành vi thích hợp.

Khả năng tìm kiếm

Để làm ví dụ đầu tiên, hãy xem xét những gì bạn muốn tìm kiếm hợp lý để thực hiện với ký tự (tập lệnh toán học W ). Giả sử rằng tìm kiếm có hai chế độ, chế độ mặc địnhchế độ chính xác (thường được gọi là phân biệt chữ hoa chữ thường ). Nhân vật này phải là:

  • được tìm thấy khi tìm kiếm w hoặc W ở chế độ mặc định - cho những người không muốn bận tâm nhập hoặc sao chép ký tự đặc biệt vào trường tìm kiếm;

  • được tìm thấy khi tìm kiếm trong chế độ chính xác - cho những người muốn tìm kiếm nơi biến tương ứng được đề cập trong tài liệu toán học³;

  • không tìm thấy khi tìm kiếm, w hoặc W ở chế độ chính xác trên tài khoản phá vỡ tìm kiếm tương tự như trên.

Tuy nhiên, nếu bạn sử dụng ký tự này để mô phỏng văn bản thông thường, thì nên tìm thấy nó khi tìm kiếm W hoặc ở chế độ chính xác, xung đột với điều trên.

Như một ví dụ thứ hai xem xét rằng các ký tự Cyrillic không bao giờ nên được tìm thấy khi tìm kiếm các ký tự Latin và ngược lại, vì chúng hoàn toàn khác nhau. Tuy nhiên, nếu sử dụng các ký tự Cyrillic để mô phỏng các chữ hoa nhỏ của Latin, bạn cần điều này xảy ra, nếu bạn không muốn khả năng tìm kiếm bị phá vỡ. Điều này sẽ dẫn đến việc mọi người tìm thấy rất nhiều thứ vô dụng nếu họ tìm kiếm một từ trong bảng chữ cái Latinh hiếm gặp tương ứng với các chữ cái giả nhỏ của một số từ trong bảng chữ cái Cyrillic phổ biến (và ngược lại).

Một tùy chọn tìm kiếm chính xác không thể giải quyết vấn đề này, vì điều này được dành riêng cho các mục đích khác trong các bảng chữ cái đó.

Nói chung , không thể xây dựng một tìm kiếm (không có số lượng tùy chọn điên rồ) không bị phá vỡ bằng cách sử dụng các ký tự đặc biệt để mô phỏng văn bản Latin theo kiểu.


1  Bạn có biết rằng XKCD về sự thất bại không thể tránh khỏi của việc thống nhất các tiêu chuẩn ? Vâng, Unicode đã thành công.
2  hoặc bất cứ toán tử trống nào nằm trong quy ước thích hợp
3  Tôi biết rằng rất ít văn bản toán học hiện nay hỗ trợ mã hóa này hoặc một cái gì đó tương thích với nó nhưng vấn đề là một ngày nào đó chúng hy vọng sẽ làm được. Văn bản lạm dụng Unicode của bạn vẫn có thể xuất hiện và đọc sau đó.
4  Trừ khi bạn đang bản địa hóa cho người Macedonia hoặc người Serbia, trong đó bạn sẽ nhận được kết quả khác nhau nhưng vẫn không mong muốn.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Journeyman Geek

1
Còn ví dụ thứ ba thì sao? Tại sao văn bản bảng đen thậm chí tồn tại trong Unicode so với chỉ một số phông chữ?
posfan12

2
@ posfan12: Nó được sử dụng như một bảng chữ cái toán học riêng biệt - giống như các ký tự tập lệnh. (Lưu ý rằng việc đánh số ví dụ ở đây không liên quan gì đến các
gạch

3
Ví dụ về cpas nhỏ của bạn gợi ý một câu đố / cạnh tranh: Tìm một câu hợp lệ trở thành một câu khác khi in nghiêng ... (cả hai được giải thích bởi các độc giả gốc Latin, nói)
Hagen von Eitzen

67

Cái mà có thể sai lầm? Chà, tôi thấy điều này:

nhập mô tả hình ảnh ở đây

trong Firefox 50.1.0 trên Windows 7.

Vấn đề thiếu glyphs , trong trường hợp này trên thiết bị di động, được minh họa rõ hơn trong hình ảnh do người dùng Chris Kent đưa ra trong một bình luận , mà tôi đã cắt và thay đổi kích thước so với bản gốc :

nhập mô tả hình ảnh ở đây

Và người dùng oals vui lòng đóng góp một ví dụ khác:

nhập mô tả hình ảnh ở đây



7
@Lilienthal Tôi rất ấn tượng bởi bạn phải đi bao nhiêu năm mà không kiểm tra hoặc cài đặt các bản cập nhật. Ý tôi là, tôi vẫn đang sử dụng thứ gì đó dựa trên Firefox 3.5 trên một số thiết bị, nhưng tôi thực sự không có lựa chọn nào trong vấn đề này (thiết bị quá tốt, nhưng không có trình duyệt có thể sử dụng mới hơn)
mtraceur

16
@Lilienthal Đôi khi vào năm 2020, số phiên bản chính của Firefox có thể yêu cầu số 64 bit. Ngay sau đó, số phiên bản sẽ chiếm nhiều dung lượng hơn chương trình thực tế. Trong nỗ lực lấy lại thị phần, số phiên bản Chrome sẽ cần toàn bộ các hành tinh để lưu trữ chúng.
Andrew Morton

2
Bạn có biết bao nhiêu lỗ hổng bảo mật đã biết và đang hoạt động mà bạn tự phơi bày bằng cách sử dụng các trình duyệt cổ như vậy không?
Zach Lipton

3
@Zach Lipton: Bạn có nhận ra điều đó nằm trong danh sách ưu tiên của tôi không? # 1 là có một cái gì đó tôi thực sự có thể sử dụng. Mặc dù có lẽ người Firefox (và nhiều người khác) đã chấp nhận một mô hình mới: bảo mật thông qua tính không thể sử dụng được.
jamesqf

29

Tôi đang có một vấn đề XY với điều này.

Y và X xuất hiện nhỏ hơn phần còn lại của văn bản

Ở đây, chúng ta thấy rằng Y và X xuất hiện nhỏ hơn phần còn lại của văn bản. Ở các mức thu phóng nhất định, chúng có vẻ có cùng kích thước, nhưng điều này dường như đã cho thấy một vấn đề với các glyph cụ thể trong phông chữ cụ thể này.


Tôi có thể đưa ra ba lời giải thích khả dĩ cho những gì bạn đang thấy: 1) Gợi ý tồi . 2) Phông chữ dự phòng được sử dụng cho mọi thứ trừ xy. 3) Thiết kế phông chữ xấu: Chữ hoa nhỏ được thiết kế lớn hơn một chút so với chữ thường (là lựa chọn hợp lệ) và sau đó được sử dụng cho các ký tự Unicode ngữ âm và Cyrillic - không phải là một lựa chọn tốt vì, ví dụ, trong sử dụng Phiên âm, các ký tự này phải hài hòa với các ký tự Latin cơ bản. - Dù bằng cách nào: Điểm 1) và 3) không phải do lạm dụng Unicode. Điểm 2) đã được giải quyết trong các câu trả lời khác.
Wrzlprmft

12
@Wrzlprmft: Theo định nghĩa, chúng là lạm dụng unicode vì unicode không có giới hạn nhỏ. Những gì unicode không có là các chữ cái trông giống như các chữ hoa nhỏ trong các khối chữ cái ngữ âm và khối Latin Extended-D. Cụ thể, cả hai khối Ngữ âm và khối Latin Extended-D đều không chứa chữ cái trông giống chữ X nhỏ , do đó, tôi đoán là chữ X đến từ một nơi khác, có lẽ là khối Cyrillic. Sự khác biệt được gây ra bởi cả 1, 2 và 3. Nó không phải do chữ cái thuộc bảng chữ cái khác.
slebetman

@slebetman: Chữ nhỏ x chỉ là chữ thường x (bạn có thể sao chép ký tự từ câu hỏi và tự kiểm tra). Và một chữ thường x phải hài hòa với các ký tự ngữ âm, bởi vì nó cũng được sử dụng như một ký tự ngữ âm. Nó cũng phải có cùng chiều cao với các ký tự chữ thường Cyrillic, vì bạn không muốn các từ Cyrillic đơn lẻ nổi bật so với văn bản Latinh (và ngược lại).
Wrzlprmft

19
Được ủng hộ cho lol tại "Vấn đề XY" :)
Andrew Morton

13

Sử dụng các ký tự không phải là tiếng Latinh trông giống như tiếng Latin khiến bạn rơi vào tình trạng những kẻ gửi thư rác, người khiêu dâm và những người hiểu biết về những gì họ muốn đưa ra những văn bản không thể tìm kiếm, không thể hiểu được và có thể bị bác bỏ. ("Tôi chưa bao giờ nói nó an toàn !! Tôi đã nói đó là sigma-alpha-integ-sign-epislon !!! Không thể kiện tôi !!!")

Nếu bạn thoải mái trong câu lạc bộ đó, thì hãy đi cho nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.