อ้อ ลืมไป มีอีกคนหนึ่งที่เขียนเป็น เฮียเลย์น่ะ (ที่ชื่อ Layiji)
เอ้า ลองดูนะ
การเขียนโอเพ่นไท้ป์ก็เหมือนการฝังโปรแกรมนั่นแหละ มีการเขียนอยู่สองรูปแบบอันได้แก่
GSUB มาจาก Glyph Substitute ใช้ในการ
แทนที่ Glyph ต่างๆ อย่างเช่นพิมพ์ f กับ l ติดกันจะกลายเป็น fl
GPOS มาจาก Glyph Positioning ใช้ในการ
ปรับระยะห่าง ของ Glyph ต่างๆ เช่นเมื่อพิมพ์ A กับ W ต่อกัน จะชิดกันมากขึ้น พิมพ์ P O ติดกันห่างกันมากขึ้น
เวลาเขียน ให้กดปุ่มบวกมุมซ้ายล่าง แล้วจะขึ้น Feature Tag ขึ้นมาให้ พอเข้าไปดูแล้วจะเป็น
feature xxxx {
sub by ;
} xxxx;
ที่นี้ ตรงส่วนที่เป็นสีแดงนั่นน่ะ คือ Feature Tag ถ้าเป็นการเขียนแบบ GSUB พื้นฐานให้ใช้ liga ถ้าเป็นการเขียนแบบ GPOS ให้ใช้ kern (ความจริงมีเยอะกว่านี้ สำหรับฟอนต์ที่โปรฯกว่านี้ ลองเอาฟอนต์ชื่อ Brioso Pro ไปแกะดู แตกฉานเพราะตัวนี้แหละ)
feature liga {
[color=Red sub by [/red];
} liga;
ทีนี้ บรรทัดถัดมา ทาง fl จะกำหนดให้มาเป็น GSUB อยู่แล้ว หากต้องการจะเขียนแบบ GSUB แนะนำให้
ลบออกทั้งบรรทัดนั่น แล้วพิมพ์แบบนี้แทน
lookup liga0 {
sub Glyph1 Glyph2 by Glyph3;
} liga0;
lookup liga1 {
sub Glyph4 Glyph5' by Glyph5.alt;
} liga1;
แล้วก็ ligaX หรือ liga XX ต่อไปเรื่อยๆ ส่วนที่เป็น Glyph1 นั่นคือชื่อ Glyph ซึ่งมีข้อจำกัด คือต้องมีแต่ตัวอักษรภาษาอังกฤษใหญ่-เล็ก (ใหญ่กับเล็กไม่เหมือนกันนะตัวเอง) ตัวเลขอาระบิก เครื่องหมาย . (period) และเครื่องหมาย _ (underscore) เท่านั้น รวมทั้งมีความยาวไม่เกิน 31 ตัวอักษร
วิธีตั้งชื่อ Glyph ใหม่
1. คลิกขวาที่ Glyph ที่ต้องการจะเปลี่ยนชื่อ
2. เลือก Properties
3. จากนั้นก็จะมีหน้าต่าง Glyph Properties เด้งขึ้นมา จะมีช่องหนึ่งเขียนว่า Name ข้างหน้า ใส่ชื่อใหม่ แล้วกด Apply
วิธีสร้าง Glyph ใหม่
1. ไปที่ Glyph > Generate Glyphs...
2. ใส่ชื่อของ Glyph ที่ต้องการสร้างขึ้นใหม่
3. กด OK
นอกจากนี้ ยังมีข้อห้ามอีกว่า แต่ละ lookup ต้องมีรูปแบบการเขียนที่
เหมือนกันไม่งั้นมันจะเด้งกลับ ซึ่งรูปแบบการเขียน GSUB มีหลายอย่างต่อไปนี้
1. ตัวต่อตัว
sub a by a.alt
หมายถึงถ้าพิมพ์ a แล้วจะหลายเป็น Glyph a.alt
2. จาก
sub b from [b.alt1 b.alt2 b.alt3]
หมายถึงถ้าพิมพ์ Glyph b.alt1 b.alt2 หรือ b.alt3 อย่างใดอย่างหนึ่งจะกลายเป็น b
3. ควบกัน
sub f i by fi;
หมายถึงถ้าพิมพ์ f กับ i ติดกันจะกลายเป็น Glyph fi
4. แทนบางส่วน
sub b' i by b.begin
หมายถึงถ้าพิมพ์ b กับ i ติดกัน b จะกลายไปเป็น b.begin และ i จะยังคงเดิมอยู่
5. ไม่ต้องไปสนใจคู่ที่มีไอ้ตัวพวกนี้ตามหลัง
ignore sub A f' i';
sub f' i' by fi;
คือปกติพอพิมพ์ f กับ i ติดกันแล้วจะกลายเป็น fi แต่ถ้าเพิ่มบรรทัดบนเข้าไปจะหมายความว่า ถ้าพิมพ์ A ก่อนหน้าจะพิมพ์ f i ; f i จะไม่เปลี่ยนเป็น fi ตามปกติ
หมายเหตุ : ต้องมีเครื่องหมาย ' หลัง Glyph ทุกตัวที่ใช้ sub ปกติ และใส่เครื่องหมาย ' หลัง Glyph ที่มาจากข้างล่างด้วย ' ด้วย
Classคลาสส์ (Class) แปลว่าห้อง หรือในที่นี้หมายความว่า การจัด Glyph เป็นหมวดหมู่แล้วเอามาเขียนโดยไม่ต้องเขียนสคริปต์ให้เหนื่อยหลายบรรทัด เช่นแทนที่จะเขียนว่า
sub C A B by glyph1;
sub D A B by glyph1;
ก็เขียนแค่
sub [C D] A B by glyph1;
แน่นอนว่าใช้ได้ในอีกหลายๆรูปแบบ เช่น แทนที่จะเขียนว่า
sub A' f i by A.alt;
sub B' f i by B.alt;
sub C' f i by C.alt;
...
sub Z' f i by Z.alt;
ก็เขียนแค่ว่า
sub [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]' f i by [A.alt B.alt ... Z.alt];
หรือถ้าให้ง่ายกว่านั้นอีก ก็มี hyphen เป็นตัวย่นอยู่แล้ว
sub [A-Z]' f i by [A.alt-Z.alt];
Defined Classหมายถึง เราทำ Class ไว้ใช้งานมากกว่า 1 ที่ โดยที่ไม่ต้องไปใส่ [ ] ครอบหลังทุกที่ เพียงแต่ใช้ @ชื่อคลาส เท่านั้น
ถัดจากช่องเขียนสคริปต์ลงมาจะมีช่องสั้นๆอีกช่องหนึ่ง นั่นคือช่องเขียนคลาสส์ ให้เขียนแบบนี้
@ชื่อคลาสส์ = [Glyph1 Glyph2 Glyph3];
@ชื่อคลาสส์ = [Glyph4 Glyph5];
...
6. ไม่ต้องไปสนใจคู่ที่มีไอ้ตัวพวกนี้ตามหลังภาค 2
หลังจากเรียนและรู้จักคลาสส์มาแล้วค่อนยมาเรียนภาค 2 ได้นะ ฉะนั้น ทำความเข้าใจซะก่อน
ignore sub @LETTER a g', e g' @LETTER;
sub [a d e] g' by g.alt;
หมายถึง ถ้าพิมพ์ a d หรือ e ติดกับ g แล้ว g จะกลายเป็น g.alt
แต่ถ้าพิมพ์ Glyph ที่อยู่ในคลาสส์ที่ชื่อ LETTER มาพิมพ์ติดกับ a และ g ตัว g จะไม่กลายเป็น g.alt เช่นเดียวกับถ้าพิมพ์ e g และ Glyph ที่อยู่ในคลาสส์ที่ชื่อ LETTER ติดกัน ตัว g ก็จะไม่กลายเป็น g.alt
หมายเหตุ : เช่นเดียวกับไม่ต้องไปสนใจคู่ที่มีไอ้ตัวพวกนี้ตามหลังภาคแรก ต้องใส่เครื่องหมาย ' ไว้หลัง Glyph ทั้งข้างบนทั้งข้างล่างเสมอ
เมื่อเขียนเสร็จแล้ว ให้กดปุ่ม compile (ปุ่มรูปกระดาษขาวๆสี่ห้าแผ่นแล้วมีลูกศรชี้ลงน่ะ ขี้เกียจจับภาพ) ถ้ามันเด้งกลับมาแสดงว่าเขียนผิด ให้กลับไปเช็คทวนแก้ใหม่ในส่วนที่ผิด
หมายเหตุควรจำ :
1. แต่ละบรรทัดต้องจบด้วย ; เสมอ
2. หากเด้งกลับมา กรุณาศึกษาเองว่ามันพูดถึงอะไร เพราะ
ขี้เกียจไม่มีทางรวบรวมได้หมด
จบเรื่องการเขียนแบบ GSUB
ส่วน GPOS รออภิปรายที่ดาวนาเม็ก