Back to Explore
Khám phá Jim's TrueType QR Code Font: Biến văn bản thành mã QR ngay trong phông chữ của bạn

Khám phá Jim's TrueType QR Code Font: Biến văn bản thành mã QR ngay trong phông chữ của bạn

Một dự án đột phá cho phép tạo mã QR trực tiếp thông qua phông chữ OpenType. Bằng cách sử dụng các ký tự nằm trong dấu ngoặc vuông, bạn có thể biến văn bản thành mã QR mà không cần phần mềm tạo mã chuyên dụng.

Website
Upvote this postSign in to upvote this article.

Jim's TrueType QR Code Font: Đột phá trong việc hiển thị dữ liệu

Bạn đã bao giờ nghĩ đến việc tạo mã QR mà không cần bất kỳ thư viện chuyên dụng nào, chỉ đơn giản bằng cách gõ phông chữ? Dự án Jim's TrueType QR Code Font (tác giả Jim Paris) đã hiện thực hóa ý tưởng này bằng cách tận dụng sức mạnh của OpenType shaping.

Thumbnail

Tổng quan dự án

Đây là một dự án thử nghiệm tạo ra các phông chữ OpenType có khả năng chuyển đổi văn bản nằm trong dấu ngoặc vuông [...] thành biểu tượng mã QR, trong khi vẫn giữ nguyên các văn bản xung quanh ở định dạng phông chữ bình thường.

Các phiên bản phông chữ

Dự án cung cấp 3 phiên bản với dung lượng dữ liệu khác nhau:

  • qrfont-1L.ttf: 21x21 modules, hỗ trợ tối đa 17 ký tự.
  • qrfont-2L.ttf: 25x25 modules, hỗ trợ tối đa 32 ký tự.
  • qrfont-3L.ttf: 29x29 modules, hỗ trợ tối đa 53 ký tự.

Cách thức hoạt động

Phông chữ này không được thiết kế thủ công mà được tạo ra thông qua các tập lệnh (build scripts). Các đặc điểm kỹ thuật bao gồm:

  • Chế độ Byte: Sử dụng chuẩn mã hóa byte.
  • Đầu vào: Hỗ trợ ASCII in được.
  • Cấu trúc: Sử dụng mask pattern cố định là 0.
  • Cơ chế: Sử dụng các tính năng GSUB (Glyph Substitution) của OpenType để thực hiện việc phân tích cú pháp, mở rộng byte, tính toán Reed-Solomon và hiển thị các module QR.

Hướng dẫn cài đặt và sử dụng

Yêu cầu hệ thống

  • Dự án sử dụng uv để quản lý phụ thuộc Python.
  • Cần một môi trường hỗ trợ OpenType shaping để áp dụng các tính năng GSUB.

Các câu lệnh thực thi

Để xây dựng phông chữ từ mã nguồn, bạn có thể sử dụng các lệnh sau:

  1. Build cơ bản:

    uv run tools/build_font.py
    
  2. Sử dụng phông chữ cơ sở tùy chỉnh (mặc định là Liberation Sans Regular):

    uv run tools/build_font.py --base-font /path/to/BaseFont-Regular.ttf
    
  3. Build với mạch Reed-Solomon đầy đủ (mất nhiều thời gian hơn nhưng chính xác hơn):

    make full-parity
    
  4. Build nhanh (sử dụng placeholder không parity):

    make fast-placeholder
    

Kiểm tra lỗi (Debug)

Để kiểm tra luồng glyph đã được định hình (shaped), bạn có thể chạy:

uv run tools/shape_debug.py '[a]' '[b]'

Kết quả đầu ra

Sau khi build, bạn sẽ nhận được:

  • dist/qrfont-*.ttf: Các file phông chữ đã hoàn thiện.
  • dist/index.html: Bản demo tương tác trên trình duyệt. Bạn chỉ cần mở file này và gõ văn bản dạng [hello] để thấy mã QR xuất hiện ngay lập tức.
  • build/qrfont-*.fea: Các file tính năng OpenType đã được tạo.

Giấy phép

Phông chữ được tạo ra là phiên bản sửa đổi của Liberation Sans Regular và được cấp phép theo SIL Open Font License, Version 1.1. Người dùng cần lưu ý các file LICENSE-OFL.txtNOTICE.md đi kèm.

Kết luận

Đây là một dự án chứng minh khái niệm (proof-of-concept) cực kỳ thú vị, cho thấy tiềm năng của OpenType trong việc xử lý logic phức tạp mà không cần phần mềm bổ trợ. Nếu bạn là một nhà phát triển yêu thích sự sáng tạo trong typography và mã hóa, đây là một kho lưu trữ đáng để nghiên cứu sâu.

Discussion (0)

You need to log in to post comments. Log In

No comments yet. Start the discussion!

Do you like this post?

Upvote to push this post higher on the community feed

Details

Posted by: @admin
Categories: Developer Tools
Date posted: 8 tháng 7, 2026