- Một phông chữ monospace xử lý các ký hiệu thường dùng trong ngôn ngữ lập trình ngang hàng với bảng chữ cái, hướng tới sự hài hòa về mặt thị giác trong trình soạn thảo mã
- Với thiết kế tập trung vào các ký hiệu ASCII, phông chữ này cải thiện căn chỉnh của các ký hiệu nhiều ký tự như
->, ::, =~, đồng thời mang lại độ đậm cân bằng và khả năng phân biệt rõ ràng
- Có tính đến khả năng đọc theo từng ngôn ngữ, giúp thể hiện rõ hình dạng của ký hiệu và toán tử trong Perl, Haskell, C, v.v.
- Hiện được cung cấp dưới dạng một độ đậm duy nhất và không dùng ligature, đồng thời hỗ trợ bold tổng hợp trong môi trường fontconfig·pango của Linux
- Được phát hành theo SIL Open Font License 1.1, cho phép sử dụng và chỉnh sửa tự do
Tổng quan về Myna
- Myna là một phông chữ monospace coi ký hiệu là glyph hạng nhất, tập trung vào việc tăng tính nhất quán thị giác của các ký hiệu trong ngôn ngữ lập trình
- Giải quyết vấn đề các ký hiệu như
->, $, @, % trông gượng gạo trong các phông chữ hiện có
- Giữ nguyên sự đơn giản của ASCII trong khi mô phỏng hiệu ứng thẩm mỹ của ligature
Đặc điểm chính
- Symbol-First Design: được thiết kế xoay quanh các ký hiệu ASCII được sử dụng rộng rãi trong nhiều ngôn ngữ lập trình
- Độ chính xác căn chỉnh: tăng độ chính xác trong căn chỉnh của các ký hiệu nhiều ký tự như
->, >>=, ::, từ đó cải thiện khả năng đọc mã
- Độ đậm cân bằng (Weight): duy trì sự hài hòa trong độ tương phản giữa ký hiệu và ký tự
- Hình dạng tối giản: dấu ngoặc kép, dấu phẩy, v.v. được đơn giản hóa theo hình học
- Khả năng phân biệt rõ ràng: tăng cường phân biệt giữa các ký tự dễ nhầm như
1, l, I, |, 0, O, o
- Thiết kế nhận diện theo ngôn ngữ: thể hiện rõ sigil của Perl, toán tử của Haskell và biểu diễn ký hiệu trong C
Bối cảnh phát triển và hiện trạng
- Đây là kiểu chữ được tự thiết kế do không hài lòng với các chi tiết glyph của các phông monospace hiện có
- Được công khai sau khi chính tác giả dùng lâu dài trong công việc chuyên môn và các dự án cá nhân
- Hiện được cung cấp dưới dạng một độ đậm duy nhất, phiên bản không dùng ligature, và có thể mở rộng trong tương lai tùy theo nhu cầu
- Hỗ trợ bold tổng hợp thông qua fontconfig và pango trong môi trường Linux
- Áp dụng SIL Open Font License 1.1
- Phiên bản đầu tiên bắt đầu từ Hera (bản tùy biến dựa trên Source Code Pro)
- Được phát triển bằng cách tham khảo ưu điểm của nhiều phông chữ như Fira Mono, Inconsolata, Plex Mono, Office Code Pro, Anonymous Pro
Kế hoạch sắp tới
- Hướng tới việc sử dụng phổ quát trong terminal và trình soạn thảo
- Bao gồm một số glyph không phải ASCII (ký hiệu hình học, toán học, v.v.)
- Dự kiến mở rộng glyph và bổ sung tính năng theo phản hồi từ cộng đồng
2 bình luận
Tôi đang dùng phông chữ JetBrains nên thấy khá thú vị.
Ý kiến trên Hacker News
Gần đây tôi chuyển sang Iosevka (phát âm là Joseph) chính vì sự gọn gàng kiểu này
Liên kết GitHub của Iosevka
Điều thú vị là cấu trúc mã nguồn của font này rõ ràng đến mức bạn thực sự có thể đọc được
Phiên bản trước là Hera, một bản không nén được tùy biến từ Source Code Pro
Nói thật thì tôi không hiểu lắm mô tả “font cho ngôn ngữ nhiều ký hiệu”. Các ký hiệu trông khá bình thường. Hay là khoảng cách chỉ rộng hơn một chút?
->,>>=,::được căn thẳng hàng gần như hoàn hảoFont khá đẹp. Chỉ là có vẻ ký tự emdash (—) bị thiếu trong phần mẫu. Tôi dùng Markdown nhiều, và nhiều font lập trình hiển thị ký tự này không đúng
Ảnh chụp màn hình giúp đánh giá tốt hơn hẳn so với các font khác
Nhưng nếu có nhu cầu, tôi sẽ cân nhắc cải thiện
Cũng như nhiều font khác, font này có vẻ căn mũi tên dọc (↑↓) hơi kỳ
Ký tự
^vốn dĩ thời máy đánh chữ dùng cho dấu circumflex, nên chiều cao của nó bất đối xứng. Tôi nghĩ sẽ tốt hơn nếu phần đáy của caret đối xứng vớiv↑?vlà không công bằngFont nên giữ hình dạng có thể dự đoán được
Với lời phàn nàn rằng “
->trông không giống mũi tên”, giải pháp thực sự là dùng mũi tên thật như ←→. Mong rằng một ngày nào đó các ngôn ngữ sẽ hỗ trợ chất lượng typography tốt hơnJuliaMono là font được thiết kế để hỗ trợ toàn bộ Unicode cho ngôn ngữ Julia
Font đẹp đấy, nhưng khoảng cách chữ “Lorem” ở trên cùng trông hơi quá rộng nên kerning có cảm giác hơi lệch. Cá nhân tôi khá để ý điều này
Ligature là chủ đề gây tranh cãi khá nhiều trong giới lập trình viên
Có người thấy mã nguồn đẹp hơn và dễ đọc hơn, có người lại cho rằng “ẩn ký hiệu đi là không cần thiết hoặc thiếu trung thực”
Cũng có người nói rằng “nếu ngôn ngữ hỗ trợ Unicode tử tế thì đã không cần ligature”
Kết quả là dự án này chọc đúng cả ba phe cùng lúc, và vì thế lại càng thú vị hơn. Tôi đã bấm sao trên GitHub
Tôi cảm thấy các ký hiệu được đặt hơi cao khi đứng cạnh chữ thường. Có vẻ đây là hệ quả của việc cố căn cho ngoặc thẳng hàng. Cảm giác cân bằng hơi thiếu một chút
Phá vỡ truyền thống đôi khi lại giúp tăng độ dễ đọc. Dấu gạch nối được thiết kế để căn với
>và tạo thành hình mũi tênĐã có Myna UI là một font biểu tượng rồi. Có vẻ dễ gây nhầm lẫn