แฮ่ม…… หลังจากที่ลองคุ้ยแคะแกะเกามาหลายวัน ในที่สุดผมก็หาฟังก์ชัน Font::selectionRectForComplexText() ของไฟล์ webkit/WebCore/platform/graphics/android/FontAndroid.cpp ที่จะต้องเข้าไปแก้ตาม patch

http://android.git.kernel.org/?p=platform/external/webkit.git;a=blobdiff;f=WebCore/platform/graphics/android/FontAndroid.cpp;h=e9cf4c8f81eea9c4d0c6a001a0e0dab3afbcacd8;hp=a430b072354d8c9f835246c833cf6ff1f927bddc;hb=733e4cfb8b3cae83daff5cc7a426ee901227dbc6;hpb=18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

เจอแล้วครับ!!! สำหรับคนที่อยากไปคุ้ยดูบ้าง.. มันอยู่ที่ offset 0x104644 ในไฟล์ libwebcore.so ครับ

ผมก็เลยจัดการใช้ hex editor เข้าไปแก้เรียบร้อย.. 🙂

จากที่ลองใช้งานมายังไม่เจอว่ามีปัญหาใดๆนะครับ (แก้แค่ 4byte เอง ไม่น่ากระทบฟังก์ชันอื่น) สามารถกดลิ้งค์ภาษาไทยได้อย่างมีความสุขซะที ถ้าใครสนใจอยากเอาไปลองก็นี่เลยครับ

http://aet.ath.cx/~aet/libwebcore.so

วิธีลง.
1.ต้อง root เครื่องก่อนนะครับ
1.5 ก๊อปปี้ไฟล์ libwebcore.so ที่โหลดมาไปไว้ในโฟลเดอร์ tools ของ SDK
2.ต่อสาย usb กับเครื่องแล้วสั่งตามนี้เลย

adb push libwebcore.so /sdcard/libwebcore.so-mod
adb shell
su
cd /sdcard
cat /system/lib/libwebcore.so > libwebcore.so-orig
cat libwebcore.so-mod > /system/lib/libwebcore.so
reboot

ตอนสั่ง su ถ้าพึ่ง root ครั้งแรกที่หน้าจอมือถือจะมี popup ของ superuser permissions ขึ้นมาถามว่าจะอนุญาตให้เป็น root หรือเปล่าให้กด allow ครับ

ใช้แล้วได้ผลเป็นงัยบอกด้วยนะครับ ถ้ามีใครสนใจวิธีคุ้ยแคะ เดี๋ยวผมจะพยายาม post วิธีทำอย่างละเอียดให้ 🙂

รูปตัวอย่างหน้าจอครับ

ก่อนแก้

หลังแก้

ขอบคุณทุกท่านที่ติชมครับ