XCode Font

ตั้งแต่ Swift เกิดขึ้นมา มันก็รองรับ Unicode ตั้งแต่แรก ดังนั้นแล้ว เราก็สามารถที่จะประกาศตัวแปร ด้วยตัวอักษรภาษาไทย หรือจะใช้ emoji ก็ได้ ดังเช่น

emoji_thai

แม้ตัวผมเองไม่ค่อยใช้ภาษาไทยในการประกาศชื่อตัวแปร สักเท่าไหร่ อย่างไรก็ตามเมื่อเขียนคอมเมนต์หลายๆครั้งผมก็จะพิมพ์ด้วยภาษาไทยเป็นหลัก นอกจากนี้ในบางโปรเจค มีการประกาศตัวแปรสตริงที่เก็บข้อความภาษาไทย และปัญหาหงุดหงิดที่ผมเจอเมื่อพิมพ์ภาษาไทยใน Xcode  ก็คือ ภาษาไทยมันเล็กจนอ่านแทบไม่ออก หรืออ่านได้ยากมาก ดังเช่น ในรูป

thai_befor1

ด้วยชีวิตของโปรแกรมเมอร์ที่ต้องอยู่กับ Xcode ตลอดเวลา การจะมานั่งเพ่งข้อความภาษาไทยที่ดูอ่านยาก เป็นเวลานานๆ มันก็ปวดตา ผมก็เลยแก้ปัญหาแรกด้วย การเพิ่ม font ให้มันใหญ่ขึ้นสักหน่อย วิธีการก็คือเข้าไปที่ preference ของ Xcode แล้วก็จัดการเพิ่มขนาดของตัวอักษร

font

ผมเลือกที่จะสร้าง theme ขึ้นมาใหม่จาก theme basic เดิม แล้วก็เปลี่ยน font ให้มีขนาดใหญ่ขึ้น แต่อย่างไรก็ตามผมก็พบว่าตัวอักษรภาษาไทย มันก็ยังไม่ชัดอยู่ดี

thai_before2

จากรูปจะเห็นว่า แม้ว่าจะปรับฟ้อนต์ให้มันใหญ่ขึ้นมันก็ยังอ่านยาก และยิ่งเขียนโปรแกรมใน Macbook ที่มีหน้าจอ 13 นิ้ว การเพิ่มขนาดตัวอักษรให้ใหญ่ขึ้นนั้น จะทำให้เรามองเห็นโค้ดได้น้อยบรรทัดลง มันก็ทำให้เราต้องเลื่อน scroll บ่อยขึ้น ซึ่งผมว่ามันลำบากมากกว่าเดิม ต้นตอของปัญหาที่เกิดขึ้นก็คือแม้ว่า Xcode จะใช้ฟอนต์ Menlo ที่อ่านง่ายๆและมองได้นานๆ แต่เนื่องตัวอักษรภาษาไทยในฟ้อนต์ Menlo ไม่มี ดังนั้น  Xcode ก็จะเลือกใช้ฟ้อนต์อื่นแทน และนั่นก็คือ Ayutaya ซึ่งมันไม่เหมาะสำหรับการเขียนโปรแกรมเลย

ทำยังไงดี ?

อันดับแรกที่ผมพยายามจะทำก็คือการเปลี่ยน font ซึ่งก็ได้ลองเปลี่ยนดูหลายๆแบบ เช่น ลองใช้ Monaco ซึ่งเป็นฟ้อนต์เก่าที่  Xcode เคยใช้ตั้งแต่ version 3 หรือโหลดฟ้อนต์ที่เค้าว่าดีสำหรับการเขียนโค้ดเช่น DejaVu , Consolas มาลองใช้งาน แต่ปัญหามันก็ยังเหมือนเดิมคือ ภาษาไทย มันก็ยังแสดงผลด้วยฟอนต์ Ayuthaya อยู่ดี อย่างรูปด้านล่างคือเปลี่ยนใช้ฟ้อนต์ Monaco

mono

จากการเปลี่ยนฟอนต์เล่นๆไปๆมา ก็พบว่า ฟ้อนต์ภาษาไทย จริงๆมันเปลี่ยนได้ แต่มันจะเปลี่ยน ก็ต่อเมื่อฟ้อนต์นั้นรองรับภาษาไทยมาตั้งแต่แรกเลย อย่างเช่น Thonburi

thonburi

เท่าที่ลองเปลี่ยนไปมาดูหลายๆฟ้อนต์ก็พบว่า Thonburi นี่แหละอ่านง่ายดี  แต่ปัญหาใหม่คือ .. ผมไม่ชอบตัวภาษาอังกฤษ ของฟ้อนต์ Thonburi เลย ให้ตายเหอะ .. ดูๆแล้วมันไม่เหมาะกับเขียนโปรแกรมเลย

อยากให้ฟ้อนต์ภาษาอังกฤษเป็น menlo ส่วนภาษาไทยเป็น thonburi งั้นสร้างฟ้อนต์เองเลยดีไม๊ ? … แต่มานั่งคิดๆก็รู้สึกว่า สร้างฟ้อนต์ใหม่มันเหมือนเป็นการ ขี่ช้างไล่จับตั๊กแตนไปหน่อย แล้วมันจำเป็นถึงต้องสร้างฟ้อนต์ใหม่เพื่อแก้ปัญหาภาษาไทยใน XCode อ่านยาก ขนาดนั้นเลยเหรอ ?

จริงๆแล้วปัญหามันคืออะไร ..

ผมพบว่าปัญหามันคือ ถ้าเลือกใช้ฟ้อนต์ที่ไม่รองรับภาษาไทย .. มันจะแสดงด้วยฟ้อนต์ Ayuthaya  งั้นถ้าเราสามารถเปลี่ยนให้มันเป็นฟ้อนต์อื่นแทน Ayuthaya ได้ละ .. มันก็น่าจะแก้ปัญหาได้เช่นกันใช่ไหม ?

YES !!!! That’s right.

ผมนั่ง search google เพื่อหาวิธีการไขอยู่นาน จนกระทั่งพบว่า เราสามารถแก้ไข font – default ของ mac ได้ นั่นก็คือเข้าไปแก้ไขที่ไฟล์ DefaultFontFallbacks.plist ซึ่งจะอยุ่ในโฟลเดอร์

/System/Library/Frameworks/ApplicationServices.framework/Frameworks/

เมื่อเปิดไฟล์ขึ้นมา ให้หา monospace และเพิ่ม

(
( “th”, “Thonburi” ),
),

ต่อท้าย “Monaco” ดังที่แสดงในรูป

edit_font

สิ่งที่เราได้เพิ่มเข้าไปคือ บอกว่าเมื่อไหร่ก็ตามหากเจอฟ้อนต์แบบ monospace และไม่มีภาษาไทยรองรับ ให้เปลี่ยนไปใช้ฟ้อนต์ Thonburi ก่อนเสมอ

จากนั้นก็ Save เสร็จแล้วก็ปิดและเปิด XCode ใหม่ ก็จะพบว่า ภาษาไทยแสดงด้วยฟ้อนต์ Thonburi แล้ว

thai_after1

เพียงเท่านี้เราก็ยังได้ฟ้อนต์ Menlo ที่อ่านง่ายเหมาะกับการเขียนโค้ด และใช้ฟ้อนต์ภาษาไทย Thonburi ที่อ่านง่ายกว่าฟ้อนต์ Ayuthaya เมื่อเปรียบเทียบกัน ก็จะยิ่งเห็นความแตกต่าง

befor_after

เห็นได้ชัดเลยว่า ภาษาไทย อ่านง่ายมากขึ้น และภาษาอังกฤษสำหรับเขียนโค้ด ก็ยังอ่านง่ายเหมือนเดิม

ก็ลองไปปรับเปลี่ยนกันดูนะครับ ถ้าใครไม่ชอบ Thonburi จะเปลี่ยนเป็นอย่างอื่นก็ตามใจเลยครับ และก็ก่อนแก้ไข แนะนำว่าควรจะ backup ไฟล์เดิมก่อน เผื่อว่าทำอะไรผิดพลาด

Happy Coding ครับ 🙂

3 thoughts on “XCode Font”

  1. monospace

    th
    Thonburi

    แก้ไขในรูปแบบ XML ครับ เอามาแสดงเผื่อท่านอื่นๆครับ

  2. ในรูปที่ว่าเปิดไฟล์ DefaultFontFallbacks.plist
    ไม่ทราบว่าใช้โปรแกรมอะไรเปิดครับ

    ผมเปิดโดย TextWrangler
    มันเป็นเหมือน XML งงเลยครับ
    ไม่รู้จะแก้ไขยังไงครับ

    และผมเปิด /System/Library/Frameworks/CoreText.framework/Versions/A/Resources/DefaultFontFallbacks.plist

    ตัวนี้ไม่ทราบคือตัวเดียวกันมั๊ยครับ

    1. ใช่ครับ อันเดียวกัน เปิดมาก็จะเป็นไฟล์เหมือน XML นั่นแหละครับ ให้ search หาข้อความ “monospace” ที่ผมได้บอกไว้ ตรงนั้นจะเป็นจุดให้แก้ไข แล้วก็เพิ่มข้อความที่ผมบอกไป อย่าลืม backup file ก่อนนะครับ

Leave a Reply