From 2ed6a9d0ae5e1f308fbe2e9195e76a8b631debe8 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Sun, 9 Nov 2025 12:25:04 -0800 Subject: [PATCH] Refactor: Simplify B/b bowls & remove artifacts --- src/glyphs/B.js | 82 +++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/src/glyphs/B.js b/src/glyphs/B.js index cf34236..5971596 100644 --- a/src/glyphs/B.js +++ b/src/glyphs/B.js @@ -1,64 +1,60 @@ -const makeGlyph = (opentype, name, unicode, cmds, adv) => - new opentype.Glyph({ - name, - unicode, - advanceWidth: adv, - path: cmds(new opentype.Path()) - }); +const makeGlyph=(opentype,name,unicode,cmds,adv)=> + new opentype.Glyph({name,unicode,advanceWidth:adv,path:cmds(new opentype.Path())}); -export const glyphB = (opentype, adv) => +export const glyphB=(opentype,adv)=> makeGlyph( opentype, "B", "B".codePointAt(0), - (p) => { - p.moveTo(100, 0); - p.lineTo(100, 700); - p.lineTo(350, 700); - p.curveTo(500, 700, 550, 600, 550, 525); - p.curveTo(550, 450, 500, 350, 350, 350); - p.lineTo(380, 350); - p.curveTo(520, 350, 580, 250, 580, 175); - p.curveTo(580, 100, 520, 0, 380, 0); + p=>{ + const x0=120,stem=60,top=700,midY=360; + p.moveTo(x0,0); + p.lineTo(x0,top); + p.lineTo(340,top); + p.curveTo(470,top,560,640,560,540); + p.curveTo(560,450,500,400,420,390); + p.curveTo(510,370,580,310,580,220); + p.curveTo(580,100,490,0,350,0); p.close(); - p.moveTo(160, 410); - p.lineTo(340, 410); - p.curveTo(450, 410, 490, 460, 490, 525); - p.curveTo(490, 590, 450, 640, 340, 640); - p.lineTo(160, 640); + p.moveTo(180,60); + p.lineTo(340,60); + p.curveTo(450,60,520,120,520,210); + p.curveTo(520,300,450,340,350,340); + p.lineTo(180,340); p.close(); - p.moveTo(160, 60); - p.lineTo(360, 60); - p.curveTo(480, 60, 520, 110, 520, 175); - p.curveTo(520, 240, 480, 290, 360, 290); - p.lineTo(160, 290); + p.moveTo(180,400); + p.lineTo(340,400); + p.curveTo(440,400,500,440,500,520); + p.curveTo(500,600,440,640,340,640); + p.lineTo(180,640); p.close(); return p; }, adv ); -export const glyphb = (opentype, adv) => +export const glyphb=(opentype,adv)=> makeGlyph( opentype, "b", "b".codePointAt(0), - (p) => { - p.moveTo(100, 0); - p.lineTo(100, 720); - p.lineTo(160, 720); - p.lineTo(160, 440); - p.curveTo(200, 470, 250, 490, 310, 490); - p.curveTo(430, 490, 520, 400, 520, 280); - p.curveTo(520, 160, 430, 70, 310, 70); - p.curveTo(250, 70, 200, 90, 160, 120); - p.lineTo(160, 0); + p=>{ + const cx=310; + p.moveTo(140,0); + p.lineTo(80,0); + p.lineTo(80,720); + p.lineTo(140,720); + p.lineTo(140,340); + p.curveTo(180,390,230,420,300,420); + p.curveTo(410,420,500,330,500,210); + p.curveTo(500,90,410,0,300,0); + p.curveTo(230,0,180,30,140,80); p.close(); - p.moveTo(310, 130); - p.curveTo(400, 130, 460, 190, 460, 280); - p.curveTo(460, 370, 400, 430, 310, 430); - p.curveTo(220, 430, 160, 370, 160, 280); - p.curveTo(160, 190, 220, 130, 310, 130); + p.moveTo(300,60); + p.curveTo(380,60,440,120,440,210); + p.curveTo(440,300,380,360,300,360); + p.curveTo(220,360,140,300,140,210); + p.curveTo(140,120,220,60,300,60); p.close(); return p; },