- Unscii là một bộ phông chữ Unicode bitmap dựa trên các phông chữ hệ thống cổ điển, phù hợp cho cả nghệ thuật ký tự dạng ô và môi trường terminal·lập trình
- Các phiên bản chính là unscii-8 (8×8 pixel) và unscii-16 (8×16 pixel), kèm nhiều kiểu thay thế và biến thể ‘full’ bổ sung các glyph còn thiếu
- Unscii 2.0 được phát hành để phản ánh việc bổ sung các ký tự ‘legacy computing’ trong Unicode 13.0, đồng thời sửa lỗi hiện có, cải thiện khả năng đọc và thêm ký tự mới
- Nghiên cứu đặc trưng thị giác của các phông chữ hệ thống cổ điển như Amiga, Commodore 64, IBM PC để hiện thực hóa hình dáng trung tính và nhất quán
- Là công cụ kết nối nghệ thuật ký tự di sản với môi trường Unicode hiện đại, đóng vai trò quan trọng trong việc tái tạo ASCII art và đồ họa terminal
Tổng quan về Unscii
- Unscii là bộ phông chữ Unicode bitmap dựa trên phông chữ hệ thống cổ điển
- Phù hợp cho character cell art và cũng có thể dùng trong môi trường terminal và lập trình
- Hai biến thể chính: unscii-8 (8×8 pixel), unscii-16 (8×16 pixel)
- unscii-8 có nhiều kiểu thay thế
- unscii-16-full bao gồm các glyph còn thiếu từ Fixedsys Excelsior và GNU Unifont
- unscii-16-full là GPL, các biến thể còn lại thuộc public domain
- Tác giả là Viznut
Unscii 2.0
- Unicode 13.0 (2020-03-10) đã thêm 214 ký tự đồ họa cho ‘legacy computing’
- Bao gồm các ký tự còn thiếu như PETSCII, Teletext/Videotex
- Các ký tự đã có trong Unscii 1.x nay nhận được ánh xạ Unicode chính thức
- Unscii 2.0 ra mắt chủ yếu để phản ánh các ánh xạ này
- Ngoài ra còn thực hiện sửa lỗi cho một số ký tự, cải thiện khả năng đọc và bổ sung ký tự mới
- Cung cấp hình ảnh thử nghiệm cho các ký tự hiện có trong Unicode
Ví dụ (EXAMPLES)
- ANSI art Amiga: Divine Stylers của Hellbeard, render bằng unscii-16
- ANSI art PC: Ansi Love của Rad Man, render bằng unscii-16
- Hình PETSCII của Commodore 64: I Has Floppy của Redcrab, The First Ball của Dr.TerrorZ, Gary của Mermaid
- Gói mã nguồn có kèm trình chuyển đổi bitmap→Unscii
- Có ví dụ chuyển đổi sang unscii-8 dùng bảng màu xterm 256 màu
Tải xuống (DOWNLOADS)
- Định dạng bitmap thực tế có hai loại: HEX và PCF
- HEX là định dạng hexdump đơn giản giống với dự án Unifont
- TTF, OTF, WOFF là các phiên bản đã được vector hóa
- Phiên bản PCF không bao gồm các ký tự trên U+FFFF
- Tuy nhiên các ký tự đồ họa mới được cung cấp trong vùng PUA (Private Use Area)
- Thông tin ánh xạ nằm trong tệp
<uns2uni.tr>
Bối cảnh (BACKSTORY)
- Unicode có các ký tự giả đồ họa (pseudographic), nhưng hầu như không được dùng trong ANSI art
- Ngay cả trong MUD cũng chỉ dùng các ký tự khối của code page 437 trên MS-DOS
- Lý do là việc triển khai các ký tự đồ họa không thuộc CP437 trong các phông Unicode hiện có còn thiếu sót
- Unicode Consortium ít quan tâm đến việc triển khai pseudographic
- Tồn tại vòng luẩn quẩn: “không có phông thì không có art, không có art thì không có phông”
- Để giải quyết điều này, Unscii được phát triển như một phông Unicode tương thích với art
Cơ sở thiết kế
- Phông hệ thống 8×8 được chia thành loại nét 1 pixel và 2 pixel theo độ dày nét
- Unscii chọn loại 2 pixel, vì có độ tương đồng cao hơn giữa các hệ thống cổ điển và dễ tạo hình dáng trung tính
- Các hệ thống làm nền tảng thị giác cho phiên bản 8×8:
- Amiga (Topaz-8), Amstrad CPC, Atari 8-bit/Arcade/32-bit, BBC Micro, Commodore 64, IBM PC (CGA/VGA 80×50)
- Phiên bản 8×16 được mở rộng từ 8×8 theo các nguyên tắc chuyển đổi
- Các phông tham khảo: Windows Fixedsys, IBM PC VGA, X Window 8x13/9x15, Macintosh Monaco, Digital VT420, DejaVu Sans Mono, Lucida Console, Inconsolata
- Ưu tiên hình dáng trung tính, nhưng sẽ điều chỉnh khi cần cho tính kết nối của art hoặc khả năng đọc
- Ví dụ:
/\\XY giữ kết nối trong ASCII art, serif của iIl được kéo dài hơn
- Các glyph 8×16 chưa được định nghĩa sẽ được thay bằng phiên bản cao gấp đôi của 8×8
Biến thể bổ sung và ánh xạ ký tự
- Nghiên cứu phông game và phông nét mảnh để tạo ra unscii-8-thin, unscii-8-mcr, unscii-8-fantasy
- Ánh xạ hàng trăm ký tự không có trong Unicode vào vùng PUA
- U+E080..E0FF: mosaic khối Teletext/Videotex
- U+E100.. : PETSCII, mosaic mượt Videotex, đổ bóng bổ sung, góc bo tròn, v.v.
- U+E800.. : các đường giao, đường chéo, mẫu phi tuyến không chính quy nhưng hữu ích, v.v.
- U+EC00.. : bitmap thiên về game và các ký tự đặc biệt khác
- Sau Unicode 13.0, một số ký tự đã được đưa vào Unicode chính thức, nhưng ánh xạ PUA vẫn được giữ lại để đảm bảo tương thích
1 bình luận
Ý kiến trên Hacker News
Hơi lạc đề một chút nhưng vẫn có liên quan
Trước đây khi làm một game kiểu Space Invaders bằng HTML + Canvas, tôi đã tìm font IBM PC OEM và phát hiện ra The Ultimate Oldschool PC Font Pack của VileR
Mức độ tâm huyết trong việc khôi phục các font OEM và những biến thể của chúng từ vô số ROM thật đáng kinh ngạc
Trang này không chỉ là một kho lưu trữ cực kỳ chi tiết mà còn có các tính năng như xem trước trực tiếp và chỉnh tỷ lệ khung hình, nên khám phá rất thú vị
Tôi đã dành hàng giờ ở đó để so sánh nhiều font OEM và tìm ra font phù hợp nhất cho dự án của mình
Nó rất hợp cho các mục đích retro như ANSI art, đồng thời cũng hòa hợp hoàn hảo trong môi trường hiện đại
Tôi từng dùng công cụ live coding âm thanh/hình ảnh IBNIZ do Viznut tạo ra trong một buổi biểu diễn
Đó thực sự là một trải nghiệm bùng cháy
Liên kết IBNIZ
Có thể xem danh sách tác phẩm của anh ấy trên hồ sơ Pouet
Tôi ghen tị với sự lập dị và thiên tài của nó, và mong rằng khi xem nó tôi cũng đã được lây một chút
Nerd Font cục bộ của tôi không hỗ trợ một số glyph đồ họa
Sẽ thật tốt nếu những phần đó được bổ sung
Kiểm tra bằng lsof thì thấy nhiều font đang được dùng làm fallback
Nhiều font như DejaVuSans, DroidSansFallback, Segoe UI Symbol được trộn lại với nhau và kết quả là render hoàn hảo
Tôi đang làm một MUD, và những font này đúng là phong cách tôi đang tìm
Cảm ơn vì đã chia sẻ đúng lúc như vậy
Giờ terminal cuối cùng cũng đã có hỗ trợ Sixel
Đúng là cảm giác như đã đi hết một vòng sau 40 năm, như có thể thấy ở wiki Sixel
Việc truyền dữ liệu raster màu không nén qua liên kết serial 9600bps là một ý tưởng tệ hại
Bây giờ đang là môi trường gigabit nên ít lãng phí thời gian người dùng hơn, nhưng vẫn là sự lãng phí CPU và độ phức tạp
Tôi thà có hỗ trợ FTP hay Gopher trong trình duyệt web còn hơn
Font cnxt của Constantine Bytensky cũng thuộc cùng một nhóm tương tự
Nếu bạn thích unscii thì có lẽ cũng sẽ thích cnxt
CNXT là viết tắt của “Constantine’s Nine x Twenty”
Hiện tại trang đó không mở được, nhưng tôi đã làm một side project hoạt động với bất kỳ font monospace nào
Nó chuyển đổi dữ liệu nhị phân sang Unicode rồi chuyển ngược lại, đồng thời thay các ký tự điều khiển bằng những ký hiệu liên quan
Dự án printable-binary
Mỗi ký tự UTF-8 (1~3 byte) tương ứng với 1 byte dữ liệu đầu vào, kích thước trung bình tăng khoảng 70%, nhưng đổi lại
bạn có được tính độc lập của dữ liệu nhị phân trên bất kỳ phương tiện nào hiểu UTF-8
Nhưng trong thực tế, base64 chỉ tăng kích thước 33% nên có thể hiệu quả hơn
Những font kiểu này thật sự rất ngầu
Tôi nhớ cái cảm giác ASCII art đó nên đã thêm nó vào nền tảng blog của mình lmno.lol dưới dạng banner
Unscii thật tuyệt
Trước đây tôi đã làm một trình chỉnh sửa Unscii art đơn giản có thể dùng cả trên di động
unicode-drawing-club.netlify.app
Favicon trông gần như giống hệt, hoặc ít nhất là rất giống, với logo của The Grate Book of Moo
Trên Hacker News thì đây có thể là một tham chiếu quá ít người biết, nhưng chắc vẫn sẽ có người nhận ra