From 791b2e4491b39d1dca24c2cd1fac4c93aa798554 Mon Sep 17 00:00:00 2001 From: be5invis Date: Tue, 15 Mar 2016 17:54:27 +0800 Subject: [PATCH] consolidate with ptl0.30.0 constants --- buildglyphs.ptl | 2 +- glyphs/autobuilds.ptl | 17 ++++++++++------- package.json | 2 +- support/glyph.ptl | 13 ++++++++----- support/spiroexpand.ptl | 13 ++++++++----- support/spirokit.ptl | 3 ++- 6 files changed, 30 insertions(+), 20 deletions(-) diff --git a/buildglyphs.ptl b/buildglyphs.ptl index 0e54a7d..5df44e9 100644 --- a/buildglyphs.ptl +++ b/buildglyphs.ptl @@ -395,7 +395,7 @@ export as build : define [buildFont para recursive recursiveCodes] : begin if (pickHash && [not pickHash.(name)]) : return nothing if para.verbose : console.log name - define glyphObject [new Glyph name] + local glyphObject [new Glyph name] glyphList.push glyphObject glyphs.(name) = glyphObject glyphObject.set-width WIDTH diff --git a/glyphs/autobuilds.ptl b/glyphs/autobuilds.ptl index 5b11dc2..e903b95 100644 --- a/glyphs/autobuilds.ptl +++ b/glyphs/autobuilds.ptl @@ -128,8 +128,8 @@ define customDecompositions : object let : begin suggestGC define [isAboveMark mark] : mark && mark.anchors && mark.anchors.above && mark.anchors.above.type === MARK - define iotaBelowToLF : function [p] : if (p === glyphs.iotaBelow) glyphs.iotaLF p - define ogonekBelowToTR : function [p] : if (p === glyphs.ogonekBelow) glyphs.ogonekTR p + define [iotaBelowToLF p j parts] : if (p === glyphs.iotaBelow) : set parts.(j) glyphs.iotaLF + define [ogonekBelowToTR p j parts] : if (p === glyphs.ogonekBelow) : set parts.(j) glyphs.ogonekTR define [subParts parts] : begin local hasMarkAbove false foreach p [items-of parts] : if [isAboveMark p] : set hasMarkAbove true @@ -139,8 +139,8 @@ let : begin if (parts.0 === glyphs.j && hasMarkAbove) : parts.0 = glyphs.dotlessj # replace below marks with trailing marks - if parts.0.anchors.lf : set parts : parts.map iotaBelowToLF - if parts.0.anchors.trailing : set parts : parts.map ogonekBelowToTR + if parts.0.anchors.lf : parts.forEach iotaBelowToLF + if parts.0.anchors.trailing : parts.forEach ogonekBelowToTR # composite greek overmarks for [local j 0] (j < parts.length) [inc j] : piecewise @@ -162,7 +162,8 @@ let : begin set parts.(j) null; set parts.(j + 1) glyphs.dasiaperispomeni return parts - define [pad s n] : begin + define [pad _s n] : begin + local s _s while (s.length < n) : s = '0' + s return s local nComposed 0 @@ -233,7 +234,8 @@ let : begin suggestGC -define [suggestName name] : begin +define [suggestName _name] : begin + local name _name if glyphs.(name) : begin local j 2 while glyphs.(name + j) : inc j @@ -816,7 +818,8 @@ symbol-block 'CJK Double Width Characters' if [not recursive] : begin if [not para.cjk] : begin set font.glyf : font.glyf.filter [lambda [g] : g.advanceWidth <= WIDTH] - set glyphList font.glyf + set glyphList.length font.glyf.length + for [local j 0] (j < font.glyf.length) [inc j] : set glyphList.(j) font.glyf.(j) set font.features.cv {.} foreach [name : items-of : Object.keys glyphs] : begin diff --git a/package.json b/package.json index 2b145f6..9008730 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.8.2", "main": "./generate.js", "dependencies": { - "patel": ">=0.29.0", + "patel": ">=0.30.0", "node-sfnt": ">=0.0.20", "bezier-js": "*", "yargs": "*", diff --git a/support/glyph.ptl b/support/glyph.ptl index 41131b7..c120c70 100644 --- a/support/glyph.ptl +++ b/support/glyph.ptl @@ -6,11 +6,14 @@ import './transform' as : Transform && [object [transformPoint tp] [untransform import './anchor' as Anchor define-macro xytransform : syntax-rules - `[xytransform @tfm @x @y] : let [t : env.newt] `[begin \\ - set @t @x - set @x : @x * @tfm.xx + @y * @tfm.yx + @tfm.x - set @y : @t * @tfm.xy + @y * @tfm.yy + @tfm.y - ] + `[xytransform @tfm @x @y] : begin + set [env.declarations.get [formOf x]].isParameter 0 + set [env.declarations.get [formOf y]].isParameter 0 + let [t : env.newt] `[begin \\ + set @t @x + set @x : @x * @tfm.xx + @y * @tfm.yx + @tfm.x + set @y : @t * @tfm.xy + @y * @tfm.yy + @tfm.y + ] define [mix a b p] : a + (b - a) * p define [ratio l r m] : if [l === r] 0 ((m - l) / (r - l)) diff --git a/support/spiroexpand.ptl b/support/spiroexpand.ptl index 14039ca..3f0a32e 100644 --- a/support/spiroexpand.ptl +++ b/support/spiroexpand.ptl @@ -5,11 +5,14 @@ define [fallback] : for [local j 0] (j < arguments.length) [inc j] : if (argumen define [linreg x0 y0 x1 y1 x] : y0 + (x - x0) * (y1 - y0) / (x1 - x0) define-macro xytransform : syntax-rules - `[xytransform @tfm @x @y] : let [t : env.newt] `[begin \\ - set @t @x - set @x : @x * @tfm.xx + @y * @tfm.yx + @tfm.x - set @y : @t * @tfm.xy + @y * @tfm.yy + @tfm.y - ] + `[xytransform @tfm @x @y] : begin + set [env.declarations.get [formOf x]].isParameter 0 + set [env.declarations.get [formOf y]].isParameter 0 + let [t : env.newt] `[begin \\ + set @t @x + set @x : @x * @tfm.xx + @y * @tfm.yx + @tfm.x + set @y : @t * @tfm.xy + @y * @tfm.yy + @tfm.y + ] define [normalY angle] : Math.sin angle define [normalX angle vex] : [Math.cos angle] * vex diff --git a/support/spirokit.ptl b/support/spirokit.ptl index c1f69ba..a419d4b 100644 --- a/support/spirokit.ptl +++ b/support/spirokit.ptl @@ -121,9 +121,10 @@ export : define [SetupBuilders args] : begin (p <@ Array) : set a : a.concat [flatten p] true : a.push p return a - define [prepareSpiroKnots knots s] : begin + define [prepareSpiroKnots _knots s] : begin local closed false local lastafs {} + local knots _knots while (knots.0 && knots.0 <@ Function) : begin knots.0.call s set knots : knots.slice 1