2 คะแนน โดย GN⁺ 2025-11-09 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ฟอนต์โมโนสเปซที่ ปฏิบัติต่อสัญลักษณ์ที่ใช้บ่อยในภาษาโปรแกรมเทียบเท่ากับตัวอักษร โดยมีเป้าหมายเพื่อความกลมกลืนทางสายตาในตัวแก้ไขโค้ด
  • ด้วยการออกแบบที่ เน้นสัญลักษณ์ 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 ความคิดเห็น

 
bobross0 2025-11-11

ผมใช้ฟอนต์ JetBrains อยู่ น่าสนใจดีนะ

 
GN⁺ 2025-11-09
ความคิดเห็นบน Hacker News
  • ช่วงหลังเปลี่ยนมาใช้ Iosevka (ออกเสียงว่า Joseph) ก็เพราะความ เรียบกระชับ แบบนี้นี่แหละ
    ลิงก์ GitHub ของ Iosevka
    ที่น่าสนใจคือโครงสร้างซอร์สโค้ดของฟอนต์นี้ชัดเจนมากจนแทบจะอ่านเข้าใจได้จริง

    • Iosevka เป็นฟอนต์ที่สวยมากจริงๆ และลุคแบบ บีบแน่น (condensed look) ของ Myna ก็ได้แรงบันดาลใจมาจาก Iosevka เหมือนกัน
      เวอร์ชันก่อนหน้าชื่อ Hera เป็นเวอร์ชันไม่บีบแน่นที่ปรับแต่งมาจาก Source Code Pro
    • Iosevka รองรับ การ build แบบกำหนดเอง ในตัว ทำให้เลือกได้ทั้งรูปแบบ glyph ที่หลากหลายและ ligature ที่ต้องการ ถือว่าน่าทึ่งมาก
    • เพิ่งรู้เดี๋ยวนี้เองว่า Iosevka เป็นรูปแปลงของ Joseph ใช้มาหลายปีแล้วแต่ไม่เคยรู้แม้แต่การออกเสียง ทั้งที่อยู่ใน README แล้วแท้ๆ
    • Pragmasevka ก็น่าลองเหมือนกัน ย้ายมาจาก Iosevka แล้วรู้สึกว่า อ่านง่าย ขึ้นอีกนิด
    • ผมใช้ Iosevka Orw อยู่ ความกว้างอยู่กึ่งกลางระหว่าง Iosevka มาตรฐานกับ monospace ทั่วไปเลยกำลังดี
  • พูดตามตรง คำอธิบายว่าเป็น “ฟอนต์สำหรับ ภาษาที่ใช้สัญลักษณ์เยอะ” ยังไม่ค่อยเข้าใจนัก สัญลักษณ์ก็ดูธรรมดาอยู่ หรือว่าแค่เว้นระยะกว้างขึ้นนิดหน่อย?

    • หัวข้อโฟกัสข้อแรกบนหน้า GitHub คือ “Near-Perfect Alignment” หมายความว่าสัญลักษณ์หลายตัวอักษรอย่าง ->, >>=, :: จะจัดแนวได้อย่างเป๊ะมาก
    • ผมเป็นดีไซเนอร์นะ ที่ว่าภาษาที่ใช้สัญลักษณ์เยอะในที่นี้หมายถึงภาษาอย่าง Perl หรือ Haskell ที่ ใช้สัญลักษณ์จำนวนมาก ผมอยากทำฟอนต์ที่จัดแนวได้สวยโดยไม่ต้องใช้ ligature
    • เวลาจะอธิบายความต่างด้านดีไซน์ ต้องมีตัวอย่างเปรียบเทียบจริงถึงจะเข้าใจได้ ไม่มีภาพเปรียบเทียบก็เลยงงเป็นธรรมดา
  • ฟอนต์ค่อนข้างสวยเลย แค่ดูเหมือนในตัวอย่างจะไม่มีอักขระ emdash (—) ผมใช้ Markdown บ่อย และฟอนต์โปรแกรมมิงหลายตัวแสดงอักขระนี้ได้ไม่ดี
    สกรีนช็อตช่วยให้ ประเมินได้ง่ายขึ้นมาก เมื่อเทียบกับฟอนต์อื่น

    • เห็นด้วย, em-dash ไม่ใช่แค่อักขระธรรมดา ผมมองว่าเป็น องค์ประกอบสำคัญ ของการเขียนที่ดีเลย (พูดเล่นครึ่งจริงครึ่ง)
    • ขอบคุณสำหรับฟีดแบ็ก ในฟอนต์นี้ผมทำ en-dash ให้กว้าง เลยแยกจาก em-dash ได้ยาก ผมแทบไม่ใช้ em-dash เลยไม่ค่อยรู้สึกว่าต้องแยก
      แต่ถ้ามีคนต้องการก็จะพิจารณาปรับปรุง
  • เหมือนกับฟอนต์หลายตัว ฟอนต์นี้ก็ยังจัดแนว ลูกศรแนวตั้ง (↑↓) ได้ดูแปลกๆ
    ตัวอักษร ^ เดิมทีมีไว้สำหรับเครื่องหมายกำกับเสียงแบบ circumflex ตั้งแต่ยุคเครื่องพิมพ์ดีด เลยมีความสูงไม่สมมาตร ผมคิดว่าถ้าด้านล่างของ caret สมมาตรกับ v ก็น่าจะดี

    • ผมไม่เคยเห็นใครใช้ caret เป็นลูกศรขึ้นลงเลย เลยไม่คิดว่าจำเป็นต้องสมมาตร
    • การใช้ caret เป็นลูกศรแนวตั้งดูไม่สมจริง เพราะต้องพิมพ์ข้ามสองบรรทัดด้วยซ้ำ อยากรู้เหมือนกันว่ามีภาษาไหนใช้แบบนี้จริงไหม
    • หรือกำลังจะทำ ligature ข้ามบรรทัดเหรอ? ใช้ Unicode ไปเลยไม่ดีกว่าเหรอ?
    • ผมเป็นดีไซเนอร์ การตรวจจับการจัดวางแบบนี้ทำได้ยาก และ caret เดิมทีก็เป็น สัญลักษณ์โอเปอเรเตอร์ อยู่แล้ว จึงไม่ควรทำให้ความหมายเชิงโปรแกรมเสียไป การเอาไปเทียบกับ v ก็ไม่ค่อยแฟร์
    • เหตุผลทางประวัติศาสตร์ของ caret ไม่ได้สำคัญนัก ตอนนี้ทุกคนชินกับรูปร่างแบบนี้แล้ว ถ้าเปลี่ยนฟอนต์เพื่อเคสพิเศษแบบนี้กลับจะยิ่งทำให้สับสน
      ฟอนต์ควรคง รูปทรงที่คาดเดาได้ ไว้
  • สำหรับคำบ่นว่า “-> ดูไม่เหมือนลูกศร” วิธีแก้จริงๆ คือใช้ ลูกศรจริงอย่าง ←→ ไปเลย หวังว่าวันหนึ่งภาษาต่างๆ จะรองรับ คุณภาพทาง typography ที่ดีกว่านี้

    • ผมเป็นดีไซเนอร์ การจะได้ทั้ง ความงามและความสม่ำเสมอ พร้อมกันนั้นเป็นไปไม่ได้ เราเลยพยายามทำให้โค้ดแบบ ASCII ดูดีโดยไม่ต้องพึ่ง ligature
    • ligature ก็มีอยู่นะ
  • JuliaMono เป็นฟอนต์ที่ออกแบบมาเพื่อรองรับ Unicode ทั้งชุด ของภาษา Julia

    • ขอบคุณสำหรับลิงก์ ดูเหมือนจะมี glyph เยอะมาก ที่น่าสนใจคือยังใช้ ระบบ fallback อย่าง JuliaMono2, 3, 4 เพื่อก้าวข้ามข้อจำกัดของฟอนต์ด้วย
    • ผมเป็นดีไซเนอร์ ปกติผมทำงานอยู่ในช่วง ASCII เป็นหลัก แต่ถ้าตั้ง JuliaMono เป็น ฟอนต์เสริม ให้กับ Myna ก็ช่วยขยายการรองรับ Unicode ได้
  • ฟอนต์สวยนะ แต่ระยะห่างของคำว่า “Lorem” ด้านบนดูถ่างเกินไปจนรู้สึกว่า kerning แปลกๆ สำหรับผมมันสะดุดตาอยู่เหมือนกัน

    • ผมเป็นดีไซเนอร์ ใช้ทุกวันจนเริ่มชินกับข้อบกพร่องไปแล้ว แต่คำทักนี้ก็มีเหตุผลนะ เวอร์ชันหน้าจะลองพิจารณา ปรับ kerning ดู ถ้ามีตัวอย่างเฉพาะเจาะจงก็ช่วยเปิด issue ไว้ได้เลย
  • Ligature เป็นประเด็นที่ถกเถียงกันพอสมควรในหมู่นักพัฒนา
    บางคนมองว่าทำให้โค้ด สวยและอ่านง่ายขึ้น บางคนก็คิดว่า “การซ่อนสัญลักษณ์เป็นเรื่องไม่จำเป็นหรือไม่ซื่อตรง”
    อีกบางคนก็บอกว่า “ถ้าภาษารองรับ Unicode ได้ดีจริงก็คงไม่ต้องมี ligature”
    สุดท้ายโปรเจกต์นี้เลยไปสะกิดทั้งสามฝั่งพร้อมกัน ซึ่งยิ่งทำให้น่าสนใจ ผมกดดาวบน GitHub แล้ว

    • ใน editor ส่วนใหญ่ ligature เป็น ตัวเลือก ที่เปิดปิดได้อยู่แล้ว เพราะงั้นก็ไม่ได้กีดกันใคร
  • สัญลักษณ์ดูวางสูงเกินไปเมื่ออยู่ข้างตัวพิมพ์เล็ก น่าจะเป็นผลจากการพยายามจัดแนวให้เข้ากับวงเล็บ เลยรู้สึกว่า สมดุล ยังขาดไปนิด

    • ผมเป็นดีไซเนอร์ ฟอนต์ทั่วไปเน้นข้อความเป็นหลักเลยยึดตามการจัดแนวแบบดั้งเดิม แต่ โค้ดไม่ใช่ข้อความ
      พอแหกขนบเดิมกลับทำให้อ่านง่ายขึ้น ขีดกลางถูกออกแบบให้จัดแนวกับ > เพื่อสร้าง รูปทรงของลูกศร
  • มี ฟอนต์ไอคอน ชื่อ Myna UI อยู่แล้ว อาจทำให้สับสนได้

    • ผมเป็นดีไซเนอร์ ขอบคุณที่บอก แต่คิดว่าคงไม่ทำให้สับสนมากนัก