ฟอนต์ฟอรั่ม

สำหรับคนทำฟอนต์ => สอนทำฟอนต์ / บทความเกี่ยวกับฟอนต์ => โพสต์ถูกเริ่มโดย: Jipatype เมื่อ 13 เม.ย. 2020, 18:56 น.

ชื่อเรื่อง: ตัวอย่างการทำ Interpolate ด้วย Fontforge
โพสต์โดย: Jipatype เมื่อ 13 เม.ย. 2020, 18:56 น.
เวลาผมทำฟอนต์ผมใช้โปรแกรม 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 ที่ระบุ

เดี๋ยวค่อยมาเขียนอธิบายคำสั่งต่างๆ เลื่อยๆนะครับ
หากใครใจร้อนสามารถแกะซอสโค้ดดูได้เลยครับ
ชื่อเรื่อง: ตอบ: ตัวอย่างการทำ Interpolate ด้วย Fontforge
โพสต์โดย: pandasmith เมื่อ 08 ก.ย. 2020, 11:10 น.
ปกติเห็นเบื้องหลังของคุณ Jipatype ใช้ Glyphs App ประจำ
ชื่อเรื่อง: ตอบ: ตัวอย่างการทำ Interpolate ด้วย Fontforge
โพสต์โดย: Jipatype เมื่อ 09 ก.ย. 2020, 14:54 น.
อ้างคำพูดจาก: pandasmith เมื่อ 08 ก.ย. 2020, 11:10 น.
ปกติเห็นเบื้องหลังของคุณ Jipatype ใช้ Glyphs App ประจำ

ก่อนหน้านี่ใช้ fontforge มาตลอดครับ เร่ิมใช้ Glyphs ตั้งแต่ฟอนต์ Monradok เป็นต้นมา