- Unscii คือ ชุดฟอนต์ Unicode แบบบิตแมป ที่อ้างอิงจากฟอนต์ของระบบคลาสสิก ออกแบบมาให้เหมาะทั้งกับงานศิลป์แบบ character cell art และสภาพแวดล้อมของเทอร์มินัลกับการเขียนโปรแกรม
- เวอร์ชันหลักคือ unscii-8 (8×8 พิกเซล) และ unscii-16 (8×16 พิกเซล) พร้อมสไตล์ทางเลือกหลายแบบ และรุ่นย่อย ‘full’ ที่เติม glyph ที่ขาดหายไป
- มีการออก Unscii 2.0 เพื่อรองรับการเพิ่มตัวอักษรหมวด ‘legacy computing’ ใน Unicode 13.0 โดยมีทั้งการแก้ข้อผิดพลาดเดิม ปรับปรุงความอ่านง่าย และเพิ่มตัวอักษรใหม่
- มีการศึกษาลักษณะทางภาพของ ฟอนต์ระบบคลาสสิก เช่น Amiga, Commodore 64, IBM PC เพื่อสร้างรูปทรงที่เป็นกลางและสม่ำเสมอ
- เป็นเครื่องมือที่ เชื่อมงานศิลป์ตัวอักษรแบบดั้งเดิมเข้ากับสภาพแวดล้อม Unicode สมัยใหม่ และมีบทบาทสำคัญต่อการสร้าง ASCII art และกราฟิกบนเทอร์มินัลขึ้นใหม่
ภาพรวมของ Unscii
- Unscii คือ ชุดฟอนต์ Unicode แบบบิตแมป ที่สร้างบนพื้นฐานของ ฟอนต์ระบบคลาสสิก
- เหมาะกับงาน character cell art และสามารถใช้งานในเทอร์มินัลและสภาพแวดล้อมการเขียนโปรแกรมได้
- มี 2 รุ่นหลัก: unscii-8 (8×8 พิกเซล) และ unscii-16 (8×16 พิกเซล)
- unscii-8 มีสไตล์ทางเลือกหลายแบบ
- unscii-16-full รวม glyph ที่ขาดหายจาก Fixedsys Excelsior และ GNU Unifont
- unscii-16-full ใช้สัญญาอนุญาต GPL ส่วนรุ่นอื่นเป็น สาธารณสมบัติ
- ผู้สร้างคือ Viznut
Unscii 2.0
- ใน Unicode 13.0 (2020-03-10) มีการเพิ่มอักขระกราฟิกสำหรับ ‘legacy computing’ จำนวน 214 ตัว
- รวมถึงอักขระที่เคยขาดหายไปของ PETSCII, Teletext/Videotex เป็นต้น
- อักขระที่มีอยู่แล้วใน Unscii 1.x ได้รับการแมปเข้ากับ Unicode อย่างเป็นทางการ
- Unscii 2.0 ออกมาโดยมีเหตุผลหลักคือการรองรับการแมปนี้
- นอกจากนี้ยังมีการ แก้ข้อผิดพลาด ของอักขระบางตัว, ปรับปรุงความอ่านง่าย, และ เพิ่มอักขระใหม่
- มีภาพทดสอบของอักขระที่ใช้งานได้ใน Unicode ปัจจุบันให้ดู
ตัวอย่าง (EXAMPLES)
- Amiga ANSI art: Divine Stylers ของ Hellbeard เรนเดอร์ด้วย unscii-16
- PC ANSI art: Ansi Love ของ Rad Man เรนเดอร์ด้วย unscii-16
- ภาพ PETSCII ของ Commodore 64: I Has Floppy ของ Redcrab, The First Ball ของ Dr.TerrorZ, Gary ของ Mermaid
- ในแพ็กเกจซอร์สโค้ดมี ตัวแปลงบิตแมป→Unscii รวมอยู่ด้วย
- มีตัวอย่างการแปลง unscii-8 โดยใช้พาเลต xterm 256 สี
ดาวน์โหลด (DOWNLOADS)
- รูปแบบบิตแมปจริงมี 2 แบบคือ HEX และ PCF
- HEX คือรูปแบบเฮกซ์ดัมป์อย่างง่ายแบบเดียวกับโครงการ Unifont
- TTF, OTF, WOFF เป็นเวอร์ชันที่แปลงเป็นเวกเตอร์แล้ว
- เวอร์ชัน PCF ไม่รวมอักขระที่เกิน U+FFFF
- แต่อักขระกราฟิกใหม่มีให้ในช่วง PUA (Private Use Area)
- ข้อมูลการแมปอยู่ในไฟล์
<uns2uni.tr>
เบื้องหลัง (BACKSTORY)
- Unicode มี อักขระ pseudographic อยู่แล้ว แต่แทบไม่ถูกใช้ใน ANSI art
- แม้แต่ใน MUD เป็นต้น ก็มักใช้เฉพาะอักขระบล็อกจาก MS-DOS code page 437
- เพราะฟอนต์ Unicode ที่มีอยู่เดิม รองรับอักขระกราฟิกที่ไม่ใช่ CP437 ได้ไม่สมบูรณ์
- Unicode Consortium ไม่ได้ให้ความสนใจกับการทำ pseudographic มากนัก
- จึงเกิด วงจรอุบาทว์ แบบ “ไม่มีฟอนต์ก็ไม่มีงานศิลป์ และไม่มีงานศิลป์ก็ไม่มีฟอนต์”
- เพื่อแก้ปัญหานี้ จึงพัฒนา Unscii ให้เป็น ฟอนต์ Unicode ที่เข้ากันได้กับงานศิลป์
พื้นฐานการออกแบบ
- ฟอนต์ระบบขนาด 8×8 แบ่งได้เป็นแบบเส้นหนา 1 พิกเซลและ 2 พิกเซล
- Unscii เลือกใช้ แบบ 2 พิกเซล เพราะมีความคล้ายคลึงกันสูงระหว่างระบบคลาสสิกต่าง ๆ ทำให้สร้างรูปทรงที่เป็นกลางได้ง่าย
- ระบบที่เป็นพื้นฐานทางภาพของเวอร์ชัน 8×8:
- Amiga (Topaz-8), Amstrad CPC, Atari 8-bit/Arcade/32-bit, BBC Micro, Commodore 64, IBM PC (CGA/VGA 80×50)
- เวอร์ชัน 8×16 ขยายจาก 8×8 ตามหลักการแปลง
- ฟอนต์อ้างอิง: Windows Fixedsys, IBM PC VGA, X Window 8x13/9x15, Macintosh Monaco, Digital VT420, DejaVu Sans Mono, Lucida Console, Inconsolata
- ให้ความสำคัญกับ รูปทรงที่เป็นกลาง เป็นหลัก แต่จะปรับเมื่อจำเป็นต่อการเชื่อมต่อของงานศิลป์หรือความอ่านง่าย
- เช่น
/\\XY เพื่อคงการเชื่อมต่อใน ASCII art และปรับ serif ของ iIl ให้ยาวขึ้น
- glyph 8×16 ที่ไม่ได้กำหนดไว้จะถูกแทนด้วย เวอร์ชันขยายความสูง 2 เท่าของ 8×8
รุ่นย่อยเพิ่มเติมและการแมปอักขระ
- มีการศึกษาฟอนต์เกมและฟอนต์เส้นบางเพื่อสร้าง unscii-8-thin, unscii-8-mcr, unscii-8-fantasy
- มีการแมปอักขระหลายร้อยตัวที่ไม่มีใน Unicode ไว้ใน พื้นที่ PUA
- U+E080..E0FF: โมเสกบล็อกของ Teletext/Videotex
- U+E100.. : PETSCII, โมเสกแบบนุ่มของ Videotex, เฉดสีเพิ่มเติม, มุมโค้ง เป็นต้น
- U+E800.. : ลายเส้นตัดกัน เส้นทแยง และแพตเทิร์นไม่เป็นเส้นตรงที่ไม่เป็นทางการแต่มีประโยชน์
- U+EC00.. : อักขระเฉพาะทาง เช่น บิตแมปที่เน้นงานเกม
- หลัง Unicode 13.0 อักขระบางส่วนได้ถูกรวมเข้า Unicode อย่างเป็นทางการแล้ว แต่ ยังคงการแมปใน PUA ไว้เพื่อความเข้ากันได้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ออกนอกประเด็นไปนิดหน่อยแต่ก็เกี่ยวข้องกัน
ตอนก่อนหน้านี้ที่ผมทำเกมแนวอินเวเดอร์ด้วย HTML + Canvas ผมตามหาฟอนต์ IBM PC OEM แล้วก็ไปเจอ The Ultimate Oldschool PC Font Pack ของ VileR
ความทุ่มเทในการกู้คืนฟอนต์ OEM และ เวอร์ชันดัดแปลง จาก ROM จำนวนมหาศาลนี่น่าทึ่งมาก
ตัวเว็บไม่ใช่แค่มีคลังข้อมูลละเอียดเท่านั้น แต่ยังมีฟีเจอร์อย่าง พรีวิวแบบสด และการปรับอัตราส่วนภาพด้วย ทำให้ไล่ดูเพลินมาก
ผมเคยใช้เวลาหลายชั่วโมงอยู่ในนั้นเพื่อเทียบฟอนต์ OEM หลายตัวและหาตัวที่เหมาะที่สุดสำหรับโปรเจกต์ของผม
มันเหมาะกับ งานสไตล์เรโทร อย่าง ANSI art มาก และก็เข้ากับสภาพแวดล้อมสมัยใหม่ได้อย่างสมบูรณ์แบบ
ผมเคยใช้ เครื่องมือ live coding ด้านภาพ/เสียง IBNIZ ที่ Viznut สร้างขึ้นในการแสดงสด
มันเป็นประสบการณ์ที่เดือดมากจริงๆ
ลิงก์ IBNIZ
รายชื่อผลงานของเขาดูได้จาก โปรไฟล์บน Pouet
ผมอิจฉาทั้ง ความเพี้ยนและความอัจฉริยะ ของมัน และหวังว่าดูไปแล้วผมจะติดอะไรแบบนั้นมาบ้างสักหน่อย
Nerd Font ที่ผมใช้ในเครื่องยังไม่รองรับ graphic glyph บางตัว
ถ้ามีเพิ่มส่วนนี้เข้ามาก็คงดี
พอเช็กด้วย
lsofก็พบว่ามีหลายฟอนต์ถูกใช้เป็น fallbackมีทั้ง DejaVuSans, DroidSansFallback, Segoe UI Symbol และฟอนต์อื่น ๆ ปนกันไป จนสุดท้ายเรนเดอร์ออกมาได้สมบูรณ์แบบ
ตอนนี้ผมกำลังทำ MUD อยู่ และฟอนต์พวกนี้ก็คือสไตล์ที่ผมอยากได้พอดี
ขอบคุณที่แชร์ได้ถูกจังหวะมาก
ตอนนี้พอเทอร์มินัลเริ่ม รองรับ Sixel กันในที่สุด
ก็ให้ความรู้สึกเหมือนหมุนกลับมาครบรอบ 40 ปีตามที่เห็นใน วิกิของ Sixel
การส่งข้อมูลแรสเตอร์สีแบบไม่บีบอัดผ่านลิงก์ซีเรียล 9600bps เป็นไอเดียที่แย่มาก
ทุกวันนี้อยู่ในยุคกิกะบิตแล้ว เลยเสียเวลาผู้ใช้น้อยลงก็จริง แต่ก็ยัง เปลือง CPU และเพิ่มความซับซ้อน อยู่ดี
ผมอยากให้เว็บเบราว์เซอร์รองรับ FTP หรือ Gopher มากกว่าเสียอีก
ฟอนต์ cnxt ของ Constantine Bytensky ก็อยู่ในสายคล้ายกัน
ถ้าชอบ unscii ก็น่าจะชอบ cnxt ด้วย
CNXT ย่อมาจาก “Constantine’s Nine x Twenty”
ตอนนี้เว็บเปิดไม่ได้แล้ว แต่ผมเคยทำ side project ที่ใช้ได้กับ ฟอนต์ monospaced แบบไหนก็ได้
มันแปลงไบนารีเป็นยูนิโค้ดแล้วแปลงกลับได้ พร้อมแทนที่อักขระควบคุมด้วยสัญลักษณ์ที่เกี่ยวข้อง
โปรเจกต์ printable-binary
อักขระ UTF-8 หนึ่งตัว (1~3 ไบต์) จะตรงกับข้อมูลนำเข้า 1 ไบต์ ทำให้ขนาดเพิ่มขึ้นเฉลี่ยราว 70%
แต่ก็ได้ ความเป็นอิสระของข้อมูลไบนารี บนสื่อใดก็ตามที่เข้าใจ UTF-8
แต่ในการใช้งานจริง base64 เพิ่มขนาดแค่ 33% เลยอาจมีประสิทธิภาพกว่าก็ได้
ฟอนต์พวกนี้เท่มากจริง ๆ
ผมคิดถึง อารมณ์แบบ ASCII art เลยเอาไปใส่เป็นแบนเนอร์ในแพลตฟอร์มบล็อกของผม lmno.lol
Unscii เยี่ยมมาก
เมื่อก่อนผมเคยทำ Unscii art editor แบบง่าย ๆ ที่ใช้บนมือถือได้ด้วย
unicode-drawing-club.netlify.app
favicon ดูเหมือนหรืออย่างน้อยก็คล้ายกับโลโก้ของ The Grate Book of Moo มาก
สำหรับ Hacker News นี่อาจเป็นการอ้างอิงที่เฉพาะทางเกินไปหน่อย แต่ก็น่าจะมีคนจำได้อยู่บ้าง