TlwgTypo ฟอนต์มันจางๆ

123 views
Skip to first unread message

Pattara Kiatisevi (list)

unread,
Mar 30, 2009, 1:53:29 AM3/30/09
to thai-linux...@googlegroups.com
พี่เทพ,

ตามที่คุยทาง gtalk เหมือนผมลองแล้วรู้สึกว่าฟอนต์ TlwgTypo มันดูจางๆ (ตามแนบ)
ไม่แน่ใจว่าต้อง set อะไรเป็นพิเศษหรือเปล่านะครับ

ขอบคุณครับ
Ott

konsole-tlwg-typo-shot1.png

Theppitak Karoonboonyanan

unread,
Mar 30, 2009, 2:18:12 AM3/30/09
to thai-linux...@googlegroups.com
2009/3/30 Pattara Kiatisevi (list) <pattar...@mm.co.th>:

> ตามที่คุยทาง gtalk เหมือนผมลองแล้วรู้สึกว่าฟอนต์ TlwgTypo มันดูจางๆ (ตามแนบ)
> ไม่แน่ใจว่าต้อง set อะไรเป็นพิเศษหรือเปล่านะครับ

อืม อาการไม่หนักเหมือนที่ผมจินตนาการไว้ตอนที่ได้อ่าน
ทาง gtalk

ก่อนอื่น ต้องเข้าใจก่อนว่า TlwgTypo มันอิงตามสไตล์ของ
Courier ซึ่งเส้นจะบางอยู่แล้ว ดังนั้น เส้นขนาดนี้จึงถือว่า
ปกติสำหรับตัวฟอนต์

ถ้าต้องการเส้นหนาเหมือน dejavu sans mono ก็อาจจะ
ทำฟอนต์ขึ้นมาใหม่ต่างหากมังครับ

เรื่องเส้นแตกในบางจุด ต้องถามว่าตั้ง hinting ไว้แบบไหนครับ?

ผมแนบ screenshot ของผมมาให้ดู ที่ขนาด 10pt ใช้ full hinting
พื้นขาว ตัวหนังสือดำ

เทพ.
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/

Screenshot-testmsg.png

wd

unread,
Mar 30, 2009, 4:01:30 AM3/30/09
to Thai Linux/FOSS developers
ผมรายงานว่า ตอนที่ทำฟอนต์ให้ดูนุ่มนวล (คือการลงจุดไม่เต็มเส้น
ทำให้ลักษณะเส้นดูเหมือนบางลง นุ่มนวลขึ้น) เวลาเราทดสอบดู
เราจะทดสอบด้วย ฟอนต์ดำบนพื้นหลังขาว

แต่จะเป็นปัญหาตอนดูด้วยฟอนต์ขาวบนพื้นหลังดำ
คือเส้นของฟอนต์ตรงส่วนที่บางจะดูเหมือนเส้นขาด

ในทางตรงกันข้าม คือเส้นสองเส้นที่มาอยู่ชิดกัน
เช่นเส้นโค้งบนกับหัวอักษรตัว ค และ เส้นบนกับเส้นกลางของตัว ล
จะถูกขับให้ดูชัดขึ้น เมื่อมาอยู่บนพื้นหลังดำ
(การทำ truetype hinting ของฟอนต์ Tahoma ต้องทำเส้นในกลุ่มดังกล่าว
ให้บางลงกว่าปกติเล็กน้อย เวลาแสดงผลจึงจะดูว่าเส้นหนาเท่ากัน)

บนเว็บ ผมทดสอบที่ sugree.com :)

วิทยา

Pattara Kiatisevi (list)

unread,
Mar 30, 2009, 5:51:20 AM3/30/09
to thai-linux...@googlegroups.com
hmm ผมลองเปิด hinting เป็น full แล้วมันก็ใกล้เคียงกับของพี่เทพน่ะครับ
แต่อาจจะเป็นเรื่องของสีฟอนต์/สีพื้นหลังอย่างที่คุณ wd ว่า ทำให้ยังดูไม่งดงามเท่าบนพื้นขาว (?)

ผมลองฟอนต์ Courier New กับ Courier 10 Pitch ดูเหมือนหนากว่า Tlwg Typo
นิดนึงป่าวครับ ที่ขนาดเดียวกัน

Ott

Theppitak Karoonboonyanan

unread,
Mar 30, 2009, 8:52:30 AM3/30/09
to thai-linux...@googlegroups.com
2009/3/30 Pattara Kiatisevi (list) <pattar...@mm.co.th>:
> hmm ผมลองเปิด hinting เป็น full แล้วมันก็ใกล้เคียงกับของพี่เทพน่ะครับ
> แต่อาจจะเป็นเรื่องของสีฟอนต์/สีพื้นหลังอย่างที่คุณ wd ว่า ทำให้ยังดูไม่งดงามเท่าบนพื้นขาว (?)
>
> ผมลองฟอนต์ Courier New กับ Courier 10 Pitch ดูเหมือนหนากว่า Tlwg Typo
> นิดนึงป่าวครับ ที่ขนาดเดียวกัน

ถ้าจะเอาให้ละเอียด TlwgTypo ใช้ glyph ละตินจาก TlwgMono
ซึ่งตาม doc ของ TlwgMono ที่คุณพูลลาภเขียนอธิบายไว้ ก็ใช้
glyph จาก FreeMono ของ freefont นะครับ

ซึ่งสไตล์ของฟอนต์ดังกล่าว จะคล้าย Courier แต่แน่นอนว่าคง
เอา Courier มาใช้ตรง ๆ ไม่ได้

wd

unread,
Mar 30, 2009, 9:52:04 AM3/30/09
to Thai Linux/FOSS developers
ผมลองตรวจดูด้วย fontforge (เมนู View -> Grid Fit -> Show Grid
Fit ...) แล้ว ต้นเหตุที่แท้จริงอยู่ที่ font hinting ครับ

- ที่ 9-17 ppem เส้นตั้งเต็มช่อง เส้นนอนไม่เต็ม
(ขนาดเส้นตั้งถูกทดจนเต็มช่องพิกเซล แต่เส้นนอนไม่ทด
ใช้ตามความหนาของฟอนต์จริง)
- แต่พอตั้งแต่ 18-23 ppem เส้นตั้งกลับถูกลดขนาดลง (คือเล็กกว่า 17 ppem
เสียอีก) และเส้นนอนเต็มช่อง
- ตั้งแต่ 24 ppem ขึ้นไป ไม่ทดลงจุดเลย ใช้ตามความเป็นจริง

โดยปรกติตามหลักของการแก้การลวงตา
การที่เส้นตั้งดูหนากว่าเส้นนอนก็ควรจะถูกต้องแล้ว แต่ปัญหาคือ ที่ช่วง
10 ปอยต์ = 10x96/72 คือประมาณ 13 ppem
สัดส่วนระหว่างความหนาของเส้นนอนและเส้นตั้งแตกต่างกันมาก
จึงทำให้ดูแล้วไม่สมดุลย์ครับ ซึ่งจะแสดงออกให้เห็นชัดเจนบนพื้นหลังสีดำ

การแก้คงต้อง hint ฟอนต์ใหม่ โดยถ้าเส้นตั้งมีขนาดเต็มช่อง คือ 8/8
เส้นนอนก็ไม่ควรจะน้อยกว่า 7/8 ส่วนครับ จึงจะแก้ปัญหาเส้นดูบางจนขาดได้

และที่ 8-23 ppem ก็ต้องแก้ให้เส้นตั้งกลับมาเต็มช่อง
จึงจะดูสมเหตุผลครับ


สงสัยว่า ฟอนต์ที่เป็น fix width คงจำเป็นต้องทำ truetype hinting
ทั้งหมดกระมัง
(กำลังทำฟังก์ชั่นแบบนำกลับมาใช้ใหม่ได้ ถ้าสำเร็จเราอาจ hint
ฟอนต์ได้แบบง่าย ๆ และรวดเร็วครับ)

วิทยา

Theppitak Karoonboonyanan

unread,
Mar 30, 2009, 11:00:56 AM3/30/09
to thai-linux...@googlegroups.com
2009/3/30 wd <widh...@gmail.com>:

> สงสัยว่า ฟอนต์ที่เป็น fix width คงจำเป็นต้องทำ truetype hinting
> ทั้งหมดกระมัง

น่าจะเป็นวิธีที่ดีที่สุดครับ แต่ผมคิดว่าผมไม่สามารถทำได้
อย่างที่เคยบอก ว่าอยากให้คุณ wd ช่วยไกด์ให้ หรือช่วยทำให้เลย
ก็ยิ่งดีครับ ;-P

ถ้าให้ผมทำ ผมคงพยายามแก้ในแนวทางของ Postscript น่ะครับ
จนกว่าจะตกลงย้ายไปทำ TrueType ตรง ๆ

ปล. ไม่เกี่ยวกับ thread หรืออาจจะเกี่ยวบ้าง เพราะเดาว่าอ๊อทอาจเห็น
ผมกำลัง blog เรื่องฟอนต์เลยถามเข้ามา

เกี่ยวกับการเคลียร์ TODO list หลังจากแก้เรื่อง font synthesizing bug
แล้ว ตอนนี้ผมข้ามเรื่องฟอนต์ไปก่อน เนื่องจากดูแล้ว ปัญหาอื่นทุกอย่าง
อยู่ที่ hinting ทั้งนั้น รวมทั้งเรื่องความกว้างของตัวเลขอารบิกด้วย
น่าจะใช้เวลามากเกินไป จนงานอื่นจะไม่ได้ทำ ก็เลยข้ามไปทำเรื่อง
libthai/swath ก่อน ซึ่งมีประเด็นเยอะพอสมควรเหมือนกัน

ก็ขออภัยด้วยนะครับ ถ้าจะยังไม่เจาะเรื่องฟอนต์ในตอนนี้

wd

unread,
Mar 30, 2009, 12:16:36 PM3/30/09
to Thai Linux/FOSS developers
On Mar 30, 10:00 pm, Theppitak Karoonboonyanan <t...@linux.thai.net>
wrote:
> 2009/3/30 wd <widha...@gmail.com>:

>
> > สงสัยว่า ฟอนต์ที่เป็น fix width คงจำเป็นต้องทำ truetype hinting
> > ทั้งหมดกระมัง
>
> น่าจะเป็นวิธีที่ดีที่สุดครับ แต่ผมคิดว่าผมไม่สามารถทำได้
> อย่างที่เคยบอก ว่าอยากให้คุณ wd ช่วยไกด์ให้ หรือช่วยทำให้เลย
> ก็ยิ่งดีครับ ;-P
>
> ถ้าให้ผมทำ ผมคงพยายามแก้ในแนวทางของ Postscript น่ะครับ
> จนกว่าจะตกลงย้ายไปทำ TrueType ตรง ๆ
>

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

ถ้า Sans เสร็จแล้ว ผมจะทยอยมา hint ให้ครับ
ขอให้เรียงลำดับฟอนต์ตัวที่สำคัญ ๆ มาก่อน
(Sans ช้า เพราะเพิ่งศึกษา และต้องการให้ผลออกมาดีจริง ๆ แบบ Tahoma
ทำไปศึกษาไป จึงพบรายละเอียดข้างในมากมาย ทำให้ต้องกลับมาย้อนต้นบ่อย ๆ)

แต่ถ้าจะให้ hint ฟอนต์ตัวอื่นแบบหยาบ ๆ ก็แจ้งมาได้นะครับ
ใช้เวลาประมาณสัปดาห์นึง (แต่ก็จะทำให้ Sans ช้าออกไปอีก)


> ปล. ไม่เกี่ยวกับ thread หรืออาจจะเกี่ยวบ้าง เพราะเดาว่าอ๊อทอาจเห็น
> ผมกำลัง blog เรื่องฟอนต์เลยถามเข้ามา
>
> เกี่ยวกับการเคลียร์ TODO list หลังจากแก้เรื่อง font synthesizing bug
> แล้ว ตอนนี้ผมข้ามเรื่องฟอนต์ไปก่อน เนื่องจากดูแล้ว ปัญหาอื่นทุกอย่าง
> อยู่ที่ hinting ทั้งนั้น รวมทั้งเรื่องความกว้างของตัวเลขอารบิกด้วย
> น่าจะใช้เวลามากเกินไป จนงานอื่นจะไม่ได้ทำ ก็เลยข้ามไปทำเรื่อง
> libthai/swath ก่อน ซึ่งมีประเด็นเยอะพอสมควรเหมือนกัน
>
> ก็ขออภัยด้วยนะครับ ถ้าจะยังไม่เจาะเรื่องฟอนต์ในตอนนี้
>
> เทพ.
> --
> Theppitak Karoonboonyananhttp://linux.thai.net/~thep/

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

วิทยา

wd

unread,
Mar 30, 2009, 12:26:34 PM3/30/09
to Thai Linux/FOSS developers
เกือบลืม
ถ้าต้องการแบบขัดตาทัพ เอา fixed font ของ DejaVu
ที่ทำไว้แล้วมาใช้ก่อนก็ได้นะครับ
www.thaitux.info/files/fonts/DejaVuSansMonoThai-ttf.tar.gz

มีแค่ Book ขนาดเดียวและ hint แบบหยาบ ๆ ครับ

วิทยา

Pattara Kiatisevi (list)

unread,
Mar 31, 2009, 6:12:42 AM3/31/09
to thai-linux...@googlegroups.com
วิธีใช้มันยังไงหว่า :)

ผมเอา DejaVuSansMonoThai-ttf ไปวางใน ~/.fonts แล้ว fc-cache
แล้วมันก็ไม่มีให้เลือกใน choices font ของ Konsole (มีแต่ TlwgTypo,
DejaVuuSansMono, Courier อะไรเทือกนั้น) restart X แล้ว (เกี่ยวป่าวหว่า)

ผมก็ลอง ttmkfdir > fonts.scale && mkfontdir แล้วก็เหมือนเดิม
ไม่รู้เด๋วนี้มันยังต้องทำอะไรยังงี้ไหม มึน

ตอนนี้ก็็เลยเปลี่ยนฟอนต์ไปใช้ DejaVuuSansMono ซึ่งตัวอังกฤษผมว่าสวยดี
ทีนี้แล้วพอพิมพ์ไทยเข้าไป ตัวอักษรที่แสดงมันหน้าตาเหมือน TlwgTypo (แสดงว่ามันหา glyph
ไทยไม่ได้ ก็เลยไปดึงของ TlwgTypo มา?) สรุป happy ภาษาอังกฤษ คมชัด ภาษาไทยก็พิมพ์ได้
ตัวบางไปนิดแต่ก็พอไหวครับ

รอฟอนต์ 8pt อยู่น่ะครับ :) อ่านใน blog พี่เทพแล้วแหละแต่ไม่ใคร่เข้าใจ ถ้าตั้งตามนั้นแล้ว
เวลาดู web ที่มีการระบุ css เป็น 8pt ก็จะเห็นฟอนต์ตัวเล็กคมชัดประมาณ Tahoma หรือเปล่า
หรือว่ามันจะขยายไปใช้ฟอนต์โตขึ้น หรือ ย่อฟอนต์โตลงมาให้เล็ก จะลองตามตอนนี้รู้สึกแปลกๆ ปรับ
config อะไรใน /etc/fonts/* แล้วบางทีมันไม่เห็นมีไรเปลี่ยน สงสัยทำยังไม่ค่อยถูก
Ott

wd

unread,
Mar 31, 2009, 6:43:08 AM3/31/09
to Thai Linux/FOSS developers
On Mar 31, 5:12 pm, "Pattara Kiatisevi (list)" <pattara-l...@mm.co.th>
wrote:

> วิธีใช้มันยังไงหว่า :)
>
> ผมเอา DejaVuSansMonoThai-ttf ไปวางใน ~/.fonts แล้ว fc-cache
> แล้วมันก็ไม่มีให้เลือกใน choices font ของ Konsole (มีแต่ TlwgTypo,
> DejaVuuSansMono, Courier อะไรเทือกนั้น) restart X แล้ว (เกี่ยวป่าวหว่า)

ของผมเล่นโกง คือเปลี่ยนไฟล์ใน /etc/fonts/conf.d คือ
45-latin.conf
60-latin.conf
64-ttf-thai-tlwg.conf

เติมบรรทัด
<family>DejaVu Sans Mono Thai</family>
ลงในช่วง <family>monospace</family>
ในทุก ๆ ไฟล์ ให้อยู่เป็นบรรทัดแรก แล้วล๊อกเอาต์และล๊อกอินใหม่
ก็ใช้ได้แล้วครับ
ตัวไฟล์ฟอนต์จริง อาจใส่ไว้ใน ~/fonts หรือ /usr/share/fonts/truetype
ก็ได้

แต่ DejaVu Sans Mono Thai ยังเป็นตัวทดสอบอยู่ครับ (รอคุณเทพ Approve
วิธีการทำ fixed width)
ทดสอบกับ rxvt แสดงผลได้ดีเลิศ
แต่กับ gnome-termial แสดงผลเละ

วิทยา

Pattara Kiatisevi (list)

unread,
Mar 31, 2009, 10:44:06 AM3/31/09
to thai-linux...@googlegroups.com
มี shot ให้ดูสักเล็กน้อยไหมครับ จะได้แน่ใจว่าไอ้ที่ใช้อยู่ในมันใช่หรือเปล่า

จะพยายาม test บน Konsole (KDE) ให้ครับ
Ott

wd

unread,
Mar 31, 2009, 9:02:30 PM3/31/09
to Thai Linux/FOSS developers
On Mar 31, 9:44 pm, "Pattara Kiatisevi (list)" <pattara-l...@mm.co.th>
wrote:

> มี shot ให้ดูสักเล็กน้อยไหมครับ จะได้แน่ใจว่าไอ้ที่ใช้อยู่ในมันใช่หรือเปล่า
>
http://www.thaitux.info/node/548

> จะพยายาม test บน Konsole (KDE) ให้ครับ
> Ott
>

ขอบพระคุณครับ
วิทยา

Theppitak Karoonboonyanan

unread,
Mar 31, 2009, 9:51:51 PM3/31/09
to thai-linux...@googlegroups.com
2009/3/31 Pattara Kiatisevi (list) <pattar...@mm.co.th>:

> รอฟอนต์ 8pt อยู่น่ะครับ :) อ่านใน blog พี่เทพแล้วแหละแต่ไม่ใคร่เข้าใจ ถ้าตั้งตามนั้นแล้ว
> เวลาดู web ที่มีการระบุ css เป็น 8pt ก็จะเห็นฟอนต์ตัวเล็กคมชัดประมาณ Tahoma หรือเปล่า
> หรือว่ามันจะขยายไปใช้ฟอนต์โตขึ้น หรือ ย่อฟอนต์โตลงมาให้เล็ก จะลองตามตอนนี้รู้สึกแปลกๆ ปรับ
> config อะไรใน /etc/fonts/* แล้วบางทีมันไม่เห็นมีไรเปลี่ยน สงสัยทำยังไม่ค่อยถูก

กรณีใน blog เป็นเรื่องของเว็บที่กำหนด CSS มาไม่ค่อยดีน่ะครับ
เลือก MS Sans Serif, Tahoma 8pt ให้ ตามด้วย AngsanaUPC
โดยคนทำ CSS คงถือว่า 2 ฟอนต์แรกมีในทุกเครื่องอยู่แล้ว
เลยลืมเรื่อง Angsana 8pt ไป แต่เว็บทั่วไป (ที่ออกแบบดี) คงไม่มีปัญหานี้

ตอนนี้ thaifonts-scalable ใน SVN สังเคราะห์ฟอนต์ Tahoma ด้วย Waree
และ MS Sans Serif ด้วย Loma แล้ว โดยเปิดเว็บนั้นก็จะใช้ขนาด 8pt
ตามที่เขากำหนดนั่นแหละครับ เพราะได้แก้ bug เรื่องการสังเคราะห์ฟอนต์
ไปแล้ว (bug คือมันจะย่อขนาดลงถ้ามีการอ้างถึง Angsana พอแก้ก็ไม่ย่อแล้ว)

Theppitak Karoonboonyanan

unread,
Mar 31, 2009, 9:56:21 PM3/31/09
to thai-linux...@googlegroups.com
2009/3/31 wd <widh...@gmail.com>:

> แต่ DejaVu Sans Mono Thai ยังเป็นตัวทดสอบอยู่ครับ (รอคุณเทพ Approve
> วิธีการทำ fixed width)
> ทดสอบกับ rxvt แสดงผลได้ดีเลิศ
> แต่กับ gnome-termial แสดงผลเละ

ข่าวดีคือ gnome-terminal 2.26 จัดการเรื่อง combiing character เรียบร้อยแล้ว
(ขอบคุณ Behdad) แต่ยังติดปัญหาสระอำนิดหน่อย

screenshot ตามแนบครับ

Screenshot-terminal.png

wd

unread,
Apr 8, 2009, 9:03:30 AM4/8/09
to Thai Linux/FOSS developers
ฝากทดสอบอีกตัวนึงด้วยครับ
ลองเอา TlwgTypo มา hint โดยสร้างลายเส้นไทยใหม่ ตั้งชื่อว่า TlwgTypott
ตัวไทย hint เอง ตัวฝรั่งใช้ Auto-Instruction

ไฟล์ฟอนต์
http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz

ซอร์ส
http://www.thaitux.info/files/fonts/TlwgTypott-src-520408.tar.gz

ช็อต
http://www.thaitux.info/node/574

ขอบคุณครับ
วิทยา

wd

unread,
Apr 15, 2009, 6:18:50 AM4/15/09
to Thai Linux/FOSS developers
เพิ่มตัวหนา ตัวเอียง และตัวหนาเอียง แต่ใช้ Auto-Instruction ทั้งหมด

รุ่นนี้เอาไฟล์ฟอนต์ต้นฉบับของ GNU-Freefont มาใช้
ทำให้ได้รหัสอักขระเพิ่มขึ้น
แต่พบบั๊กใน Abiword แสดงผลเพี้ยน ๆ แต่กับ gedit และ Epiphany แสดงปกติ

ไฟล์ฟอนต์
http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz

ซอร์ส
http://www.thaitux.info/files/fonts/TlwgTypott-src-520415.tar.gz

การแสดงผลของ Auto-Instruction พอใช้งานได้
รุ่นหน้าจะทดลองเอาโค๊ดของ Auto-Instruction
ที่ได้จากเครื่องมาปรับแต่งเพิ่มเติมโค๊ดเข้าไป เพื่อแก้ไขให้ hint
ไทยดีขึ้น

วิทยา

wd

unread,
Apr 21, 2009, 11:57:48 AM4/21/09
to Thai Linux/FOSS developers
- เอา glyph จาก Typo กลับมาใช้ เพื่อแก้บั๊กแสดงผลเพี้ยน (ของ FreeMono
ยังไม่เป็น Mono จริง ๆ)
- เอาตัวเอียงและตัวหนาเอียงออก เพราะ hint ไม่ไหว
- hint ตัวหนา เฉพาะอักษรหลัก เสร็จ ดูเบลอ ๆ หน่อยตามแบบ Auto-
Instruction ของภาษาอังกฤษ

ไฟล์ฟอนต์
http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz

ซอร์ส
http://www.thaitux.info/files/fonts/TlwgTypott-src-520421.tar.gz


งานที่สำเร็จ
- เขียนโค๊ดเพิ่มที่ใช้ในการถอดค่า cvt และ fpgm จากไฟล์ sfd

งานที่ล้มเหลว
- การปรับแต่งโค๊ดที่เกิดจาก Auto-Instruction
เสียเวลานั่งไล่จุดมากเกินไป และผลการปรับแต่งไม่ดีนัก
(งานตรงนี้เปลืองสายตามาก)
สู้เขียนเองใหม่เร็วกว่าและควบคุมการแสดงผลได้ง่ายกว่า
- ต้องการ hint ด้วยมือแค่บางตัวอักษร ที่เหลือใช้เครื่องทำ Auto-
Instruction แต่ปัญหาคือเส้น glyph ที่เกิดจากการใช้ Auto-Instruction
เขาใช้คำสั่งแบบไม่ลงจุด (MIRP[min,black]) มีข้อดีคือการไล่ระดับ ppem
ดูสม่ำเสมอ และฟอนต์ดูนุ่มนวล แต่ทำให้การ hint
ด้วยมือเพื่อให้ลายเส้นกลมกลืนกับของเครื่องนั้น ยากมาก
โดยเฉพาะช่วงหัวอักษร
- ฟอนต์ตัวหนาของภาษาอังกฤษ เขาทำเส้นไว้หนามาก จึงทำให้ผลการ hint
ทำได้ไม่ดีนัก (จะลดขนาดเฉพาะภาษาไทยก็ขี้เกียจทำแล้ว)

ความรู้ที่ได้
- Auto-Instruction ใช้ได้ดีกับฟอนต์ที่มีเส้นบาง ๆ แต่ก็ต้องเพิ่ม/ลด
Hhint Vhint ช่วยด้วย จึงจะได้ผลดี ลำพังใช้ AutoHint เฉย ๆ ไม่ไหว
ประกอบกับการสร้างจุด ต้องแม่นจริง ๆ จึงจะทำให้งานออกมาดูกลมกลืน
ซึ่งหลาย ๆ อย่างรวมกันแล้วอาจทำให้เสียเวลามากกว่าการเขียนโปรแกรม hint
ด้วยซ้ำไป

ขอจบงานฟอนต์ชุดนี้ไว้เพียงเท่านี้ครับ
วิทยา

Theppitak Karoonboonyanan

unread,
Apr 22, 2009, 12:07:32 AM4/22/09
to thai-linux...@googlegroups.com
2009/4/21 wd <widh...@gmail.com>:

> - เอา glyph จาก Typo กลับมาใช้ เพื่อแก้บั๊กแสดงผลเพี้ยน (ของ FreeMono
> ยังไม่เป็น Mono จริง ๆ)
> - เอาตัวเอียงและตัวหนาเอียงออก เพราะ hint ไม่ไหว
> - hint ตัวหนา เฉพาะอักษรหลัก เสร็จ ดูเบลอ ๆ หน่อยตามแบบ Auto-
> Instruction ของภาษาอังกฤษ
>
> ไฟล์ฟอนต์
> http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz
>
> ซอร์ส
> http://www.thaitux.info/files/fonts/TlwgTypott-src-520421.tar.gz

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

ผมพยายามแกะซอร์สแล้ว รู้สึกว่าได้พยายามทำเรื่อง
TrueType instruction coding ที่ดูราวกับเขียนภาษาแอสเซมบลี
ให้เป็นอัตโนมัติให้มากที่สุด โดยไล่จัดวาง vertex ของเส้นโค้ง
ทีละตัวอักษรผ่านการจัด mnemonic code ด้วยโปรแกรมภาษา
ไพธอน แต่ผมก็ยังไม่เข้าใจกระบวนการดีนัก

จาก readme.txt บอกว่าให้สร้าง FONTNAME.py โดยมีเค้าโครง
มาให้ ซึ่งมันจะไปเรียกฟังก์ชันใน dfont, dttcmd เพื่อ

- extract TrueType instruction สำหรับ glyph ทีละ glyph
เพื่อให้แก้แล้วไปตัดแปะเข้า .sfd อันนี้ผมเข้าใจถูกไหม?

- (--all) update TT instruction ใน FONTNAME.sfd ตาม
man_FONTNAME.py ใช่หรือเปล่า? และอีกคำถามคือ
man_FONTNAME.py นี้ สร้างมายังไงครับ? ผมลอง diff เทียบกับ
man_skel.py แล้ว ดูเหมือนต้องปรับอะไรเพิ่มเยอะพอดู

ระบบนี้ ต้องใช้ ttx หรือเปล่าครับ?

ส่วนรายละเอียดทางเทคนิคอื่น ๆ ผมคงต้องไปศึกษา
TT instruction โดยละเอียดก่อน ถึงจะทำความเข้าใจได้
เบื้องต้นก็ถามแค่นี้ก่อนครับ

wd

unread,
Apr 22, 2009, 3:08:19 AM4/22/09
to Thai Linux/FOSS developers

On Apr 22, 11:07 am, Theppitak Karoonboonyanan <t...@linux.thai.net>
wrote:

> ผมพยายามแกะซอร์สแล้ว รู้สึกว่าได้พยายามทำเรื่อง
> TrueType instruction coding ที่ดูราวกับเขียนภาษาแอสเซมบลี
> ให้เป็นอัตโนมัติให้มากที่สุด โดยไล่จัดวาง vertex ของเส้นโค้ง
> ทีละตัวอักษรผ่านการจัด mnemonic code ด้วยโปรแกรมภาษา
> ไพธอน แต่ผมก็ยังไม่เข้าใจกระบวนการดีนัก

จริง ๆ แล้ว dfont.py ทำแค่
- เรียงสแต็กให้กลายมาเป็นอาร์กิวเมนต์ที่อยู่หลังคำสั่ง เพื่อให้ดูง่าย
(-d = decode)
- ทำย้อนกลับ คือเรียงอาร์กิวเมนต์กลับขึ้นเป็นสแต็ก (-e = encode)

ต่อมาจึงทำเสริมเรื่อง
- จัดรูปแบบคำสั่ง DELTAP ให้เขียนโค๊ดได้ง่ายขึ้น (f_deltap)
- ถอดโค๊ด TrueType Instruction จากไฟล์ sfd
ให้เป็นโค๊ดเทียมที่มีอาร์กิวเมนต์อยู่ข้างหลังคำสั่ง ไฟล์ที่ได้คือ
header_FONTNAME.py บรรจุค่า cvt และ fpgm และ inst_FONTNAME.py
บรรจุโค๊ดเทียมในไฟล์ sfd (ทุกตัวอักษร)
- สร้างคำสั่งเทียม(เป็นฟังก์ชั่นในไพธอน) ย่อจากคำสั่งจริง เช่น
MIRP[min,rnd,grey] cvt_1 point
กลายเป็น
mirpmrg(cvt_1,point)
(จุดประสงค์จริง ๆ คือประหยัดการเขียนโค๊ดให้น้อยที่สุด เพราะฟอนต์ตัวนึง
ถ้าเขียนตามแบบฉบับ ก็ต้องเขียนโค๊ดหลายพันบรรทัดครับ)


> จาก readme.txt บอกว่าให้สร้าง FONTNAME.py โดยมีเค้าโครง
> มาให้ ซึ่งมันจะไปเรียกฟังก์ชันใน dfont, dttcmd เพื่อ
>
> - extract TrueType instruction สำหรับ glyph ทีละ glyph
> เพื่อให้แก้แล้วไปตัดแปะเข้า .sfd อันนี้ผมเข้าใจถูกไหม?
>
> - (--all) update TT instruction ใน FONTNAME.sfd ตาม
> man_FONTNAME.py ใช่หรือเปล่า? และอีกคำถามคือ
> man_FONTNAME.py นี้ สร้างมายังไงครับ? ผมลอง diff เทียบกับ
> man_skel.py แล้ว ดูเหมือนต้องปรับอะไรเพิ่มเยอะพอดู

โค๊ดยังไม่เที่ยงนะครับ ปรับเปลี่ยนตลอด ล่าสุดที่ใช้กับ TlwgTypott-Bold
คือ

- FONTNAME.py เป็นแค่รับพารามิเตอร์จากบรรทัดคำสั่งเฉย ๆ
แต่มันจะไปเรียกฟังก์ชั่นใน man_FONTNAME.py มาใช้ในการผลิตโค๊ด
- man_skel.py ผมคัดลอกมาจาก man_TlwgTypott.py เพื่อใช้นำมาใช้กับ Bold
ทั้งนี้เพื่อเตรียมตัวทำเป็นไฟล์โครงสร้างของ man_FONTNAME.py ตัวต่อ ๆ
ไป
- man_FONTNAME.py ต้องเขียนขึ้นมาเองครับ บรรจุฟังก์ชั่นและคำสั่ง TT
เทียม
- คำสั่ง FONTNAME.py --all จะเป็นการนำโค๊ดที่ผลิตได้ (จาก
man_FONTNAME.py หรือ -a=จาก inst_FONTNAME.py) ไปใส่ไว้ในไฟล์ sfd
โดยไม่ต้องทำทีละตัว

>
> ระบบนี้ ต้องใช้ ttx หรือเปล่าครับ?
>

ไม่ได้ใช้ ttx เลยครับ ยกเว้นถ้าเราต้องการดูเส้นทางการเดินของจุด
(จำเป็นมาก ตอนเริ่มต้นศึกษาคำสั่ง) ก็ใช้คำสั่ง
ttx FONTNAME.ttf
จะได้ไฟล์ FONTNAME.ttx แล้วเอาไปใส่ในไดเรกทอรี่ rtv แล้วใช้โปรแกรม rtv
เรียกดูผ่านบราวเซอร์ (เขาเขียนด้วยจาวาสคริปต์ - รู้สึกจะเป็นคนอินเดีย)

วิทยา

Pattara Kiatisevi (list)

unread,
Apr 22, 2009, 5:59:42 AM4/22/09
to thai-linux...@googlegroups.com
wd wrote:
> - เอา glyph จาก Typo กลับมาใช้ เพื่อแก้บั๊กแสดงผลเพี้ยน (ของ FreeMono
> ยังไม่เป็น Mono จริง ๆ)
> - เอาตัวเอียงและตัวหนาเอียงออก เพราะ hint ไม่ไหว
> - hint ตัวหนา เฉพาะอักษรหลัก เสร็จ ดูเบลอ ๆ หน่อยตามแบบ Auto-
> Instruction ของภาษาอังกฤษ
>
> ไฟล์ฟอนต์
> http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz
>
> ซอร์ส
> http://www.thaitux.info/files/fonts/TlwgTypott-src-520421.tar.gz
>
>

ผมลองตาม URL ข้างต้น พบว่าถ้าใช้ที่ size 11 นี่ ก็ดูชัดกว่าอันเดิมพอควรครับ
แต่รู้สึกว่าภาษาไทยมันจะแปลกๆ ไงชอบกล เลยขยายขนาด และ ทำ shot มาตามแนบครับ

Ott

tlwgtypott.png
tlwgtypo.png

wd

unread,
Apr 22, 2009, 1:55:47 PM4/22/09
to Thai Linux/FOSS developers
ขอบคุณมากครับ

รายงานว่า ไม่พบบั๊กจากตาราง LOOKUP GPOS-GSUB แต่ไปพบบั๊กเกี่ยวกับการ
hint เล็กน้อยอื่น ๆ สักสองสามจุด แก้ไขเสร็จเรียบร้อยแล้ว

บนเดเบียน (Gnome) ถ้าไม่นับ OpenOffice.org แล้ว
ตัวอื่นแสดงผลได้ปกติทั้งหมดครับ

เครื่องผมลง konsole เหมือนกัน (รุ่น 2.2.2 ใช้ KDE 4.2.2)
แต่มันไม่ยอมแสดงสระเลยซักตัวนึง (ยกเว้นสระอำ) เลยไม่รู้จะทดสอบยังไง

การทดลองบน konsole คือ
- ลองสลับการแสดงผลระหว่าง enable/disable smooth fonts พบว่าถ้าไม่เปิด
smooth fonts การแสดงผลออกมาแปลก เพราะไม่ยอมแสดงตามที่ hint ไว้
- จึงทดสอบสลับเป็นตัวหนา (Bold)
จึงได้พบว่าเขาแสดงความสูงฟอนต์เท่ากันกับตัวปกติ ซึ่งจริง ๆ แล้ว
ฟอนต์ตัวนี้ความสูงของ glyph ตัวธรรมดากับตัวหนา ไม่เท่ากัน
- จึงเดาเอาว่า konsole เขาดึงเอาการแสดงผลไปจัดการเองทั้งหมด
ดังนั้นปัญหาคงไม่ได้อยู่ที่ฟอนต์ตัวธรรมดา แต่น่าจะไปอยู่ที่ตัวหนา
จึงตรวจตาราง LOOKUP และการวางจุด Anchor ของตัวหนาอีกครั้งนึง
ก็ไม่พบบั๊กเช่นเดียวกัน
- ไล่มาตรวจลายเส้น glyph อีกครั้ง พบว่าวรรณยุกต์ทั้งหมด ไม่ใช่เส้น
glyph จริง ๆ แต่เป็นการโยง reference มาจากวรรณยุกต์ระดับ low
แล้วลดขนาดให้เล็กลง ปัญหาน่าจะเป็นที่ จุด Anchor ของ glyph ตัวจริง
คงจะตีกับจุด Anchor ของตัว reference

การแก้ไข
- คัดลอกลายเส้นจริง ๆ มาแปะ แล้วจึงทำ Auto-Instruction
เฉพาะวรรณยุกต์ตัวที่แก้ไข

รบกวนฝากทดสอบใหม่ให้ด้วยครับ
ไฟล์ฟอนต์
http://www.thaitux.info/files/fonts/TlwgTypott-ttf.tar.gz

ซอร์ส
http://www.thaitux.info/files/fonts/TlwgTypott-src-520423.tar.gz

วิทยา

ปล.1 ขออภัยที่เล่าละเอียด เผื่อจะมีประโยชน์กับท่านอื่นน่ะครับ
ปล.2 สำหรับตัวหนา ถึงจะไม่พบบั๊กจากการวาง Anchor แต่ตำแหน่งที่วางไว้
ยังหยาบมาก หากต้องการให้ปรับปรุง รบกวนแจ้งกลับด้วยนะครับ
เพราะต้องทำร่วมกับการ hint สระและวรรณยุกต์ที่เหลือ

wd

unread,
Apr 22, 2009, 8:58:02 PM4/22/09
to Thai Linux/FOSS developers
ปล.3 ลืมถามว่าทดสอบด้วยรุ่นไหน ถ้าทดสอบด้วยรุ่นแรก 520421
ขอให้ลืมรายงานข้างบนให้หมด ;D
เพราะต้นฉบับภาษาอังกฤษ (FreeMono) มีปัญหาเรื่อง monospace และ OpenType
ครับ
รุ่นหลัง 520423 จึงเอาต้นฉบับจาก TlwgTypo จริง ๆ

วิทยา

Reply all
Reply to author
Forward
0 new messages