mirror of
https://github.com/multipleof4/stain.otf.git
synced 2026-01-14 00:27:55 +00:00
Refactor: Refine D/d curvature & counters
This commit is contained in:
@@ -1,30 +1,29 @@
|
|||||||
const makeGlyph=(opentype,name,unicode,cmds,adv)=>
|
const makeGlyph=(opentype,name,unicode,cmds,adv)=>
|
||||||
new opentype.Glyph({
|
new opentype.Glyph({name,unicode,advanceWidth:adv,path:cmds(new opentype.Path())});
|
||||||
name,
|
|
||||||
unicode,
|
|
||||||
advanceWidth: adv,
|
|
||||||
path: cmds(new opentype.Path())
|
|
||||||
});
|
|
||||||
|
|
||||||
export const glyphD=(opentype,adv)=>
|
export const glyphD=(opentype,adv)=>
|
||||||
makeGlyph(
|
makeGlyph(
|
||||||
opentype,
|
opentype,
|
||||||
"D",
|
"D",
|
||||||
"D".codePointAt(0),
|
"D".codePointAt(0),
|
||||||
(p) => {
|
p=>{
|
||||||
p.moveTo(100, 0);
|
const x0=120,x1=190,top=700,bot=0;
|
||||||
p.lineTo(100, 700);
|
const cx=330,ro=260,ri=200;
|
||||||
p.lineTo(320, 700);
|
p.moveTo(x0,bot);
|
||||||
p.curveTo(480, 700, 580, 590, 580, 420);
|
p.lineTo(x0,top);
|
||||||
p.lineTo(580, 280);
|
p.lineTo(cx+ro-40,top);
|
||||||
p.curveTo(580, 110, 480, 0, 320, 0);
|
p.curveTo(cx+ro,top,cx+ro,top-60,cx+ro,top-150);
|
||||||
|
p.lineTo(cx+ro,150);
|
||||||
|
p.curveTo(cx+ro,60,cx+ro-40,bot,cx+ro-100,bot);
|
||||||
|
p.lineTo(x0,bot);
|
||||||
p.close();
|
p.close();
|
||||||
p.moveTo(160, 60);
|
p.moveTo(x1,70);
|
||||||
p.lineTo(320, 60);
|
p.lineTo(x1,630);
|
||||||
p.curveTo(450, 60, 520, 140, 520, 280);
|
p.lineTo(cx+ri+40,630);
|
||||||
p.lineTo(520, 420);
|
p.curveTo(cx+ri+90,630,cx+ri+90,580,cx+ri+90,520);
|
||||||
p.curveTo(520, 560, 450, 640, 320, 640);
|
p.lineTo(cx+ri+90,180);
|
||||||
p.lineTo(160, 640);
|
p.curveTo(cx+ri+90,120,cx+ri+40,70,cx+ri,70);
|
||||||
|
p.lineTo(x1,70);
|
||||||
p.close();
|
p.close();
|
||||||
return p;
|
return p;
|
||||||
},
|
},
|
||||||
@@ -36,20 +35,23 @@ export const glyphd = (opentype, adv) =>
|
|||||||
opentype,
|
opentype,
|
||||||
"d",
|
"d",
|
||||||
"d".codePointAt(0),
|
"d".codePointAt(0),
|
||||||
(p) => {
|
p=>{
|
||||||
p.moveTo(500, 0);
|
const cx=310;
|
||||||
p.lineTo(500, 720);
|
p.moveTo(430,0);
|
||||||
p.lineTo(440, 720);
|
p.lineTo(370,0);
|
||||||
p.lineTo(440, 480);
|
p.lineTo(370,80);
|
||||||
p.lineTo(290, 480);
|
p.curveTo(340,20,300,-10,240,-10);
|
||||||
p.curveTo(150, 480, 80, 380, 80, 240);
|
p.curveTo(150,-10,90,70,90,200);
|
||||||
p.curveTo(80, 100, 150, 0, 290, 0);
|
p.curveTo(90,330,150,410,240,410);
|
||||||
|
p.curveTo(300,410,340,380,370,330);
|
||||||
|
p.lineTo(370,720);
|
||||||
|
p.lineTo(430,720);
|
||||||
p.close();
|
p.close();
|
||||||
p.moveTo(290, 60);
|
p.moveTo(240,50);
|
||||||
p.curveTo(180, 60, 140, 130, 140, 240);
|
p.curveTo(320,50,370,120,370,200);
|
||||||
p.curveTo(140, 350, 180, 420, 290, 420);
|
p.curveTo(370,280,320,350,240,350);
|
||||||
p.lineTo(440, 420);
|
p.curveTo(160,350,120,280,120,200);
|
||||||
p.lineTo(440, 60);
|
p.curveTo(120,120,160,50,240,50);
|
||||||
p.close();
|
p.close();
|
||||||
return p;
|
return p;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user