หัดทำฟอนต์ไทย ใช้ Fontlab 7 + Mark

Started by iannnnn, 11 May 2021, 18:03 น.

0 Members and 1 Guest are viewing this topic.

iannnnn

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

iannnnn

สอบถามครับ



ผมเจอข้อความนี้ตอนลองปรับช่องไฟ (kerning) คือก่อนหน้านี้ปรับ kern ตัวละตินก็ปกติดี ปรับได้
แต่พอวันนี้มาฮึบทำภาษาไทยบ้าง แล้วเจออันนี้เด้งขึ้นมา
มันคืออิหยัง ดูเหมือนไปยุ่งเกี่ยวกับอะไรสักอย่างที่โปรแกรมมันท้วง :44:

TA Font

Quote from: iannnnn on 21 May 2021, 21:03 น.
สอบถามครับ



ผมเจอข้อความนี้ตอนลองปรับช่องไฟ (kerning) คือก่อนหน้านี้ปรับ kern ตัวละตินก็ปกติดี ปรับได้
แต่พอวันนี้มาฮึบทำภาษาไทยบ้าง แล้วเจออันนี้เด้งขึ้นมา
มันคืออิหยัง ดูเหมือนไปยุ่งเกี่ยวกับอะไรสักอย่างที่โปรแกรมมันท้วง :44:


ถ้าเข้าใจไม่ผิด จริงๆ แล้วน่าจะไม่มีอะไรนะครับ เหมือนประมาณว่า มีการจัด kerning ที่โปรแกรมแนะนำให้จากของเดิมอยู่แล้ว โปรแกรมถามว่าเราจะกำหนดค่าเองไหมน่ะครับ 
ผมก็เคยเจอเด้งแบบนี้ตอนทำ kerning เหมือนกันครับ ผมไม่ชัวร์นะครับรอกูรูมาให้ความกระจ่างเพิ่มเติมอีกทีครับ
---
อ่อ แล้วก็ Adobe PS กับ Ai ต้องตั้งค่าตามลิ้งค์นี้ก่อนนะครับ มาร์คถึงจะทำงานนะครับ
https://ifelse.co/graphic/thai-illustrator-photoshop?fbclid=IwAR3G23q2XijD5HW9kKJExPLSEK8VucVbULJdsqEpH58ja-lFfcAuICQgVsw

iannnnn


iannnnn

 :25: :25: :25: :25:

เพิ่งได้กลับมาทำครับ (หลังลูกหลับอีกแล้ว  :59:)
ตอนนี้จัดช่องไฟน่าจะเกือบหมดแล้วมั้ง
ปรากฏว่าเจอปัญหาเรื่องโค้ดๆ อีกแล้วครับ



คือพวกพยัญชนะหางยาว สระบนล่างหลบหาง
เวลาเจอสระอำ มันพินาศหมดเลยครับ
อันนี้เรามีกระบวนการผสมสระอำแยก ํ กับ า ใช่ไหมครับ

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


อันนี้ไฟล์ต้นฉบับฟอนต์ครับ / ไฟล์ ttf


ขอบคุณมากๆ ครับ :4605:

ปอมป๋วย

#50
Quotefeature ccmp {

   sub saraam-thai by nikhahit-thai saraaa-thai; (1)
   sub maiek-thai nikhahit-thai by maiek-thai.nik;  (2)
   sub maitho-thai nikhahit-thai by maitho-thai.nik;
   sub maitri-thai nikhahit-thai by maitri-thai.nik;
   sub maichattawa-thai nikhahit-thai by maichattawa-thai.nik;

} ccmp;

ผมใช้ ccmp แยก ำ ออกมาเป็น ํ + า ฮะ (1)
แล้วถ้า ํ เจอกับ วรรณยุกต์ จะรวบเป็นอีก glyph หนึ่ง (รวมนิคหิตกับวรรณยุกต์) (2)


================

เพิ่ม ๆ เพิ่งเห็นในรูปว่า มี ccmp อยู่แล้ว
เผลอ ๆ ฟีเจอร์มันใช้งานได้อยู่แล้วรึเปล่า ?
แค่มันบั๊กการแสดงผลบน fontlab
>>> ลองเคาะ space ท้ายประโยคทีนึงฮะ  :30:
ติดตาม และช่วยส่งเสียค่าเลี้ยงดูได้ที่ ธรรมดาสตูดิโอ

james0007

https://kateliev.github.io/TypeRig/
ไปเจอมา รู้ว่าดีแต่ใช้ยังไม่คล่องครับ :12:
โชว์ห่วยฟอนต์ของผมครับ https://www.facebook.com/jjfontjames/

james0007



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

- ถ้าปิดฟีเจอร์ไม่ให้ทำงาน พิมพ์ได้ปกติ แต่วรรณยุกต์ลอย
- แต่ถ้าเปิดฟีเจอร์ไม่ให้วรรณยุกต์ลอย ก็จะเป็น

1. ลองทุกเทมเพลตก็เป็น และลอง Gen จากเทมเพลต เป็นฟอนต์พิมพ์ที่ illus ไม่พบปัญหาใดๆ แต่พอเอาฟอนต์กลับมาเปิดก็เป็นอีก ปัญหาเลยน่าจะเกิดจากตัวโปรแกรมเองกับสระอำนี่แหละ
2. ลองเปิดฟอนต์เกณฑ์ของคุณ ปอมป๋วย แล้วบ่เป็นหยัง แสดงว่าเราต้องแก้ตามคุณปอมป๋วยบอก ถึงจะแสดงผลการพรีวิวได้อย่างไม่มีปัญหา แต่ถ้าไม่เน้นดูพรีวิวในโปรแกรมน่าจะไม่ต้องแก้ก็ได้ ยังงั้นมั้งครับ
3. ทีแรกว่าจะถาม พอดีลองฟอนต์คุณปอมป๋วย ตามด้านบน เลยกลายเป็นสรุปแทน :43:
โชว์ห่วยฟอนต์ของผมครับ https://www.facebook.com/jjfontjames/

iannnnn

แสดงว่าตัวฟอนต์ก็ตกกะปิดี เพียงแต่ตัวโปรแกรมพรีวิวแล้วเพี้ยนอะไรงี้เนอะครับ :49:

uvSOV

เท่าที่ดู..เดาว่า.. ฟอนต์ธรรมดา มีอักษรคู่ ของนิคหิต กับวรรณยุกต์  เช่นเดียวกับ ฟอนต์อยู่นี่ และคัดสรร  .. การแสดงผลใน FL จึงไม่มีปัญหา  เพราะได้จัดการด้วย ligature แล้ว

ปัญหา .. ไม่เอา เปลี่ยนความสามารถของ s/w ใหม่ๆ ที่พบคือการจัดการ สระอำ ด้วยตัวเอง เช่น MS word มันจัดแยก สระอำ เป็น นิคหิต + ลากข้างให้เอง
..เดาว่า.. มันทำทีหลัง เงื่อนไขทั้งหมดของเรา ทำให้ไม่เป็นไปตามตำแหน่งการ mark หรือเพี้ยนไป

--> ลองเพิ่ม liga อีก 4 คู่ ดูครับ  ํ่  ํ้  ํ๊  ํ๋

Jipatype

ผมเขียนจัดการสระอำนิคหิตแบบนี้ เพื่อช่วยอะไรได้บ้างครับ
ผมไม่ได้รวม nik + wannayuk เป็น glyph เดียวกัน ผมอยากให้มันแยกกันอยู่ต่อไป
--------

@sarabon =  [nikhahit-thai maiHanaKat-thai saraI-thai saraIi-thai saraUe-thai saraUee-thai];
@wannayuk = [maiEk-thai maiTho-thai maiTri-thai maiChattawa-thai thanthakhat-thai];
@wannayuk.small =  [maiEk-thai.small maiTho-thai.small maiTri-thai.small maiChattawa-thai.small thanthakhat-thai.small];

lookup maiEk.to.nikhahit {sub maiEk-thai by nikhahit-thai;} maiEk.to.nikhahit;
lookup maiTho.to.nikhahit {sub maiTho-thai by nikhahit-thai;} maiTho.to.nikhahit;
lookup maiTri.to.nikhahit {sub maiTri-thai by nikhahit-thai;} maiTri.to.nikhahit;
lookup maiChattawa.to.nikhahit {sub maiChattawa-thai by nikhahit-thai;} maiChattawa.to.nikhahit;
lookup thanthakhat.to.nikhahit {sub thanthakhat-thai by nikhahit-thai;} thanthakhat.to.nikhahit;
lookup nikhahit.to.maiEk {sub nikhahit-thai by maiEk-thai;} nikhahit.to.maiEk;
lookup nikhahit.to.maiTho {sub nikhahit-thai by maiTho-thai;} nikhahit.to.maiTho;
lookup nikhahit.to.maiTri {sub nikhahit-thai by maiTri-thai;} nikhahit.to.maiTri;
lookup nikhahit.to.maiChattawa {sub nikhahit-thai by maiChattawa-thai;} nikhahit.to.maiChattawa;
lookup nikhahit.to.thanthakhat {sub nikhahit-thai by thanthakhat-thai;} nikhahit.to.thanthakhat;


feature ccmp {

lookup ccmp_thai_1 {
sub saraAm-thai by nikhahit-thai saraAa-thai;
} ccmp_thai_1;

lookup ccmp_thai_nikhahit {
sub maiEk-thai' lookup maiEk.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiEk;
sub maiTho-thai' lookup maiTho.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiTho;
sub maiTri-thai' lookup maiTri.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiTri;
sub maiChattawa-thai' lookup maiChattawa.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiChattawa;
sub thanthakhat-thai' lookup thanthakhat.to.nikhahit nikhahit-thai' lookup nikhahit.to.thanthakhat;
} ccmp_thai_nikhahit;

lookup ccmp_thai_mark {
sub @sarabon @wannayuk' by @wannayuk.small;
} ccmp_thai_mark;

} ccmp;

james0007

ขอบคุณทุกท่าน จะค่อยๆ งม หลังเหวี่ยงแหครับ :43:
โชว์ห่วยฟอนต์ของผมครับ https://www.facebook.com/jjfontjames/

iannnnn

อัปเดตครับ ถึงจะค่อยๆ ทำวันละนิด แต่ก็ไม่ได้หนีไปไหนนะ :3005:


ตอนนี้ยังงมกับปัญหาเดิมอยู่
เนื่องจากพยายามไปแตะโค้ดแล้วก็พบว่าไปไม่เป็น  :30:
ไม่เก็ตการเขียนในหน้าฟีเจอร์พวก ccmp / prefix ต่างๆ เลย (มีการตั้งเงื่อนไขบางอันมันไปโผล่ในอีกหมวดด้วย)
ก็เลยไล่ๆ ดูชื่อ glyph ครับ พรินต์แปะฝาห้องไว้ว่าตัวไหนชื่ออะไร ก็พบว่าไม่สะดวกนัก

เลยทำแบบนี้เอา :30:



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

แต่ก็ยังเจอต้นตอของปัญหาครั้งก่อนคือ ผมลืมใส่สมอมันเอง ในวรรณยุกต์ตัวที่หลบซ้าย
ก็เลยค่อยๆ งมไปเรื่อยๆ ตอนนี้เจอปัญหาบั๊ก (หรือเปล่าหนอ) ในการพรีวิวของ ฟล7
อย่างที่เห็นในภาพครับ คือวรรณยุกต์มันโดดไปไกล และเวลาจะให้แสดงผลครบๆ ก็ต้องเคาะสเปซ 2 ที

iannnnn

Quote from: uvSOV on 27 May 2021, 08:44 น.
--> ลองเพิ่ม liga อีก 4 คู่ ดูครับ  ํ่  ํ้  ํ๊  ํ๋

อันนี้เดี๋ยวไว้เป็นท่าไม้ตายครับถ้ายังเจอปัญหาอยู่ วันนี้ง่วงแล้ว :05:

ส่วนอันนี้

Quote from: Jipatype on 27 May 2021, 09:45 น.
ผมเขียนจัดการสระอำนิคหิตแบบนี้ เพื่อช่วยอะไรได้บ้างครับ
ผมไม่ได้รวม nik + wannayuk เป็น glyph เดียวกัน ผมอยากให้มันแยกกันอยู่ต่อไป
--------

@sarabon =  [nikhahit-thai maiHanaKat-thai saraI-thai saraIi-thai saraUe-thai saraUee-thai];
@wannayuk = [maiEk-thai maiTho-thai maiTri-thai maiChattawa-thai thanthakhat-thai];
@wannayuk.small =  [maiEk-thai.small maiTho-thai.small maiTri-thai.small maiChattawa-thai.small thanthakhat-thai.small];

lookup maiEk.to.nikhahit {sub maiEk-thai by nikhahit-thai;} maiEk.to.nikhahit;
lookup maiTho.to.nikhahit {sub maiTho-thai by nikhahit-thai;} maiTho.to.nikhahit;
lookup maiTri.to.nikhahit {sub maiTri-thai by nikhahit-thai;} maiTri.to.nikhahit;
lookup maiChattawa.to.nikhahit {sub maiChattawa-thai by nikhahit-thai;} maiChattawa.to.nikhahit;
lookup thanthakhat.to.nikhahit {sub thanthakhat-thai by nikhahit-thai;} thanthakhat.to.nikhahit;
lookup nikhahit.to.maiEk {sub nikhahit-thai by maiEk-thai;} nikhahit.to.maiEk;
lookup nikhahit.to.maiTho {sub nikhahit-thai by maiTho-thai;} nikhahit.to.maiTho;
lookup nikhahit.to.maiTri {sub nikhahit-thai by maiTri-thai;} nikhahit.to.maiTri;
lookup nikhahit.to.maiChattawa {sub nikhahit-thai by maiChattawa-thai;} nikhahit.to.maiChattawa;
lookup nikhahit.to.thanthakhat {sub nikhahit-thai by thanthakhat-thai;} nikhahit.to.thanthakhat;


feature ccmp {

lookup ccmp_thai_1 {
sub saraAm-thai by nikhahit-thai saraAa-thai;
} ccmp_thai_1;

lookup ccmp_thai_nikhahit {
sub maiEk-thai' lookup maiEk.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiEk;
sub maiTho-thai' lookup maiTho.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiTho;
sub maiTri-thai' lookup maiTri.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiTri;
sub maiChattawa-thai' lookup maiChattawa.to.nikhahit nikhahit-thai' lookup nikhahit.to.maiChattawa;
sub thanthakhat-thai' lookup thanthakhat.to.nikhahit nikhahit-thai' lookup nikhahit.to.thanthakhat;
} ccmp_thai_nikhahit;

lookup ccmp_thai_mark {
sub @sarabon @wannayuk' by @wannayuk.small;
} ccmp_thai_mark;

} ccmp;


ขอบคุณมากๆ ครับ
เดี๋ยวขอปล้ำชุดนี้ก่อน ถ้ายังมีปัญหาจะลองใช้วิธีนี้ดูครับ

uvSOV

ขออภัยครับ ที่ใช้ชื่อเป็นรหัสแทนที่จะใช้ชื่ออักษร ทำให้เข้าใจยาก  ..เนื่องจากว่าผม coding เยอะมาก การใช้รหัสจะง่ายต่อการแก้ไข เวลาทำชุดอักษรหลายๆชุด  เดี๋ยวผมทำ template ให้ใหม่ ..ไม่รู้จะทำให้ยากกว่าเดิมไหมเนี่ยะ 55  ที่ต้องเริ่มต้นใหม่ (จะได้ปรับชื่อ mark ด้วย)

SMF 2.1.7 © 2026, Simple Machines