เอา .. ลองส่งเข้าหัวข้อเก่าดูดิ๊......
หลังจากนั่งปลง ๆ เรื่องตามแปล l10n ของ KDE 4.1 เพราะใกล้วันที่ KDE 4.1
จะออกเต็มทีแล้ว
เพราะเยอะซะเหลือเกิน และที่เหลือก็เป็นประโยคที่เริ่มซับซ้อนขึ้นเรื่อย ๆ :P
เมื่อวานเลยมานั่งไล่ harfbuzz ใน qt 4.4 ดูให้หายเซ็ง
ปรากฏว่าฟลุ้คแก้ให้มันตัดคำกับ libthai ได้ครับ
เลยเอามาให้ช่วยกันลองดู ช่วยกันหาบั๊ก รวมทั้งช่วยแก้ไขจุดที่ผมพลาด ๆ ด้วยละกัน
โค้ดผมใช้ dlopen เพื่อโหลดไลบรารีนะครับ
แต่ว่ายังไม่รู้ว่าจะไปดักการเลิกใช้ไลบรารี
เพื่อเรียก dlclose ตอนไหน เลยไม่แน่ใจว่าจะส่งผลต่อหน่วยความจำมากหรือเปล่า
(ตอนแรกก็เขียนให้ลิงค์กับ libthai โดยตรง แต่ดู ๆ แล้วแบบ dynamic load
จะทำให้ไม่ต้องแก้ซอร์สที่นำไปใช้มากนัก)
สำหรับ KHTML ยังคงต้องใช้ libthai.la อยู่นะ ไม่งั้นมันหาไลบรารีไม่เจอ
ส่วนโปรแกรมอื่น ๆ ที่อิง Qt 4.4 ใช้ตัดคำได้ทั้งหมดโดยไม่ต้องใช้
libthai.la libthai.so ครับ
(ผมเรียก dlopen "libthai.so.0", ... น่ะ แฮ่)
แพตช์อยู่ในแฟ้มแนบนะครับ รอการตรวจสอบและแก้ไขครับ..
สำหรับตอนนี้ยังแค่ตัดคำได้อย่างเดียว กำลังไล่ ๆ ดูค่า
attributes[x].wordBoundary กับ
attributes[wi].charStop
อยู่ เพื่อให้มันสามารถกระโดดทีละคำได้ ใครพอมีเวลาช่วยแฮกทีนะครับ
ส่วนเรื่องเลย์เอาต์สระกับวรรณยุกต์บน กับการหลบอักษรมีหาง ผมไม่ได้ไล่ดูนะครับ
เช่นเคย รอผู้รู้และผู้มีเวลามาจัดการ :P
โด่งอ่ะ.
KDE 4.1RC1 Screen shot:
http://farm4.static.flickr.com/3153/2695354848_287b88244b_o.png
http://farm4.static.flickr.com/3019/2695354846_558b8065f9_o.png
http://farm4.static.flickr.com/3094/2695354838_820f4992e4_o.png
http://farm4.static.flickr.com/3008/2695354832_5a15cd21ee_o.png
ต้องใช้ e-mail เดียวกับที่ใช้สมัคร group นะครับ ไม่งั้นมันจะถือเป็นบุคคล
ภายนอก
บทงานจะมาก็มาพร้อมกัน.. (ชักสงสัยว่ามันมีฤดูกาลของมันหรือไร)
ผมเลยยังหาเวลาดูแพตช์บ่ได้นะครับ คงฝากคนอื่นดูไปก่อน
เทพ.
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/
เอ ผมก็ใช้จีแมวตลอดนะครับ แต่ไฉนใยไม่ได้ก็ไม่รู้
พอลองอีกทีตอนค่ำ ก็ใช้ได้แล้ว สงสัยจะเป็นที่อากู๋กรุ๊ปนี่แหละครับ
ขอส่งแพตช์ใหม่แทนแพตช์เดิมครับ
- ตัดสินใจเพิ่มการใช้ atexit() เพื่อเรียก dlclose (libthai) หากจบโปรแกรมตามปกติ
http://farm4.static.flickr.com/3278/2697261789_eac06571dd_o.png
ส่วนปัญหาที่ผมเจอเอง ก็มี
- รู้สึกว่าโปรแกรมต่าง ๆ โดยรวม จะทำงานได้ช้าลงเล็กน้อย
- ยิ่งถ้าสายข้อมูลที่ใช้ตัดคำยาวมาก จะทำให้โปรแกรมหน่วงไปเลย
เช่น KWord เปิดเอกสารที่มีย่อหน้าติดกันยาวเหยียด จะทำให้โปรแกรมหน่วงสุด ๆ
ถ้าเปลี่ยนมาใช้เธรดร่วมด้วยนี่จะดีขึ้นหรือเปล่าครับ มีความคิดเห็นว่าไงครับ ?
หรือว่าจะมีเทคนิคไหนบ้าง ที่จะช่วยทำให้การตัดคำทำได้เร็วขึ้นกว่านี้ครับ
โด่งอ่ะ.
แต่ว่าจะถามว่าได้ลอง patch คุณ Golf MM อันนี้ยังครับ คิดว่าแก้ปัญหากระโดดคำ ฯลฯ แล้วครับ
ทำตอน Qt 4.3
http://linux.thai.net/viewvc/viewvc.cgi/software/qt/x11-free-4.3.1/
ตอนเช้าเหมือนเห็นเมลแวบๆ ว่ามี post เข้ามาที่ list นี้และสงสัยว่าจะเป็น spam
มันเลยสกัดไว้ พอดีอ่านบนมือถือมันกดลำบาก เลยว่าะจะดูตอนเย็น ก็สงสัยจะเป็นเมลของคุณโด่งอ่ะ
สงสัย googlegroups มันเพี้ยนจริงๆ :)
Ott
เพิ่งนึกได้ครับว่าทำไมไม่เอาของคุณกอล์ฟมาดูเทียบกัน..
แพตช์ของคุณกอล์ฟนี่ผมไม่เคยได้ทดสอบเลยนะครับ
เนื่องจากผมต้องใช้ Qt 4.4 (ตัวก่อนเบต้า) มาตั้งแต่ต้นปี เพราะไล่ l10n
ของ KDE 4.1 ใน trunk อยู่
แล้วพอได้แพตช์มาก็ลองแพตช์ดู ปรากฏว่ากับ Qt 4.4 ตำแหน่งมันถูกย้ายออกมาที่
harfbuzz อย่างที่เคยแจ้งนั่นแหละครับ เลยไม่ได้ลองแก้ดู
ว่าแล้วก็กลับมาแปล l10n ต่อ :p
ตอนนี้เทียบกับแพตช์คุณกอล์ฟหมดแล้วนะครับ ที่แก้ไปก็มี
* qt-x11-4.4.0-harfbuzz_thai.patch
- เพิ่มส่วนจัดการฟิลด์ charStop (ยกของคุณกอล์ฟมาเลย ;D )
เพื่อให้กระโดดข้ามเซลล์ได้ถูกต้อง
- เพิ่มการใช้ฟิลด์ wordBoundary ของ attributes มาใช้ในการเช็คคำ
เพื่อกระโดด/เลือกทีละคำ
* qt-x11-4.4.0-thai_gui_text.patch
- เพิ่มส่วนเช็คฟิลด์ wordBoundary
เพื่อให้เคอร์เซอร์และการเลือกเป็นคำกระโดดได้อย่างถูกต้อง
(แก้จากของเดิมที่คุณกอล์ฟใช้ lineBreakType มาเช็ค)
- แก้การขีดเส้นใต้กรณีเซลล์นั้นมีสระ/วรรณยุกต์ บน-ล่าง (จากของคุณกอล์ฟ)
เทียบกับของคุณกอล์ฟแล้ว ยังเหลือส่วน shaper กับส่วน xim
นะครับที่ผมไม่ได้เอามาเพิ่มไว้
เพราะเท่าที่ดู ดูเหมือน BasicShape มันก็เรนเดอร์ได้สวยแล้วอ่ะครับ
ไม่ก็รอคุณกอล์ฟมาแก้เพิ่มเติมดีกว่า แหะ ๆ
จริง ๆ ผมมาติดที่ตรง gui text นี่นานพอดูเลยครับ เพราะดันใช้ KWrite มาทดสอบ
ทดสอบยังไง ก็ไม่เห็นว่ามันจะกระโดดทีละคำ หรือดับเบิลคลิกแล้วเลือกทีละคำให้
ลองใช้ qDebug ใน qtextlayout ดูเลยเห็นว่า KWrite ไม่เคยส่งโหมด skipWords
มาให้ next/previousCursorPosition เลย มีแต่ส่งแบบ skipCharacters มาอย่างเดียว
เลยลองใช้ qt4/examples/mainwindows/application มาทดสอบดู ก็พบว่ามันตัดคำ
เลือกคำได้ถูกต้องหมดแล้ว โห่ .. :P
แล้วอย่างนี้ต้องไล่แก้ที่ KDE อีกเยอะมั้ยครับ
เท่าที่คุณอ๊อทไล่ ๆ มานี่มีตัวไหนของ KDE มั่งที่ต้องแก้เพิ่มครับ ?
(เผื่อผมว่างอ่ะนะ แฮ่ ๆ)
โด่งอ่ะ.
เหมือนว่าจะมีบางกรณีที่มันผิดหรือเปล่าครับ. น่าจะมีเีขียนอยู่ในนี้
http://suriyan.in.th/docs/kde4-qt4-thai-problems-and-solutions.pdf
> จริง ๆ ผมมาติดที่ตรง gui text นี่นานพอดูเลยครับ เพราะดันใช้ KWrite มาทดสอบ
> ทดสอบยังไง ก็ไม่เห็นว่ามันจะกระโดดทีละคำ หรือดับเบิลคลิกแล้วเลือกทีละคำให้
> ลองใช้ qDebug ใน qtextlayout ดูเลยเห็นว่า KWrite ไม่เคยส่งโหมด skipWords
> มาให้ next/previousCursorPosition เลย มีแต่ส่งแบบ skipCharacters มาอย่างเดียว
> เลยลองใช้ qt4/examples/mainwindows/application มาทดสอบดู ก็พบว่ามันตัดคำ
> เลือกคำได้ถูกต้องหมดแล้ว โห่ .. :P
>
> แล้วอย่างนี้ต้องไล่แก้ที่ KDE อีกเยอะมั้ยครับ
> เท่าที่คุณอ๊อทไล่ ๆ มานี่มีตัวไหนของ KDE มั่งที่ต้องแก้เพิ่มครับ ?
> (เผื่อผมว่างอ่ะนะ แฮ่ ๆ)
>
ที่ทีมสุริยันทำไว้ ของ KDE มี patch 3 อันครับ คือ khtml, kate (kwrite) และ konsole
ทั้งหมดรวบรวมอยู่ใน
http://suriyan.in.th/development พร้อม link ไปยัง bug ที่่ไฟล์ตามที่ต่างๆ ครับ
คุณโด่งอ่ะ มี account LTN cvs ยังครับ เอาหน่อยไหม แก้แล้วจะได้โยน patch ไว้ในนั้น
(นอกจากต้นน้ำจะรับเลย) เผื่อใครแก้กันต่อ. รบกวนของ crypted password สำหรับ
htpasswd หลังไมค์
Ott
> โด่งอ่ะ.
>
> >
>
อ่า อ่านแล้วครับ แสดงว่าต้องเขียนตัว shaper เพิ่ม :p
shaper ของเดิมของคุณกอล์ฟส่วนใหญ่อิงไลบรารี Qt
แต่ผมไม่อยากให้ harfbuzz ต้องอิงกับ Qt มากกว่า
เผื่อโค้ดมันจะได้ย้อนกลับไปที่ HarfBuzz Project ได้
ดังนั้นผมขอผ่านส่วน shaper ก่อนละกันครับ
เผื่อคุณอ๊อทหรือคุณกอล์ฟอารมณ์ดี ๆ มาแก้เพิ่ม
เพราะน่าจะคุ้นกับโค้ดส่วน shaper มากกว่าผม (มามะ ๆ ;-)
>> ที่ทีมสุริยันทำไว้ ของ KDE มี patch 3 อันครับ คือ khtml, kate (kwrite) และ konsole
ผมลองไล่ kate ดูแล้วนะครับ แก้เรียบร้อยแล้ว
ขอส่งแพตช์มาให้ตรวจครับ (KDElibs 4.0.98 - KDE 4.1 RC1 นะครับ)
ผมพยายามเชื่อม katepart ให้กลับไปเรียก QTextLayout
ให้มากที่สุด เนื่องจาก Qt มันเชื่อมกับ harfbuzz อยู่แล้ว
ถ้ามีปัญหาจะได้แก้ที่เดียวไปเลย :)
ดังนั้น katepart เลยไม่ต้องการ libthai แล้ว
การบ้านอยู่ในไฟล์แนบนะครับผม
โด่งอ่ะ.
ป.ล.อีก 3 วัน KDE 4.1 รีลีส เฮือก ๆ ๆ
เอาไฟล์ขึ้น CVS แล้วนะครับ
แพตช์สำหรับ qt-4.4.0:
http://linux.thai.net/viewvc/viewvc.cgi/software/qt/x11-free-4.4.0/
- qt-x11-4.4.0-harfbuzz_thai.patch <-- มีเฉพาะส่วน ThaiAttributes
ยังเหลือส่วน ThaiShape
- qt-x11-4.4.0-gui-text_word_cursor.patch <-- เช็ค WordBoundary
- qt-x11-4.4.0-im_stringconv.patch <-- Input Method String
Conversion callback
** เหลือส่วน ThaiShape ถ้าว่างจัด จะคลำ ๆ เตาะแตะ ๆ ดูนะครับ แหะ ๆ
แพตช์สำหรับ kde-4.1.0 (ถ้าส่วนที่เกี่ยวข้องไม่เปลี่ยนจาก RC1
คงไม่ต้องแก้เพิ่มแล้ว :-P ):
http://linux.thai.net/viewvc/viewvc.cgi/software/kde/kdelibs-4.1.0/
- kdelibs-4.0.98-kate_wordbreak.patch
- kdelibs-4.0.98-khtml_thaibreak.patch
สำหรับของ kde 4.1 นี้ จะไม่มีการโหลดไลบรารี libthai แล้วนะครับ
โดยจะเรียกผ่านทาง Qt -> HarfBuzz แทน เพื่อให้โหลด libthai จากจุดเดียว
** ทั้งนี้ยังไม่ได้ทำแพตช์ของ kword ครับผม
** ถ้าการตัดคำเอกสาร ควรจะนับ cell แทนการนับ character จะต้องแก้
kate_wordbreak เพิ่ม
โด่งอ่ะ.
สุดยอดเลยครับ เดี๋ยวจะพยายามช่วย test นะครับ
> แพตช์สำหรับ kde-4.1.0 (ถ้าส่วนที่เกี่ยวข้องไม่เปลี่ยนจาก RC1
> คงไม่ต้องแก้เพิ่มแล้ว :-P ):
> http://linux.thai.net/viewvc/viewvc.cgi/software/kde/kdelibs-4.1.0/
> - kdelibs-4.0.98-kate_wordbreak.patch
> - kdelibs-4.0.98-khtml_thaibreak.patch
> สำหรับของ kde 4.1 นี้ จะไม่มีการโหลดไลบรารี libthai แล้วนะครับ
> โดยจะเรียกผ่านทาง Qt -> HarfBuzz แทน เพื่อให้โหลด libthai จากจุดเดียว
> ** ทั้งนี้ยังไม่ได้ทำแพตช์ของ kword ครับผม
>
คิดว่าเข้าต้นน้ำไปแล้วนะครับ (ตอนนั้นที่คุยเจอเจ้าตัวที่ทำแล้ว commit ให้ได้ แต่ส่วนอื่นๆ
เขาบอกเขาไม่มีสิทธิ commit :( )
> ** ถ้าการตัดคำเอกสาร ควรจะนับ cell แทนการนับ character จะต้องแก้
> kate_wordbreak เพิ่ม
>
Ott
> โด่งอ่ะ.
>
> >
>
เมื่อ กรกฎาคม 28, 2008 11:48 หลังเที่ยง, Pattara Ott Kiatisevi
<pattar...@mm.co.th> เขียนว่า:
> คิดว่าเข้าต้นน้ำไปแล้วนะครับ (ตอนนั้นที่คุยเจอเจ้าตัวที่ทำแล้ว commit ให้ได้ แต่ส่วนอื่นๆ
> เขาบอกเขาไม่มีสิทธิ commit :( )
มีตัวไหนบ้างครับที่ commit ไปแล้ว ?
ถามคุณอ๊อทกับคุณกอล์ฟอีกเรื่องครับ
แพตช์ QT 4.3.1 มีปัญหากับการเรนเดอร์แบบ underline มั้ยครับ
ผมลองใช้โครง normalize thai text เดิมของคุณกอล์ฟ ดูกับ Qt 4.4 แล้ว
ปรากฏว่ามันมีปัญหากับ khtml ถ้าเป็นแท็ก <u> หรือ <a> ที่ต้องขีดเส้นใต้
พบว่าเส้นใต้มันลากเกินออกมาจากข้อความพอสมควรครับ (ถ้ามีสระ-วรรณยุกต์
บน/ล่างหรือสระอำ)
มึน..
โด่งอ่ะ.
http://farm4.static.flickr.com/3086/2725356752_106837cd37_o.png
โด่งอ่ะ.
* เพิ่งไปปิดเบอร์ฮัทช์มาเมื่อสิ้นเดือน ตอนนี้ใช้ทุยมูฟวันละ 10 บาท
* ต่อผ่าน Edge ..
* ความเร็วเหรอ ... นึกว่าใช้โมเด็ม 14k อยู่นะเนี่ย (หรือแย่กว่าซะอีก) T_T
ีมีตัวเดียวครับ คืออัน kword นั่น
> ถามคุณอ๊อทกับคุณกอล์ฟอีกเรื่องครับ
> แพตช์ QT 4.3.1 มีปัญหากับการเรนเดอร์แบบ underline มั้ยครับ
> ผมลองใช้โครง normalize thai text เดิมของคุณกอล์ฟ ดูกับ Qt 4.4 แล้ว
> ปรากฏว่ามันมีปัญหากับ khtml ถ้าเป็นแท็ก <u> หรือ <a> ที่ต้องขีดเส้นใต้
> พบว่าเส้นใต้มันลากเกินออกมาจากข้อความพอสมควรครับ (ถ้ามีสระ-วรรณยุกต์
> บน/ล่างหรือสระอำ)
>
hmm เด๋วรอคุณกอล์ฟตอบนะครับ
สงสัยนับจำนวนอักขระแทนที่จะนับจำนวน cell ป่าวหว่า
Ott
ลองทดสอบดูแล้วครับ มีปัญหาเหมือนกับคุณโด่งเลยครับ
ดูท่าทางจะนับตามอักขระอย่างพี่อ๊อทว่า
กอล์ฟ
ลองไล่ดูอีกทีแล้วครับ พบว่ามันนับความกว้างอักขระที่
ไม่ควรจะแสดง คือตัว Dot Circle ออกมาด้วยครับ
ซึ่งในโปรแกรมอื่น ๆ ไม่พบว่าจะมีการส่งสตริงที่จะทำให้ได้
Dot Circle (มีส่วนที่ทำให้ th_render_cell ได้ค่า TH_BLANK_BASE_GLYPH
ออกมาด้วย) ยกเว้น Khtml ครับที่ได้ออกมา
ไม่แน่ใจว่ามันตัดสตริงเป็นส่วน ๆ เพื่อส่งมา shape ยังไงนะครับ
ไว้ไล่ดูอีกที ตอนนี้ผมลักไก่ด้วยการกำหนด
item->attributes[index].dontPrint = true;
ให้กับ Dot circle ไปก่อน ซึ่งทำให้ khtml คำนวณความกว้างของ
bounding box ได้ถูกครับ (แต่ก็ยังมีบางฟอนต์ที่ยังมีหางเส้นโผล่เกินมาหน่อย ๆ
กับบางสตริง) สงสัยต้องลองหาวิธีอื่น ๆ มาแก้แล้วล่ะครับ
ไม่งั้นจะทำให้ไม่มีการแสดง Dot circle เลย
อีกเรื่อง ถ้าเอาคอนเซ็ปต์ที่ว่า ไม่ควรอิง Qt ในโค้ดของ harfbuzz
ทำให้ผมหาวิธีเช็คว่าฟอนต์เป็นแบบ fixed pitch ไม่ได้ครับ
ไม่พบส่วนที่เกี่ยวข้องใน harfbuzz เลย
แล้วก็ยังมีเรื่อง userData ของ shaper item
ที่ไม่มีส่วนลงทะเบียนฟอนต์เพื่อไม่ต้องมาจำแนกชนิดฟอนต์ใหม่ทุกครั้ง
(ไล่ดูพบว่า userData ชี้ไปยัง QFontEngine หรือ QTextEngine นี่แหละครับ
จำไม่ได้ :P)
ช่วงนี้เวลาว่างผมน้อยลงเรื่อย ๆ ครับ ไม่ค่อยจะได้ปะติดปะต่อเท่าไร
โด่งอ่ะ.
หลังจากเงียบไป 6 เดือน, ใน ticket ที่ไปเปิดไว้ มี comment มาล่ะครับ
https://bugs.kde.org/show_bug.cgi?id=156561
เข้าใจว่าถ้าใช้ Qt ตัดคำแทนที่จะโหลด libthai ตาม patch ใหม่ของคุณ donga
ก็น่าจะแก้ประเด็นที่เขาถามมาหรือเปล่า
คุณ donga จะพอมีเวลาเข้าไป comment + ส่ง patch ใหม่ขึ้นไหมครับ
Ott
> โด่งอ่ะ.
>
> >
>
โด่งอ่ะ.
กอล์ฟ
http://bugs.kde.org/show_bug.cgi?id=156071 (Konsole)
https://bugs.kde.org/show_bug.cgi?id=156558 (KHTML)
+ Qt patches ( qt-x11-4.4.0-gui-text_word_cursor.patch กับ
qt-x11-4.4.0-im_stringconv.patch) ส่งไปทางเมล์
ส่วน Qt Harfbuzz patch คุณกอล์ฟกำลังลุยอยู่น่ะครับ (ต่อจากของคุณโด่งอ่ะ)
มีอะไรชี้แนะบอกได้เลยนะครับ
Ott
ขอบคุณครับคุณอ๊อท :-D
ถามเขาได้ตรงใจผมเลยครับ คือผมเองก็อยากถามเหมือนกันว่า
ถ้าจะเพิ่ม function pointer ของฟังก์ชัน isFixedPitch ประมาณเนี้ย
กับเพิ่มฟิลด์รองรับ userdata อีกสักตัว ให้กับ harfbuzz จะได้ไหม
:-)
อาทิตย์หน้าที่เริ่มว่างหน่อย ๆ แล้ว ผมกะจะแปล openSUSE l10n ต่อครับ
(แล้วก็รอแพตช์จากคุณกอล์ฟต่อ อิอิ)
:-)
โด่งครับ.
จริงๆ แล้ว คำถามตามใบสั่งจากคุณกอล์ฟเลยครับ :) ใจตรงกันพอดี
> อาทิตย์หน้าที่เริ่มว่างหน่อย ๆ แล้ว ผมกะจะแปล openSUSE l10n ต่อครับ
> (แล้วก็รอแพตช์จากคุณกอล์ฟต่อ อิอิ)
>
ได้ๆ :) สลับกัน hack
Ott
> :-)
>
> โด่งครับ.
>
> >
>
เมื่อวานลองไล่ประเด็นทำไม Konqueror ไม่ทำ AutodetectEncoding
(เช่น ใช้โลเคล th_TH.UTF-8 แล้วลองเรียก www.manager.co.th
ซึ่งมี meta charset เป็น windows-874 แล้วจะไม่แสดงผลเป็นภาษาไทย)
พบบั๊กในส่วนตรวจหา charset ในแท็ก meta แฟ้ม
kdecore/localization/kencodingdetector.cpp
คือ มันตัด charset ออกมา แต่ตำแหน่งเริ่มของ charset ยังเป็นเครื่องหมาย '=' อยู่
ดังนั้นต้องบวกตำแหน่ง pos ไปอีกหนึ่ง ก็จะสามารถทำ AutodetectEncoding ได้
ดังนี้ครับ
diff -Nur kdelibs-4.1.2.orig/kdecore/localization/kencodingdetector.cpp
kdelibs-4.1.2/kdecore/localization/kencodingdetector.cpp
--- kdelibs-4.1.2.orig/kdecore/localization/kencodingdetector.cpp
2008-08-28 15:08:22.000000000 +0700
+++ kdelibs-4.1.2/kdecore/localization/kencodingdetector.cpp
2008-10-11 02:58:22.000000000 +0700
@@ -1023,6 +1023,9 @@
if( (pos = str.indexOf("=", pos)) == -1)
continue;
+ // skip '='
+ ++pos;
+
// skip whitespace before encoding itself
while (pos < (int)str.length() && str[pos] <= ' ')
++pos;
ตอนนี้แจ้งบั๊กเพิ่มเติมและส่งแพตช์ไปแล้วครับ
โดยมีคนแจ้งประเด็นไม่ตรวจสอบ encoding นี้ไว้ก่อนแล้ว
ลองดูนะครับ ตอนนี้ใช้ koqueror ได้สบายขึ้นเยอะ ไม่ต้องคอยสั่งเปลี่ยน
Encoding แล้ว
โด่งอ่ะ.
ตอนนี้ทีม MM กำลังด้อมๆ มองๆ Qt4/Harfbuzz patch ต่อ
ยังคงไม่ได้คำตอบใดๆ จาก Trolltech ในคำถามที่ถามไป ...
Ott
ผมลองแก้เป็นตามแบบที่แนบมา ส่งค่า fixedPitch จาก Qt ไปแบบนี้เลย ดูแล้วมันจะพอไหวไหมครับ
เขาจะรับไหมเนี่ย แบบนี้
มีปัญหาหนึ่งนั่งลองกับคุณกอล์ฟอยู่คือทดสอบกับ demos/textedit ถ้าเอกสารขึ้นต้นด้วยสระอำ
มันจะ segfeault เลย
ซึ่งไล่ไปไล่มาก็เหมือนว่าค่า logClusters มันเป็น 65535 เข้าใจว่าคือ -1 ผมก็เลยใส่ check
ว่าถ้าค่า
logClusters มันมากกว่า len (ซึ่งไม่น่าจะเกิดขึ้น) ก็ให้ reset เป็น 0 เสีย
ลองแล้วก็เหมือน work ดี
(แต่ไม่รู้จะกระทบส่วนอืนๆ ไหม)
ส่วน userData ยังหาที่เก็บไม่ได้ครับ แอบๆ ดูเหมือนมี void* userData อยู่ใน
harfbuzz-shaper.h เหมือนกัน
เอามาใช้ยังไงได้ป่าวหว่า
อีกปัญหาหนึ่งที่ยังแก้ไม่ตกคือ konsole (ทดสอบกับ Tlwg Typo) จะพิมพ์สระ/วรรณยุกต์สูง
หลังจาก ป, ฟ ไม่เห็น
และก็ copy & paste เละตุ้มเป๊ะเลยครับ ภาษาีอังกฤษก็เละด้วย
(เหมือนมันจะหายไปตัวเว้นตัวหรือยังไงเนี่ยตอนแปะ)
อยากรู้ว่าก่อนหน้านี้มัน work หรือเปล่าครับเนี่ย มันเป็นเพราะ patch นี้หรือ patch konsole
อันก่อน
ส่วน dontPrint = true; ข้างต้นก็ยังคงไว้อยู่น่ะครับ
ตามแนบ + committed ใน CVS
Ott
Ott
เมื่อ พฤศจิกายน 5, 2008 10:03 หลังเที่ยง, Pattara Ott Kiatisevi
<pattar...@mm.co.th> เขียนว่า:
>> ผมลองแก้เป็นตามแบบที่แนบมา ส่งค่า fixedPitch จาก Qt ไปแบบนี้เลย ดูแล้วมันจะพอไหวไหมครับ
>> เขาจะรับไหมเนี่ย แบบนี้
ลองส่งแล้วรอคอมเมนต์ดีไหมครับ :-)
>> มีปัญหาหนึ่งนั่งลองกับคุณกอล์ฟอยู่คือทดสอบกับ demos/textedit ถ้าเอกสารขึ้นต้นด้วยสระอำ
>> มันจะ segfeault เลย
>> ซึ่งไล่ไปไล่มาก็เหมือนว่าค่า logClusters มันเป็น 65535 เข้าใจว่าคือ -1 ผมก็เลยใส่ check
>> ว่าถ้าค่า
>> logClusters มันมากกว่า len (ซึ่งไม่น่าจะเกิดขึ้น) ก็ให้ reset เป็น 0 เสีย
>> ลองแล้วก็เหมือน work ดี
>> (แต่ไม่รู้จะกระทบส่วนอืนๆ ไหม)
เดี๋ยวผมลองดูมั่งครับ
>> ส่วน userData ยังหาที่เก็บไม่ได้ครับ แอบๆ ดูเหมือนมี void* userData อยู่ใน
>> harfbuzz-shaper.h เหมือนกัน
>> เอามาใช้ยังไงได้ป่าวหว่า
ที่ผมไล่ดูครั้งก่อน มันชี้ไปยังฟังก์ชันอะไรซักอย่างอยู่แล้วนะครับ
เลยเข้าใจว่าไม่สามารถเอามาใช้ได้
>> อีกปัญหาหนึ่งที่ยังแก้ไม่ตกคือ konsole (ทดสอบกับ Tlwg Typo) จะพิมพ์สระ/วรรณยุกต์สูง
>> หลังจาก ป, ฟ ไม่เห็น
>> และก็ copy & paste เละตุ้มเป๊ะเลยครับ ภาษาีอังกฤษก็เละด้วย
>> (เหมือนมันจะหายไปตัวเว้นตัวหรือยังไงเนี่ยตอนแปะ)
>> อยากรู้ว่าก่อนหน้านี้มัน work หรือเปล่าครับเนี่ย มันเป็นเพราะ patch นี้หรือ patch konsole
>> อันก่อน
ผมใช้แต่แพตช์ Qt กับ kdelibs แล้วทดสอบ พบว่า konsole ปกตินะครับ ...
คือไม่แสดงสระ/วรรณยุกต์บน-ล่างน่ะครับ :P
แต่การ copy & paste ปกติดีทุกอย่างครับ
เดี๋ยวจะลองแพตช์ kdebase ดูอีกทีครับ รอรายงานผล
>>
>> ส่วน dontPrint = true; ข้างต้นก็ยังคงไว้อยู่น่ะครับ
>>
>> ตามแนบ + committed ใน CVS
>> Ott
โด่งอ่ะครับ.
> ตามแนบ + committed ใน CVS
ไม่ได้ตาม thread นี้เสียนาน..
เพิ่งเห็นแพตช์ของคุณโด่งว่าใช้ dlopen กับ libthai ใน harfbuzz
ประเด็นนี้ผมสงสัยว่าแนวทางในอนาคตของ harfbuzz จะเป็นยังไง
จะ build ทุกอย่างใน lib เดียวเหมือน icu หรือจะทำ language module
เหมือน pango
ถ้าเป็นอย่างแรก (ปัจจุบัน) ใช้ dlopen ก็คงประหยัดดีครับ
แต่ถ้าอนาคตเขาจะเปลี่ยนเป็นระบบ module ก็คิดว่า dlopen
อาจไม่จำเป็นมากนัก เพราะยังไงมันก็ dlopen module อยู่แล้ว..
ไว้ผมลองถาม harfbuzz developer ดูละกันครับ..
โดยส่วนตัวคิดว่าทำแบบ pango จะยืดหยุ่นกว่า
เทพ.
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/
ส่วนเรื่อง copy&paste เจ๊งนี่ ลอง reverse patch chunk ที่ไปแก้ใน
TerminalCharacterDecoder.cpp แล้วก็หายแฮะ ( ภาษาไทยมันก็ไปแบบไม่ถูกต้องครบถ้วน
แต่ว่าไม่มีกระโดดตัวเว้นตัวสองตัวแล้ว)
Ott
ฮ่าๆ ได้ครับ เดี๋ยวรอเอาเรื่อง Konsole ให้กลับมา work ก่อนแล้วจะลองส่งไปนะครับ
>
>>> มีปัญหาหนึ่งนั่งลองกับคุณกอล์ฟอยู่คือทดสอบกับ demos/textedit ถ้าเอกสารขึ้นต้นด้วยสระอำ
>>> มันจะ segfeault เลย
>>> ซึ่งไล่ไปไล่มาก็เหมือนว่าค่า logClusters มันเป็น 65535 เข้าใจว่าคือ -1 ผมก็เลยใส่ check
>>> ว่าถ้าค่า
>>> logClusters มันมากกว่า len (ซึ่งไม่น่าจะเกิดขึ้น) ก็ให้ reset เป็น 0 เสีย
>>> ลองแล้วก็เหมือน work ดี
>>> (แต่ไม่รู้จะกระทบส่วนอืนๆ ไหม)
>>>
> เดี๋ยวผมลองดูมั่งครับ
>
>
>>> ส่วน userData ยังหาที่เก็บไม่ได้ครับ แอบๆ ดูเหมือนมี void* userData อยู่ใน
>>> harfbuzz-shaper.h เหมือนกัน
>>> เอามาใช้ยังไงได้ป่าวหว่า
>>>
> ที่ผมไล่ดูครั้งก่อน มันชี้ไปยังฟังก์ชันอะไรซักอย่างอยู่แล้วนะครับ
> เลยเข้าใจว่าไม่สามารถเอามาใช้ได้
>
ฮ่อๆ I C
>
>>> อีกปัญหาหนึ่งที่ยังแก้ไม่ตกคือ konsole (ทดสอบกับ Tlwg Typo) จะพิมพ์สระ/วรรณยุกต์สูง
>>> หลังจาก ป, ฟ ไม่เห็น
>>> และก็ copy & paste เละตุ้มเป๊ะเลยครับ ภาษาีอังกฤษก็เละด้วย
>>> (เหมือนมันจะหายไปตัวเว้นตัวหรือยังไงเนี่ยตอนแปะ)
>>> อยากรู้ว่าก่อนหน้านี้มัน work หรือเปล่าครับเนี่ย มันเป็นเพราะ patch นี้หรือ patch konsole
>>> อันก่อน
>>>
> ผมใช้แต่แพตช์ Qt กับ kdelibs แล้วทดสอบ พบว่า konsole ปกตินะครับ ...
> คือไม่แสดงสระ/วรรณยุกต์บน-ล่างน่ะครับ :P
> แต่การ copy & paste ปกติดีทุกอย่างครับ
> เดี๋ยวจะลองแพตช์ kdebase ดูอีกทีครับ รอรายงานผล
>
ครับ ผมลองแล้วเกี่ยวพันกับ patch ของเราล่ะครับ ถ้า reverse patch chunk ที่ไปแก้ใน
TerminalCharacterDecoder.cpp
แล้วเหมือนไม่เป็น แต่ว่ามันก็ paste ไทยมาได้ไม่ค่อยถูก
มึน
Ott
> เพิ่งเห็นแพตช์ของคุณโด่งว่าใช้ dlopen กับ libthai ใน harfbuzz
> ประเด็นนี้ผมสงสัยว่าแนวทางในอนาคตของ harfbuzz จะเป็นยังไง
> จะ build ทุกอย่างใน lib เดียวเหมือน icu หรือจะทำ language module
> เหมือน pango
>
> ถ้าเป็นอย่างแรก (ปัจจุบัน) ใช้ dlopen ก็คงประหยัดดีครับ
> แต่ถ้าอนาคตเขาจะเปลี่ยนเป็นระบบ module ก็คิดว่า dlopen
> อาจไม่จำเป็นมากนัก เพราะยังไงมันก็ dlopen module อยู่แล้ว..
>
> ไว้ผมลองถาม harfbuzz developer ดูละกันครับ..
> โดยส่วนตัวคิดว่าทำแบบ pango จะยืดหยุ่นกว่า
สอบถามเขาแล้วครับ ตาม thread นี้ [1]:
[1] http://lists.freedesktop.org/archives/harfbuzz/2008-November/000263.html
ซึ่งได้คำตอบอย่างไม่เป็นทางการจาก Behdad ว่า Harfbuzz เป็นแค่
shaper ไม่มี feature ตัดคำ [2] และโดยหลักการแล้ว Harfbuzz มุ่งให้เป็น
lib ที่สมบูรณ์ในตัวเอง ไม่น่าจะ depend on lib ไหนเลย แต่น่าจะ merge
code ของ libthai เข้าใน Harfbuzz เลยมากกว่า [3]
[2] http://lists.freedesktop.org/archives/harfbuzz/2008-November/000265.html
[3] http://lists.freedesktop.org/archives/harfbuzz/2008-November/000269.html
ถ้าตามเหตุผลที่เขาให้มา การ dlopen ก็ยังทำให้ Harfbuzz ไม่สมบูรณ์
ในตัวเองอยู่ดี อาจจะต้องใช้วิธีแยกเฉพาะโค้ดส่วน shaping เข้ามาใส่
ใน Harfbuzz โดยตรงครับ
แต่เดี๋ยวรอความเห็นของคนอื่นดูก็ดี ดูเหมือน Harfbuzz มันเงียบ ๆ
ไม่ค่อยมีความเคลื่อนไหว
> แต่เดี๋ยวรอความเห็นของคนอื่นดูก็ดี ดูเหมือน Harfbuzz มันเงียบ ๆ
> ไม่ค่อยมีความเคลื่อนไหว
>
> เทพ.
> --
> Theppitak Karoonboonyanan
> http://linux.thai.net/~thep/
เป็นไปได้ไหมครับว่า ทาง Trolltech อาจมีแผนจะ fork HarfBuzz
แล้วเพิ่มเติมให้เป็นรุ่นของ Trolltech เอง ... ???
โด่งอ่ะครับ.
> แต่ HarfBuzz ใน Qt มีทั้ง Shaping และ Attributes setting เลยแฮะ
> งงครับ แหะ ๆ
upstream ก็มีครับ หลังจากตอบเขาไปแล้วผมก็เอะใจเหมือนกัน
เดี๋ยวกลับไปคุยใหม่
> เป็นไปได้ไหมครับว่า ทาง Trolltech อาจมีแผนจะ fork HarfBuzz
> แล้วเพิ่มเติมให้เป็นรุ่นของ Trolltech เอง ... ???
คิดว่าไม่ใช่ครับ ทีม Qt ค่อนข้างจะเป็นตัวตั้งตัวตีใน Harfbuzz ด้วยซ้ำไป
เอ่อ.. เขาบอกว่าอย่างนี้: "Those will be removed in the rewrite." [1]
[1] http://lists.freedesktop.org/archives/harfbuzz/2008-November/000273.html
เล่นเอาเหวอไปเลย :-O
เลยสงสัย ว่าโค้ดส่วนกำหนด attribute ตรงนี้ มีผลกับ KDE/Qt apps
อยู่หรือเปล่า? ถ้าตัดออก KDE จะว่าไง เพราะจำได้ว่าตอนอ๊อทไปคุย
กับ KDE/Trolltech เขาก็ไล่มาทำที่ Harfbuzz นิ?
ปัญหา copy & paste แก้แล้วครับ (ตกลงเป็นที่ patch konsole เอง มีบักในการวน loop
นิดหน่อย)
patch ตามแนบครับ + เดี๋๋ยว build kdebase Ubuntu deb ใส่ไว้ที่เดิม
Ott
ภาพประกอบตามแนบ
หรือ http://www.mm.co.th/~pattara/tmp/konsole-problem1.png
พอมีไอเดียยังไงไหมครับ
Ott
Ott
ครับ เขาไล่ให้มา Harfbuzz นะ ตกลงมันจะยังไงแน่ว้า
Ott
> เทพ.
>
ผมว่า Qt น่าจะคงไว้ทั้งสองส่วนนะครับ เพราะดู ๆ โค้ดแล้ว
ทั้งสองส่วนนี่อยู่ใน HarfBuzz เหมาะที่สุดเลย แล้วโค้ด Qt เอง
ก็เปลี่ยนจากการตัดคำที่ scriptengine มาที่ HarfBuzz หมดแล้วนิ
หลายภาษาซะด้วย
แต่ส่วน attribute wordBoundary กับ sentenceBoundary นี่
สงสัย Thai HarfBuzz คงต้องเปลี่ยนกลับไปใช้การเช็คกับ
wordBreak attribute เหมือนโค้ดเดิมคุณกอล์ฟแล้วละ
กันการ obsolete attributes ทั้งสอง :P
** โอมมมมมมมม .... อย่าเปลี่ยนโค้ด ๆ ๆ ..... LOL
โด่งอ่ะ.
ตอนนี้กำลังคุยกันอยู่ครับ ว่าจะเอาไงดีกับภาษาที่ต้องใช้ dict ตัดคำ
เท่าที่ยืนยันว่าจำเป็นก็มีภาษาไทย เขมร พม่า ส่วนภาษาลาว ยังรอ
คำตอบอยู่ เพราะตัวอย่างหนังสือที่ผมมี เขาตัดบรรทัดที่พยางค์เลย
ใช้ rule base ได้ ไม่ต้องใช้ dict
ไว้รวมตัวกันได้แล้ว คงหา solution กันต่อไป โดยแนวโน้มคือสร้าง
framework สำหรับการตัดคำด้วย dict ขึ้นมาใช้ร่วมกัน
แต่ก่อนอื่น สำหรับ shaper ใน harfbuzz น่าจะเปลี่ยนจากเรียก
libthai มาเป็นฝังโค้ด shaping ลงใน harfbuzz-thai เลยน่ะครับ
เพราะท้ายที่สุดแล้ว แนวโน้มของ solution ไม่น่าจะเรียก libthai ตรง ๆ
hmm เท่าที่ดู code ตอนนี้ยังมึน ทั้ง HB_ThaiShape และ HB_ThaiAttributes มันอยู่ใน
HarfBuzz
ทั้งหมด หมายถึงเราควรจะยัด libthai ส่วนพวก th_render_cell* เข้ามาใน Harfbuzz เลย
แต่ th_brk ให้เปิด dlopen เหมือนเดิม?
หรือว่าควรส่งไปให้เขาดูสักรอบ ขอความเห็น?
Ott
> เทพ.
>
สำหรับผมคิดว่าน่าจะส่งไปให้เขาดูก่อนนะครับ เพราะโค้ดภาษาอื่น ๆ
ก็มีทั้งส่วน Shaper และ Attributes Setting เหมือนกัน
(ยกเว้นที่เราต้องลิงค์กับ libthai)
หากเขายอมรับ ต่อไปเผื่อมีการย้ายส่วน Attributes Setting
อย่างน้อยฟังก์ชันนี้ก็น่าจะโดนเขาโยกย้ายตามไปด้วย
ส่วนเรื่องรวมโค้ด libthai นี่ ผมอยากรอความเห็นทาง HarfBuzz หรือ Qt ก่อน
(หรือจะส่งไปให้ทาง Qt อย่างเดียว ไม่ยุ่งเกี่ยวกับ HarfBuzz, ให้ Qt
ไปดิวกับ HarfBuzz เอาเอง ?)
โด่งครับ.
> hmm เท่าที่ดู code ตอนนี้ยังมึน ทั้ง HB_ThaiShape และ HB_ThaiAttributes มันอยู่ใน
> HarfBuzz
> ทั้งหมด หมายถึงเราควรจะยัด libthai ส่วนพวก th_render_cell* เข้ามาใน Harfbuzz เลย
> แต่ th_brk ให้เปิด dlopen เหมือนเดิม?
ผมเห็นว่า ควรแยกส่งเฉพาะ shaper ไปก่อน โดยเขียนโค้ดส่วน shaping
ใหม่แบบ simplified โดยใช้เค้าโครงของ libthai แต่ใช้ unicode เป็นหลัก
ส่วนเรื่อง attribute อาจจะแยก patch ต่างหากไปพลางก่อน ยังไม่ต้องส่ง
ให้เขา ไว้ทำ framework ร่วมกับภาษาอื่นแล้วค่อยรวมกันส่งทีเดียวได้
อ่านจากความเห็นนักพัฒนา ทั้ง Behdad ทั้งนักพัฒนา qt ก็พอจะจับความ
ได้ว่า เขาไม่ต้องการให้ harfbuzz depend on lib ไหน แม้แต่ glib หรือ
freetype ก็ไม่เอา ดูแล้วก็พอเข้าใจได้อยู่ถึงคำตอบเรื่อง libthai ที่ให้มา
โดยเฉพาะถ้ามองว่า เดี๋ยว libthai ได้เข้า ก็จะมี liblao, libkhmer, libburmese
จ่อคิวรอโดยอ้างกรณี libthai คิด ๆ ดูแล้ว แยกส่งเฉพาะ shaping แล้วรอ
รวมหัวกันส่งเรื่อง word break ทีเดียวน่าจะสวยกว่า
พอเ้ข้าใจไอเดียครับ ว่าส่งไปแบบ dependent กับ libthai เขาคงยังไม่รับในทันทีล่ะ
แต่ดูตามใน code
แล้วจะแยก HB_ThaiAttributes (เกี่ยวกับตัดคำ) แล้วยัดกลับไป Qt ยังไงนี่ผมยังนึกไม่ออก
เพราะ HB_ScriptEngine มันถูกยกมาทั้งยวงอยู่ใน Harfbuzz แล้ว รวมทั้งของภาษาอื่นๆ อีกด้วย
ซึ่งเราควรจะไปรื้อตรงนั้นเลย หรือว่า ส่งไปให้เขาดูเป็นไอเดีย (คงไม่กะให้ได้เข้าในทันที)
เผื่อมี comment เพิ่มเติมก่อนจะดีไหมครับ เพื่อให้แน่ใจว่าเราจะเดินไปในทางที่ทุกฝ่ายเห็นพ้องกัน
+ถ้ายังไงสุดท้ายออกมาเป็นต้อง depend กับ libthai ก็อาจไม่ต้องทำส่วน shaping แบบ
simplified?
ใช้ libthai ไปเลย :-p
Ott
> เทพ.
>
(เดิมใช้ ttf-thai-tlwg)
Ott
> ------------------------------------------------------------------------
>
ตกลงความคืบหน้าเป็นดังนี้ครับ
-Qt patches ส่งทางเมลให้ Trolltech แล้ว คำตอบรับที่ได้ก็เหมือนเป็นบวก
ไม่เห็นบ่นอะไรเรื่องที่จะต้องมีการ dlopen (อาจจะยังไม่ได้คุยกับทั้งทีมก็เป็นไปได้)
และบอกว่าจะหาเวลาทดสอบให้ครับ
-patches KDE และอื่นๆ ไ้ด้ยิงเข้าตาม bug report web sites ของซอฟต์แวร์เหล่านั้นแล้ว
ดูสรุปได้ที่
http://www.suriyan.in.th/development
-สำหรับผู้ใช้ Ubuntu/Kubuntu Intrepid มี deb ให้ลองด้วยที่ http://suriyan.in.th/apt/
-สำหรับผู้อยากลองแบบ Live CD ทางเราได้เอา Kubuntu 8.10 มาโม ยัด package
พวกนี้เ้ข้าไป + ออกเป็น Suriyan Linux Live CD รุ่นใหม่ โหลดได้ที่นี่ครับ
http://suriyan.in.th/pub/iso/suriyan-8.10-i386-20081113.iso
Ott
> -Qt patches ส่งทางเมลให้ Trolltech แล้ว คำตอบรับที่ได้ก็เหมือนเป็นบวก
> ไม่เห็นบ่นอะไรเรื่องที่จะต้องมีการ dlopen (อาจจะยังไม่ได้คุยกับทั้งทีมก็เป็นไปได้)
> และบอกว่าจะหาเวลาทดสอบให้ครับ
งั้นรอเขาคุยกันเองดูสักพัก.. ส่วนผมเอง งานเข้าอีกครับ กว่าจะได้กลับ
มาดูเรื่องนี้อีกทีคงเกือบปีใหม่ - -'
รอร้อรอ :)
ช่วงนี้กำลังปั่น openSUSE l10n อยู่ครับ อีกไม่ถึงเดือนรุ่น 11.1
ก็จะปิดรับการแปลแล้ว
ยังไม่มีเวลาเจียดให้กับ KDE 4.2 อีก นี่ก็ใกล้ออกแล้วเหมือนกันครับ T_T
โด่ง.