หน้า: [1]
 
ผู้เขียน หัวข้อ: OpenType ว่าด้วย Glyph Substitute  (อ่าน 31214 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
อ้อ ลืมไป มีอีกคนหนึ่งที่เขียนเป็น เฮียเลย์น่ะ (ที่ชื่อ 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 รออภิปรายที่ดาวนาเม็ก
แอบอ้าง
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:25 น. โดย MoonShine » บันทึกการเข้า
สอนแล้ว  เกย์แอบ
ส่วนเข้าใจหรือไม่นั้น ...  เกย์แอบ
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:23 น. โดย MoonShine » บันทึกการเข้า
(+10)

ยังงี้เอ็งแตกไปลง TuT0RIALS เลยดีกว่า
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:24 น. โดย MoonShine » บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
(+1)
ถ้าบวกได้เยอะกว่านี้จะบวกให้
เผอิญบวกได้แค่หนึ่ง
--
ทำไมมันยากงี้  ฮือๆ~
จริงๆขี้เกียจอ่าน เลยเออออว่ายากไปก่อน
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:24 น. โดย MoonShine » บันทึกการเข้า
ตูจะพยายามเข้าใจว่ะเร่   ง่ะ

(+1) เคยไปขอให้เร่สอนไว้จู๋ไหนจำไม่ได้อ่ะ แต่วันนี้มาเจอก็เซฟไว้อ่านแร๊ววววว   ยิ้มน่ารัก
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:24 น. โดย MoonShine » บันทึกการเข้า
ทำไมมันงงอย่างนี้หนอ เกย์แอบ
บันทึกการเข้า
มีอีกคนที่กำลังจะตามมาติดๆ

ได้แก่ toxin !!

(หมายเหตุ ที่พวกมึงไม่เข้าใจเพราะตูร่ายมากเกินไป)
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:26 น. โดย MoonShine » บันทึกการเข้า
ต้องเป็นสตรีน่ะ มันถึงจะยอมอธิบายดีๆ ให้
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
ใจมากเร่ ที่แตกหน่อออกมา
เอาไป(-1) ฐานขี้เกียจ  หมีโหดดดด

ขี้เกียจ
แตกหน่อแล้วลบจู๋นั้นทิ้งดีกว่า ลันล้า
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:27 น. โดย MoonShine » บันทึกการเข้า
ใจมากเร่ ที่แตกหน่อออกมา
เอาไป(-1) ฐานขี้เกียจ  หมีโหดดดด

ไม่เป็นไร

กูทำใจยอมรับตัวเลขข้างๆของกูเช่นเดียวกับยักษ์และเคนแล้ว  ง่ะ
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:28 น. โดย MoonShine » บันทึกการเข้า
(จริงๆ แล้วตูก็หวั่นไหวกะตัวเลขที่ว่าเหมือนกันนะเว้ย)
« แก้ไขครั้งสุดท้าย: 22 พ.ค. 2006, 04:28 น. โดย MoonShine » บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
 กึ๋ยๆ
บันทึกการเข้า

My handsomeness is toxic to all chics.. :P
หน้า: [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!