mirror of
https://github.com/multipleof4/stain.otf.git
synced 2026-01-14 08:37:59 +00:00
Refactor: Smoothen A/a geometry & spacing
This commit is contained in:
@@ -1,52 +1,57 @@
|
|||||||
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 glyphA = (opentype, adv) =>
|
export const glyphA=(opentype,adv)=>
|
||||||
makeGlyph(
|
makeGlyph(
|
||||||
opentype,
|
opentype,
|
||||||
"A",
|
"A",
|
||||||
"A".codePointAt(0),
|
"A".codePointAt(0),
|
||||||
(p) => {
|
p=>{
|
||||||
p.moveTo(50, 0);
|
const l=90,r=510,ap=700,barY=280,stem=70,innerTop=630;
|
||||||
p.lineTo(280, 700);
|
p.moveTo(l,0);
|
||||||
p.lineTo(320, 700);
|
p.lineTo(l+stem,0);
|
||||||
p.lineTo(550, 0);
|
p.lineTo(300,innerTop);
|
||||||
p.lineTo(480, 0);
|
p.lineTo(r-stem,0);
|
||||||
p.lineTo(430, 180);
|
p.lineTo(r,0);
|
||||||
p.lineTo(170, 180);
|
p.lineTo(320,ap);
|
||||||
p.lineTo(120, 0);
|
p.lineTo(280,ap);
|
||||||
p.close();
|
p.close();
|
||||||
p.moveTo(195, 240);
|
p.moveTo(190,barY);
|
||||||
p.lineTo(405, 240);
|
p.lineTo(410,barY);
|
||||||
p.lineTo(300, 620);
|
p.lineTo(390,340);
|
||||||
|
p.lineTo(210,340);
|
||||||
p.close();
|
p.close();
|
||||||
return p;
|
return p;
|
||||||
},
|
},
|
||||||
adv
|
adv
|
||||||
);
|
);
|
||||||
|
|
||||||
export const glypha = (opentype, adv) =>
|
export const glypha=(opentype,adv)=>
|
||||||
makeGlyph(
|
makeGlyph(
|
||||||
opentype,
|
opentype,
|
||||||
"a",
|
"a",
|
||||||
"a".codePointAt(0),
|
"a".codePointAt(0),
|
||||||
(p) => {
|
p=>{
|
||||||
p.moveTo(510, 0);
|
const x=300,yBase=-10;
|
||||||
p.lineTo(510, 480);
|
const bowlTop=460,asc=480;
|
||||||
p.lineTo(300, 480);
|
const rOuter=210,rInner=145;
|
||||||
p.curveTo(180, 480, 90, 380, 90, 240);
|
p.moveTo(x+rOuter,yBase+80);
|
||||||
p.curveTo(90, 100, 180, 0, 300, 0);
|
p.curveTo(x+rOuter,yBase+10,x+80,yBase-40,x,yBase-40);
|
||||||
|
p.curveTo(x-120,yBase-40,x-210,yBase+50,x-210,yBase+210);
|
||||||
|
p.curveTo(x-210,yBase+370,x-120,bowlTop,x,bowlTop);
|
||||||
|
p.curveTo(x+85,bowlTop,x+155,bowlTop-45,x+190,bowlTop-110);
|
||||||
|
p.lineTo(x+190,asc-30);
|
||||||
|
p.lineTo(x+250,asc-30);
|
||||||
|
p.lineTo(x+250,0);
|
||||||
|
p.lineTo(x+190,0);
|
||||||
|
p.lineTo(x+190,60);
|
||||||
|
p.curveTo(x+150,yBase+10,x+85,yBase-10,x,yBase-10);
|
||||||
p.close();
|
p.close();
|
||||||
p.moveTo(300, 60);
|
p.moveTo(x,yBase+40);
|
||||||
p.curveTo(210, 60, 150, 130, 150, 240);
|
p.curveTo(x+95,yBase+40,x+150,yBase+115,x+150,yBase+210);
|
||||||
p.curveTo(150, 350, 210, 420, 300, 420);
|
p.curveTo(x+150,yBase+305,x+95,bowlTop-40,x,bowlTop-40);
|
||||||
p.lineTo(450, 420);
|
p.curveTo(x-95,bowlTop-40,x-150,yBase+305,x-150,yBase+210);
|
||||||
p.lineTo(450, 60);
|
p.curveTo(x-150,yBase+115,x-95,yBase+40,x,yBase+40);
|
||||||
p.close();
|
p.close();
|
||||||
return p;
|
return p;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user