← All posts · บทความทั้งหมด

Designing Thai and English in one paragraph

การออกแบบไทย-อังกฤษในย่อหน้าเดียวกัน


ลองจับคู่ serif ฝรั่งกับ serif ไทย แล้วคุณจะรู้ว่า — มีอะไรบางอย่าง คอยขัดคุณตลอดเวลา

x-height ไม่เท่ากัน ระยะบรรทัดที่หายใจสบายสำหรับภาษาอังกฤษ จะบีบวรรณยุกต์ด้านบนของ ไ ใ จนแน่น ตัวเอียง (italic) ที่สื่อ "น้ำเสียง" ในภาษาอังกฤษ พอเป็นไทยก็แค่…เบลอ ๆ เพราะอักษรไทยดั้งเดิมไม่ได้ออกแบบมาให้เอียง

ผมใช้เวลาอยู่กับเรื่องนี้นานพอสมควร กว่าจะหาจุดที่ทั้งสองภาษาอยู่ในย่อหน้าเดียวกันได้ โดยไม่ทะเลาะกัน

คู่ที่ผมเลือก

  • IBM Plex Serif สำหรับ body ภาษาอังกฤษ
  • IBM Plex Sans Thai Looped สำหรับ body ภาษาไทย
  • ทั้งคู่ออกแบบใต้ family เดียวกัน เลยมีจังหวะที่ใกล้กัน พอสลับภาษากลางย่อหน้า สายตาก็ไม่กระตุก

เคล็ดลับไม่ใช่การเลือกฟอนต์สวย ๆ มันคือการเลือกฟอนต์ที่แชร์เจตนาของคนออกแบบ

ฟอนต์สวยมีเป็นล้าน แต่ฟอนต์ที่ "เคารพกัน" มีน้อยกว่านั้นเยอะครับ พอผมเริ่มมองหา คู่ที่ออกแบบโดยทีมเดียวกัน ปัญหาทางสายตาก็หายไปเกินครึ่ง โดยที่ผมไม่ต้องไปฝืน override อะไรเลย

เรื่องของ line-height

ย่อหน้าภาษาไทยของผมตั้งไว้ที่ line-height: 1.78 ส่วนภาษาอังกฤษอยู่ที่ 1.65 ฟังดูต่างนิดเดียว แต่ในการอ่านจริง ๆ มันคือคนละเรื่อง

ภาษาไทยมีสระบน สระล่าง มีวรรณยุกต์ที่ลอยเหนือพยัญชนะ ถ้าระยะบรรทัดแน่นเกินไป สระบนของบรรทัดล่างจะไปชนสระล่างของบรรทัดบน คนอ่านจะรู้สึกอึดอัดโดยไม่รู้ตัวว่าทำไม

ภาษาอังกฤษไม่มีปัญหานี้ เพราะตัวอักษรอยู่บนเส้น baseline เดียว — ขึ้นแค่ ascender ลงแค่ descender จบ

ตัวเอียงในไทย

นี่เป็นเรื่องที่ผมยังหาคำตอบที่พอใจไม่ได้

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

ทางออกที่ผมใช้ตอนนี้คือ — เน้นด้วย น้ำหนัก (bold) แทน italic ในภาษาไทย แต่ถ้าย่อหน้าเดียวมีทั้งไทยและอังกฤษ ผมจะใช้ italic กับอังกฤษ และ bold กับไทย ในความหมายเดียวกัน

มันไม่ใช่คำตอบที่สวยที่สุด แต่มันชัดที่สุด และผมว่า "ชัด" สำคัญกว่า "สวย" สำหรับเนื้อหาที่ต้องอ่าน

สิ่งที่ผมเรียนรู้

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

มันเหมือนเขียนโค้ดสองภาษาในไฟล์เดียวกันแหละครับ — TypeScript กับ SQL อยู่คนละ paradigm พยายามให้มัน "เหมือนกัน" ก็ผิดตั้งแต่แรก ปล่อยให้แต่ละอย่าง เป็นตัวเอง แล้วหา interface กลางที่ทั้งคู่เคารพ — แบบนั้นถึงจะเวิร์ก

j ↑ k ↓