1 điểm bởi GN⁺ 2025-12-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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)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 đọcbổ 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: HEXPCF
    • 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

 
GN⁺ 2025-12-16
Ý 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

    • Tôi đã dùng font Px437 Verite 9x6 trong bộ này làm font terminal chính suốt nhiều năm
      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

    • Viznut đã tạo ra rất nhiều dự án đáng kinh ngạc
      Có thể xem danh sách tác phẩm của anh ấy trên hồ sơ Pouet
    • Tôi rất thích demo này
      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

    • Tôi đã có được kết quả hiển thị chính xác trên terminal st dùng Iosevka Nerd Font
      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
    • Vấn đề liên quan nằm ở GitHub #1959
    • Tôi thấy Nerd Font là phi tiêu chuẩn nên không thích lắm
  • 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

    • Nhưng Sixel thực ra đã được đưa vào terminal từ năm 1988 rồi
      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

    • Ý tưởng hay đấy
      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