รบกวนเพื่อนสมาชิกช่วยทดสอบฟอนต์หน่อยครับ

เริ่มโพสต์โดย HudchewMan, 11 ส.ค. 2026, 15:33 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

uvSOV

อ้างคำพูดจาก: HudchewMan เมื่อ 13 ส.ค. 2026, 11:55 น.คราวนี้เปลี่ยน สระอำ เป็น นิคหิต + สระอา ตั้งแต่ต้นเลย (7)
ถ้าเจอ ป + นิคหิต ให้เปลี่ยนเป็น นิคหิตหลบ อันนี้ผ่าน (9)
แต่พอไปถึงบรรทัดตรวจสอบ ไม้เอกหลบ + นิคหิต ไม่ทำงาน (13)



ต้นทางเป็นอย่างที่เล่ามา.. ปลายทางในฟอนต์เป็นอย่างในรูปครับ



คำถามคือ ตั้งใจจะเปลี่ยน F705-F709 แต่ทำไม output ออกมาเป็น F701-F704 + F710-F712

HudchewMan

เปิดจากไฟล์ otf ไปดูตาราง lookup แล้วถึงกับงงเลย เพราะมันเปลี่ยนชื่อตารางที่ทำไว้หมด
เป็นสิ่งที่เพิ่งรู้ เพราะปกติแก้จาก .sfd ตลอด 😅

ผมแนบไฟล์ .sfd มาด้วยเลยนะครับ
https://drive.google.com/file/d/1fUQW4H6ewpkTCL4xQZjjQ1TgIKTHPWh4/view?usp=drive_link

ไฟล์ .fea
https://drive.google.com/file/d/1lmy2Wklrfiu7JozZnkgDiGbNYPmrnuUD/view?usp=drive_link

ตรงที่คุณ uvSOV ทักมา (จากภาพแนบ) มันคือ มันคือ
lookup SaraAm
lookup ssTonesLowLeftHighLeft


========================================================
lookup SaraAm {
    # ----------------------
    # พยัญชนะ ป ฝ ฟ
    # ----------------------
    # ถ้าสระอำตามหลัง ป ฝ ฟ ให้แยกสระอำ -> นิคหิต + สระอา
    sub @CONSONANTS_TAIL uni0E33' by uniF711 uni0E32;

    # วรรณยุกต์ต่ำหลบหาง → สูงหลบหาง
    sub @VOWELS_LEFT' lookup ssTonesLowLeftHighLeft uniF711;

    # ----------------------
    # พยัญชนะปกติ
    # ----------------------
    # วรรณยุกต์ต่ำที่มีสระอำปกติตามหลัง → เปลี่ยนระดับเป็นวรรณยุกต์สูง
    sub @CONSONANTS @TONES_LOW'  lookup ssTonesHigh uni0E33;
} SaraAm;


# วรรณยุกต์ต่ำหลบหาง → วรรณยุกต์สูงหลบหาง
lookup ssTonesLowLeftHighLeft {
    sub @TONES_LOW_LEFT by @TONES_HIGH_LEFT;
} ssTonesLowLeftHighLeft;

# สระบนหลบหาง (ไม้หันอากาศ, อิ, อี, อึ, อือ, ไม้ไต่คู้, นิคหิต)
@VOWELS_LEFT = [ uniF710 uniF701 uniF702 uniF703 uniF704 uniF712 uniF711 ];
# วรรณยุกต์ต่ำหลบหาง
@TONES_LOW_LEFT = [ uniF705 uniF706 uniF707 uniF708 uniF709 ];
# วรรณยุกต์สูงหลบหาง
@TONES_HIGH_LEFT = [ uniF713 uniF714 uniF715 uniF716 uniF717 ];

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


เดี๋ยวผมขอไปไล่ทำความเข้าใจตรงที่คุณ uvSOV ทักมาก่อนนะครับ
➡️ Twitter X
➡️ BlogSpot

HudchewMan

อ้างคำพูดจาก: uvSOV เมื่อ 13 ส.ค. 2026, 16:03 น.

คำถามคือ ตั้งใจจะเปลี่ยน F705-F709 แต่ทำไม output ออกมาเป็น F701-F704 + F710-F712

อ้างคำพูดจาก: uvSOV เมื่อ 13 ส.ค. 2026, 07:30 น.แอบเฉลยว่า.. logic ไม่ได้ผิด แต่ตัวแปรผิด


เจอตรงที่บอกว่าตัวแปรผิดล่ะครับ

เงื่อนไขที่สองของ lookup SaraAm
ผมต้องการตรวจสอบว่า วรรณยุกต์ต่ำหลบหาง + สระอำหลบหาง → วรรณยุกต์สูงหลบหาง
ของเดิมตรวจผิด ดันไปตรวจสระบนเยื้องซะนี่
sub @VOWELS_LEFT' lookup ssTonesLowLeftHighLeft uniF711;

ต้องแก้เป็น
sub @TONES_LOW_LEFT' lookup ssTonesLowLeftHighLeft uniF711;




แต่ก็ยังไม่ทำงานกับเวอร์ชัน 2023 อยู่ดี  :08:

เดี๋ยวไล่ตรวจสอบต่อครับ
➡️ Twitter X
➡️ BlogSpot

HudchewMan

แก้ไขได้ล่ะครับ
ตรงบรรทัดที่เมื่อกี้แก้ไป
sub @TONES_LOW_LEFT' lookup ssTonesLowLeftHighLeft uniF711;

ต้องแก้เพิ่มอีก เป็น
    sub @TONES_LOW_LEFT' lookup ssTonesLowLeftHighLeft uni0E33'lookup ssSplitSaraAmToLeft ;

จากนั้นก็สร้าง lookup เพื่อแยกสระอำเป็น นิคหิตหลบ + สระอา
lookup ssSplitSaraAmToLeft {
    sub uni0E33 by uniF711 uni0E32;
} ssSplitSaraAmToLeft;

ทำงานได้เรียบร้อย

ขอบคุณคุณ uvSOV มากครับ  :46:





➡️ Twitter X
➡️ BlogSpot

uvSOV

ยินดีครับ

ดีใจที่มีคนสร้าง script ในฟอนต์ ได้อีกคน
อีกหน่อย ก็จะสร้างฟอนต์ที่ต้องการความสลับซับซ้อนกว่านี้ได้

เอาจริง script แบบนี้ ก็ไม่มีคนเคยทำนะครับ  เอาไว้ใช้งานสำหรับคนไม่ชอบระบบ mark ได้
(แต่จริงๆ แนะนำให้ไประบบ mark เลยดีกว่า 
ส่วนปัญหาที่เคยถามไม่แน่ใจเหมือนกันครับ ปรกติผมไม่ใช้ mouse เลื่อน แต่ click ขวา เปิด menu มา edit ตำแหน่ง มากกว่า --> แม่นกว่า)

iannnnn

ตกใจ คิดว่าที่ผ่านมาไม่ได้ใช้เมาส์ทำฟอนต์เลย :3005:

ปอมป๋วย

ถ้าไม่มีรูปประกอบ ไอ้เจ้า F705-F709 F701-F704 + F710-F712 คืออะไร ผมยังไม่รู้เลย  :30:

สระอำ ไหน ๆ ก็เขียนแยก นิคหิต + สระอา ไปแล้ว
ไม่ต้องแยกเฉพาะตามหลัง ป ฝ ฟ ก็ได้นะครับ
สั่งแยกทุกครั้งที่เจอไปเลย ยังไงก็ได้ใช้
แล้วถ้าใช้ anchor mark ยังไงก็คุมตำแหน่งง่ายกว่า
ติดตาม และช่วยส่งเสียค่าเลี้ยงดูได้ที่ ธรรมดาสตูดิโอ

HudchewMan

อ้างคำพูดจาก: uvSOV เมื่อ 13 ส.ค. 2026, 19:11 น.เอาจริง script แบบนี้ ก็ไม่มีคนเคยทำนะครับ  เอาไว้ใช้งานสำหรับคนไม่ชอบระบบ mark ได้
(แต่จริงๆ แนะนำให้ไประบบ mark เลยดีกว่า 
ส่วนปัญหาที่เคยถามไม่แน่ใจเหมือนกันครับ ปรกติผมไม่ใช้ mouse เลื่อน แต่ click ขวา เปิด menu มา edit ตำแหน่ง มากกว่า --> แม่นกว่า)


ผมเจอฟอนต์ที่ใช้ mark อย่างเดียวแล้วมันมีปัญหาเรื่องวรรณยุกต์จมกับบางโปรแกรมและแอปอ่านหนังสือบางตัวครับ (จำไม่ได้ล่ะ)

เลยเลือกใช้เป็น Private Use Area เหมือนฟอนต์สมัยเก่าแทน และใส่ mark ลงไปเพื่อใช้ปรับตำแหน่งบางตัว

ที่ต้องมาเขียนโค้ดกำกับ เพราะเพิ่งมารู้ตอนเอาไปทดสอบกับ Word บน Windows ว่าถ้าไม่มีโค้ดแล้วมันไม่จัดการให้ ผมใช้แต่ LibreOffice บน Linux มาตลอด มันจัดการอัตโนมัติ


การใช้ mark นี่ทำให้การปรับตำแหน่งสระวรรณยุกต์อิสระมากจริงๆ โดยเฉพาะฟอนต์ลายมือและอักษรวิจิตร

ลำบากหน่อยเวลาใช้บน FontForge เพราะตัวช่วยทำงานมันน้อย ไม่เหมือนพวก FontLab (><) ยิ่งใส่ anchor เยอะ ยิ่งเหนื่อย



ปัญหาเรื่องจุด anchor วางทับซ้อนกับ glyph outline
ผมทำอะไรไม่ได้เลยครับ ไม่ว่าจะคลิกเพื่อลาก หรือคลิกขวาเพื่อเรียกคำสั่ง info ขึ้นมา
➡️ Twitter X
➡️ BlogSpot

HudchewMan

อ้างคำพูดจาก: iannnnn เมื่อ 13 ส.ค. 2026, 21:37 น.ตกใจ คิดว่าที่ผ่านมาไม่ได้ใช้เมาส์ทำฟอนต์เลย :3005:

ต่อไปใช้ Pencil แทนเมาส์ได้ครับ ฮ่า  :30:
➡️ Twitter X
➡️ BlogSpot

HudchewMan

อ้างคำพูดจาก: ปอมป๋วย เมื่อ 13 ส.ค. 2026, 22:26 น.สระอำ ไหน ๆ ก็เขียนแยก นิคหิต + สระอา ไปแล้ว
ไม่ต้องแยกเฉพาะตามหลัง ป ฝ ฟ ก็ได้นะครับ
สั่งแยกทุกครั้งที่เจอไปเลย ยังไงก็ได้ใช้
แล้วถ้าใช้ anchor mark ยังไงก็คุมตำแหน่งง่ายกว่า

ตอนเริ่มทำ ก็มีลองแยกสระอำทุกตัวเหมือนกัน แต่สุดท้ายเลือกเป็นแยกเฉพาะ ปฝฟ ครับ
เพราะถ้าแยกทุกตัว จะต้องมาไล่เช็คอีกว่าตอนนี้เป็นตัวนิคหิตที่เจอกับหาง ปฝฟ หรือเปล่า ต้องเช็คทั้งพยัญชนะเปล่า และพยัญชนะ+สระบนล่าง , นิคหิตที่มาจากสระอำ (ตามหลังวรรณยุกต์) , นิคหิตที่พิมพ์จากแป้นพิมพ์ (พิมพ์ก่อนวรรณยุกต์) ผมเพิ่งเริ่มศึกษาเรื่องนี้ เลยพยายามลดขั้นตอนการตรวจสอบเพื่อลดโอกาสเกิดข้อผิดพลาดน่ะครับ

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

ผมขี้เกียจนั่งใส่ anchor ทีละตัว เลยเขียน python แปะ mark ไว้ตำแหน่งเดียวกันหมด แล้วค่อยขยับบางตัวเอา (><)
➡️ Twitter X
➡️ BlogSpot

SMF 2.1.7 © 2026, Simple Machines