Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Raster Graphics TextMeasure for SVG

Đang mở
#2,407 0 bình luận 1 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@Danielku15 đang làm issue này rồi.

Từ ngày 4/12/2025.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

The SVG rendering currently uses a rather hacky text measurement engine where we pre-compute certain character sizes and then sum them up. for bold and italic we just add a factor.

This is error prone and often imprecise.

To eliminate this problem we should implement a new text-renderer for all platforms.

C#/Kotlin

For C# and Kotlin it's fairly easy: We simply use alphaSkia. Any potential custom-fonts should be registered there already.

JS Node

Same as for C#/Kotlin we can rely on alphaSkia.

JS Browser

Here it gets tricky. In Web Workers we do not have access to the web fonts loaded so we need to find something different:

  1. The general idea is to use a OffScreenCanvas and load all fonts into the worker context using the font loading APIs.
  2. To pass the web fonts to the worker context we do the following:
    1. We allow users to explicitly specify the font sources. If users specify the location we can pass the metadata to the worker and load the fonts there. The config would be similar to how we have it for the SMuFl Fonts. For one font, we might have multiple sources.
      1. We should align the options to the properties available for FontFace definitions (family, style, weight, src, unicode-range). As this feature is web-only we can use the web type definitions directly.
    2. If no font source is specified, we try to auto-detect it. Unfortunately FontFace does not give us access to the original source.
      1. Array.from(document.styleSheets).flatMap(y => Array.from(y.rules).filter(z => z instanceof CSSFontFaceRule)) gives us access to all custom web font definitions.
      2. For every font needed in the rendering, we lookup the matching CSS font rules (matching can be rather loose, better have more fonts than less).
      3. We fill the remaining font definitions.
Ngôn ngữ chính
TypeScript
Star
1.9k
Fork
297
Merge trung bình
9 giờ 2 phút
Pull request đã merge (30 ngày)
44

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CoderLine/alphaTab

Tất cả issue của CoderLine/alphaTab

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.