OpenType ว่าด้วย Glyph Substitute

เริ่มโพสต์โดย Zafire06, 30 เม.ย. 2005, 14:35 น.

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

Zafire06

อ้อ ลืมไป มีอีกคนหนึ่งที่เขียนเป็น เฮียเลย์น่ะ (ที่ชื่อ 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 รออภิปรายที่ดาวนาเม็ก
อ้างอิง

Zafire06

#1
สอนแล้ว  :26:
ส่วนเข้าใจหรือไม่นั้น ...  :26:

iannnnn

#2
(+10)

ยังงี้เอ็งแตกไปลง TuT0RIALS เลยดีกว่า

agara

#3
(+1)
ถ้าบวกได้เยอะกว่านี้จะบวกให้
เผอิญบวกได้แค่หนึ่ง
--
ทำไมมันยากงี้  :05:
จริงๆขี้เกียจอ่าน เลยเออออว่ายากไปก่อน

โต

#4
ตูจะพยายามเข้าใจว่ะเร่   :08:

(+1) เคยไปขอให้เร่สอนไว้จู๋ไหนจำไม่ได้อ่ะ แต่วันนี้มาเจอก็เซฟไว้อ่านแร๊ววววว   :22:

ooooo

ทำไมมันงงอย่างนี้หนอ :26:

Zafire06

#6
มีอีกคนที่กำลังจะตามมาติดๆ

ได้แก่ toxin !!

(หมายเหตุ ที่พวกมึงไม่เข้าใจเพราะตูร่ายมากเกินไป)

iannnnn

ต้องเป็นสตรีน่ะ มันถึงจะยอมอธิบายดีๆ ให้

โต

#8
ใจมากเร่ ที่แตกหน่อออกมา
เอาไป(-1) ฐานขี้เกียจ  {หมีโหด}

อ้างคำพูดจาก: ซาฟิเร่ เมื่อ 30 เม.ย. 2005, 15:43 น.
ขี้เกียจ
แตกหน่อแล้วลบจู๋นั้นทิ้งดีกว่า :33:

Zafire06

#9
อ้างคำพูดจาก: [ Z ] เมื่อ 30 เม.ย. 2005, 15:47 น.
ใจมากเร่ ที่แตกหน่อออกมา
เอาไป(-1) ฐานขี้เกียจ  {หมีโหด}

ไม่เป็นไร

กูทำใจยอมรับตัวเลขข้างๆของกูเช่นเดียวกับยักษ์และเคนแล้ว  :08:

iannnnn

#10
(จริงๆ แล้วตูก็หวั่นไหวกะตัวเลขที่ว่าเหมือนกันนะเว้ย)

toxin

My handsomeness is toxic to all chics.. :P

SMF 2.1.7 © 2026, Simple Machines