- ฟอนต์โมโนสเปซที่ ปฏิบัติต่อสัญลักษณ์ที่ใช้บ่อยในภาษาโปรแกรมเทียบเท่ากับตัวอักษร โดยมีเป้าหมายเพื่อความกลมกลืนทางสายตาในตัวแก้ไขโค้ด
- ด้วยการออกแบบที่ เน้นสัญลักษณ์ ASCII เป็นหลัก ช่วยปรับปรุงการจัดแนวของสัญลักษณ์หลายอักขระอย่าง
->, ::, =~ และมอบ น้ำหนักที่สมดุลกับการแยกแยะที่ชัดเจน
- คำนึงถึง ความอ่านง่ายเฉพาะของแต่ละภาษา โดยแสดงรูปแบบของสัญลักษณ์และโอเปอเรเตอร์ใน Perl, Haskell, C เป็นต้น ได้อย่างชัดเจน
- ปัจจุบันมีให้ใช้งานในรูปแบบ น้ำหนักเดียวและไม่มี ligature พร้อมรองรับ bold แบบสังเคราะห์ในสภาพแวดล้อม fontconfig·pango ของ Linux
- เผยแพร่ภายใต้ SIL Open Font License 1.1 ทำให้ใช้งานและดัดแปลงได้อย่างอิสระ
ภาพรวมของ Myna
- Myna คือ ฟอนต์โมโนสเปซที่ปฏิบัติต่อสัญลักษณ์เป็น glyph ชั้นหนึ่ง โดยมุ่งเน้นการเพิ่มความสม่ำเสมอทางสายตาของสัญลักษณ์ในภาษาโปรแกรม
- แก้ปัญหาที่สัญลักษณ์อย่าง
->, $, @, % ดูไม่ลงตัวในฟอนต์เดิม
- คงความเรียบง่ายของ ASCII ไว้ พร้อมเลียนแบบ ผลลัพธ์ด้านความสวยงามของ Ligature
คุณลักษณะเด่น
- Symbol-First Design: ออกแบบโดยยึดสัญลักษณ์ ASCII ที่ใช้กันทั่วทั้งภาษาโปรแกรมเป็นศูนย์กลาง
- ความแม่นยำของการจัดแนว: เพิ่ม ความแม่นยำในการจัดแนวของสัญลักษณ์หลายอักขระ อย่าง
->, >>=, :: เพื่อให้อ่านโค้ดได้ดีขึ้น
- น้ำหนักที่สมดุล (Weight): รักษาความต่างระหว่างสัญลักษณ์กับตัวอักษรให้อยู่ในสมดุลอย่างกลมกลืน
- รูปทรงแบบมินิมอล: เครื่องหมายอัญประกาศและจุลภาค เป็นต้น ถูกทำให้ง่ายขึ้นเป็นรูปทรงเรขาคณิต
- การแยกแยะที่ชัดเจน: เสริมความแตกต่างของอักขระที่สับสนได้ง่าย เช่น
1, l, I, |, 0, O, o
- การออกแบบที่รับรู้ตามภาษา: แสดง Sigil ของ Perl, โอเปอเรเตอร์ของ Haskell และการแสดงสัญลักษณ์ของ C ให้ชัดเจนตามลักษณะของแต่ละภาษา
ที่มาของการพัฒนาและสถานะปัจจุบัน
- เป็นแบบอักษรที่สร้างขึ้นเองเพราะไม่พึงพอใจกับรายละเอียด glyph ของฟอนต์โมโนสเปซที่มีอยู่เดิม
- ผู้พัฒนา เปิดเผยสู่สาธารณะหลังจากใช้งานมาเป็นเวลานานในงานมืออาชีพและโปรเจกต์ส่วนตัว
- ปัจจุบันมีให้ในรูปแบบ น้ำหนักเดียว เวอร์ชันไม่มี Ligature และอาจขยายเพิ่มเติมในอนาคตตามความต้องการ
- รองรับ bold แบบสังเคราะห์ผ่าน fontconfig และ pango ในสภาพแวดล้อม Linux
- ใช้สัญญาอนุญาต SIL Open Font License 1.1
- เวอร์ชันแรกเริ่มต้นจาก Hera (การคัสตอมบนฐานของ Source Code Pro)
- พัฒนาต่อยอดโดยอ้างอิงข้อดีของฟอนต์หลายแบบ เช่น Fira Mono, Inconsolata, Plex Mono, Office Code Pro, Anonymous Pro
แผนในอนาคต
- ตั้งเป้าให้ใช้งานได้อย่างอเนกประสงค์ทั้งใน เทอร์มินัลและเอดิเตอร์
- รวม glyph ที่ไม่ใช่ ASCII บางส่วนไว้ด้วย (เช่น สัญลักษณ์เรขาคณิต·คณิตศาสตร์)
- มีแผน ขยาย glyph และเพิ่มฟังก์ชัน ตามฟีดแบ็กจากชุมชน
2 ความคิดเห็น
ผมใช้ฟอนต์ JetBrains อยู่ น่าสนใจดีนะ
ความคิดเห็นบน Hacker News
ช่วงหลังเปลี่ยนมาใช้ Iosevka (ออกเสียงว่า Joseph) ก็เพราะความ เรียบกระชับ แบบนี้นี่แหละ
ลิงก์ GitHub ของ Iosevka
ที่น่าสนใจคือโครงสร้างซอร์สโค้ดของฟอนต์นี้ชัดเจนมากจนแทบจะอ่านเข้าใจได้จริง
เวอร์ชันก่อนหน้าชื่อ Hera เป็นเวอร์ชันไม่บีบแน่นที่ปรับแต่งมาจาก Source Code Pro
พูดตามตรง คำอธิบายว่าเป็น “ฟอนต์สำหรับ ภาษาที่ใช้สัญลักษณ์เยอะ” ยังไม่ค่อยเข้าใจนัก สัญลักษณ์ก็ดูธรรมดาอยู่ หรือว่าแค่เว้นระยะกว้างขึ้นนิดหน่อย?
->,>>=,::จะจัดแนวได้อย่างเป๊ะมากฟอนต์ค่อนข้างสวยเลย แค่ดูเหมือนในตัวอย่างจะไม่มีอักขระ emdash (—) ผมใช้ Markdown บ่อย และฟอนต์โปรแกรมมิงหลายตัวแสดงอักขระนี้ได้ไม่ดี
สกรีนช็อตช่วยให้ ประเมินได้ง่ายขึ้นมาก เมื่อเทียบกับฟอนต์อื่น
แต่ถ้ามีคนต้องการก็จะพิจารณาปรับปรุง
เหมือนกับฟอนต์หลายตัว ฟอนต์นี้ก็ยังจัดแนว ลูกศรแนวตั้ง (↑↓) ได้ดูแปลกๆ
ตัวอักษร
^เดิมทีมีไว้สำหรับเครื่องหมายกำกับเสียงแบบ circumflex ตั้งแต่ยุคเครื่องพิมพ์ดีด เลยมีความสูงไม่สมมาตร ผมคิดว่าถ้าด้านล่างของ caret สมมาตรกับvก็น่าจะดี↑ไปเลยไม่ดีกว่าเหรอ?vก็ไม่ค่อยแฟร์ฟอนต์ควรคง รูปทรงที่คาดเดาได้ ไว้
สำหรับคำบ่นว่า “
->ดูไม่เหมือนลูกศร” วิธีแก้จริงๆ คือใช้ ลูกศรจริงอย่าง ←→ ไปเลย หวังว่าวันหนึ่งภาษาต่างๆ จะรองรับ คุณภาพทาง typography ที่ดีกว่านี้JuliaMono เป็นฟอนต์ที่ออกแบบมาเพื่อรองรับ Unicode ทั้งชุด ของภาษา Julia
ฟอนต์สวยนะ แต่ระยะห่างของคำว่า “Lorem” ด้านบนดูถ่างเกินไปจนรู้สึกว่า kerning แปลกๆ สำหรับผมมันสะดุดตาอยู่เหมือนกัน
Ligature เป็นประเด็นที่ถกเถียงกันพอสมควรในหมู่นักพัฒนา
บางคนมองว่าทำให้โค้ด สวยและอ่านง่ายขึ้น บางคนก็คิดว่า “การซ่อนสัญลักษณ์เป็นเรื่องไม่จำเป็นหรือไม่ซื่อตรง”
อีกบางคนก็บอกว่า “ถ้าภาษารองรับ Unicode ได้ดีจริงก็คงไม่ต้องมี ligature”
สุดท้ายโปรเจกต์นี้เลยไปสะกิดทั้งสามฝั่งพร้อมกัน ซึ่งยิ่งทำให้น่าสนใจ ผมกดดาวบน GitHub แล้ว
สัญลักษณ์ดูวางสูงเกินไปเมื่ออยู่ข้างตัวพิมพ์เล็ก น่าจะเป็นผลจากการพยายามจัดแนวให้เข้ากับวงเล็บ เลยรู้สึกว่า สมดุล ยังขาดไปนิด
พอแหกขนบเดิมกลับทำให้อ่านง่ายขึ้น ขีดกลางถูกออกแบบให้จัดแนวกับ
>เพื่อสร้าง รูปทรงของลูกศรมี ฟอนต์ไอคอน ชื่อ Myna UI อยู่แล้ว อาจทำให้สับสนได้