diff --git a/font-src/gen/empty-font.js b/font-src/gen/empty-font.js index a7eea981a..57a8cc2b5 100644 --- a/font-src/gen/empty-font.js +++ b/font-src/gen/empty-font.js @@ -91,25 +91,16 @@ module.exports = function () { ascii: true } }, - name: { - fontFamily: "node-sfnt", - fontSubFamily: "regular", - fullName: "node-sfnt", - postScriptName: "node-sfnt", - uniqueSubFamily: "node-sfnt blank font", - version: "Version 1.0" - }, post: { version: 2, isFixedPitch: false, italicAngle: 0, - maxMemType1: 1, + underlinePosition: -50, + underlineThickness: 50, + minMemType42: 0, maxMemType42: 0, minMemType1: 0, - minMemType42: 0, - postoints: 65411, - underlinePosition: -50, - underlineThickness: 50 + maxMemType1: 0 }, maxp: { version: 1.0, diff --git a/font-src/glyphs/common-shapes.ptl b/font-src/glyphs/common-shapes.ptl index 76b877999..f0e8aac77 100644 --- a/font-src/glyphs/common-shapes.ptl +++ b/font-src/glyphs/common-shapes.ptl @@ -24,6 +24,8 @@ glyph-block CommonShapes : begin local {.x mx1 .y my1} : globalTransform.apply {.x mx .y my} include : Translate (mx1 - mx) (my1 - my) + define [SquareAt x y r] : Rect (y + r) (y - r) (x - r) (x + r) + define [Ring u d l r transformShiftOnly] : new-glyph : glyph-proc local my ((u + d) / 2) local mx ((l + r) / 2) @@ -654,4 +656,4 @@ glyph-block CommonShapes : begin set currentGlyph.markAnchors {.} set currentGlyph.markBnchors {.} - glyph-block-export Rect Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape + glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape diff --git a/font-src/glyphs/letter-latin.ptl b/font-src/glyphs/letter-latin.ptl index 2dbe3bbe5..1fd5aabf8 100644 --- a/font-src/glyphs/letter-latin.ptl +++ b/font-src/glyphs/letter-latin.ptl @@ -3829,16 +3829,16 @@ glyph-block Letter-Latin-Upper-U : begin glyph-block-import Overmarks glyph-block-export UShape - define [UShape df top bottom stroke oper] : glyph-proc + define [UShape] : params [df top bottom [stroke Stroke] [sma SmoothA] [smb SmoothB] [offset 0] oper] : glyph-proc include : dispiro widths.lhs stroke - flat df.leftSB top [heading Downward] - curl df.leftSB (bottom + SmoothB * [Math.sqrt df.div]) + flat (df.leftSB + offset) top [heading Downward] + curl (df.leftSB + offset) (bottom + smb + offset) arcvh - g4 (df.middle + CorrectionOMidS) (bottom + O) + g4 (df.middle + CorrectionOMidX * stroke) (bottom + O + offset) archv - flat df.rightSB (bottom + SmoothA * [Math.sqrt df.div]) - curl df.rightSB top [heading Upward] + flat (df.rightSB - offset) (bottom + sma + offset) + curl (df.rightSB - offset) top [heading Upward] if [not oper] : include : AIVSerifs top create-glyph 'U' 'U' : glyph-proc diff --git a/font-src/glyphs/symbol-math.ptl b/font-src/glyphs/symbol-math.ptl index 05ee959f5..03b31dd08 100644 --- a/font-src/glyphs/symbol-math.ptl +++ b/font-src/glyphs/symbol-math.ptl @@ -240,15 +240,18 @@ glyph-block Symbol-Math-Arith : begin HBar left right symbolMid [fallback sw OperatorStroke] VBar (Middle + [fallback s 0]) plusTop plusBot [fallback sw OperatorStroke] - create-glyph 'plus' '+' : glyph-proc # plus - include : PlusShape SB RightSB + create-glyph 'plus' '+' : PlusShape SB RightSB + create-glyph 'minus' 0x2212 : HBar SB RightSB symbolMid OperatorStroke - create-glyph 'innerPlus' : glyph-proc # plus - include : PlusShape SB RightSB 0 GeometryStroke + create-glyph 'innerPlus' : PlusShape SB RightSB 0 GeometryStroke + create-glyph 'innerMinus' : HBar SB RightSB symbolMid GeometryStroke - create-glyph 'minus' 0x2212 : glyph-proc # minus - include : HBar SB RightSB symbolMid OperatorStroke - create-derived 'minusDot' 0x2238 : DotAt Middle plusTop DotRadius + create-glyph 'minusDot' 0x2238 : composite-proc [refer-glyph 'minus'] + DotAt Middle plusTop DotRadius + + create-glyph 'hermetianConjugateMatrixPlus' 0x22B9 : difference + PlusShape SB RightSB + SquareAt Middle symbolMid DotRadius create-glyph 'minusColon' 0x2239 : glyph-proc # colon-equal include : refer-glyph "baselineDot" @@ -263,8 +266,6 @@ glyph-block Symbol-Math-Arith : begin include : HBar (SB * sbSquash) (RightSB - DotSize) symbolMid OperatorStroke - create-glyph 'innerMinus' : glyph-proc # innerMinus - include : HBar SB RightSB symbolMid GeometryStroke create-glyph 'plusminus' 0xB1 : glyph-proc # plusminus include : HBarBottom SB RightSB 0 OperatorStroke @@ -579,41 +580,60 @@ glyph-block Symbol-Math-VAndCup : begin turned 'doubleWedge' 0x2A53 'doubleVee' Middle symbolMid create-glyph 'cup' 0x222A : glyph-proc # cup - include : UShape [DivFrame 1] operTop operBot OperatorStroke true + include : UShape [DivFrame 1] operTop operBot + oper -- true + stroke -- OperatorStroke - create-derived 'cupDot' 0x228D : glyph-proc - include : DotAt Middle (operBot + Smooth) [Math.min DotRadius ((RightSB - SB - OperatorStroke * HVContrast * 2) * (1 / 3))] + create-glyph 'cupDot' 0x228D : glyph-proc + include [refer-glyph 'cup'] AS_BASE ALSO_METRICS + include : DotAt Middle (operBot + Smooth) [Math.min DotRadius ((RightSB - SB - OperatorStroke * HVContrast * 2) * (1 / 3))] - create-derived 'cupArrowLeft' 0x228C : glyph-proc - local mockUpscale : OperatorStroke / [adviceBlackness 6] - local arrowLength : mockUpscale * [Math.min (RightSB - SB - OperatorStroke * HVContrast * 2) (Width * 0.6)] - include : new-glyph : glyph-proc - include : ArrowShape - Middle + arrowLength / 2 - operBot + Smooth - Middle - arrowLength / 2 - operBot + Smooth - arrowLength * 0.5 - include : Upright - include : Translate (-Middle) (-operBot - Smooth) - include : Scale (1 / mockUpscale) (1 / mockUpscale) - include : Translate Middle (operBot + Smooth) - include : Italify + create-glyph 'cupArrowLeft' 0x228C : glyph-proc + include [refer-glyph 'cup'] AS_BASE ALSO_METRICS + local mockUpscale : OperatorStroke / [adviceBlackness 6] + local arrowLength : mockUpscale * [Math.min (RightSB - SB - OperatorStroke * HVContrast * 2) (Width * 0.6)] + include : new-glyph : glyph-proc + include : ArrowShape + Middle + arrowLength / 2 + operBot + Smooth + Middle - arrowLength / 2 + operBot + Smooth + arrowLength * 0.5 + include : Upright + include : Translate (-Middle) (-operBot - Smooth) + include : Scale (1 / mockUpscale) (1 / mockUpscale) + include : Translate Middle (operBot + Smooth) + include : Italify - create-derived 'cupPlus' 0x228E : glyph-proc - local sw : adviceBlackness 6 - local size : Math.min (RightSB - SB - OperatorStroke * HVContrast * (2 + 0.5 * sw / OperatorStroke)) ((RightSB - SB) * 0.8) - include : dispiro - widths.center sw - corner (Middle - size / 2) (operBot + Smooth) - corner (Middle + size / 2) (operBot + Smooth) - include : dispiro - widths.center sw - corner Middle (operBot + Smooth - size / 2) - corner Middle (operBot + Smooth + size / 2) + create-glyph 'cupPlus' 0x228E : glyph-proc + include [refer-glyph 'cup'] AS_BASE ALSO_METRICS + local sw : adviceBlackness 6 + local size : Math.min (RightSB - SB - OperatorStroke * HVContrast * (2 + 0.5 * sw / OperatorStroke)) ((RightSB - SB) * 0.8) + include : dispiro + widths.center sw + corner (Middle - size / 2) (operBot + Smooth) + corner (Middle + size / 2) (operBot + Smooth) + include : dispiro + widths.center sw + corner Middle (operBot + Smooth - size / 2) + corner Middle (operBot + Smooth + size / 2) + + create-glyph 'doubleCup' 0x22D3 : glyph-proc + local sw : adviceBlackness 6.5 + local gap : Math.max (Width / 8) (sw / 2) + include : UShape [DivFrame 1] operTop operBot + oper -- true + stroke -- sw + include : UShape [DivFrame 1] operTop operBot + oper -- true + stroke -- sw + offset -- (sw + gap) + sma -- [SmoothAOf (Smooth - sw - gap) Width] + smb -- [SmoothBOf (Smooth - sw - gap) Width] turned 'cap' 0x2229 'cup' Middle symbolMid turned 'capDot' 0x2A40 'cupDot' Middle symbolMid + turned 'doubleCap' 0x22D2 'doubleCup' Middle symbolMid create-glyph 'squareCap' 0x2293 : glyph-proc # squareCap include : PiShape operTop operBot (shrinkrate -- 0) (_fine -- OperatorStroke) (div -- 1) (noSerif -- true) @@ -745,6 +765,10 @@ glyph-block Symbol-Math-Relation : begin create-glyph 'equal' '=' : glyph-proc include : EqualShape SB RightSB + create-glyph 'equalParallel' 0x22D5 : composite-proc + refer-glyph 'equal' + refer-glyph 'parallel.naturalSlope' + create-glyph 'oneDotApproxEq' 0x2250 : glyph-proc include : refer-glyph 'equal' include : DotAt Middle (symbolMid + EqualHalfSpace * 2.5) DotRadius @@ -941,12 +965,20 @@ glyph-block Symbol-Math-Relation : begin create-glyph 'less' '<' : glyph-proc include : LessShape (symbolMid + dH) (symbolMid - dH) SB RightSB + create-glyph 'lessDot' 0x22D6 : composite-proc + LessShape (symbolMid + dH) (symbolMid - dH) SB RightSB [adviceBlackness 4] + DotAt (RightSB - DotRadius) symbolMid (DotRadius * [adviceBlackness 4] / Stroke) + create-glyph 'normalSubsetOf' 0x22B2 : glyph-proc include : NormalSubsetShape (symbolMid + dH) (symbolMid - dH) SB RightSB create-glyph 'greater' '>' : glyph-proc include : GreaterShape (symbolMid + dH) (symbolMid - dH) SB RightSB + create-glyph 'greaterDot' 0x22D7 : composite-proc + GreaterShape (symbolMid + dH) (symbolMid - dH) SB RightSB [adviceBlackness 4] + DotAt (SB + DotRadius) symbolMid (DotRadius * [adviceBlackness 4] / Stroke) + create-glyph 'normalSupersetOf' 0x22B3 : glyph-proc include : NormalSupersetShape (symbolMid + dH) (symbolMid - dH) SB RightSB @@ -1164,15 +1196,15 @@ glyph-block Symbol-Math-Relation : begin include : HBar SB RightSB (symbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke include : HBar SB RightSB (symbolMid - sympShift / 2) OperatorStroke - define [SubsetShape top bot sw] : dispiro - widths.lhs [fallback sw OperatorStroke] - flat RightSB top [heading Leftward] - curl (SB + (top - bot) / 2) top + define [SubsetShape] : params [top bot [sw OperatorStroke] [offset 0]] : dispiro + widths.lhs sw + flat RightSB (top - offset) [heading Leftward] + curl (SB + offset + (top - bot) / 2 - offset) (top - offset) archv - g4 SB [mix top bot 0.5] + g4 (SB + offset) [mix top bot 0.5] arcvh - flat (SB + (top - bot) / 2) bot - curl RightSB bot [heading Rightward] + flat (SB + offset + (top - bot) / 2 - offset) (bot + offset) + curl RightSB (bot + offset) [heading Rightward] define [PrefixShape top bot sw] : union VBarLeft SB bot top [fallback sw OperatorStroke] @@ -1187,10 +1219,16 @@ glyph-block Symbol-Math-Relation : begin include : PrefixShape top bot sw include : FlipAround Middle [mix top bot 0.5] - create-glyph 'subst' 0x2282 : glyph-proc # subst - include : SubsetShape (symbolMid + dH) (symbolMid - dH) - create-glyph 'supst' 0x2283 : glyph-proc # supst - include : SupsetShape (symbolMid + dH) (symbolMid - dH) + create-glyph 'subst' 0x2282 : SubsetShape (symbolMid + dH) (symbolMid - dH) + create-glyph 'doubleSubst' 0x22D0 : glyph-proc + local sw : adviceBlackness 6.5 + local gap : Math.max (Width / 8) (sw / 2) + + include : SubsetShape (symbolMid + dH) (symbolMid - dH) (sw -- sw) + include : SubsetShape (symbolMid + dH) (symbolMid - dH) (sw -- sw) (offset -- gap + sw) + + turned 'supst' 0x2283 'subst' Middle symbolMid + turned 'doubleSupst' 0x22D1 'doubleSubst' Middle symbolMid create-glyph : glyph-proc # substBar include : SubsetShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) @@ -1314,7 +1352,11 @@ glyph-block Symbol-Math-Large-Operators : for-width-kinds WideWidth1 create-glyph [MangleName 'Cup'] [MangleUnicode 0x22C3] : glyph-proc # Cup set-width df.width - include : UShape df bgopTop bgopBot OperatorStroke true + include : UShape df bgopTop bgopBot + oper -- true + stroke -- OperatorStroke + sma -- [SmoothAOf (Smooth * [Math.sqrt df.div]) (df.width)] + smb -- [SmoothBOf (Smooth * [Math.sqrt df.div]) (df.width)] turned [MangleName 'Cap'] [MangleUnicode 0x22C2] [MangleName 'Cup'] df.middle symbolMid @@ -1501,7 +1543,9 @@ glyph-block Symbol-Math-APL : begin refer-glyph 'smallwhitecircle.NWID' ScaleAround Middle symbolMid 0.75 Realign Middle symbolMid Middle (operBot + Smooth) - UShape [DivFrame 1] operTop operBot [adviceBlackness 5] true + UShape [DivFrame 1] operTop operBot + oper -- true + stroke -- [adviceBlackness 5] FlipAround Middle symbolMid create-glyph 0x235E : composite-proc [refer-glyph 'enquad'] [aplBoxed : refer-glyph 'singleQuote'] create-glyph 0x235F : composite-proc [refer-glyph 'enquad'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'opAsterisk.low']] [refer-glyph 'mathO'] diff --git a/font-src/glyphs/symbol-punctuation.ptl b/font-src/glyphs/symbol-punctuation.ptl index 3c397803e..ba3e8e86d 100644 --- a/font-src/glyphs/symbol-punctuation.ptl +++ b/font-src/glyphs/symbol-punctuation.ptl @@ -1093,6 +1093,7 @@ glyph-block Symbol-Punctuation-Interpuncts : begin alias 'greekbullet' 0x387 'period.mid' alias 'bullet' 0x2022 'period.mid' alias 'hyphenpoint' 0x2027 'period.mid' + alias 'mathCDot' 0x22C5 'period.mid' create-glyph 'triangularBullet' 0x2023 : glyph-proc local radius : PeriodRadius * 1.5 diff --git a/font-src/meta/macros.ptl b/font-src/meta/macros.ptl index a9a5448cc..a510eb5ac 100644 --- a/font-src/meta/macros.ptl +++ b/font-src/meta/macros.ptl @@ -134,7 +134,8 @@ define-macro glyph-block-import : syntax-rules Common-Derivatives `[select-variant italic-variant refer-glyph query-glyph alias turned HDual hcombine VDual vcombine with-related-glyphs] - CommonShapes `[Rect Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape + CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt + CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar