IT

แก้ปัญหา chrome for mac แสดงฟอนต์ภาษาไทยไม่ได้

25 June 2015

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

Screen Shot 2558-06-25 at 00.15.36

เห็นตอนแรกคิดว่าปัญหา encoding แน่นอน ลองเปลี่ยน encoding ดู จะ Auto-Detect, Thai หรืออะไรก็ตาม ไม่หายซักอันครับ เลยลองเสิร์ชดูว่ามีคนเป็นเหมือนกันไหม ก็เหมือนจะมีคนเป็นอยู่ เลยลองแก้ตามที่เขาบอก ปรากฏว่าไม่หายซักอัน วิธีดังกล่าวมีต่อไปนี้

  • เข้า chrome://flags/ แล้วมองหา DirectWrite แก้เป็น enable/disable ลองดู แต่ปรากฏว่า chrome for mac เวอร์ชั่นที่ผมใช้อยู่ (43.0.2357.130 64-bit) ไม่มีข้อนี้ให้เลือกเลยครับ
  • ลอง atsutil databases -removeUser แล้ว restart ATS server ทำแล้วก็ไม่หาย
  • ไปที่ ~/Library/Google แล้วลบทิ้งทั้ง folder เลย แล้วลง chrome ใหม่ ก็ไม่หายอยู่ดี

วิธีแก้ที่พบว่าเวิร์ค ตอนแรกผมเจออยู่หนึ่งวิธี

วิธีแก้ 1: เปลี่ยน font ของ chrome เป็น Tahoma

ไปที่ chrome settings แล้วเปลี่ยนฟอนต์ Standard, Serif เป็น Tahoma ให้หมด จากเดิมจะเป็นแบบในรูป

Screen Shot 2558-06-25 at 15.34.44

วิธีนี้สามารถทำให้แสดงผลภาษาไทยได้จริง แต่ผมชอบฟอนต์ Times เพราะมันสวยกว่า Tahoma จึงไม่อยากทำเท่าไหร่


ตกลงปัญหานี้เกิดจากอะไร

ผมลองเข้าเว็บภาษาไทยอื่นๆ ที่ผมเข้าแล้วมีปัญหาเหมือนกัน ลองดู font-family จะพบว่าทุกเว็บมีสิ่งหนึ่งร่วมกันคือใช้ Google Fonts ในการแสดงผล

Screen Shot 2558-06-25 at 15.37.09

ถ้าเราลองเปลี่ยน font-family โดยเพิ่ม tahoma เข้ามาเป็น fallback ก่อน sans-serif พบว่าปัญหานี้หายไป

Screen Shot 2558-06-25 at 15.39.07

ผมเลยสงสัยว่าแล้วถ้าเราไม่ได้ embedded font จาก Google Fonts แต่ใช้ css font-face ล่ะ จะมีปัญหาหรือเปล่า เลยล้องสร้างไฟล์ demo html ขึ้นมาไฟล์นึงแล้วเรียก font จาก css

Screen Shot 2558-06-25 at 15.53.40

สรุปว่าได้แหะครับ ทั้งๆที่เป็นฟอนท์เดียวกัน ดังนั้น สรุปได้ว่าปัญหานี้จะเกิดขึ้นเมื่อ

  1. เว็บนั้นใช้ Google Fonts
  2. ในเครื่องเราไม่มีฟอนต์นั้นอยู่ในเครื่อง แทนที่ chrome จะ fallback กลับไปที่ system font ดันเอาตัวอักษรประหลาดมาใส่แทน

ลองหาข้อมูลเพิ่มเติม รู้สึกว่านี่จะเป็น bug ของ chrome ที่มีมายาวนาน ในบอร์ดฝรั่งจะเป็นว่าถ้าเว็บใช้ Google fonts แล้วในเครื่องไม่มี มันจะแสดงผลเป็นตัวประหลาด ทั้งๆที่เป็นภาษาอังกฤษ รู้สึกต่อมา chrome จะแก้  bug นี้ไปแล้ว แต่เขาอาจยังไม่รู้ว่าถ้ามันเป็นอังกฤษปนไทย มันยังมีปัญหานี้อยู่


วิธีแก้โดยไม่ต้องเปลี่ยนฟอนต์ของ Chrome

เข้าไปที่ Google Fonts แล้วโหลดฟอนต์ที่เราไม่มีมา จากนั้น install ลงในเครื่อง

Screen Shot 2558-06-25 at 16.01.17

restart chrome ใหม่ เท่านี้เมื่อเราเข้าเว็บก็จะแสดงผลได้ปกติครับ ถ้าไม่ได้ยังไงลอง restart เครื่องแล้วลง font ใหม่ก่อนเปิด chrome ดูนะครับ


สำหรับคนทำเว็บ

คือเนื่องจาก chrome for mac มันมี bug นี้อยู่ และเราไม่รู้ว่าเขาจะแก้เมื่อไหร่ และ user ทั่วๆไปคงไม่มีใครมาลง open sans, lato อะไรพวกนี้ถ้าไม่ได้ทำงานสาย design ทางฝั่งคนทำเว็บเองอาจต้องพิจารณาใส่ tahoma มาเป็น fallback ก่อน sans-serif ครับ คือแทนที่จะ font-family: “Lato”, sans-serif; ก็เปลี่ยนเป็น font-family: “Lato”, “tahoma”, sans-serif แทน

ก็จบแล้วครับ หวังว่าจะเป็นประโยชน์ต่อผู้ที่ประสบปัญหาเดียวกันนะครับ หรือไม่ chrome เวอร์ชั่นถัดๆไปอาจแก้เรื่องนี้เองครับ

You Might Also Like

No Comments

Leave a Reply