Chuyển phát nhanh Phông chữ giống như mới có hỗ trợ Unicode?


8

Tôi là một lập trình viên và tôi thực sự quen với phông chữ Courier New. Tôi khá kén chọn về nó - tôi thấy các phông chữ khác (bao gồm cả các phông chữ đơn cách khác) xấu so với.

Tuy nhiên, bây giờ tôi phải làm việc với một số mã bao gồm các chuỗi Unicode và Courier New không có hỗ trợ đầy đủ cho Unicode.

Ai đó có thể đề xuất một phông chữ (đơn cách) rất giống với Courier New, nhưng có hỗ trợ Unicode không?



3
Courier New có độ bao phủ Unicode tốt hơn nhiều so với hầu hết các phông chữ. Sẽ có ích nếu bạn cho chúng tôi biết chính xác các ký tự / ngôn ngữ / tập lệnh mà bạn cần bảo hiểm.
thomasrutter

@thomasrutter: Tôi cần bảo hiểm các ký hiệu toán học và logic.
HighCommander4

Câu trả lời:


11

Rất ít nếu có bất kỳ phông chữ nào có "hỗ trợ đầy đủ cho Unicode". Unicode 6.0 có 109.449 điểm mã. Nó khá tốn kém từ góc độ thiết kế để tạo thủ công từng một trong những glyph đó khi hầu hết mọi người sẽ chỉ sử dụng một phần nhỏ trong số họ, không đề cập đến từ góc độ kích thước tệp.

Courier New thực sự nằm trong số các phông chữ có hỗ trợ Unicode tương đối tốt ở mức 3248 glyphs (so với Lucida Sans Unicode chỉ có 1776).

Các phông chữ MingLiU / PMingLiU cũng hỗ trợ rất nhiều điểm mã, nhưng đó là vì đây là phông chữ CKJ (Trung Quốc, Hàn Quốc, Nhật Bản) và hầu hết các điểm mã được hỗ trợ là từ các khối CKJ. Vì vậy, trừ khi bạn cần một phông chữ CKJ, chúng không được sử dụng nhiều. Và thậm chí sau đó, chúng được chia thành ~ 6 phông chữ khác nhau bao gồm các khối mã khác nhau với mỗi điểm mã 30 ~ 40k.

Để hỗ trợ ngôn ngữ cho mục đích chung, Arial Unicode MS là thứ tốt nhất mà tôi biết. Nó có sự hỗ trợ gần như hoàn chỉnh trên 64 khối mã khác nhau, bao gồm 50.377 điểm mã.

Ngoài ra, chỉ có phông chữ Unicode BMP Fallback SIL , là một phông chữ gỡ lỗi. Nó bao gồm tất cả các điểm mã Unicode 5.1, nhưng mỗi glyph chỉ là một hộp hình chữ nhật chứa mã hex cho điểm mã đó. Và hầu hết các hệ điều hành đều đi kèm với phông chữ này và sẽ hiển thị nó khi một phông chữ Unicode thiếu glyph cho một ký tự cụ thể.

Ý tôi là, có thể có một người đánh máy hoặc thợ đúc điên rồ ngoài kia đã tạo ra một phông chữ với glyphs cho tất cả các điểm mã Unicode 5.1 hoặc 6.0, nhưng nó có thể thực sự rất tốn kém.

Hầu hết mọi người thay vì chỉ có các phông chữ bao gồm các khối ngôn ngữ cụ thể và sử dụng nhiều phông chữ để cung cấp hỗ trợ đa ngôn ngữ đầy đủ. Đặc biệt là khi các họ ngôn ngữ khác nhau có phong cách đánh máy thực chất khác nhau, do đó, glyphs cuối cùng sẽ trông rất khác nhau.

Chỉnh sửa: Như Mr Lister đã chỉ ra, hiện tại không có phông chữ nào có thể hỗ trợ bộ ký tự Unicode đầy đủ vì mỗi phông chữ chỉ có thể chứa tối đa 65536 glyphs. Bạn có thể vượt quá giới hạn này với TruTypeCollections nhưng chúng vẫn là các phông chữ riêng biệt, chỉ trong một tệp.


1
Cảm ơn câu trả lời chi tiết. Tôi không biết Unicode khá lớn. Các ký tự Unicode trong mã của tôi là các ký hiệu toán học và logic - bạn có biết về phông chữ đơn cách trông đẹp mắt có hỗ trợ cho các ký tự đó không?
HighCommander4

4
@ HighCommander4: Sau đó, tất cả những gì bạn thực sự cần là khối Biểu tượng toán học và khối Toán tử toán học. Bạn có thể xem danh sách các khối Unicode ở đây . Khi nhấp vào từng cái, bạn có thể tìm thấy một danh sách các phông chữ phổ biến hỗ trợ mỗi khối. Hoặc chỉ cần nhấp vào một trong các phông chữ và sau đó tra cứu danh sách các khối được hỗ trợ của nó, ví dụ: phông chữ này cho Code2000 , hiển thị tất cả các khối mà nó hỗ trợ và bao nhiêu phần trăm.
Lèse majesté

2
Tôi nghĩ rằng tôi đã đọc ở đâu đó rằng 65536 glyphs là mức tối đa mà bất kỳ tệp phông chữ nào có thể chứa, vì vậy bạn sẽ không bao giờ tìm thấy một phông chữ có hỗ trợ Unicode "đầy đủ".
Ông Lister

1
@Mr Lister: đó có thể là giới hạn của một số trình soạn thảo phông chữ , nhưng các điểm mã Unicode lên tới E0FFF (hoặc 10FFFF bao gồm cả khu vực sử dụng riêng). Vì vậy, nếu một phông chữ có thể tham chiếu các điểm mã cao cấp này, họ sẽ phải có thể tham chiếu bất cứ điều gì bên dưới nó.
Lèse majesté

2
@ Lèsemajesté Không, điều đó không thực sự đúng. Phông chữ không bắt buộc phải chứa mọi ký tự cho đến ký tự có chỉ số Unicode cao nhất mà chúng có. Nếu không, mọi phông chữ tương thích với Windows-1252 sẽ phải chứa hơn 8400 ký tự!
Ông Lister

3

Hãy dùng thử Mono miễn phí của GNU Free Font . Trên thực tế, cho đến nay, phông chữ đơn cách duy nhất mà tôi đã tìm thấy vừa dễ đọc vừa tương đối hoàn chỉnh về độ bao phủ unicode.

Thậm chí lý tưởng hơn cho trường hợp cụ thể của bạn, trên thực tế cuối cùng nó dựa trên Courier.


2

Bạn luôn có thể sử dụng Courier New làm phông chữ chính của mình và quay lại một số phông chữ khác với bảng ký tự rộng hơn (như DejaVu Sans Mono hoặc có lẽ là Everson Mono) cho các biểu tượng bị thiếu.

Đây là những gì trình duyệt của bạn làm nếu bạn đặt Courier New làm phông chữ đơn cách ưa thích của bạn và sau đó yêu cầu nó hiển thị một cái gì đó như thế nào ∀x: ∃y: x ∊ y. (Chà, ngoại trừ thực tế là trang web này đã chỉ định danh sách phông chữ đơn cách ưa thích của riêng nó, với Courier New nằm khá xa danh sách, vì vậy bạn có thể sẽ không nhìn thấy xyở trên trong Courier New trừ khi bạn cũng vô hiệu hóa hoặc ghi đè kiểu SE tấm.)

Tất nhiên, điều này sẽ không luôn luôn trông quá tốt, nhưng trong trường hợp của bạn, bạn nói rằng các ký tự phụ bạn cần chủ yếu là các ký hiệu toán học. Chúng trông khá khác biệt so với các chữ cái Latinh thông thường, do đó, sự không phù hợp giữa các phông chữ khác nhau có thể không rõ ràng như có thể, đặc biệt là nếu bạn chọn phông chữ dự phòng một cách cẩn thận.


Thật thú vị ... Tôi không biết các trình duyệt đã làm điều đó. Đây có phải là một hành vi phổ quát trên tất cả các trình duyệt?
Lèse majesté

2
Khá nhiều, vâng. Theo tôi biết, tất cả các trình duyệt hiện đại chính đều hỗ trợ thay thế glyph. IE 6 trở lên thì không, nhưng dù sao thì bạn thực sự không nên thiết kế cho IE 6 ngày nay - nó đã đi theo con đường của khủng long và cũng rất hay.
Ilmari Karonen

Đó là một ý tưởng hay nhưng nó yêu cầu ứng dụng mà tôi đang làm việc với mã (trình soạn thảo của tôi, trong trường hợp này), hỗ trợ loại cơ chế "dự phòng" này, thật không may, nó không hoạt động.
HighCommander4

1

Tôi biết đây là một câu hỏi cũ nhưng tôi nghĩ rằng với tư cách là một lập trình viên, tôi có thể đưa ra một số lời khuyên. Tôi sử dụng FreeMono trên tất cả các trình soạn thảo văn bản và IDE của mình. Nó trông khá giống với Courier New và hỗ trợ Unicode tốt hơn. Từ thông tin tôi có thể nhận được từ các tệp phông chữ, Courier New hỗ trợ 3.248 ký tự khác nhau trong khi FreeMono hỗ trợ 4.177 ký tự. Tôi không chắc chính xác có bao nhiêu FreeMono haS hỗ trợ cho các ký hiệu Unicode toán học và logic, nhưng tôi biết rằng nó tốt hơn Courier New bởi một biên độ đáng kể.


1
Điều gì có nghĩa là "có hỗ trợ tốt hơn cho Unicode"? Làm sao? Hãy so sánh!
Mensch

@Kurt Xin lỗi vì sự nhầm lẫn! Courier new có hỗ trợ cho 3.248 ký tự Unicode trong khi đơn âm miễn phí hỗ trợ 4.177 ký tự Unicode. Tôi hy vọng điều đó sẽ giúp.
Zack Frost
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.