หน้า: [1]
 
ผู้เขียน หัวข้อ: ตัวอย่างการทำ Interpolate ด้วย Fontforge  (อ่าน 4645 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
เวลาผมทำฟอนต์ผมใช้โปรแกรม Fontforge ตลอดมาในการทำน้ำหนักต่างๆ
ซึ่งเขียนด้วย Python Script สำหรับการทำ Interpolate โดยเฉพาะ
จากการทำ Interpolate ทำให้ได้ไฟล์ fontforge สำหรับน้ำหนักต่างๆ ออกมา
หากต้องทำการ Generate เอง มันจะเหนื่อยมาก จึงมี Python Script มาช่วยทุ่นแรง

เครื่องต้องติดตั้ง Fontforge ใช่ NPTemplate เป็นตัวอย่างในการทำ Interpolate
เฉพาะตัว a และตัว ก


ดาวน์โหลดได้ที่
https://www.dropbox.com/s/nqm5vvh91qxj2ap/NPInterpolate.zip?dl=1


--ตัวอย่างการเขียนคำสั่ง Interpolate--

call fontforge -script interpolate.py ^
-master-01 "Srcs/NPNaipolTemplate-Thin.sfd" ^
-master-02 "Srcs/NPNaipolTemplate-Black.sfd" ^
-feature "Srcs/Features/thaicore.fea" ^
-familyname "NPNaipolTemplate" ^
-fontname "{familyname-nospace}-{weight-number}" ^
-fullname "{familyname} {weight}" ^
-percent "(1-1)/(9-1)" ^
-weight "Thin" ^
-export "Srcs/Instants/{familyname-nospace}-{weight}.sfd"


note:
-master-01, -master-02 <Path>
คือฟอนต์ที่ต้องการนำมา Blend ร่วมกันโดยที่ -master-01
จะมีค่าน้ำหนักน้อยกว่า -master-02

-feature <Path>
Importe ot feature ไฟล์เข้ามา

-familyname <String>
ตั้งชื่อแฟมมิลี่ให้กับไฟล์ที่จะได้จากการทำ Interpolate

-fontname <String>
ตั้งชื่อฟอนต์ให้กับไฟล์ที่จะได้จากการทำ Interpolate

-fullname <String>
ตั้งชื่อฟอนต์สำหรับให้มนุษย์อ่านได้ให้กับไฟล์ที่จะได้จากการทำ Interpolate

-percent <String | Number>
มีค่าระหว่าง 0-1 สามารถใส่เครื่องคำนวนได้
สูตรคำนวน Range to percent (value - min) / (max - min)
เช่นมีทั้งหมด 9 น้ำหนักอยากได้ Regular ให้ใส่ (4-1)/(9-1)
หรือใส่ค่าตามแบบ css "(400-100)/(900-100)"

-weight <Thin, ExtraLight, Light, Regular, Medium, SemiBold, Bold, ExtraBold, Black>
ใส่ชื่อน้ำหนักที่กำหนด

-width <UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, Medium, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded>
ใส่ชื่อความกว้างที่กำหนด

-export <Path>
เส้นทางที่ต้องการ export

--ตัวอย่างการเขียนคำสั่ง Generate--

fontforge -script generate.py ^
-fonts "./Srcs/Instants" ^
-export "Export\NPNaipolTemplate\TTF\{fullname-hypden}.ttf" ^
-export "Export\NPNaipolTemplate\OTF\{fullname-hypden}.otf" ^
-ttf-referred-family "{familyname}" ^
-ttf-referred-styles "{fullstylename}" ^
-hint ^
-remove-overlap ^
-unlink ^
-add-extrema ^
-feature-gsub "Srcs/features/thaicore.fea"

note:
-font <Path>
ที่อยู่ฟอนต์ที่ต้องการ

-fonts <Path>
ที่อยู่โฟลเดอร์ฟอนต์ที่ต้องการ

-export <Path>
เส้นทางที่ต้องการ export

-ttf-referred-family <String>
กำหนดชื่อแฟมิลี่ในที่จะแสดงในส่วนเมนูฟอนต์

-ttf-referred-styles <String>
กำหนดชื่อสไตล์ในที่จะแสดงในส่วนเมนูฟอนต์

-hint
auto hint ด้วย Fontforge

-remove-overlap
หากตัวอักษรมีหลายส่วนประกอบให้ Merge ทุกส่วนเข้าด้วยกัน

-unlink
หากมีการลิงค์ Ref ข้าม glyph กัน ให้ทำการ unlink referrance

-add-extrema
เพิ่ม Node ในส่วนยอดสุดของส่วนโค้ง

-feature-gsub <Path>
import OT file แทนที่ feature เดิมใน GSUB TABLE

-italic <Number>
เอียง glyphs ตามองศาที่ระบุ เช่น 12 องศา พร้อมสลับตำแหน่ง Unicode
a -> a.italic เปลี่ยน a ปกติไปใช้ a.italic  และเพิ่ม suffix "Italic" ต่อท้ายชื่อฟอนต์

-oblique
เหมือน italic แต่ไม่การสลับตำแหน่ง Unicode และเพิ่ม suffix "Oblique" ต่อท้ายชื่อฟอนต์

-skew <Number>
เหมือน italic แต่ไม่การสลับตำแหน่ง Unicode และไม่มีการเพิ่ม suffix

-change-version <Number>
เปลี่ยนเลขเวอร์ชั่นฟอนต์

-change-family <String>
เปลี่ยนชื่อฟอนต์ตอน Genenrate

-em <Number>
เปลี่ยนความสูงของ Em square

-round
ทำให้ค่า Nodes ต่างให้มีค่าจำนวนเต็ม

-swap-glyph <Glyph1> <Glyph2>
สำหรับต่ำแหน่ง Unicode Glyph1 ไป Glyph2

-swap-glyph-weight <Weight...> <Glyph1> <Glyph2>
สำหรับต่ำแหน่ง Unicode Glyph1 ไป Glyph2 เมื่อถึงการ Generate น้ำหนักที่ระบุ ตัวอย่างเช่น
-swap-glyph-weight  "Bold ExtraBold Black" "a" "a.2"

-swap-glyph-width <Width...> <Glyph1> <Glyph2>
สำหรับต่ำแหน่ง Unicode Glyph1 ไป Glyph2 เมื่อถึงการ Generate ความกว้างที่ระบุ

-swap-glyph-weight-width <Weight...> <Width...> <Glyph1> <Glyph2>
สำหรับต่ำแหน่ง Unicode Glyph1 ไป Glyph2 เมื่อถึงการ Generate น้ำหนักและความกว้างที่ระบุ

-swap-glyph-extension <String.. เช่น alt2>
สำหรับต่ำแหน่ง Glyph ตามชื่อ Extension ที่ระบุเช่น a ไปใช้ a.alt2

-swap-glyph-weight-extension <Weight...> <String.. เช่น alt2>
สำหรับต่ำแหน่ง Glyph ตามชื่อ Extension ที่ระบุเช่น a ไปใช้ a.alt2 เมื่อถึงน้ำหนักที่ระบุ

-swap-glyph-width-extension <Weight...> <String... เช่น alt2>
สำหรับต่ำแหน่ง Glyph ตามชื่อ Extension ที่ระบุเช่น a ไปใช้ a.alt2 เมื่อถึงความกว้างที่ระบุ

-swap-glyph-weight-width-extension <Weight...> <Width...> <String เช่น alt2>
สำหรับต่ำแหน่ง Glyph ตามชื่อ Extension ที่ระบุเช่น a ไปใช้ a.alt2 เมื่อถึงน้ำหนักและความกว้างที่ระบุ

-remove-extensions <String...>
ลบ Glyph ตาม extensions ที่ระบุ

-remove-glyphs <String...>
ลบ Glyph ตามชื่อ Glyph ที่ระบุ

เดี๋ยวค่อยมาเขียนอธิบายคำสั่งต่างๆ เลื่อยๆนะครับ
หากใครใจร้อนสามารถแกะซอสโค้ดดูได้เลยครับ
« แก้ไขครั้งสุดท้าย: 23 เม.ย. 2020, 17:43 น. โดย Jipatype » บันทึกการเข้า
ปกติเห็นเบื้องหลังของคุณ Jipatype ใช้ Glyphs App ประจำ
บันทึกการเข้า
ปกติเห็นเบื้องหลังของคุณ Jipatype ใช้ Glyphs App ประจำ

ก่อนหน้านี่ใช้ fontforge มาตลอดครับ เร่ิมใช้ Glyphs ตั้งแต่ฟอนต์ Monradok เป็นต้นมา
บันทึกการเข้า
หน้า: [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!