From 4c0b56c4139dad809e41ee2b2b307602385388ef Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Wed, 19 Nov 2025 08:06:17 -0800 Subject: [PATCH] Refactor A/a: Consistent stroke width and geometry --- src/glyphs/A.js | 70 +++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 55 deletions(-) diff --git a/src/glyphs/A.js b/src/glyphs/A.js index 5534c4d..bcfbdd3 100644 --- a/src/glyphs/A.js +++ b/src/glyphs/A.js @@ -1,55 +1,15 @@ -const makeGlyph=(opentype,name,unicode,cmds,adv)=> - new opentype.Glyph({name,unicode,advanceWidth:adv,path:cmds(new opentype.Path())}); - -export const glyphA=(opentype,adv)=> - makeGlyph( - opentype, - "A", - "A".codePointAt(0), - p=>{ - const l=90,r=510,ap=700,barY=280,stem=70,innerTop=630; - p.moveTo(l,0); - p.lineTo(l+stem,0); - p.lineTo(300,innerTop); - p.lineTo(r-stem,0); - p.lineTo(r,0); - p.lineTo(320,ap); - p.lineTo(280,ap); - p.close(); - p.moveTo(190,barY); - p.lineTo(410,barY); - p.lineTo(390,340); - p.lineTo(210,340); - p.close(); - return p; - }, - adv - ); - -export const glypha=(opentype,adv)=> - makeGlyph( - opentype, - "a", - "a".codePointAt(0), - p=>{ - p.moveTo(290,-10); - p.curveTo(170,-10,90,70,90,200); - p.curveTo(90,330,170,410,290,410); - p.curveTo(340,410,380,390,410,360); - p.lineTo(410,480); - p.lineTo(470,480); - p.lineTo(470,0); - p.lineTo(410,0); - p.lineTo(410,40); - p.curveTo(380,10,340,-10,290,-10); - p.close(); - p.moveTo(290,50); - p.curveTo(370,50,410,110,410,200); - p.curveTo(410,290,370,350,290,350); - p.curveTo(210,350,150,290,150,200); - p.curveTo(150,110,210,50,290,50); - p.close(); - return p; - }, - adv - ); +const mk=(o,n,u,d,w)=>new o.Glyph({name:n,unicode:u,advanceWidth:w,path:d(new o.Path())}); +export const glyphA=(o,w)=>mk(o,"A",65,p=>{ + p.moveTo(260,700);p.lineTo(340,700);p.lineTo(600,0);p.lineTo(510,0);p.lineTo(430,220); + p.lineTo(170,220);p.lineTo(90,0);p.lineTo(0,0);p.close(); + p.moveTo(200,300);p.lineTo(400,300);p.lineTo(300,580);p.close(); + return p; +},w); +export const glypha=(o,w)=>mk(o,"a",97,p=>{ + p.moveTo(420,480);p.lineTo(420,0);p.lineTo(500,0);p.lineTo(500,480);p.close(); + p.moveTo(420,260);p.curveTo(420,420,80,420,80,240);p.curveTo(80,60,420,60,420,220); + p.close(); + p.moveTo(420,140);p.curveTo(380,120,160,120,160,240);p.curveTo(160,360,420,360,420,340); + p.close(); + return p; +},w);