หน้า: [1]
 
ผู้เขียน กระจู๋: วาดตัวอักษรด้วยสูตรคณิตศาสตร์  (อ่าน 2036 ครั้ง)
0 สาวก และ 1 ขาจร กำลังดูกระจู๋นี้
ผมกำลังค้นหาวิธีทำฟอนต์ด้วยสูตรคณิตศาสตร์ เพราะขี้เกียจวาดทีละตัว แล้วก็เจอ Metafont กับ Asymptote ซึ่งเป็นภาษาสำหรับสั่งให้คอมพิวเตอร์วาดภาพด้วยตัวเลข แต่ Metafont แปลงเป็นภาพเวคเตอร์ลำบากเลยลองเล่น Asymptote แทน (คนใช้ Asymptote ส่วนใหญ่คงเป็นนักคณิตศาสตร์หรือไม่ก็โปรแกรมเมอร์ เลยไม่ค่อยมีใครใช้มันวาดฟอนต์)

ใครสนใจวิธีขึ้นโครงฟอนต์แบบวาดเส้นทีเดียวแล้ว preview ดูได้หลายน้ำหนักหลายสไตล์พร้อมกันก็ลองเล่นดูนะครับ น่าจะช่วยประหยัดเวลาได้ ข้อดีคือเราจะเห็นความหนาและสัดส่วนของตัวอักษรหลายน้ำหนักเพียงแค่เขียนโค้ดเพิ่มสูตร (เหมือนตำราอาหาร) ก่อนตัดสินใจเลือกว่าจะเอาสูตรไหนแล้วค่อยเก็บรายละเอียดเพื่อทำฟอนต์ตระกูลใหญ่ต่อไป ข้อเสียคือมันไม่มี GUI ให้นะครับ ต้องใช้ text editor กับ terminal สั่งงานเท่านั้น



จากภาพตัวอย่างนี้ เราสามารถเขียนโค้ดเพื่อวาดเส้นแค่ 2 เส้น แล้วเขียนสูตรเพื่อประกอบมันเป็นตัว a ผมใช้วิธีพล็อตเส้นสีแดงด้วยโค้ดประมาณนี้

โค้ด:
path a1 = (20,440){up} .. tension 0.9 .. (220,610) .. tension 0.9 .. {down}(420,440) -- (420,210){down} .. (480,0){curl 90};
path a2 = (420,420){down} .. (140,290) .. (10,150) .. (140,-10) .. {up}(420,270);

จากนั้นก็เขียนสูตรให้มันเปลี่ยนเป็นสไตล์ calligraphy ที่ดูมีมิติและมีหลายน้ำหนัก (hairline-bold) ถ้าจำไม่ผิดมันคงใกล้เคียงกับ brush ของ Adobe Illustrator? แต่ Asymptote จะยืดหยุ่นกว่าในแง่การใช้สูตรคำนวณได้หลากหลายด้วยการเขียนฟังชั่นใหม่ (มันคงมีวิธีทำให้เส้นเนียนกว่าภาพตัวอย่างของผมนะครับ แต่ผมยังเขียนฟังชั่นไม่เป็น กำลังงม syntax อยู่) ผมก็เพิ่งหัดเขียนโค้ด  Asymptote ไม่กี่ชั่วโมงเลยทำอะไรได้ไม่มาก แต่อยากโพสต์ภาพตัวอย่างไว้ เผื่อมีใครใช้วิธีนี้อยู่ผมจะได้ขอคำแนะนำด้วยครับ
บันทึกการเข้า

เทมเพลตฟอนต์ไทย FontUni https://github.com/fontuni/fontuni/releases
เหวออออออ เหวอ
บันทึกการเข้า

อาชีพปัจจุบันคือเปิดร้านสกรีนเสื้อครับ ช่วยอุดหนุนด้วยเด้อ
ล้ำมาก  กรี๊ดดดดด
บันทึกการเข้า

แล้วออกมาสวยด้วยนะ มันล้ำตรงนี้แหละ  กรี๊ดดดดด
บันทึกการเข้า

ติดตาม และช่วยส่งเสียค่าเลี้ยงดูได้ที่ ธรรมดาสตูดิโอ
มันยากตรงที่ต้องหาสูตรหรือสมการเพื่อพล็อตเส้นโค้งครับ ถ้าเก่งแคลคูลัสกับตรีโกณมิตินี่จะกลายเป็นเทพเจ้าเลย (เผอิญผมลืมหมดแล้ว) แต่ถ้าใช้โปรแกรม GUI อย่าง Inkscape ผมจะวาดเส้นโค้งได้ดั่งใจกว่า แบบไม่ต้องเขียนโค้ดพล็อตที่ละจุดหรือใช้สูตรคณิตศาสตร์เลย แต่ผมยังหาวิธีแปลงไฟล์เว็คเตอร์ อย่าง SVG หรือ EPS เป็นโค้ด Asymptote ไม่ได้ ถ้าแปลงได้ก็คงทำฟอนต์หลายน้ำหนักได้เร็วมากๆ ความเป็นไปได้อีกอย่างที่ทำให้ผมอยากใช้ Asymptote คือมันเพิ่มสไตล์ narrow หรือ wide หรือแม้แต่เปลี่ยน x-height, cap-height, asc,desc ได้ง่ายด้วย แค่เขียนฟังชั่นเพื่อปรับ parameters โดยไม่ต้องวาดเส้นใหม่
บันทึกการเข้า

เทมเพลตฟอนต์ไทย FontUni https://github.com/fontuni/fontuni/releases
หน้า: [1]
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!