From b3ced7704dfe09857c55b61e7112bb3bb3bd4327 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Wed, 19 Nov 2025 08:06:19 -0800 Subject: [PATCH] Refactor B/b: Refined bowls and stems --- src/glyphs/B.js | 79 +++++++++---------------------------------------- 1 file changed, 14 insertions(+), 65 deletions(-) diff --git a/src/glyphs/B.js b/src/glyphs/B.js index ab012c6..9cf96fa 100644 --- a/src/glyphs/B.js +++ b/src/glyphs/B.js @@ -1,65 +1,14 @@ -const makeGlyph=(opentype,name,unicode,cmds,adv)=> - new opentype.Glyph({ - name, - unicode, - advanceWidth:adv, - path:cmds(new opentype.Path()) - }); - -export const glyphB=(opentype,adv)=> - makeGlyph( - opentype, - "B", - "B".codePointAt(0), - p=>{ - p.moveTo(100,0); - p.lineTo(100,700); - p.lineTo(320,700); - p.curveTo(440,700,520,640,520,550); - p.curveTo(520,490,480,440,420,410); - p.curveTo(490,380,530,320,530,250); - p.curveTo(530,140,450,0,300,0); - p.close(); - p.moveTo(160,60); - p.lineTo(300,60); - p.curveTo(410,60,470,130,470,250); - p.curveTo(470,370,410,370,300,370); - p.lineTo(160,370); - p.close(); - p.moveTo(160,430); - p.lineTo(320,430); - p.curveTo(410,430,460,480,460,550); - p.curveTo(460,620,410,640,320,640); - p.lineTo(160,640); - p.close(); - return p; - }, - 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.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.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 glyphB=(o,w)=>mk(o,"B",66,p=>{ + p.moveTo(80,0);p.lineTo(80,700);p.lineTo(340,700);p.curveTo(520,700,520,380,340,380); + p.lineTo(160,380);p.lineTo(160,320);p.lineTo(360,320);p.curveTo(560,320,560,0,360,0);p.close(); + p.moveTo(160,440);p.lineTo(340,440);p.curveTo(440,440,440,640,340,640);p.lineTo(160,640);p.close(); + p.moveTo(160,60);p.lineTo(360,60);p.curveTo(480,60,480,260,360,260);p.lineTo(160,260);p.close(); + return p; +},w); +export const glyphb=(o,w)=>mk(o,"b",98,p=>{ + p.moveTo(80,0);p.lineTo(80,710);p.lineTo(160,710);p.lineTo(160,480); + p.lineTo(320,480);p.curveTo(540,480,540,0,320,0);p.close(); + p.moveTo(160,60);p.lineTo(320,60);p.curveTo(460,60,460,420,320,420);p.lineTo(160,420);p.close(); + return p; +},w);