CFF hflex and hflex1: second curve doesn't return to the starting y
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, node.js
- Ambito
- backend, computer-graphics
Direzione di ricerca
Inizia in src/glyph/CFFGlyph.js ed esamina la gestione degli operatori hflex e hflex1. Conferma le regole degli endpoint consultando la specifica Type 2 charstring citata nell’issue. Confronta i comandi del tracciato dei glifi interessati con l’output di fontTools' RecordingPen per un file CFF OTF che riproduce il problema. Il lavoro è completato quando entrambi gli operatori tornano alla y iniziale e i tracciati risultanti corrispondono al riferimento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In src/glyph/CFFGlyph.js (still on master, and in 2.0.4), the hflex (12 34) and hflex1 (12 36) operators leave the second curve at the raised y. The Type 2 charstring spec (Adobe TN #5177) says both end at the y they started from. Every point after the flex is shifted by the flex's dy, which shows up as steps or misplaced contours when drawing the path.
hflex dx1 dx2 dy2 dx3 dx4 dx5 dx6: the second curve is (dx4, 0) (dx5, -dy2) (dx6, 0), so c5y should drop back to the start. Currently:
c5y = c4y; // should be: c5y = y;
c6y = c5y;
hflex1 dx1 dy1 dx2 dy2 dx3 dx4 dx5 dy5 dx6: dy6 is implied so the curve ends at the starting y. Currently:
c5y = c4y + stack.shift();
c6x = c5x + stack.shift();
c6y = c5y; // should be: c6y = y;
(y is still the start point here because it's only updated after c6y.)
Repro: any CFF OTF whose charstrings use hflex/hflex1. Compare font.glyphForCodePoint(cp).path.commands with fontTools' RecordingPen output for the same glyph. In one font, a glyph whose contour should close at (415, -10) ends at (415, 0) in fontkit (hflex with dy2 = 10). In another, an hflex1 glyph's last point comes out at y 147 where fontTools gives 171. With the two one-line changes above, fontkit matches fontTools.
flex (12 35) and flex1 (12 37) look correct.
- Lingua principale
- JavaScript
- Stelle
- 1.7k
- Fork
- 254
- Merge medio
- 1g 13h
- PR unite (30g)
- 22
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di foliojs/fontkit
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
Vertical phantom points have the wrong signForse già presa @lehni l’ha presa 11 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
foliojs/fontkit#382 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
foliojs/fontkit#368 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Creating fonts with fontkitAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di foliojs/fontkit
Issue simili
-
agentic-workflows
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
githubnext/gh-cao#20316 ·
I maintainer di solito rispondono entro 1 giorno
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
rookslog/zlibrary-mcp#408 ·
I maintainer di solito rispondono entro 1 giorno
-
status: needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
mastra-ai/mastra#29641 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Dead link: https://central.sonatype.com/artifact/io.quarkiverse/quarkiverse-parent/12/versionsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
quarkiverse/quarkiverse#464 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno