Added glyph three and five

This commit is contained in:
Belleve Invis 2015-07-21 16:44:34 +08:00
parent b24242e59c
commit eb92ef6234
11 changed files with 227 additions and 115 deletions

View file

@ -44,7 +44,8 @@ define STROKE para.stroke
define DOTSIZE para.dotsize define DOTSIZE para.dotsize
define BARPOS para.barpos define BARPOS para.barpos
define GBARPOS para.gbarpos define GBARPOS para.gbarpos
define LONGSERIF para.longserif define FIVEBARPOS para.fivebarpos
define LONGJUT para.longjut
define ACCENT para.accent define ACCENT para.accent
@ -67,9 +68,10 @@ define ITALICCORS : STROKE * globalTransform.yx
# style parameters # style parameters
define KAPPA para.kappa define KAPPA para.kappa
define COKAPPA : 1 - KAPPA define COKAPPA : 1 - KAPPA
define BKAPPA : KAPPA + 0.1 define BKAPPA : para.bkappa || KAPPA + 0.1
define CKAPPA : para.ckappa || BKAPPA
define COBKAPPA : 1 - BKAPPA define COBKAPPA : 1 - BKAPPA
define KAPPA_HOOK : para.kappa_hook || 0.7 define KAPPA_HOOK : para.kappa_hook || BKAPPA + 0.1
define KAPPA_AHOOK : para.kappa_ahook || KAPPA_HOOK define KAPPA_AHOOK : para.kappa_ahook || KAPPA_HOOK
define TAILADJX : WIDTH * 0.2 define TAILADJX : WIDTH * 0.2
define TAILADJY : XH * 0.25 define TAILADJY : XH * 0.25
@ -77,7 +79,7 @@ define TAILADJKAPPA 0.75
define TAILADJSX : WIDTH * 0.2 define TAILADJSX : WIDTH * 0.2
define TAILADJSY 0 define TAILADJSY 0
define TAILADJSKAPPA 0.75 define TAILADJSKAPPA 0.75
define ILBALANCE : LONGSERIF * 0.04 define ILBALANCE : LONGJUT * 0.04
define JBALANCE : para.jbalance || HALFSTROKE + ILBALANCE define JBALANCE : para.jbalance || HALFSTROKE + ILBALANCE
define TBALANCE : para.tbalance || JBALANCE define TBALANCE : para.tbalance || JBALANCE
define TBALANCE2 : para.tbalance2 || TBALANCE define TBALANCE2 : para.tbalance2 || TBALANCE

View file

@ -3,7 +3,7 @@
r0_Glyph = require('./support/glyph')['Glyph']; r0_Glyph = require('./support/glyph')['Glyph'];
r0_Stroke = require('./support/stroke')['Stroke']; r0_Stroke = require('./support/stroke')['Stroke'];
exports['build'] = function _r0_t0(r1_para) { exports['build'] = function _r0_t0(r1_para) {
var r1_para, r1_variantSelector, r1_font, r1_glyphList, r1_glyphs, r1_globalTransform, r1_ITALICCOR, r1_UPWARD, r1_DOWNWARD, r1_RIGHTWARD, r1_LEFTWARD, r1_DESCENDER, r1_WIDTH, r1_CAP, r1_XH, r1_O, r1_OXHOOK, r1_SB, r1_HOOK, r1_AHOOK, r1_SHOOK, r1_RHOOK, r1_SMOOTH, r1_SMALLSMOOTH, r1_STROKE, r1_DOTSIZE, r1_BARPOS, r1_GBARPOS, r1_LONGSERIF, r1_ACCENT, r1_XO, r1_CAPO, r1_HALFSTROKE, r1_RIGHTSB, r1_MIDDLE, r1_CAPMIDDLE, r1_CAP_SMOOTH, r1_DOTRADIUS, r1_SMOOTHA, r1_SMOOTHB, r1_SMALLSMOOTHA, r1_SMALLSMOOTHB, r1_ITALICCORS, r1_KAPPA, r1_COKAPPA, r1_BKAPPA, r1_COBKAPPA, r1_KAPPA_HOOK, r1_KAPPA_AHOOK, r1_TAILADJX, r1_TAILADJY, r1_TAILADJKAPPA, r1_TAILADJSX, r1_TAILADJSY, r1_TAILADJSKAPPA, r1_ILBALANCE, r1_JBALANCE, r1_TBALANCE, r1_TBALANCE2, r1_RBALANCE, r1_BASE, r1_MARK, r1_MARKBASE, r1_tm, r1_markAboveLower, r1_markAboveCap, r1_markBelowLower, r1_markBelowZero, r1_capitalMarks, r1_bMarks, r1_eMarks, r1_pMarks, r1_ifMarks, r1_xn$createglyph$7Hrq, r1_Ring, r1_ORing, r1_leftwardTopSerif, r1_leftwardBottomSerif, r1_rightwardTopSerif, r1_rightwardBottomSerif, r1_sStrand, r1_nBowl, r1_sHookUpper, r1_twoHookUpper, r1_sHookLower, _r1_t0, _r1_t1, _r1_t2, _r1_t3, _r1_t4, _r1_t5, _r1_t6, _r1_t7, _r1_t8, _r1_t9, _r1_t10, _r1_t11, _r1_t12, _r1_t13, _r1_t14, _r1_t15, _r1_t16, _r1_t17, _r1_t18, _r1_t19, _r1_t20, _r1_t21, _r1_t22, _r1_t23, _r1_t24, _r1_t25, _r1_t26, _r1_t27, _r1_t28, _r1_t29, _r1_t30, _r1_t31, _r1_t32, _r1_t33, _r1_t34, _r1_t35, _r1_t36, _r1_t37, _r1_t38, _r1_t39, _r1_t40, _r1_t41, _r1_t42, _r1_t43, _r1_t44, _r1_t45, _r1_t46, _r1_t47, _r1_t48, _r1_t49, _r1_t50, _r1_t51, _r1_t52, _r1_t53, _r1_t54, _r1_t55, _r1_t56, _r1_t57, _r1_t58, _r1_t59, _r1_t60, _r1_t61, _r1_t62, _r1_t63, _r1_t64, _r1_t65, _r1_t66, _r1_t67, _r1_t68, _r1_t69, _r1_t70, _r1_t71, _r1_t72, _r1_t73, _r1_t74, _r1_t75, _r1_t76, _r1_t77, _r1_t78, _r1_t79, _r1_t80, _r1_t81, _r1_t82, _r1_t83, _r1_t84, _r1_t85, _r1_t86, _r1_t87, _r1_t88, _r1_t89, _r1_t90, _r1_t91, _r1_t92, _r1_t93, _r1_t94, _r1_t95, _r1_t96, _r1_t97, _r1_t98, _r1_t99, _r1_t100; var r1_para, r1_variantSelector, r1_font, r1_glyphList, r1_glyphs, r1_globalTransform, r1_ITALICCOR, r1_UPWARD, r1_DOWNWARD, r1_RIGHTWARD, r1_LEFTWARD, r1_DESCENDER, r1_WIDTH, r1_CAP, r1_XH, r1_O, r1_OXHOOK, r1_SB, r1_HOOK, r1_AHOOK, r1_SHOOK, r1_RHOOK, r1_SMOOTH, r1_SMALLSMOOTH, r1_STROKE, r1_DOTSIZE, r1_BARPOS, r1_GBARPOS, r1_FIVEBARPOS, r1_LONGJUT, r1_ACCENT, r1_XO, r1_CAPO, r1_HALFSTROKE, r1_RIGHTSB, r1_MIDDLE, r1_CAPMIDDLE, r1_CAP_SMOOTH, r1_DOTRADIUS, r1_SMOOTHA, r1_SMOOTHB, r1_SMALLSMOOTHA, r1_SMALLSMOOTHB, r1_ITALICCORS, r1_KAPPA, r1_COKAPPA, r1_BKAPPA, r1_CKAPPA, r1_COBKAPPA, r1_KAPPA_HOOK, r1_KAPPA_AHOOK, r1_TAILADJX, r1_TAILADJY, r1_TAILADJKAPPA, r1_TAILADJSX, r1_TAILADJSY, r1_TAILADJSKAPPA, r1_ILBALANCE, r1_JBALANCE, r1_TBALANCE, r1_TBALANCE2, r1_RBALANCE, r1_BASE, r1_MARK, r1_MARKBASE, r1_tm, r1_markAboveLower, r1_markAboveCap, r1_markBelowLower, r1_markBelowZero, r1_capitalMarks, r1_bMarks, r1_eMarks, r1_pMarks, r1_ifMarks, r1_xn$createglyph$7Hrq, r1_Ring, r1_ORing, r1_leftwardTopSerif, r1_leftwardBottomSerif, r1_rightwardTopSerif, r1_rightwardBottomSerif, r1_sStrand, r1_nBowl, r1_sHookUpper, r1_twoHookUpper, r1_sHookLower, _r1_t0, _r1_t1, _r1_t2, _r1_t3, _r1_t4, _r1_t5, _r1_t6, _r1_t7, _r1_t8, _r1_t9, _r1_t10, _r1_t11, _r1_t12, _r1_t13, _r1_t14, _r1_t15, _r1_t16, _r1_t17, _r1_t18, _r1_t19, _r1_t20, _r1_t21, _r1_t22, _r1_t23, _r1_t24, _r1_t25, _r1_t26, _r1_t27, _r1_t28, _r1_t29, _r1_t30, _r1_t31, _r1_t32, _r1_t33, _r1_t34, _r1_t35, _r1_t36, _r1_t37, _r1_t38, _r1_t39, _r1_t40, _r1_t41, _r1_t42, _r1_t43, _r1_t44, _r1_t45, _r1_t46, _r1_t47, _r1_t48, _r1_t49, _r1_t50, _r1_t51, _r1_t52, _r1_t53, _r1_t54, _r1_t55, _r1_t56, _r1_t57, _r1_t58, _r1_t59, _r1_t60, _r1_t61, _r1_t62, _r1_t63, _r1_t64, _r1_t65, _r1_t66, _r1_t67, _r1_t68, _r1_t69, _r1_t70, _r1_t71, _r1_t72, _r1_t73, _r1_t74, _r1_t75, _r1_t76, _r1_t77, _r1_t78, _r1_t79, _r1_t80, _r1_t81, _r1_t82, _r1_t83, _r1_t84, _r1_t85, _r1_t86, _r1_t87, _r1_t88, _r1_t89, _r1_t90, _r1_t91, _r1_t92, _r1_t93, _r1_t94, _r1_t95, _r1_t96, _r1_t97, _r1_t98, _r1_t99, _r1_t100, _r1_t101, _r1_t102;
r1_variantSelector = r1_para['variantSelector']; r1_variantSelector = r1_para['variantSelector'];
r1_font = require('./empty.json'); r1_font = require('./empty.json');
r1_glyphList = r1_font['glyf']; r1_glyphList = r1_font['glyf'];
@ -50,7 +50,8 @@
r1_DOTSIZE = r1_para['dotsize']; r1_DOTSIZE = r1_para['dotsize'];
r1_BARPOS = r1_para['barpos']; r1_BARPOS = r1_para['barpos'];
r1_GBARPOS = r1_para['gbarpos']; r1_GBARPOS = r1_para['gbarpos'];
r1_LONGSERIF = r1_para['longserif']; r1_FIVEBARPOS = r1_para['fivebarpos'];
r1_LONGJUT = r1_para['longjut'];
r1_ACCENT = r1_para['accent']; r1_ACCENT = r1_para['accent'];
r1_XO = r1_XH - r1_O; r1_XO = r1_XH - r1_O;
r1_CAPO = r1_CAP - r1_O; r1_CAPO = r1_CAP - r1_O;
@ -67,9 +68,10 @@
r1_ITALICCORS = r1_STROKE * r1_globalTransform['yx']; r1_ITALICCORS = r1_STROKE * r1_globalTransform['yx'];
r1_KAPPA = r1_para['kappa']; r1_KAPPA = r1_para['kappa'];
r1_COKAPPA = 1 - r1_KAPPA; r1_COKAPPA = 1 - r1_KAPPA;
r1_BKAPPA = r1_KAPPA + 0.1; r1_BKAPPA = r1_para['bkappa'] || r1_KAPPA + 0.1;
r1_CKAPPA = r1_para['ckappa'] || r1_BKAPPA;
r1_COBKAPPA = 1 - r1_BKAPPA; r1_COBKAPPA = 1 - r1_BKAPPA;
r1_KAPPA_HOOK = r1_para['kappa_hook'] || 0.7; r1_KAPPA_HOOK = r1_para['kappa_hook'] || r1_BKAPPA + 0.1;
r1_KAPPA_AHOOK = r1_para['kappa_ahook'] || r1_KAPPA_HOOK; r1_KAPPA_AHOOK = r1_para['kappa_ahook'] || r1_KAPPA_HOOK;
r1_TAILADJX = r1_WIDTH * 0.2; r1_TAILADJX = r1_WIDTH * 0.2;
r1_TAILADJY = r1_XH * 0.25; r1_TAILADJY = r1_XH * 0.25;
@ -77,7 +79,7 @@
r1_TAILADJSX = r1_WIDTH * 0.2; r1_TAILADJSX = r1_WIDTH * 0.2;
r1_TAILADJSY = 0; r1_TAILADJSY = 0;
r1_TAILADJSKAPPA = 0.75; r1_TAILADJSKAPPA = 0.75;
r1_ILBALANCE = r1_LONGSERIF * 0.04; r1_ILBALANCE = r1_LONGJUT * 0.04;
r1_JBALANCE = r1_para['jbalance'] || r1_HALFSTROKE + r1_ILBALANCE; r1_JBALANCE = r1_para['jbalance'] || r1_HALFSTROKE + r1_ILBALANCE;
r1_TBALANCE = r1_para['tbalance'] || r1_JBALANCE; r1_TBALANCE = r1_para['tbalance'] || r1_JBALANCE;
r1_TBALANCE2 = r1_para['tbalance2'] || r1_TBALANCE; r1_TBALANCE2 = r1_para['tbalance2'] || r1_TBALANCE;
@ -224,7 +226,7 @@
var r12_u, r12_d, r12_l, r12_r, r12_my, r12_mx, r12_s; var r12_u, r12_d, r12_l, r12_r, r12_my, r12_mx, r12_s;
r12_my = (r12_u + r12_d) / 2; r12_my = (r12_u + r12_d) / 2;
r12_mx = (r12_l + r12_r) / 2; r12_mx = (r12_l + r12_r) / 2;
r12_s = new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r12_mx, r12_d)['cubic-to'](r12_mx + (r12_l - r12_mx) * r1_BKAPPA, r12_d, r12_l, r12_my + (r12_d - r12_my) * r1_BKAPPA, r12_l, r12_my)['cubic-to'](r12_l, r12_my + (r12_u - r12_my) * r1_BKAPPA, r12_mx + (r12_l - r12_mx) * r1_BKAPPA, r12_u, r12_mx, r12_u)['cubic-to'](r12_mx + (r12_r - r12_mx) * r1_BKAPPA, r12_u, r12_r, r12_my + (r12_u - r12_my) * r1_BKAPPA, r12_r, r12_my)['cubic-to'](r12_r, r12_my + (r12_d - r12_my) * r1_BKAPPA, r12_mx + (r12_r - r12_mx) * r1_BKAPPA, r12_d, r12_mx, r12_d); r12_s = new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r12_mx, r12_d)['cubic-to'](r12_mx + (r12_l - r12_mx) * r1_CKAPPA, r12_d, r12_l, r12_my + (r12_d - r12_my) * r1_CKAPPA, r12_l, r12_my)['cubic-to'](r12_l, r12_my + (r12_u - r12_my) * r1_CKAPPA, r12_mx + (r12_l - r12_mx) * r1_CKAPPA, r12_u, r12_mx, r12_u)['cubic-to'](r12_mx + (r12_r - r12_mx) * r1_CKAPPA, r12_u, r12_r, r12_my + (r12_u - r12_my) * r1_CKAPPA, r12_r, r12_my)['cubic-to'](r12_r, r12_my + (r12_d - r12_my) * r1_CKAPPA, r12_mx + (r12_r - r12_mx) * r1_CKAPPA, r12_d, r12_mx, r12_d);
return r12_s['points']; return r12_s['points'];
}; };
r1_ORing = function _r1_t5(r13_u, r13_d, r13_l, r13_r, r13_smooth) { r1_ORing = function _r1_t5(r13_u, r13_d, r13_l, r13_r, r13_smooth) {
@ -232,7 +234,7 @@
r13_myu = r13_u - r13_smooth; r13_myu = r13_u - r13_smooth;
r13_myd = r13_d + r13_smooth; r13_myd = r13_d + r13_smooth;
r13_mx = (r13_l + r13_r) / 2; r13_mx = (r13_l + r13_r) / 2;
r13_s = new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r13_mx, r13_d)['cubic-to'](r13_mx + (r13_l - r13_mx) * r1_BKAPPA, r13_d, r13_l, r13_myd + (r13_d - r13_myd) * r1_BKAPPA, r13_l, r13_myd)['line-to'](r13_l, r13_myu)['cubic-to'](r13_l, r13_myu + (r13_u - r13_myu) * r1_BKAPPA, r13_mx + (r13_l - r13_mx) * r1_BKAPPA, r13_u, r13_mx, r13_u)['cubic-to'](r13_mx + (r13_r - r13_mx) * r1_BKAPPA, r13_u, r13_r, r13_myu + (r13_u - r13_myu) * r1_BKAPPA, r13_r, r13_myu)['line-to'](r13_r, r13_myd)['cubic-to'](r13_r, r13_myd + (r13_d - r13_myd) * r1_BKAPPA, r13_mx + (r13_r - r13_mx) * r1_BKAPPA, r13_d, r13_mx, r13_d); r13_s = new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r13_mx, r13_d)['cubic-to'](r13_mx + (r13_l - r13_mx) * r1_CKAPPA, r13_d, r13_l, r13_myd + (r13_d - r13_myd) * r1_CKAPPA, r13_l, r13_myd)['line-to'](r13_l, r13_myu)['cubic-to'](r13_l, r13_myu + (r13_u - r13_myu) * r1_CKAPPA, r13_mx + (r13_l - r13_mx) * r1_CKAPPA, r13_u, r13_mx, r13_u)['cubic-to'](r13_mx + (r13_r - r13_mx) * r1_CKAPPA, r13_u, r13_r, r13_myu + (r13_u - r13_myu) * r1_CKAPPA, r13_r, r13_myu)['line-to'](r13_r, r13_myd)['cubic-to'](r13_r, r13_myd + (r13_d - r13_myd) * r1_CKAPPA, r13_mx + (r13_r - r13_mx) * r1_CKAPPA, r13_d, r13_mx, r13_d);
return r13_s['points']; return r13_s['points'];
}; };
r1_leftwardTopSerif = function _r1_t6(r14_x, r14_y, r14_length) { r1_leftwardTopSerif = function _r1_t6(r14_x, r14_y, r14_length) {
@ -252,8 +254,10 @@
return new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r17_x - r1_HALFSTROKE, r17_y)['heads-to'](r1_RIGHTWARD)['set-width'](r1_STROKE, 0)['line-to'](r17_x + r17_length + r1_globalTransform['yx'] * r1_STROKE, r17_y)['to-outline'](); return new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r17_x - r1_HALFSTROKE, r17_y)['heads-to'](r1_RIGHTWARD)['set-width'](r1_STROKE, 0)['line-to'](r17_x + r17_length + r1_globalTransform['yx'] * r1_STROKE, r17_y)['to-outline']();
}; };
r1_sStrand = function _r1_t10(r18_leftlimit, r18_rightlimit, r18__expansion, r18__roundp) { r1_sStrand = function _r1_t10(r18_leftlimit, r18_rightlimit, r18__expansion, r18__roundp) {
var r18_leftlimit, r18_rightlimit, r18__expansion, r18__roundp, r18_expansion, r18_roundsize, r18_roundleft, r18_roundright, r18_sxleft, r18_sxright, r18_syleft, r18_syright, _r18_t0, _r18_t1; var r18_leftlimit, r18_rightlimit, r18__expansion, r18__roundp, r18_expansion, r18_yItalicCorrection, r18_xItalicCorrection, r18_roundsize, r18_roundleft, r18_roundright, r18_sxleft, r18_sxright, r18_syleft, r18_syright, _r18_t0, _r18_t1;
r18_expansion = r18__expansion || 0.25; r18_expansion = r18__expansion || 0.25;
r18_yItalicCorrection = r1_globalTransform['yx'] * 0.98;
r18_xItalicCorrection = 1 / Math['sqrt'](1 - r18_yItalicCorrection * r18_yItalicCorrection);
_r18_t0 = r1_SMOOTHA * (r18__roundp || 0.4); _r18_t0 = r1_SMOOTHA * (r18__roundp || 0.4);
if (r18_leftlimit < r18_rightlimit) if (r18_leftlimit < r18_rightlimit)
_r18_t1 = -1; _r18_t1 = -1;
@ -266,7 +270,7 @@
r18_sxright = r1_WIDTH - r18_sxleft; r18_sxright = r1_WIDTH - r18_sxleft;
r18_syleft = r18_roundleft + (r18_roundright - r18_roundleft) * (0.5 - r18_expansion); r18_syleft = r18_roundleft + (r18_roundright - r18_roundleft) * (0.5 - r18_expansion);
r18_syright = r18_roundleft + (r18_roundright - r18_roundleft) * (0.5 + r18_expansion); r18_syright = r18_roundleft + (r18_roundright - r18_roundleft) * (0.5 + r18_expansion);
return new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r1_SB + r1_HALFSTROKE, r18_leftlimit)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['curve-to'](r1_SB + r1_HALFSTROKE, r18_roundleft, r18_sxleft, r18_syleft)['line-to'](r18_sxright, r18_syright)['curve-to'](r1_RIGHTSB - r1_HALFSTROKE, r18_roundright, r1_RIGHTSB - r1_HALFSTROKE, r18_rightlimit)['to-outline'](); return new r0_Stroke()['set-transform'](r1_globalTransform)['start-from'](r1_SB + r1_HALFSTROKE * r18_xItalicCorrection, r18_leftlimit - r1_HALFSTROKE * r18_yItalicCorrection)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['curve-to'](r1_SB + r1_HALFSTROKE * r18_xItalicCorrection, r18_roundleft, r18_sxleft, r18_syleft)['line-to'](r18_sxright, r18_syright)['curve-to'](r1_RIGHTSB - r1_HALFSTROKE * r18_xItalicCorrection, r18_roundright, r1_RIGHTSB - r1_HALFSTROKE * r18_xItalicCorrection, r18_rightlimit + r1_HALFSTROKE * r18_yItalicCorrection)['to-outline']();
}; };
r1_nBowl = function _r1_t11(r19_left, r19_middle, r19_right, r19_fine) { r1_nBowl = function _r1_t11(r19_left, r19_middle, r19_right, r19_fine) {
var r19_left, r19_middle, r19_right, r19_fine, r19_bandLeft, r19_bandRight; var r19_left, r19_middle, r19_right, r19_fine, r19_bandLeft, r19_bandRight;
@ -966,7 +970,7 @@
r74_xn$setwidth$9Jrj(r1_WIDTH); r74_xn$setwidth$9Jrj(r1_WIDTH);
r74_xn$assignunicode$7Hrq('J'); r74_xn$assignunicode$7Hrq('J');
r74_include(r1_glyphs['J.straight'], true); r74_include(r1_glyphs['J.straight'], true);
r74_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_RIGHTSB - r1_HALFSTROKE, r1_CAP, r1_LONGSERIF)); r74_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_RIGHTSB - r1_HALFSTROKE, r1_CAP, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('N', function _r1_t41() { r1_xn$createglyph$7Hrq('N', function _r1_t41() {
@ -1085,7 +1089,7 @@
r84_xn$setanchor$9Jrj = _r84_t0['set-anchor']['bind'](_r84_t0); r84_xn$setanchor$9Jrj = _r84_t0['set-anchor']['bind'](_r84_t0);
_r84_t0['gizmo'] = r1_globalTransform; _r84_t0['gizmo'] = r1_globalTransform;
_r84_t0['set-width'](r1_WIDTH); _r84_t0['set-width'](r1_WIDTH);
r84_xn$putshapes$9Jrj(r84_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE - r1_LONGSERIF, r1_XH)['heads-to'](r1_RIGHTWARD)['set-width'](0, r1_STROKE)['line-to'](r1_MIDDLE + r1_LONGSERIF, r1_XH)['heads-to'](r1_RIGHTWARD)['to-outline']()); r84_xn$putshapes$9Jrj(r84_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE - r1_LONGJUT, r1_XH)['heads-to'](r1_RIGHTWARD)['set-width'](0, r1_STROKE)['line-to'](r1_MIDDLE + r1_LONGJUT, r1_XH)['heads-to'](r1_RIGHTWARD)['to-outline']());
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('o', function _r1_t46() { r1_xn$createglyph$7Hrq('o', function _r1_t46() {
@ -1394,7 +1398,7 @@
r110_hookx = r110_center + (r1_WIDTH - r1_SB * 2) * 0.82 - r1_OXHOOK + r1_TAILADJX * r1_globalTransform['yx']; r110_hookx = r110_center + (r1_WIDTH - r1_SB * 2) * 0.82 - r1_OXHOOK + r1_TAILADJX * r1_globalTransform['yx'];
r110_turn = r110_center + (r110_hookx - r110_center) * (0.5 + r1_globalTransform['yx'] * 0.5); r110_turn = r110_center + (r110_hookx - r110_center) * (0.5 + r1_globalTransform['yx'] * 0.5);
r110_xn$putshapes$9Jrj(r110_xn$createstroke$7Hrq()['start-from'](r110_center, r1_CAP)['set-width'](r1_STROKE, 0)['heads-to'](r1_DOWNWARD)['line-to'](r110_center, r1_SMOOTHB)['arc-vh-to'](r110_turn, r1_O)['curve-to'](r110_turn + (r1_KAPPA_HOOK + r1_TAILADJKAPPA * r1_globalTransform['yx'] + 0.1) * (r110_hookx - r110_turn), r1_O, r110_hookx, r1_HOOK - r1_TAILADJY * r1_globalTransform['yx'])['to-outline']()); r110_xn$putshapes$9Jrj(r110_xn$createstroke$7Hrq()['start-from'](r110_center, r1_CAP)['set-width'](r1_STROKE, 0)['heads-to'](r1_DOWNWARD)['line-to'](r110_center, r1_SMOOTHB)['arc-vh-to'](r110_turn, r1_O)['curve-to'](r110_turn + (r1_KAPPA_HOOK + r1_TAILADJKAPPA * r1_globalTransform['yx'] + 0.1) * (r110_hookx - r110_turn), r1_O, r110_hookx, r1_HOOK - r1_TAILADJY * r1_globalTransform['yx'])['to-outline']());
r110_xn$putshapes$9Jrj(r110_xn$createstroke$7Hrq()['start-from'](r110_center + r1_HALFSTROKE - r1_LONGSERIF + r1_TBALANCE2, r1_XH)['heads-to'](r1_RIGHTWARD)['set-width'](0, r1_STROKE)['line-to'](r110_center + r1_HALFSTROKE + r1_LONGSERIF + r1_TBALANCE2, r1_XH)['heads-to'](r1_RIGHTWARD)['to-outline']()); r110_xn$putshapes$9Jrj(r110_xn$createstroke$7Hrq()['start-from'](r110_center + r1_HALFSTROKE - r1_LONGJUT + r1_TBALANCE2, r1_XH)['heads-to'](r1_RIGHTWARD)['set-width'](0, r1_STROKE)['line-to'](r110_center + r1_HALFSTROKE + r1_LONGJUT + r1_TBALANCE2, r1_XH)['heads-to'](r1_RIGHTWARD)['to-outline']());
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('a.upright', function _r1_t59() { r1_xn$createglyph$7Hrq('a.upright', function _r1_t59() {
@ -1601,7 +1605,7 @@
_r128_t0['gizmo'] = r1_globalTransform; _r128_t0['gizmo'] = r1_globalTransform;
_r128_t0['set-width'](r1_WIDTH); _r128_t0['set-width'](r1_WIDTH);
r128_include(r1_glyphs['dotlessi.straight'], true); r128_include(r1_glyphs['dotlessi.straight'], true);
r128_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE, r1_XH, r1_LONGSERIF)); r128_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE, r1_XH, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('dotlessi.zshaped', function _r1_t68() { r1_xn$createglyph$7Hrq('dotlessi.zshaped', function _r1_t68() {
@ -1621,7 +1625,7 @@
_r130_t0['gizmo'] = r1_globalTransform; _r130_t0['gizmo'] = r1_globalTransform;
_r130_t0['set-width'](r1_WIDTH); _r130_t0['set-width'](r1_WIDTH);
r130_include(r1_glyphs['dotlessi.hooky'], true); r130_include(r1_glyphs['dotlessi.hooky'], true);
r130_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r130_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('dotlessi.serifed', function _r1_t69() { r1_xn$createglyph$7Hrq('dotlessi.serifed', function _r1_t69() {
@ -1643,9 +1647,9 @@
r132_include(r1_eMarks); r132_include(r1_eMarks);
r132_balance = r1_ILBALANCE; r132_balance = r1_ILBALANCE;
r132_xn$putshapes$9Jrj(r132_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE + r132_balance, 0)['heads-to'](r1_UPWARD)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['line-to'](r1_MIDDLE + r132_balance, r1_XH)['heads-to'](r1_UPWARD)['to-outline']()); r132_xn$putshapes$9Jrj(r132_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE + r132_balance, 0)['heads-to'](r1_UPWARD)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['line-to'](r1_MIDDLE + r132_balance, r1_XH)['heads-to'](r1_UPWARD)['to-outline']());
r132_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r132_balance, r1_XH, r1_LONGSERIF - r132_balance)); r132_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r132_balance, r1_XH, r1_LONGJUT - r132_balance));
r132_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r132_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
r132_xn$putshapes$9Jrj(r1_leftwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r132_xn$putshapes$9Jrj(r1_leftwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('dotlessi', function _r1_t70() { r1_xn$createglyph$7Hrq('dotlessi', function _r1_t70() {
@ -1774,7 +1778,7 @@
_r142_t0['gizmo'] = r1_globalTransform; _r142_t0['gizmo'] = r1_globalTransform;
_r142_t0['set-width'](r1_WIDTH); _r142_t0['set-width'](r1_WIDTH);
r142_include(r1_glyphs['dotlessj.straight']); r142_include(r1_glyphs['dotlessj.straight']);
r142_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r1_JBALANCE, r1_XH, r1_LONGSERIF)); r142_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r1_JBALANCE, r1_XH, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('dotlessj', function _r1_t75() { r1_xn$createglyph$7Hrq('dotlessj', function _r1_t75() {
@ -1857,7 +1861,7 @@
_r150_t0['gizmo'] = r1_globalTransform; _r150_t0['gizmo'] = r1_globalTransform;
_r150_t0['set-width'](r1_WIDTH); _r150_t0['set-width'](r1_WIDTH);
r150_include(r1_glyphs['l.straight']); r150_include(r1_glyphs['l.straight']);
r150_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE, r1_CAP, r1_LONGSERIF)); r150_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE, r1_CAP, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('l.zshaped', function _r1_t79() { r1_xn$createglyph$7Hrq('l.zshaped', function _r1_t79() {
@ -1877,7 +1881,7 @@
_r152_t0['gizmo'] = r1_globalTransform; _r152_t0['gizmo'] = r1_globalTransform;
_r152_t0['set-width'](r1_WIDTH); _r152_t0['set-width'](r1_WIDTH);
r152_include(r1_glyphs['l.hooky']); r152_include(r1_glyphs['l.hooky']);
r152_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r152_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('l.serifed', function _r1_t80() { r1_xn$createglyph$7Hrq('l.serifed', function _r1_t80() {
@ -1898,9 +1902,9 @@
_r154_t0['set-width'](r1_WIDTH); _r154_t0['set-width'](r1_WIDTH);
r154_balance = r1_ILBALANCE; r154_balance = r1_ILBALANCE;
r154_xn$putshapes$9Jrj(r154_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE + r154_balance, 0)['heads-to'](r1_UPWARD)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['line-to'](r1_MIDDLE + r154_balance, r1_CAP)['heads-to'](r1_UPWARD)['to-outline']()); r154_xn$putshapes$9Jrj(r154_xn$createstroke$7Hrq()['start-from'](r1_MIDDLE + r154_balance, 0)['heads-to'](r1_UPWARD)['set-width'](r1_HALFSTROKE, r1_HALFSTROKE)['line-to'](r1_MIDDLE + r154_balance, r1_CAP)['heads-to'](r1_UPWARD)['to-outline']());
r154_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r154_balance, r1_CAP, r1_LONGSERIF - r154_balance)); r154_xn$putshapes$9Jrj(r1_leftwardTopSerif(r1_MIDDLE + r154_balance, r1_CAP, r1_LONGJUT - r154_balance));
r154_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r154_xn$putshapes$9Jrj(r1_rightwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
r154_xn$putshapes$9Jrj(r1_leftwardBottomSerif(r1_MIDDLE, 0, r1_LONGSERIF)); r154_xn$putshapes$9Jrj(r1_leftwardBottomSerif(r1_MIDDLE, 0, r1_LONGJUT));
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('l', function _r1_t81() { r1_xn$createglyph$7Hrq('l', function _r1_t81() {
@ -2446,12 +2450,60 @@
_r194_t0['set-width'](r1_WIDTH); _r194_t0['set-width'](r1_WIDTH);
r194_xn$setwidth$9Jrj(r1_WIDTH); r194_xn$setwidth$9Jrj(r1_WIDTH);
r194_xn$assignunicode$7Hrq('2'); r194_xn$assignunicode$7Hrq('2');
r194_include(r1_capitalMarks); r194_xn$putshapes$9Jrj(r1_twoHookUpper(r1_CAP, r1_SMOOTHB, r1_HOOK));
r194_xn$putshapes$9Jrj(r1_twoHookUpper(r1_CAP, r1_SMOOTHA, r1_HOOK)); r194_xn$putshapes$9Jrj(r1_sStrand(r1_STROKE, r1_CAP - r1_SMOOTHB));
r194_xn$putshapes$9Jrj(r1_sStrand(r1_STROKE, r1_CAP - r1_SMOOTHA));
r194_xn$putshapes$9Jrj(r194_xn$createstroke$7Hrq()['start-from'](r1_SB, 0)['set-width'](r1_STROKE, 0)['heads-to'](r1_RIGHTWARD)['line-to'](r1_RIGHTSB, 0)['heads-to'](r1_RIGHTWARD)['to-outline']()); r194_xn$putshapes$9Jrj(r194_xn$createstroke$7Hrq()['start-from'](r1_SB, 0)['set-width'](r1_STROKE, 0)['heads-to'](r1_RIGHTWARD)['line-to'](r1_RIGHTSB, 0)['heads-to'](r1_RIGHTWARD)['to-outline']());
return void 0; return void 0;
}); });
r1_xn$createglyph$7Hrq('three', function _r1_t101() {
var r196_xn$setwidth$9Jrj, r196_xn$assignunicode$7Hrq, r196_xn$startfrom$1aao, r196_xn$lineto$5sIl, r196_xn$curveto$1aao, r196_xn$cubicto$1aao, r196_xn$putshapes$9Jrj, r196_xn$reverselast$3qIs, r196_include, r196_xn$createstroke$7Hrq, r196_xn$setanchor$9Jrj, r196_threeRadius, _r196_t0;
_r196_t0 = this;
r196_xn$setwidth$9Jrj = _r196_t0['set-width']['bind'](_r196_t0);
r196_xn$assignunicode$7Hrq = _r196_t0['assign-unicode']['bind'](_r196_t0);
r196_xn$startfrom$1aao = _r196_t0['start-from']['bind'](_r196_t0);
r196_xn$lineto$5sIl = _r196_t0['line-to']['bind'](_r196_t0);
r196_xn$curveto$1aao = _r196_t0['curve-to']['bind'](_r196_t0);
r196_xn$cubicto$1aao = _r196_t0['cubic-to']['bind'](_r196_t0);
r196_xn$putshapes$9Jrj = _r196_t0['put-shapes']['bind'](_r196_t0);
r196_xn$reverselast$3qIs = _r196_t0['reverse-last']['bind'](_r196_t0);
r196_include = _r196_t0['include']['bind'](_r196_t0);
r196_xn$createstroke$7Hrq = _r196_t0['create-stroke']['bind'](_r196_t0);
r196_xn$setanchor$9Jrj = _r196_t0['set-anchor']['bind'](_r196_t0);
_r196_t0['gizmo'] = r1_globalTransform;
_r196_t0['set-width'](r1_WIDTH);
r196_xn$setwidth$9Jrj(r1_WIDTH);
r196_xn$assignunicode$7Hrq('3');
r196_threeRadius = r1_CAPMIDDLE + r1_HALFSTROKE - r1_SMOOTH;
r196_xn$putshapes$9Jrj(r1_twoHookUpper(r1_CAP, r1_SMOOTHB, r1_HOOK));
r196_xn$putshapes$9Jrj(r1_sHookLower(0, r1_SMOOTHA, r1_HOOK));
r196_xn$putshapes$9Jrj(r196_xn$createstroke$7Hrq()['start-from'](r1_RIGHTSB, r1_CAP - r1_SMOOTHB)['set-width'](0, r1_STROKE)['arc-vh-to'](r1_RIGHTSB - r196_threeRadius, r1_CAPMIDDLE - r1_HALFSTROKE)['heads-to'](r1_LEFTWARD)['to-outline']());
r196_xn$putshapes$9Jrj(r196_xn$createstroke$7Hrq()['start-from'](r1_RIGHTSB, r1_SMOOTHA)['set-width'](r1_STROKE, 0)['arc-vh-to'](r1_RIGHTSB - r196_threeRadius, r1_CAPMIDDLE + r1_HALFSTROKE)['heads-to'](r1_LEFTWARD)['to-outline']());
return void 0;
});
r1_xn$createglyph$7Hrq('five', function _r1_t102() {
var r198_xn$setwidth$9Jrj, r198_xn$assignunicode$7Hrq, r198_xn$startfrom$1aao, r198_xn$lineto$5sIl, r198_xn$curveto$1aao, r198_xn$cubicto$1aao, r198_xn$putshapes$9Jrj, r198_xn$reverselast$3qIs, r198_include, r198_xn$createstroke$7Hrq, r198_xn$setanchor$9Jrj, _r198_t0;
_r198_t0 = this;
r198_xn$setwidth$9Jrj = _r198_t0['set-width']['bind'](_r198_t0);
r198_xn$assignunicode$7Hrq = _r198_t0['assign-unicode']['bind'](_r198_t0);
r198_xn$startfrom$1aao = _r198_t0['start-from']['bind'](_r198_t0);
r198_xn$lineto$5sIl = _r198_t0['line-to']['bind'](_r198_t0);
r198_xn$curveto$1aao = _r198_t0['curve-to']['bind'](_r198_t0);
r198_xn$cubicto$1aao = _r198_t0['cubic-to']['bind'](_r198_t0);
r198_xn$putshapes$9Jrj = _r198_t0['put-shapes']['bind'](_r198_t0);
r198_xn$reverselast$3qIs = _r198_t0['reverse-last']['bind'](_r198_t0);
r198_include = _r198_t0['include']['bind'](_r198_t0);
r198_xn$createstroke$7Hrq = _r198_t0['create-stroke']['bind'](_r198_t0);
r198_xn$setanchor$9Jrj = _r198_t0['set-anchor']['bind'](_r198_t0);
_r198_t0['gizmo'] = r1_globalTransform;
_r198_t0['set-width'](r1_WIDTH);
r198_xn$setwidth$9Jrj(r1_WIDTH);
r198_xn$assignunicode$7Hrq('5');
r198_xn$putshapes$9Jrj(r1_sHookLower(0, (r1_CAP * r1_FIVEBARPOS + r1_STROKE) / 2, r1_HOOK));
r198_xn$putshapes$9Jrj(r198_xn$createstroke$7Hrq()['start-from'](r1_RIGHTSB, (r1_CAP * r1_FIVEBARPOS + r1_STROKE) / 2)['set-width'](r1_STROKE, 0)['arc-vh-to'](r1_MIDDLE, r1_CAP * r1_FIVEBARPOS + r1_STROKE)['line-to'](r1_SB + r1_TBALANCE / 2, r1_CAP * r1_FIVEBARPOS + r1_STROKE)['heads-to'](r1_LEFTWARD)['to-outline']());
r198_xn$putshapes$9Jrj(r198_xn$createstroke$7Hrq()['start-from'](r1_SB + r1_TBALANCE / 2, r1_CAP)['set-width'](0, r1_STROKE)['heads-to'](r1_RIGHTWARD)['line-to'](r1_RIGHTSB - r1_TBALANCE / 2, r1_CAP)['heads-to'](r1_RIGHTWARD)['to-outline']());
r198_xn$putshapes$9Jrj(r198_xn$createstroke$7Hrq()['start-from'](r1_SB + r1_TBALANCE / 2, r1_CAP * r1_FIVEBARPOS + r1_STROKE)['set-width'](0, r1_STROKE)['heads-to'](r1_UPWARD)['line-to'](r1_SB + r1_TBALANCE / 2, r1_CAP)['heads-to'](r1_UPWARD)['to-outline']());
return void 0;
});
return r1_font; return r1_font;
}; };
} }

View file

@ -7,10 +7,10 @@ define [Ring u d l r] : begin {
local s : new Stroke local s : new Stroke
:.set-transform globalTransform :.set-transform globalTransform
:.start-from mx d :.start-from mx d
:.cubic-to [mx + [l - mx] * BKAPPA] d l [my + [d - my] * BKAPPA] l my :.cubic-to [mx + [l - mx] * CKAPPA] d l [my + [d - my] * CKAPPA] l my
:.cubic-to l [my + [u - my] * BKAPPA] [mx + [l - mx] * BKAPPA] u mx u :.cubic-to l [my + [u - my] * CKAPPA] [mx + [l - mx] * CKAPPA] u mx u
:.cubic-to [mx + [r - mx] * BKAPPA] u r [my + [u - my] * BKAPPA] r my :.cubic-to [mx + [r - mx] * CKAPPA] u r [my + [u - my] * CKAPPA] r my
:.cubic-to r [my + [d - my] * BKAPPA] [mx + [r - mx] * BKAPPA] d mx d :.cubic-to r [my + [d - my] * CKAPPA] [mx + [r - mx] * CKAPPA] d mx d
return s.points return s.points
} }
define [ORing u d l r smooth] : begin { define [ORing u d l r smooth] : begin {
@ -20,12 +20,12 @@ define [ORing u d l r smooth] : begin {
local s : new Stroke local s : new Stroke
:.set-transform globalTransform :.set-transform globalTransform
:.start-from mx d :.start-from mx d
:.cubic-to [mx + [l - mx] * BKAPPA] d l [myd + [d - myd] * BKAPPA] l myd :.cubic-to [mx + [l - mx] * CKAPPA] d l [myd + [d - myd] * CKAPPA] l myd
:.line-to l myu :.line-to l myu
:.cubic-to l [myu + [u - myu] * BKAPPA] [mx + [l - mx] * BKAPPA] u mx u :.cubic-to l [myu + [u - myu] * CKAPPA] [mx + [l - mx] * CKAPPA] u mx u
:.cubic-to [mx + [r - mx] * BKAPPA] u r [myu + [u - myu] * BKAPPA] r myu :.cubic-to [mx + [r - mx] * CKAPPA] u r [myu + [u - myu] * CKAPPA] r myu
:.line-to r myd :.line-to r myd
:.cubic-to r [myd + [d - myd] * BKAPPA] [mx + [r - mx] * BKAPPA] d mx d :.cubic-to r [myd + [d - myd] * CKAPPA] [mx + [r - mx] * CKAPPA] d mx d
return s.points return s.points
} }
define [leftwardTopSerif x y length] : begin { define [leftwardTopSerif x y length] : begin {
@ -67,6 +67,9 @@ define [rightwardBottomSerif x y length] : begin {
define [sStrand leftlimit rightlimit _expansion _roundp] : begin { define [sStrand leftlimit rightlimit _expansion _roundp] : begin {
local expansion : _expansion || 0.25 local expansion : _expansion || 0.25
local yItalicCorrection [globalTransform.yx * 0.98]
local xItalicCorrection : 1 / [Math.sqrt [1 - yItalicCorrection * yItalicCorrection]]
local roundsize : [SMOOTHA * [_roundp || 0.4]] * [if [leftlimit < rightlimit] [-1] 1] local roundsize : [SMOOTHA * [_roundp || 0.4]] * [if [leftlimit < rightlimit] [-1] 1]
local roundleft [leftlimit - roundsize] local roundleft [leftlimit - roundsize]
local roundright [rightlimit + roundsize] local roundright [rightlimit + roundsize]
@ -77,11 +80,11 @@ define [sStrand leftlimit rightlimit _expansion _roundp] : begin {
return : new Stroke return : new Stroke
:.set-transform globalTransform :.set-transform globalTransform
:.start-from [SB + HALFSTROKE] leftlimit :.start-from [SB + HALFSTROKE * xItalicCorrection] [leftlimit - HALFSTROKE * yItalicCorrection]
:.set-width HALFSTROKE HALFSTROKE :.set-width HALFSTROKE HALFSTROKE
:.curve-to [SB + HALFSTROKE] roundleft sxleft syleft :.curve-to [SB + HALFSTROKE * xItalicCorrection] roundleft sxleft syleft
:.line-to sxright syright :.line-to sxright syright
:.curve-to [RIGHTSB - HALFSTROKE] roundright [RIGHTSB - HALFSTROKE] rightlimit :.curve-to [RIGHTSB - HALFSTROKE * xItalicCorrection] roundright [RIGHTSB - HALFSTROKE * xItalicCorrection] [rightlimit + HALFSTROKE * yItalicCorrection]
:.to-outline :.to-outline
} }

View file

@ -590,7 +590,7 @@ create-glyph 'J.serifed' : glyph-construction {
set-width WIDTH; assign-unicode 'J' set-width WIDTH; assign-unicode 'J'
include glyphs.'J.straight' true include glyphs.'J.straight' true
put-shapes : leftwardTopSerif [RIGHTSB - HALFSTROKE] CAP LONGSERIF put-shapes : leftwardTopSerif [RIGHTSB - HALFSTROKE] CAP LONGJUT
} }
### M N ### M N

View file

@ -3,10 +3,10 @@
### components ### components
create-glyph 'fbar' : glyph-construction { create-glyph 'fbar' : glyph-construction {
put-shapes : create-stroke put-shapes : create-stroke
:.start-from [MIDDLE - LONGSERIF] XH :.start-from [MIDDLE - LONGJUT] XH
:.heads-to RIGHTWARD :.heads-to RIGHTWARD
:.set-width 0 STROKE :.set-width 0 STROKE
:.line-to [MIDDLE + LONGSERIF] XH :.line-to [MIDDLE + LONGJUT] XH
:.heads-to RIGHTWARD :.heads-to RIGHTWARD
:.to-outline :.to-outline
} }
@ -262,10 +262,10 @@ create-glyph 't' : glyph-construction {
:.to-outline :.to-outline
put-shapes : create-stroke put-shapes : create-stroke
:.start-from [center + HALFSTROKE - LONGSERIF + TBALANCE2] XH :.start-from [center + HALFSTROKE - LONGJUT + TBALANCE2] XH
:.heads-to RIGHTWARD :.heads-to RIGHTWARD
:.set-width 0 STROKE :.set-width 0 STROKE
:.line-to [center + HALFSTROKE + LONGSERIF + TBALANCE2] XH :.line-to [center + HALFSTROKE + LONGJUT + TBALANCE2] XH
:.heads-to RIGHTWARD :.heads-to RIGHTWARD
:.to-outline :.to-outline
} }
@ -434,11 +434,11 @@ create-glyph 'dotlessi.straight' : glyph-construction {
} }
create-glyph 'dotlessi.hooky' : glyph-construction { create-glyph 'dotlessi.hooky' : glyph-construction {
include glyphs.'dotlessi.straight' true include glyphs.'dotlessi.straight' true
put-shapes : leftwardTopSerif MIDDLE XH LONGSERIF put-shapes : leftwardTopSerif MIDDLE XH LONGJUT
} }
create-glyph 'dotlessi.zshaped' : glyph-construction { create-glyph 'dotlessi.zshaped' : glyph-construction {
include glyphs.'dotlessi.hooky' true include glyphs.'dotlessi.hooky' true
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : rightwardBottomSerif MIDDLE 0 LONGJUT
} }
create-glyph 'dotlessi.serifed' : glyph-construction { create-glyph 'dotlessi.serifed' : glyph-construction {
include eMarks include eMarks
@ -451,9 +451,9 @@ create-glyph 'dotlessi.serifed' : glyph-construction {
:.line-to [MIDDLE + balance] XH :.line-to [MIDDLE + balance] XH
:.heads-to UPWARD :.heads-to UPWARD
:.to-outline :.to-outline
put-shapes : leftwardTopSerif [MIDDLE + balance] XH [LONGSERIF - balance] put-shapes : leftwardTopSerif [MIDDLE + balance] XH [LONGJUT - balance]
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : rightwardBottomSerif MIDDLE 0 LONGJUT
put-shapes : leftwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : leftwardBottomSerif MIDDLE 0 LONGJUT
} }
create-glyph 'dotlessi' : glyph-construction { create-glyph 'dotlessi' : glyph-construction {
set-width WIDTH set-width WIDTH
@ -493,7 +493,7 @@ create-glyph 'dotlessj.straight' : glyph-construction {
} }
create-glyph 'dotlessj.serifed' : glyph-construction { create-glyph 'dotlessj.serifed' : glyph-construction {
include glyphs.'dotlessj.straight' include glyphs.'dotlessj.straight'
put-shapes : leftwardTopSerif [MIDDLE + JBALANCE] XH LONGSERIF put-shapes : leftwardTopSerif [MIDDLE + JBALANCE] XH LONGJUT
} }
create-glyph 'dotlessj' : glyph-construction { create-glyph 'dotlessj' : glyph-construction {
@ -521,11 +521,11 @@ create-glyph 'l.straight' : glyph-construction {
} }
create-glyph 'l.hooky' : glyph-construction { create-glyph 'l.hooky' : glyph-construction {
include glyphs.'l.straight' include glyphs.'l.straight'
put-shapes : leftwardTopSerif MIDDLE CAP LONGSERIF put-shapes : leftwardTopSerif MIDDLE CAP LONGJUT
} }
create-glyph 'l.zshaped' : glyph-construction { create-glyph 'l.zshaped' : glyph-construction {
include glyphs.'l.hooky' include glyphs.'l.hooky'
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : rightwardBottomSerif MIDDLE 0 LONGJUT
} }
create-glyph 'l.serifed' : glyph-construction { create-glyph 'l.serifed' : glyph-construction {
local balance ILBALANCE local balance ILBALANCE
@ -536,9 +536,9 @@ create-glyph 'l.serifed' : glyph-construction {
:.line-to [MIDDLE + balance] CAP :.line-to [MIDDLE + balance] CAP
:.heads-to UPWARD :.heads-to UPWARD
:.to-outline :.to-outline
put-shapes : leftwardTopSerif [MIDDLE + balance] CAP [LONGSERIF - balance] put-shapes : leftwardTopSerif [MIDDLE + balance] CAP [LONGJUT - balance]
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : rightwardBottomSerif MIDDLE 0 LONGJUT
put-shapes : leftwardBottomSerif MIDDLE 0 LONGSERIF put-shapes : leftwardBottomSerif MIDDLE 0 LONGJUT
} }
create-glyph 'l' : glyph-construction { create-glyph 'l' : glyph-construction {
set-width WIDTH set-width WIDTH

View file

@ -50,10 +50,9 @@ create-glyph 'one' : glyph-construction {
create-glyph 'two' : glyph-construction { create-glyph 'two' : glyph-construction {
set-width WIDTH set-width WIDTH
assign-unicode '2' assign-unicode '2'
include capitalMarks
put-shapes : twoHookUpper CAP SMOOTHA HOOK put-shapes : twoHookUpper CAP SMOOTHB HOOK
put-shapes : sStrand STROKE [CAP - SMOOTHA] put-shapes : sStrand STROKE [CAP - SMOOTHB]
put-shapes : create-stroke put-shapes : create-stroke
:.start-from SB 0 :.start-from SB 0
@ -62,4 +61,56 @@ create-glyph 'two' : glyph-construction {
:.line-to RIGHTSB 0 :.line-to RIGHTSB 0
:.heads-to RIGHTWARD :.heads-to RIGHTWARD
:.to-outline :.to-outline
}
create-glyph 'three' : glyph-construction {
set-width WIDTH
assign-unicode '3'
local threeRadius [CAPMIDDLE + HALFSTROKE - SMOOTH]
put-shapes : twoHookUpper CAP SMOOTHB HOOK
put-shapes : sHookLower 0 SMOOTHA HOOK
put-shapes : create-stroke
:.start-from RIGHTSB [CAP - SMOOTHB]
:.set-width 0 STROKE
:.arc-vh-to [RIGHTSB - threeRadius] [CAPMIDDLE - HALFSTROKE]
:.heads-to LEFTWARD
:.to-outline
put-shapes : create-stroke
:.start-from RIGHTSB SMOOTHA
:.set-width STROKE 0
:.arc-vh-to [RIGHTSB - threeRadius] [CAPMIDDLE + HALFSTROKE]
:.heads-to LEFTWARD
:.to-outline
}
create-glyph 'five' : glyph-construction {
set-width WIDTH
assign-unicode '5'
put-shapes : sHookLower 0 [[CAP * FIVEBARPOS + STROKE] / 2] HOOK
put-shapes : create-stroke
:.start-from RIGHTSB [[CAP * FIVEBARPOS + STROKE] / 2]
:.set-width STROKE 0
:.arc-vh-to MIDDLE [CAP * FIVEBARPOS + STROKE]
:.line-to [SB + TBALANCE / 2] [CAP * FIVEBARPOS + STROKE]
:.heads-to LEFTWARD
:.to-outline
put-shapes : create-stroke
:.start-from [SB + TBALANCE / 2] CAP
:.set-width 0 STROKE
:.heads-to RIGHTWARD
:.line-to [RIGHTSB - TBALANCE / 2] CAP
:.heads-to RIGHTWARD
:.to-outline
put-shapes : create-stroke
:.start-from [SB + TBALANCE / 2] [CAP * FIVEBARPOS + STROKE]
:.set-width 0 STROKE
:.heads-to UPWARD
:.line-to [SB + TBALANCE / 2] CAP
:.heads-to UPWARD
:.to-outline
} }

View file

@ -1,17 +1,19 @@
SUPPORT_FILES = support/glyph.js support/stroke.js parameters.js SUPPORT_FILES = support/glyph.js support/stroke.js parameters.js
GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/latin-capital.patel glyphs/latin-lower.patel glyphs/numbers.patel GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/latin-capital.patel glyphs/latin-lower.patel glyphs/numbers.patel
OBJDIR = build
FILES = $(SUPPORT_FILES) buildglyphs.js FILES = $(SUPPORT_FILES) buildglyphs.js
fonts : update codex-regular.ttf codex-bold.ttf codex-italic.ttf codex-bolditalic.ttf fonts : update $(OBJDIR)/codexHW-regular.ttf $(OBJDIR)/codexHW-bold.ttf $(OBJDIR)/codexHW-italic.ttf $(OBJDIR)/codexHW-bolditalic.ttf
codex-regular.ttf : $(FILES) $(OBJDIR)/codexHW-regular.ttf : $(FILES) $(OBJDIR)
node generate regular $@ node generate regular $@
codex-bold.ttf : $(FILES) $(OBJDIR)/codexHW-bold.ttf : $(FILES) $(OBJDIR)
node generate bold $@ node generate bold $@
codex-italic.ttf : $(FILES) $(OBJDIR)/codexHW-italic.ttf : $(FILES) $(OBJDIR)
node generate italic $@ node generate italic $@
codex-bolditalic.ttf : $(FILES) $(OBJDIR)/codexHW-bolditalic.ttf : $(FILES) $(OBJDIR)
node generate bolditalic $@ node generate bolditalic $@
update : $(FILES) update : $(FILES)
@ -23,4 +25,7 @@ buildglyphs.js : buildglyphs-intro.patel $(GLYPH_SEGMENTS) buildglyphs-final.pat
cat $^ | patel-c --strict -o $@ cat $^ | patel-c --strict -o $@
support/glyph.js : support/glyph.patel support/glyph.js : support/glyph.patel
support/stroke.js : support/stroke.patel support/stroke.js : support/stroke.patel
parameters.js : parameters.patel parameters.js : parameters.patel
$(OBJDIR) :
@- mkdir $@

View file

@ -6,7 +6,11 @@
'dotsize': 125, 'dotsize': 125,
'sb': 60, 'sb': 60,
'cap': 771, 'cap': 771,
'descender': -178,
'xheight': 560, 'xheight': 560,
'barpos': 0.45,
'gbarpos': 0.37,
'fivebarpos': 0.48,
'hook': 145, 'hook': 145,
'ahook': 135, 'ahook': 135,
'shook': 100, 'shook': 100,
@ -16,12 +20,9 @@
'smoothadjust': 100, 'smoothadjust': 100,
'o': -8, 'o': -8,
'oxhook': 0, 'oxhook': 0,
'descender': -178,
'kappa': 0.515, 'kappa': 0.515,
'italicangle': 0, 'italicangle': 0,
'barpos': 0.45, 'longjut': 175,
'gbarpos': 0.37,
'longserif': 175,
'accent': 175, 'accent': 175,
'tbalance': 70, 'tbalance': 70,
'tbalance2': 30, 'tbalance2': 30,
@ -49,6 +50,8 @@
r0_bold['rbalance'] = 18; r0_bold['rbalance'] = 18;
r0_bold['style'] = 'Bold'; r0_bold['style'] = 'Bold';
r0_bold['weight'] = 600; r0_bold['weight'] = 600;
r0_bold['bkappa'] = 0.5;
r0_bold['ckappa'] = 0.528;
r0_italic = Object['create'](r0_regular); r0_italic = Object['create'](r0_regular);
r0_italic['italicangle'] = 10; r0_italic['italicangle'] = 10;
r0_italic['tbalance'] = 70; r0_italic['tbalance'] = 70;

View file

@ -4,22 +4,26 @@ define regular (
.dotsize 125 .dotsize 125
.sb 60 .sb 60
.cap 771 .cap 771
.descender [-178]
.xheight 560 .xheight 560
.barpos 0.45
.gbarpos 0.37
.fivebarpos 0.48
.hook 145 .hook 145
.ahook 135 .ahook 135
.shook 100 .shook 100
.rhook 75 .rhook 75
.smooth 192 .smooth 192
.smallsmooth 242 .smallsmooth 242
.smoothadjust 100 .smoothadjust 100
.o [-8] .o [-8]
.oxhook 0 .oxhook 0
.descender [-178]
.kappa 0.515 .kappa 0.515
.italicangle 0 .italicangle 0
.barpos 0.45 .longjut 175
.gbarpos 0.37
.longserif 175
.accent 175 .accent 175
.tbalance 70 .tbalance 70
.tbalance2 30 .tbalance2 30
@ -49,6 +53,8 @@ bold.tbalance = 60
bold.rbalance = 18 bold.rbalance = 18
bold.style = 'Bold' bold.style = 'Bold'
bold.weight = 600 bold.weight = 600
bold.bkappa = 0.5
bold.ckappa = 0.528
define italic : Object.create regular define italic : Object.create regular
italic.italicangle = 10 italic.italicangle = 10

View file

@ -170,7 +170,7 @@
}; };
}; };
r0_Stroke['prototype']['to-outline'] = function _r0_t17(r18_d1, r18_d2) { r0_Stroke['prototype']['to-outline'] = function _r0_t17(r18_d1, r18_d2) {
var r18_d1, r18_d2, r18_d1s, r18_d2s, r18_pdxs, r18_pdys, r18_shapes, r18_subSegments, r18_p0, r18_j, r18_p1, r18_p2, r18_seg, r18_normalpt, r18_p3, r18_f1, r18_f2, r18_fpdx, r18_fpdy, r18_left, r18_right, r18_curve, r18_sample, r18_t, r18_tn, r18_lthis, r18_rthis, r18_lnext, r18_rnext, r18_lnthis1, r18_rnthis1, r18_lnnext1, r18_rnnext1, r18_lnthis2, r18_rnthis2, r18_lnnext2, r18_rnnext2, r18_lnthis3, r18_rnthis3, r18_lnnext3, r18_rnnext3, r18_dlthis, r18_drthis, r18_dlnext, r18_drnext, r18_il, r18_ir, r18_last, r18_shape, r18_k, r18_still, _r18_t0, _r18_t1, _r18_t2, _r18_t3, _r18_t4, _r18_t5, _r18_t6, _r18_t7, _r18_t8, _r18_t9, _r18_t10, _r18_t11, _r18_t12, _r18_t13, _r18_t14, _r18_t15, _r18_t16, _r18_t17, _r18_t18, _r18_t19, _r18_t20, _r18_t21, _r18_t22, _r18_t23, _r18_t24, _r18_t25, _r18_t26, _r18_t27, _r18_t28, _r18_t29, _r18_t30, _r18_t31, _r18_t32, _r18_t33, _r18_t34, _r18_t35, _r18_t36, _r18_t37, _r18_t38, _r18_t39, _r18_t40, _r18_t41, _r18_t42, _r18_t43, _r18_t44, _r18_t45, _r18_t46, _r18_t47, _r18_t48, _r18_t49, _r18_t50, _r18_t51, _r18_t52, _r18_t53, _r18_t54, _r18_t55, _r18_t56, _r18_t57, _r18_t58, _r18_t59, _r18_t60, _r18_t61, _r18_t62; var r18_d1, r18_d2, r18_d1s, r18_d2s, r18_pdxs, r18_pdys, r18_shapes, r18_subSegments, r18_p0, r18_j, r18_p1, r18_p2, r18_seg, r18_normalpt, r18_p3, r18_f1, r18_f2, r18_fpdx, r18_fpdy, r18_left, r18_right, r18_curve, r18_sample, r18_t, r18_tn, r18_lthis, r18_rthis, r18_lnext, r18_rnext, r18_lnthis1, r18_rnthis1, r18_lnnext1, r18_rnnext1, r18_lnthis2, r18_rnthis2, r18_lnnext2, r18_rnnext2, r18_lnthis3, r18_rnthis3, r18_lnnext3, r18_rnnext3, r18_dlthis, r18_drthis, r18_dlnext, r18_drnext, r18_il, r18_ir, r18_last, r18_shape, r18_still, r18_k, _r18_t0, _r18_t1, _r18_t2, _r18_t3, _r18_t4, _r18_t5, _r18_t6, _r18_t7, _r18_t8, _r18_t9, _r18_t10, _r18_t11, _r18_t12, _r18_t13, _r18_t14, _r18_t15, _r18_t16, _r18_t17, _r18_t18, _r18_t19, _r18_t20, _r18_t21, _r18_t22, _r18_t23, _r18_t24, _r18_t25, _r18_t26, _r18_t27, _r18_t28, _r18_t29, _r18_t30, _r18_t31, _r18_t32, _r18_t33, _r18_t34, _r18_t35, _r18_t36, _r18_t37, _r18_t38, _r18_t39, _r18_t40, _r18_t41, _r18_t42, _r18_t43, _r18_t44, _r18_t45, _r18_t46, _r18_t47, _r18_t48, _r18_t49, _r18_t50, _r18_t51, _r18_t52, _r18_t53, _r18_t54, _r18_t55, _r18_t56, _r18_t57, _r18_t58, _r18_t59, _r18_t60, _r18_t61;
_r18_t5 = this; _r18_t5 = this;
if (_r18_t5['points'][0]['d1'] >= 0) if (_r18_t5['points'][0]['d1'] >= 0)
_r18_t6 = _r18_t5['points'][0]['d1']; _r18_t6 = _r18_t5['points'][0]['d1'];
@ -385,35 +385,26 @@
}); });
} }
} }
_r18_t55 = r18_left;
_r18_t56 = _r18_t55['push'];
r18_last = r0_computeOffsetPoint(r18_curve, r18_j + 1, r18_j, r18_f1, r18_fpdx, r18_fpdy);
_r18_t57 = {
'x': r18_last['x'],
'y': r18_last['y'],
'onCurve': true
};
_r18_t56['call'](_r18_t55, _r18_t57);
_r18_t58 = r18_right;
_r18_t59 = _r18_t58['push'];
r18_last = r0_computeOffsetPoint(r18_curve, r18_j + 1, r18_j, r18_f2, r18_fpdx, r18_fpdy);
_r18_t60 = {
'x': r18_last['x'],
'y': r18_last['y'],
'onCurve': true
};
_r18_t59['call'](_r18_t58, _r18_t60);
r18_shapes['push'](r18_left['concat'](r18_right['reverse']())['map'](function _r18_t61(r21_p) {
var r21_p;
return {
'x': r21_p['x'],
'y': r21_p['y'],
'onCurve': r21_p['onCurve']
};
}));
r18_left = [];
r18_right = [];
} }
_r18_t55 = r18_left;
_r18_t56 = _r18_t55['push'];
r18_last = r0_computeOffsetPoint(r18_curve, r18_j + 1, r18_j, r18_f1, r18_fpdx, r18_fpdy);
_r18_t57 = {
'x': r18_last['x'],
'y': r18_last['y'],
'onCurve': true
};
_r18_t56['call'](_r18_t55, _r18_t57);
_r18_t58 = r18_right;
_r18_t59 = _r18_t58['push'];
r18_last = r0_computeOffsetPoint(r18_curve, r18_j + 1, r18_j, r18_f2, r18_fpdx, r18_fpdy);
_r18_t60 = {
'x': r18_last['x'],
'y': r18_last['y'],
'onCurve': true
};
_r18_t59['call'](_r18_t58, _r18_t60);
r18_shapes['push'](r18_left['concat'](r18_right['reverse']()));
_r18_t2 = r18_shapes; _r18_t2 = r18_shapes;
_r18_t3 = _r18_t2['length']; _r18_t3 = _r18_t2['length'];
_r18_t4 = 0; _r18_t4 = 0;
@ -436,11 +427,11 @@
r18_j = r18_k - 1; r18_j = r18_k - 1;
} }
} }
return r18_shapes['map'](function _r18_t62(r23_shape) { return r18_shapes['map'](function _r18_t61(r22_shape) {
var r23_shape, _r23_t0; var r22_shape, _r22_t0;
return r23_shape['filter'](function _r23_t0(r24_x) { return r22_shape['filter'](function _r22_t0(r23_x) {
var r24_x; var r23_x;
return r24_x && !r24_x['removable']; return r23_x && !r23_x['removable'];
}); });
}); });
}; };

View file

@ -202,18 +202,17 @@ define [Stroke.prototype.to-outline d1 d2] : begin {
right.push (.x rthis.x .y rthis.y .onCurve true) right.push (.x rthis.x .y rthis.y .onCurve true)
}] }]
} }
left.push [begin [local last [computeOffsetPoint curve [j + 1] j f1 fpdx fpdy]] (.x last.x .y last.y .onCurve true)]
right.push [begin [local last [computeOffsetPoint curve [j + 1] j f2 fpdx fpdy]] (.x last.x .y last.y .onCurve true)]
shapes.push : left.concat [right.reverse] :.map [[p] -> (.x p.x .y p.y .onCurve p.onCurve)]
set left ()
set right ()
} }
left.push [begin [local last [computeOffsetPoint curve [j + 1] j f1 fpdx fpdy]] (.x last.x .y last.y .onCurve true)]
right.push [begin [local last [computeOffsetPoint curve [j + 1] j f2 fpdx fpdy]] (.x last.x .y last.y .onCurve true)]
shapes.push : left.concat [right.reverse]
# reduce linear oncurve points # reduce linear oncurve points
foreach shape [items-of shapes] : for [local j 0] [j < shape.length - 1] [inc j] : begin { foreach shape [items-of shapes] : for [local j 0] [j < shape.length - 1] [inc j] : begin {
local p0 shape`j local p0 shape`j
set still true local still true
for [local k [j + 1]] [still && k < shape.length - 1] [inc k] : begin { for [local k [j + 1]] [still && k < shape.length - 1] [inc k] : begin {
local p1 shape`k local p1 shape`k
local p2 shape`[k + 1] local p2 shape`[k + 1]