Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Raster Graphics TextMeasure for SVG

Aperta
#2,407 0 commenti 1 reazione 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@Danielku15 ci sta già lavorando.

Dal 4/12/2025.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

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.
Lingua principale
TypeScript
Stelle
1.9k
Fork
297
Merge medio
9h 2m
PR unite (30g)
44

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CoderLine/alphaTab

Tutte le issue di CoderLine/alphaTab

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.