CSS3: Web Font

121 | 13 October 2007 - 20:20 น.

ความสามารถอย่างหนึ่งที่ถูกพูดถึงกันมากในการกำหนดมาตรฐานของ CSS ระยะแรก เมื่อราวสิบปีก่อน คือ web font แต่เว็บเบราว์เซอร์ในขณะนั้น ไม่ว่า หรือ Netscape ต่างไม่สนใจความามารถนี้และไปใช้รูปแบบของตัวเอง (อย่าถามถึง Firefox นะครับ ตอนนั้นจะว่าเป็นวุ้นก็ยังไม่ใช่) ท้ายสุดคุณสมบัตินี้ก็หายไป จนกระทั่งถูกหยิบมาบรรจุอีกครั้งใน CSS3

ถามว่า คืออะไร อธิบายไม่ถูกแงะ เรียกง่ายๆว่า อธิบายต่อว่า คือ คุณสามารถกำหนดอักษรพิเศษผ่าน CSS โดยที่อักษรนั้นๆ ไม่จำเป็นต้องมีในเครื่องของคนเข้าเว็บ พอเข้าใจยัง? สมมติว่าผมอยากให้เว็บผมเด่นและเทพมาก อยากทำให้สวยจัดด้วย font งามๆ หรือทำร้ายสายตาผู้เข้าชมแบบสาหัสสากรรจ์ เรากำหนดได้ผ่าน CSS ไม่ต้องใช้จาว่าสคริปต์ช่วยหรือใช้อำนาจเผด็จการให้ผู้ใช้ต้องดาวน์โหลดฟอนต์มาติดตั้ง เพื่อรับชมความงามของเว็บ (แบบนี้มันจะทำเว็บเพื่อใครฟร่ะ)

เนื่องจากฟอนต์หรือชนิดอักษรไม่จำเป็นต้องขึ้นกับฟอนต์ที่มีในเครื่อง ให้ข้อดีอีกอย่าง คือ การแสดงผลข้ามแพลตฟอร์ม อย่างเช่น การเข้าเว็บจากเครื่องที่เป็น Windows XP หรือ Vista จะแสดงผลไม่ต่างกับการเข้าเว็บบนเครื่องที่เป็นลีนุกซ์ (ก่อนนี้มีปัญหาเพราะใช้ฟอนต์ต่างกัน)

แล้วยังไงต่อ?

สิ่งแรกที่เจ้าของเว็บต้องทำ คือ ต้องอัพโหลดฟอนต์ไปไว้ที่เว็บของตัวเองก่อน (ที่ไหนก็ตามแต่เถอะครับ) แล้วลงมือเขียนโค้ด กำหนดแนบฟอนต์ใน CSS (ผมนิยมเขียนไฟล์ CSS แยกต่างหาก ไม่ชอบเขียนปนในไฟล์ HTML เพราะเขียนปนมันมีข้อเสียและข้อจำกัดหลายอย่าง)

@font-face {
font-family: "TH Srisakdi"; src: url('http://n-blue.nblogz.net/fonts/TH Srisakdi.ttf');
}

เสร็จพิธีการปลุกเสกฟอนต์แล้ว เริ่มลงอาคมใน CSS ต่อ กำหนดการแสดงผล สมมติว่าผมจะใช้ DIV กำหนดค่า ส่วนใดส่วนหนึ่ง ผมเขียน class ของผมดังนี้

.manhasstyleisgay {
font-family:"TH Srisakdi";
font-size:72px;
font-weight:bold;
color:#1c4685;
text-align:center;
margin:1em;
}

ส่วนของ font-family ระบุว่าจงใช้ฟอนต์นี้ (ส่วนอื่นผมเขียนขยายเล่นๆ ครับ อย่าใส่ใจ) สำหรับมือใหม่หัดขับ CSS (ผมก็ด้วย) อาจจะสงสัยว่าทำไมต้องมีเครื่องหมาย “..” คลุมชื่อฟอนต์ คำตอบง่ายๆ คือ ฟอนต์ไหนที่ชื่อเว้นวรรค เป็นช่องว่างระหว่างชื่อ (อย่างเช่น TH Srisakdi) ต้องใส่ “..” คร่อม ไม่งั้นความหมายเป็นอื่น ฟอนต์ที่ชื่อเขียนติดกัน (อย่าง Tahoma) ไม่ต้องครับ (อันนี้เป็นพื้นฐานที่หนังสือเล่มไหน หรือใครก็ไม่ค่อยบอกคุณ)

เสร็จจากนี้ก็ไปต่อที่การเขียน HTML สมมติว่าผมเขียนโค้ดง่ายๆ ในไฟล์ HTML ตามนี้

<div class="manhasstyleisgay">สวัสดีประเทศไทย</div>

ผลลัพธ์ที่ได้จากเว็บบราวเซอร์ที่รองรับ CSS3 จะให้ผลแบบนี้ ..

webfont

ดีมั๊ยครับถ้า CSS3 ทำได้แบบนี้ และเว็บเบราว์เซอร์รองรับความสามารถนี้ แต่ข่าวร้าย คือ ถึงนาทีนี้จะมีก็แต่ ส่วน Firefox 3 Alpha 8 ทดสอบแล้วยังไม่รองรับ Opera 9.5 ที่อยู่ระหว่างการพัฒนาก็ยังไม่รองรับ แต่แว่วๆ ว่าจะรองรับ (Opera มักเป็นผู้นำในการสนับสนุนมาตรฐาน CSS) ส่วน Internet Explore นั้น เวอร์ชั่น 7 ไม่รองรับร้อยเปอร์เซนต์ ส่วน IE 8 เคยได้ยินว่าจะสนับสนุน CSS3 แต่ไม่ทราบว่าจะมากน้อยแค่ไหน ครอบคลุมคุณสมบัตินี้หรือไม่ และอาจเป็นไปได้ว่าต้องคอยกันนาน อย่างน้อยก็อีก 6-12 เดือน กว่า IE8 จะออก

ป.ล. ผมไม่เก่ง CSS นะครับ เพิ่งหัดเมื่อสองปีก่อน จับห่างๆ นานๆ ครั้ง ดังนั้น อย่าเหมาว่าผมเทพ ..เค๊?

ขอบคุณฟอนต์ตัวอย่างงามๆ จาก โค้ดจะดูเละๆ หน่อย ขอเวลาหาปลั๊กอินจัดการโค้ดตัวใหม่ก่อนครับ (เริ่มรำคาญตัวนี้มากขึ้นทุกขณะ WP ด้วย ทำเละทุกที)
//ขอบคุณบอส + เมษ + ไนซ์ + เอ แก้คำผิด

CSS3: Web Font โดนไป 16 ดอก

  1. แมวดำ ว่า:

    :เหอะๆ: เราไม่เคยรู้เรื่อง :ดอก:

  2. Mekz ว่า:

    เป็นปลื้ม ถ้าทำได้อย่างนี้เยี่ยมจริงๆ :ดอก: :ดอก:

    ปล. แต่ว่าลุงมีว่างนี่ครับ เลยฝึก CSS ได้ ผมไม่ค่อยจะมี :แลบๆ:
    ปอ. แก้ไข Netcaps เป็น Netscape นะคร้าบบบบ :เหอะๆ:
    ปฮ. ลุงอธิบาย CSS แบบทำให้คนโง่ CSS (อย่างผม)พอรู้บ้าง แหะๆ

  3. n-blue™ ว่า:

    :ขยิบ:

  4. iannnnn ว่า:

    แจ๋วมากครับ เป็นความรู้ใหม่ที่มีประโยชน์มากๆ
    แล้วผมจะรอครับ :แลบๆ:

  5. Nice ว่า:

    แก้บ้าง :ดอก:
    คร่อม,เบราว์เซอร์

    แล้ว .eot ล่ะคะ
    http://msdn2.microsoft.com/en-us/library/ms533034.aspx#Embedded_Font_Techno
    เมื่อก่อนนู้นนน เคยเห็นเทคนิคนี้ในบล็อกของ Chris Pirillo

  6. n-blue™ ว่า:

    ขอบคุณสำหรับลิงค์และตรวจคำสะกดครับ :ขยิบ:
    ขอตามไปศึกษาอันนั้นอีกที น่าจะเป็นอันเดียวกันกับที่ไมโครซอฟท์ Netscape และ W3C ต่างคนต่างไปกันคนละทาง ในตอนนั้น

    //พี่ว่าจะลองเทสโค้ดนั้นอีกทีใน XP บน VPC น่าจะเข้าท่านะ แต่ CSS2 ไม่รองรับมาตรฐานนั้น
    // .eot — Embedded OpenType เป็น compact form ของ OpenType (OpenType ต่อยอดมาจาก TrueType) พัฒนาโดยไมโครซอฟท์–เผื่อใครที่ยังไม่รู้

  7. Poakpong ว่า:

    “มีแต่ WebKit (ที่จะแปลงร่างต่อเป็น Safari) เท่านั้นที่รองรับคุณสมบัตินี้”

    ดาวน์โหลด Safari สำหรับ Windows ได้ที่นี่นะจ๊ะ .. http://www.apple.com/safari แหะๆ

  8. n-blue™ ว่า:

    ขอบคุณครับ ปกป้อง :ขยิบ:
    เบต้า 4 ไม่ต่างกับตัวก่อนๆ เท่าไหร่ ยังอ่อนแอและเป็นอัลไซเมอร์เหมือนเดิม
    ถ้าใครถอน Safari ออก เข้าไปแก้ไขค่า Start Up กับ Service ด้วยนะครับ มันจะทิ้งค่าไว้แล้วทำให้เครื่องบูตช้า :ดำ:

  9. Nakamura ว่า:

    แจ่มครับพี่น้อง :แลบๆ:

  10. DominixZ ว่า:

    ผมเลยหนีไปใช้ Flex เลยทำได้หมด งุงิๆ

  11. iDayBlog ว่า:

    โอ้เจ๋งมาก ได้ยินว่า CSS3 จะออกมาปลายปีใช่เปล่าครับ

  12. mokin ว่า:

    ดีครับ อย่าได้แบบนี้นานแล้ว
    บางอันจะได้มันต้องทำเป็นภาพ :ขยิบ:

  13. jackz ว่า:

    เป็นนิมิตรหมายอันดีครับ หวังว่าคงจะ implement เข้าจริงๆ กับ browser ยอดฮิตทั้ง Firefox และตัวอื่นๆ อีก 2-3 ตัวในเร็ววันนะครับ

  14. ooooo ว่า:

    ขอบคุณสำหรับความรู้ครับ

  15. khuntuck ว่า:

    ตามมาอ่านต่อหลังจากดู Duocore :ดอก:

  16. n-blue™ ว่า:

    ยังมีอะไรน่าสนใจหลายอย่างของ CSS3 ที่น่าสนใจ แต่ยังขี้เกียจอยู่ เลยยังไม่ได้เขียน :อ๋าย:

2 Trackbacks/Pingbacks

  1. n-blue | Opera 9.24 final + 9.5 Beta
  2. Duocore รายการ IT แนวใหม่สำหรับยุค Hi-Speed » ตอน 47 - 21 ตุลาคม 2550