โปรดแก้ตัวความยาวของคำถามนี้ ฉันต้องอธิบายทั้งหมดนี้เพื่อช่วยผู้อื่นและหลีกเลี่ยงผู้ให้ข้อมูลที่มีประโยชน์เพื่อให้คำตอบโดยไม่ต้องขอคำชี้แจง
ความต้องการของฉันในหนึ่งบรรทัด: "เพื่อเปิดใช้งานโทรศัพท์ Android เพื่อแสดงตัวอักษรภาษาทมิฬอย่างถูกต้อง"
การทำอย่างประณีต: ทมิฬเช่นเดียวกับภาษาอินเดียอื่น ๆ มีระบบการแสดงผลอักขระที่ซับซ้อน ต่างจากสคริปต์ภาษาอังกฤษหรือละตินอื่น ๆ มันมี glyph (สิ่งที่คุณเห็นในหน้าจอ) ประกอบด้วยอักขระมากกว่าหนึ่งตัว Android ไม่มีความสามารถในการเรนเดอร์สคริปต์ที่ซับซ้อนเช่นนั้น (มีข้อยกเว้น) เป้าหมายของฉันคือรู้ว่าฉันสามารถมอบความสามารถให้กับโทรศัพท์หรือแท็บเล็ต Android ได้อย่างไร
พื้นหลังเล็ก ๆ ที่ฉันรวบรวมมา: การแสดงสัญลักษณ์บนหน้าจอ Android ต้องใช้ไฟล์ฟอนต์ที่เหมาะสมก่อน อุปกรณ์ Android มีโฟลเดอร์/ ระบบ / แบบอักษรซึ่งมีไม่กี่ตัว ไฟล์ที่น่าสนใจที่สุดในโฟลเดอร์นั้นคือ DroidSansFallback.ttf ตามชื่อแนะนำเมื่อระบบ Android ไม่สามารถค้นหาตัวอักษรในแบบอักษรของระบบ (ซึ่งอาจเป็น DroidSans.ttf หรือ DroidSans-Bold.ttf เป็นต้น) มันกลับไปค้นหาใน DroidSansFallback.ttf
โดยการแทนที่ไฟล์ฟอนต์ที่เหมาะสมจาก PC (Latha.ttf หรือ Lohit-Tamil.ttf - เป็นฟอนต์สำหรับทมิฬ) และ DroidSansFallback.ttf จะเปิดใช้งานเพื่อแสดงอักขระภาษาทมิฬในอุปกรณ์ ไม่ใช่เรื่องง่ายที่จะเปลี่ยนและเกี่ยวข้องกับการรูทอุปกรณ์และการติดตั้งระบบที่เขียนได้
แม้จะมีปัญหาเหล่านั้นแม้ว่าจะมีการแทนที่ DroidSansFallback.ttf อักขระภาษาทมิฬที่แสดงขึ้นจะแสดงผลไม่ถูกต้อง ตัวอักษรทมิฬ "தி" เป็นตัวเชื่อมของสองตัวอักษรและแทนที่จะแสดงเป็น "தி" มันจะแสดงเป็น "தி" โดยไม่มีช่องว่าง แม้ว่าจะเพียงพอที่จะอ่านข้อความสั้น ๆ แต่ก็ไม่สามารถใช้อ่านหนังสือ ฯลฯ
จาก Android 4.0 ในวอร์ด, ทมิฬและภาษาอื่น ๆ ได้รับการสนับสนุนผ่านเบราว์เซอร์ดังที่กล่าวไว้ในภาพรวม Android 4.x API ดังที่เห็นด้านล่าง
Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser
คำที่ต้องแจ้งคือ "ใน WebView และเบราว์เซอร์ในตัว" ซึ่งหมายความว่าอักขระภาษาทมิฬจะถูกแสดงอย่างสมบูรณ์หากถูกแสดงเป็นเนื้อหา HTML และจะไม่ถูกแสดงเป็นอย่างอื่น Opera และเบราว์เซอร์อื่น ๆ ทำสิ่งนี้แม้กระทั่งก่อน Android 4.0 ด้วยการแทนที่ภาพแทนตัวละคร
ฉันสังเกตเห็นว่าในอุปกรณ์บางอย่างที่กำหนดเป้าหมายตลาดอินเดีย (เช่น LG Optimus One, โทรศัพท์และแท็บเล็ต Samsung ส่วนใหญ่) สามารถแสดงภาษาทมิฬได้อย่างถูกต้องทั้งในเบราว์เซอร์และแม้แต่ในเบราว์เซอร์เช่นที่ติดต่อข้อความตัวอักษรชื่อไฟล์ ฯลฯ ฉันประหลาดใจที่พวกเขาทำสิ่งนี้แม้ใน Android 2.3 เป็นต้นไป ฉันยังสังเกตเห็นว่ารุ่นเดียวกันที่กำหนดเป้าหมายประเทศที่ไม่ใช่ประเทศอินเดียที่ใช้ Android รุ่นเดียวกันไม่รองรับการแสดงตัวอักษรภาษาทมิฬ
สิ่งนี้ทำให้ฉันตรวจสอบเพิ่มเติมและถึงข้อสรุปว่า Android (เป็นระบบปฏิบัติการ Linux อื่น ๆ ) ขึ้นอยู่กับเอ็นจิ้นการแสดงผลแบบอักษรเพื่อแสดงอักขระที่ซับซ้อนเช่นนั้น สองเครื่องยนต์ที่ฉันเจอคือ Skia และ Harfbuzz ฉันสังเกตว่า LG ใช้ skia และ Samsung ใช้ห้องสมุดของ Harfbuzz ในอุปกรณ์ของพวกเขาเพื่อนำความสามารถนี้มาใช้
ฉันเจอเว็บไซต์หลายแห่งที่แนะนำให้แทนที่ไลบรารีและฟอนต์เหล่านี้ มันไม่ทำงานและส่งผลให้แช่แข็ง โชคดีที่ฉันสำรองข้อมูลโดยใช้ clockworkmod และด้วยเหตุนี้ฉันจึงกู้คืนโทรศัพท์ของฉัน
แม้ว่าฉันจะอธิบายเรื่องนี้กับทมิฬ แต่ก็ใช้ได้กับภาษาอินเดียส่วนใหญ่
คำถามของฉันมาที่นี่ (ถ้าคุณยังอ่านอยู่)) ตอนนี้แน่ใจว่าเป็นที่ชัดเจนว่าไฟล์ TTF ควรมีตัวอักษรและไลบรารี่ที่เหมาะสม (libskia.so หรือ libharfbuzz.so) เพื่อให้มันถูกต้อง มีใครรู้หรือไม่ว่าผู้ผลิตเหล่านี้สามารถให้ความสามารถได้อย่างไร ฉันพร้อมที่จะสร้าง ROM ของตัวเองจาก AOSP (Android Open Source Project)