9 điểm bởi GN⁺ 2026-03-18 | 2 bình luận | Chia sẻ qua WhatsApp
  • Thuật toán Slug, thực hiện kết xuất phông chữ dựa trên đường cong Bézier trên GPU, kết xuất trực tiếp dữ liệu vector mà không cần texture, và được sử dụng trong nhiều ngành như game, CAD, biên tập video, thiết bị y tế
  • Do từ bỏ quyền độc quyền kể từ 2026/3/17, bằng sáng chế đã được giải phóng hoàn toàn vào phạm vi công cộng, nên bất kỳ ai cũng có thể tự do sử dụng
  • Ở các phiên bản gần đây, hiệu năng và hiệu quả mã nguồn được cải thiện nhờ tối ưu hóa band split và loại bỏ supersampling, cũng như đơn giản hóa cách kết xuất emoji
  • Thay đổi lớn nhất là tính năng dynamic dilation (giãn nở động), tự động tính toán mức mở rộng biên tối ưu theo kích thước glyph và góc nhìn
  • Ai cũng có thể tự do triển khai thông qua mã shader tham chiếu trên GitHub được phát hành theo giấy phép MIT

Quá trình phát triển và lan rộng của thuật toán Slug

  • Thuật toán Slug được phát triển vào mùa thu năm 2016 và công bố trong bài báo JCGT năm 2017
    • Sau đó Slug Library 1.0 được thương mại hóa và cấp phép cho các công ty lớn như Activision, Blizzard, Ubisoft, Adobe
    • Được sử dụng trong nhiều lĩnh vực như game, trực quan hóa khoa học, CAD, biên tập video, thiết bị y tế, nhà chiếu hình thiên văn
  • Ban đầu nó được phát triển để phục vụ kết xuất văn bản chất lượng cao cho C4 Engine, sau đó cũng được áp dụng cho trình soạn thảo công thức Radical Pie
    • Biểu diễn các thành phần đồ họa vector như công thức, dấu ngoặc, mũi tên ở độ phân giải cao

Sự tiến hóa của phương thức kết xuất

  • Slug kết xuất trực tiếp dữ liệu đường cong Bézier trên GPU mà không cần texture được tiền tính toán
    • Chịu lỗi số thực dấu chấm động tốt, đồng thời giữ được đường cong mượt và góc cạnh sắc nét
  • Tối ưu hóa band split từng giúp tăng tốc với glyph lớn, nhưng đã bị loại bỏ vì làm giảm hiệu năng ở cỡ chữ nhỏ và làm tăng độ phức tạp
    • Nhờ đó shader pixel được đơn giản hóa và kích thước texture dữ liệu band giảm một nửa
  • Adaptive supersampling từng được dùng để giảm hiện tượng răng cưa ở cỡ chữ nhỏ, nhưng do hiệu quả hạn chế và đã được thay thế bằng kỹ thuật giãn nở mới nên bị loại bỏ
  • Kết xuất emoji đa màu được đổi sang cách xử lý mỗi layer như một glyph độc lập, qua đó cải thiện hiệu năng và đơn giản hóa mã nguồn

Dynamic Dilation

  • Trước đây, việc mở rộng biên glyph phải được chỉ định thủ công bằng một khoảng cách cố định
    • Với cỡ chữ nhỏ thì dễ mất biên, còn với cỡ chữ lớn thì lãng phí không gian không cần thiết
  • Dynamic dilation được tính toán tự động trong vertex shader, quyết định khoảng cách mở rộng tối ưu mỗi khi kết xuất từng glyph
    • Dùng ma trận MVP và kích thước viewport để mở rộng biên theo đơn vị nửa pixel
    • Có thể áp dụng khoảng giãn nở khác nhau cho từng vertex tùy theo thay đổi góc nhìn
  • Về mặt toán học, nó được suy ra thành một phương trình bậc hai để tìm khoảng cách d thỏa điều kiện mở rộng nửa pixel trong không gian viewport
    • Nghiệm cuối cùng có dạng (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2})
    • Chọn dấu dương để dịch chuyển theo hướng ra ngoài
  • Để giữ nguyên kích thước glyph, hệ thống cũng thực hiện hiệu chỉnh tọa độ em-space, đồng thời lưu ma trận Jacobian nghịch đảo tại mỗi vertex

Tuyên bố gỡ bỏ bằng sáng chế và công khai

  • Thuật toán Slug đã nhận bằng sáng chế Mỹ (US10373352B1) vào năm 2019, nhưng đã từ bỏ quyền độc quyền từ ngày 17 tháng 3 năm 2026 thay vì giữ đến năm 2038
    • Chính thức từ bỏ thời hạn còn lại của bằng sáng chế bằng cách nộp mẫu SB/43 và thanh toán lệ phí cho USPTO
  • Nhờ đó, bất kỳ ai cũng có thể tự do triển khai và sử dụng thuật toán Slug
    • Cho phép cho cả mục đích thương mại lẫn phi thương mại, không còn lo ngại vi phạm quyền sở hữu trí tuệ
  • Kho lưu trữ GitHub (https://github.com/EricLengyel/Slug) cũng được công khai để tham khảo triển khai thực tế
    • Được cung cấp theo giấy phép MIT, bao gồm pixel shader đã cải tiến so với bài báo JCGT và vertex shader có tích hợp dynamic dilation

Ý nghĩa của Slug

  • Slug đã trở thành một triển khai tiêu biểu của kết xuất phông chữ vector trên GPU
  • Qua 10 năm phát triển, nó đã cải thiện đồng thời hiệu năng, tính đơn giản và chất lượng
  • Việc gỡ bỏ bằng sáng chế mở ra khả năng được tự do áp dụng và mở rộng trên toàn ngành

2 bình luận

 
dalinaum 2026-03-22

Đúng là một tin tuyệt vời.

 
GN⁺ 2026-03-18
Bình luận trên Hacker News
  • Tin này thật tuyệt vời. Trước đây tôi từng thán phục sự tao nhã của thuật toán này, nhưng lại thấy tiếc vì bằng sáng chế khiến nó không thể dùng trong FOSS
    Giờ đây việc nó được hiến tặng vào phạm vi công cộng sau một khoảng thời gian thật đáng cảm kích. Nếu một ngày nào đó tôi làm trình giả lập terminal, tôi muốn thử dùng thuật toán này chỉ vì vẻ đẹp thẩm mỹ của đoạn mã
    • Chính tác giả cho biết ông đã nhận bằng sáng chế cho thuật toán Slug vào năm 2019, nhưng cảm thấy việc giữ độc quyền đến năm 2038 là quá lâu. Vì vậy kể từ hôm nay, ông vĩnh viễn hiến tặng bằng sáng chế Slug vào phạm vi công cộng
    • Tôi nghĩ nếu bằng sáng chế phần mềm chỉ có hiệu lực khoảng 8 năm thì cũng đáng để ủng hộ
  • Dự án mới nhất của ông là RadicalPie
    Đây là trình biên tập công thức toán học chuyên nghiệp cho Windows 10/11, dùng Slug làm engine dựng hình và có giá 60 USD. Có lẽ ông cũng đang dùng nó để viết cuốn sách FGED
    • Nếu là 25 năm trước thì chắc tôi đã rất mừng. Nhưng dạo này hầu như không còn thấy ai làm kiểu công việc này trên Windows nữa
      Dù vậy, đây là một lựa chọn thay thế rất tốt cho MathType, và việc tích hợp OLE giúp chèn vào Word rất tốt là điều khá ấn tượng
  • Ở chỗ làm cũ tôi từng dùng Slug, và đó thực sự là một thư viện được thiết kế như một tác phẩm nghệ thuật
    Tôi xem nó là đỉnh cao của kỹ nghệ phần mềm. Cảm ơn tác giả đã hiến tặng nó cho phạm vi công cộng
  • Cảm ơn Eric. Tôi rất tò mò cách tiếp cận của ông khác gì so với các dự án như Vello
  • Tôi rất thích khi thấy những câu chuyện mà người tạo ra phần mềm phức tạp nhưng hữu ích nhận được sự đền đáp xứng đáng
    Mong là sẽ có nhiều trường hợp như vậy hơn
  • Tin thật đáng kinh ngạc. Cảm ơn Eric
    Nhân tiện, bằng sáng chế Loop-Blinn của Microsoft (cho đường cong bậc ba) cũng sắp hết hạn, nên bối cảnh render văn bản có thể thay đổi lớn
  • Thật tuyệt. Trước đây tôi từng tự hỏi liệu Ruffle có thể triển khai đồ họa vector tăng tốc GPU theo cách tương tự hay không
    Hồi đó họ dùng cách xấp xỉ đường cong bằng tam giác, và tôi không biết bây giờ còn vậy không
  • Tin rất đáng mừng. Với tốc độ phần cứng hiện nay, chẳng có lý do gì lại không render glyph trực tiếp từ đường cong Bezier
    Những cách như texture atlas hay SDF trước đây có vẻ chỉ là giải pháp tạm thời, và chất lượng giảm đi khi thay đổi tỉ lệ
    Nay Slug đã được mở ra, tôi hy vọng các thư viện lớn hay game engine sẽ áp dụng nhiều hơn các phương pháp dựng hình chất lượng cao
  • Trước đây tôi từng làm việc với game engine C4 của tác giả, mà giờ đã là 20 năm trước
    Tôi không biết là ông ấy vẫn còn hoạt động tích cực trong lĩnh vực này
  • Không biết nó đã được đưa lên ShaderToy chưa 😄