diff --git a/changes/31.1.0.md b/changes/31.1.0.md index 9111e24b5..4aed13639 100644 --- a/changes/31.1.0.md +++ b/changes/31.1.0.md @@ -13,19 +13,8 @@ - MOON LANDER (`U+1CDF5`) (Proposed for Unicode 16; L2/21-235). - UP-POINTING FROG (`U+1CDFB`) (Proposed for Unicode 16; L2/21-235). - DOWN-POINTING FROG (`U+1CDFC`) (Proposed for Unicode 16; L2/21-235). - - MATHEMATICAL FRAKTUR CAPITAL A (`U+1D504`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL B (`U+1D505`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL E (`U+1D508`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL G (`U+1D50A`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL J (`U+1D50D`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL K (`U+1D50E`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL M (`U+1D510`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL N (`U+1D511`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL P (`U+1D513`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL V (`U+1D519`) (#444). - - MATHEMATICAL FRAKTUR CAPITAL W (`U+1D51A`) (#444). - - MATHEMATICAL FRAKTUR SMALL E (`U+1D522`) (#444). - - MATHEMATICAL FRAKTUR SMALL O (`U+1D52C`) (#444). + - MATHEMATICAL FRAKTUR CAPITAL A (`U+1D504`) .. MATHEMATICAL FRAKTUR SMALL Z (`U+1D537`) (#444). + - MATHEMATICAL BOLD FRAKTUR CAPITAL A (`U+1D56C`) .. MATHEMATICAL BOLD FRAKTUR SMALL Z (`U+1D59F`) (#444). * Add separate variant selectors for Cyrillic Capital En/Er (`VXAA`, `VXAB`). * Add variant selectors for Greek lower Beta/Gamma/Nu/Upsilon (`VXAC`, `VXAD`, `VXAE`, `VXAF`). * Optimize glyph for VERTICAL LINE WITH MIDDLE DOT (`U+2327`). diff --git a/packages/font-glyphs/src/auto-build/transformed.ptl b/packages/font-glyphs/src/auto-build/transformed.ptl index fd88242d4..606dc2dc8 100644 --- a/packages/font-glyphs/src/auto-build/transformed.ptl +++ b/packages/font-glyphs/src/auto-build/transformed.ptl @@ -834,6 +834,11 @@ glyph-block Autobuild-Transformed-Mathematical : begin CreateMathDerivatives groupName tfm gr base letters overrides CreateMathAliasableImpl groupName altGroupName tfm gr base letters overrides + define [CreateMathBoldFraktur base letters] : begin + local jobs {} + foreach j [range 0 letters.length] : jobs.push { (base + j) ("frak/" + letters.(j)) } + createMathDerivedSeriesImpl 'frakbf' tfBold jobs + # Math bold CreateMathDerivatives 'mathbf' tfBold null 0x1D400 UpperLatin CreateMathDerivatives 'mathbf' tfBold null 0x1D41A LowerLatin @@ -897,6 +902,10 @@ glyph-block Autobuild-Transformed-Mathematical : begin CreateMathDerivatives 'legacyComputingOutlined' tfBold null 0x1CCD6 UpperLatin null TfOutline CreateMathDerivatives 'legacyComputingOutlined' tfBold null 0x1CCF0 Digits null TfOutline + # Math fraktur + CreateMathBoldFraktur 0x1D56C UpperLatin + CreateMathBoldFraktur 0x1D586 LowerLatin + glyph-block Autobuild-Rhotic : begin glyph-block-import Mark-Shared-Metrics : markFine markstroke glyph-block-import CommonShapes diff --git a/packages/font-glyphs/src/common/shapes.ptl b/packages/font-glyphs/src/common/shapes.ptl index 59cc4dfc4..d3fe70507 100644 --- a/packages/font-glyphs/src/common/shapes.ptl +++ b/packages/font-glyphs/src/common/shapes.ptl @@ -424,14 +424,16 @@ glyph-block CommonShapes : begin define nHookSegments 12 define [HookShape toStraight toFinish isStart args] : begin - local [object y sw swTerminal isTail noSwash] args + local [object yRef sw swTerminal isTail noSwash overshoot] args - local atBottom : toStraight.y > y + local atBottom : toStraight.y > yRef local ltr : if isStart (toFinish.x < toStraight.x) (toFinish.x > toStraight.x) - local dtu : if isStart (y > toFinish.y) (y < toFinish.y) + local dtu : if isStart (yRef > toFinish.y) (yRef < toFinish.y) local doSwash : !noSwash && !isStart && atBottom && (para.isItalic || isTail) && [if (para.slopeAngle >= 0) ltr [not ltr]] local superness DesignParameters.superness + local y : yRef + [if dtu (-1) 1] * overshoot + # Adjust terminal's position if necessary toFinish.x = toFinish.x + OXHook * [if ltr (-1) 1] * [if isStart (-1) 1] if (doSwash) : begin @@ -512,7 +514,7 @@ glyph-block CommonShapes : begin return : HookShape before after false args define [hookProxy args] : begin - return : new CopyBackKnotProxy [g4 [new CMixCoord 0.5] args.y] args 2 + return : new CopyBackKnotProxy [g4 [new CMixCoord 0.5] args.yRef] args 2 glyph-block-export hookstart define flex-params [hookstart] : begin @@ -521,7 +523,8 @@ glyph-block CommonShapes : begin local-parameter : swTerminal -- sw local-parameter : isTail -- false local-parameter : noSwash -- false - local args : object y sw swTerminal isTail noSwash + local-parameter : o -- O + local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] return : WithKnotProxy [hookProxy args] : Interpolator hookStartBlender args glyph-block-export hookend @@ -531,7 +534,8 @@ glyph-block CommonShapes : begin local-parameter : swTerminal -- sw local-parameter : isTail -- false local-parameter : noSwash -- false - local args : object y sw swTerminal isTail noSwash + local-parameter : o -- O + local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] return : WithKnotProxy [hookProxy args] : Interpolator hookEndBlender args glyph-block-export arch diff --git a/packages/font-glyphs/src/letter-like/cursive.ptl b/packages/font-glyphs/src/letter-like/cursive.ptl index 3ee09a914..5eee797ce 100644 --- a/packages/font-glyphs/src/letter-like/cursive.ptl +++ b/packages/font-glyphs/src/letter-like/cursive.ptl @@ -62,7 +62,7 @@ glyph-block LetterLike-Cursive : begin ~~~ [arch.lhs [loop.y 1 0 O] (sw -- loop.sw) (swAfter -- dr.sw)] flat [dr.x 0.5 (-0.75)] [dr.y 1 0 (-ada)] [dr.lhs] curl [dr.x 0.5 (-0.75)] [dr.y 0 0 (+adb)] [dr.lhs] - ~~~ [hookend O (sw -- dr.sw) (swTerminal -- tip.sw) (isTail -- true)] + ~~~ [hookend 0 (sw -- dr.sw) (swTerminal -- tip.sw) (isTail -- true)] g2 [tip.x 1] (SHook + dr.sw * 0.5) [tip.lhs] create-glyph 'weierstrassP' 0x2118 : glyph-proc diff --git a/packages/font-glyphs/src/letter-like/fraktur.ptl b/packages/font-glyphs/src/letter-like/fraktur.ptl index 8be7bc85d..d9345177f 100644 --- a/packages/font-glyphs/src/letter-like/fraktur.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur.ptl @@ -4,13 +4,27 @@ export : define [apply] : begin define $$Capture$$ this run-glyph-module "./fraktur/common.mjs" - run-glyph-module "./fraktur/upper-a.mjs" + run-glyph-module "./fraktur/upper-au.mjs" run-glyph-module "./fraktur/upper-bvw.mjs" run-glyph-module "./fraktur/upper-ceg.mjs" - run-glyph-module "./fraktur/upper-hkr.mjs" + run-glyph-module "./fraktur/upper-doq.mjs" + run-glyph-module "./fraktur/upper-ft.mjs" + run-glyph-module "./fraktur/upper-hkry.mjs" run-glyph-module "./fraktur/upper-ij.mjs" + run-glyph-module "./fraktur/upper-l.mjs" run-glyph-module "./fraktur/upper-mnp.mjs" + run-glyph-module "./fraktur/upper-s.mjs" run-glyph-module "./fraktur/upper-z.mjs" - run-glyph-module "./fraktur/lower-e.mjs" - run-glyph-module "./fraktur/lower-o.mjs" + run-glyph-module "./fraktur/lower-agq.mjs" + run-glyph-module "./fraktur/lower-bopvw.mjs" + run-glyph-module "./fraktur/lower-ce.mjs" + run-glyph-module "./fraktur/lower-d.mjs" + run-glyph-module "./fraktur/lower-fkrt.mjs" + run-glyph-module "./fraktur/lower-hy.mjs" + run-glyph-module "./fraktur/lower-ijl.mjs" + run-glyph-module "./fraktur/lower-mnu.mjs" + run-glyph-module "./fraktur/lower-s.mjs" + run-glyph-module "./fraktur/lower-z.mjs" + + run-glyph-module "./fraktur/x.mjs" diff --git a/packages/font-glyphs/src/letter-like/fraktur/common.ptl b/packages/font-glyphs/src/letter-like/fraktur/common.ptl index 2d7335207..456b4d918 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/common.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/common.ptl @@ -17,43 +17,56 @@ glyph-block LetterLike-Fraktur-Common : begin glyph-block-export fraktur-stroke define [fraktur-stroke profile __knots] : begin local knots : {}.slice.call arguments 1 - return : new FrakturImpl profile knots + return : new FrakturShape profile knots + + class FrakturShapeImpl + public [new proxy] : begin + this.proxy = proxy + public [applyToGlyph glyph] : begin + glyph.includeGeometry this.proxy.geometry + return this.proxy + + class FrakturShape + public [new pen knots] : begin + this.pen = pen + this.knots = knots + public [applyToGlyph glyph] : begin + local profile : this.pen.getPenShape glyph.gizmo + local collector : new PenKnotCollector glyph.gizmo profile this.pen.fixed + local c : spiro-collect collector this.knots + + local proxy : new FrakturProxy glyph.gizmo profile collector.closed collector.knots + return : [new FrakturShapeImpl proxy].applyToGlyph glyph class FrakturProxy - public [new gizmo profile collector] : begin + public [new gizmo profile closed knots] : begin set this.gizmo gizmo - set this.knots collector.knots + set this.closed closed + set this.knots knots - set this.geometry : new SpiroPenGeometry - begin gizmo - begin profile - begin collector.closed - begin collector.knots + set this.geometry : new SpiroPenGeometry gizmo profile closed knots public [first i] this.knots.[fallback i 0] public [last i] this.knots.(this.knots.length - [fallback i 1]) - class FrakturImpl - public [new profile knots] : begin - this.profile = profile - this.knots = knots - public [applyToGlyph glyph] : begin - local defaultProfile : this.profile.getPenShape glyph.gizmo - local collector : new PenKnotCollector glyph.gizmo defaultProfile this.profile.fixed - local c : spiro-collect collector this.knots - - local proxy : new FrakturProxy glyph.gizmo defaultProfile collector - glyph.includeGeometry proxy.geometry - return proxy + public [withPen newPen] : begin + local newProfile : newPen.getPenShape this.gizmo + local newKnots {} + foreach k [items-of this.knots] : begin + local k1 : k.clone + if k1.profile : set k1.profile newProfile + newKnots.push k1 + local newProxy : new FrakturProxy this.gizmo newProfile this.closed newKnots + return : new FrakturShapeImpl newProxy # Directive to change the profile - glyph-block-export change-profile - define [change-profile newProfile] : function : begin - this.setProfile : newProfile.getPenShape this.gizmo + glyph-block-export change-pen + define [change-pen newPen] : function : begin + this.setProfile : newPen.getPenShape this.gizmo # A pen profile describes a virtual flat-tip pen. We use a 45-degree arrangement to # simplify the math. - class FrakturProfile + class FrakturPen public [new thick thin] : begin this.fixed = false # .thick is the half length of the flat tip, projected to the X/Y axis @@ -92,6 +105,18 @@ glyph-block LetterLike-Fraktur-Common : begin define frakThick : 1.0 * Stroke define frakFine : 1.0 * [AdviceStroke 4] # For decoration + glyph-block-export S + define S : new FrakturPen frakThick (0.875 * frakThin) + + glyph-block-export M + define M : new FrakturPen [AdviceStroke 3 para.diversityM] (0.875 * frakThin) + + glyph-block-export F + define F : new FrakturPen frakFine (0.875 * frakThin) + + glyph-block-export T + define T : new FrakturPen frakThin (0.875 * frakThin) + class MaskingProfile public [new dx dy] : begin this.fixed = true @@ -101,27 +126,20 @@ glyph-block LetterLike-Fraktur-Common : begin local tf : gizmo.applyOffsetXY this.dx this.dy list [new Vec2 0 0] [new Vec2 tf.x tf.y] - glyph-block-export S - define S : new FrakturProfile frakThick (0.875 * frakThin) - - glyph-block-export M - define M : new FrakturProfile [AdviceStroke 3 para.diversityM] (0.875 * frakThin) - - glyph-block-export F - define F : new FrakturProfile frakFine (0.875 * frakThin) - - glyph-block-export T - define T : new FrakturProfile frakThin (0.875 * frakThin) - glyph-block-export CutMaskLeft define CutMaskLeft : new MaskingProfile (-VERY-FAR) 0 + glyph-block-export CutMaskUp + define CutMaskUp : new MaskingProfile 0 VERY-FAR + + glyph-block-export CutMaskDown + define CutMaskDown : new MaskingProfile 0 (-VERY-FAR) + # Key metrics - glyph-block-export DecoSizeX DecoSizeY FHook Wave.DepthY Wave.DepthX LbFootRise + glyph-block-export DecoSizeX DecoSizeY FHook Wave.DepthY Wave.DepthX define DecoSizeX : 0.15 * (RightSB - SB) define DecoSizeY : 0.08 * (RightSB - SB) define FHook : 0.4 * SHook - 0.25 * S.thick - define LbFootRise : 0.375 * SHook + 0.375 * S.thick glyph-block-export SlopeA SlopeB define SlopeA : 0.875 * DecoSizeY / DecoSizeX @@ -134,11 +152,11 @@ glyph-block LetterLike-Fraktur-Common : begin export : define DepthX : 1 * DecoSizeX export : define LTDecoSize : 0.75 * DecoSizeX - export : define [h] : Interpolator hBlender - define [hBlender before after] : begin + export : define [h o] : Interpolator hBlender [object o] + define [hBlender before after args] : begin return : list - g2 [mix before.x after.x 0.375] after.y - g2 [mix before.x after.x 0.625] before.y + g2 [mix before.x after.x 0.375] (after.y + [fallback args.o 0]) + g2 [mix before.x after.x 0.625] (before.y - [fallback args.o 0]) export : define [vc waveDepth] : Interpolator vcBlender [object waveDepth] define [vcBlender before after args] : begin @@ -164,5 +182,25 @@ glyph-block LetterLike-Fraktur-Common : begin glyph-block-export PHexBot define PHexBot : 1 - PHexTop - glyph-block-export FrakDf - define [FrakDf div m] : DivFrame [fallback div 1] [fallback m 2] [Math.max 1 : DecoSizeX / SB] + glyph-block-export UpperDf + define [UpperDf div m] : DivFrame [fallback div 1] [fallback m 2] [Math.max 1 : DecoSizeX / SB] + + glyph-block-export LowerDf + define [LowerDf div m] : DivFrame [fallback div 1] [fallback m 2] [Math.max 1 : (1.75 * DecoSizeX - 0.5 * S.thick) / SB] + + glyph-block-export RBDecoration + define [RBDecoration cx cy limy] : list + curl cx [min@ [fallback limy VERY-FAR] [post@slope : 2 * SlopeB]] + [flatc.sr SlopeB].end (pre@ <+> 0.5 * DecoSizeX) cy + corner (pre@ <+> DecoSizeX) (pre@ <+> DecoSizeY) + + glyph-block-export LTDecoration + define [LTDecoration cx cy limy] : list + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) cy + flat cx [max@ [fallback limy (-VERY-FAR)] [pre@slope : 2 * SlopeB]] + + set [LTDecoration.g2 cx cy limy] : list + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) cy + g2 cx [max@ [fallback limy (-VERY-FAR)] [pre@slope : 2 * SlopeB]] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl new file mode 100644 index 000000000..2c5a08869 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl @@ -0,0 +1,56 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-AQ : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave PHexTop PHexBot RBDecoration + + define [LeftHalfShape mode box] : fraktur-stroke S + corner box.right [post@slope SlopeB] + corner [box.xp PHexTop] box.top + g2.down.mid (box.left - OX) [mix@ 0.5] + corner [box.xp PHexBot] box.bot + corner box.right [pre@slope SlopeA] + + create-glyph "frak/a" 0x1D51E : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local aBox : S.box XH 0 df.leftSB df.rightSB + + local leftStroke : include : LeftHalfShape 'a' aBox + local rightStroke : include : fraktur-stroke S + flat [leftStroke.first].x [leftStroke.first].y + RBDecoration [leftStroke.last].x aBox.bot [leftStroke.last].y + + create-glyph "frak/g" 0x1D524 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.p + + local aBox : S.box XH 0 df.leftSB df.rightSB + local gBox : S.box XH Descender df.leftSB df.rightSB + + local leftStroke : include : LeftHalfShape 'p' aBox + local rightStroke : include : fraktur-stroke S + corner [leftStroke.first].x [leftStroke.first].y + corner pre@ [leftStroke.last].y + g2 (pre@ <+> 0.5 * DecoSizeX) (post@ <+> SmallArchDepthA) + hookend (sw -- S.thick) gBox.bot + g4 gBox.left (pre@ <+> SHook) + + + create-glyph "frak/q" 0x1D52E : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.p + + local aBox : S.box XH 0 df.leftSB df.rightSB + local qBox : S.box XH Descender df.leftSB df.rightSB + + local leftStroke : include : LeftHalfShape 'p' aBox + local rightStroke : include : fraktur-stroke S + flat [leftStroke.first].x [leftStroke.first].y + RBDecoration [leftStroke.last].x qBox.bot [leftStroke.last].y diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl new file mode 100644 index 000000000..151dcce97 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl @@ -0,0 +1,85 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-BOPVW : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S M fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot LTDecoration + + define [ORightShape mode profile oBox] : fraktur-stroke profile + corner oBox.left [post@slope SlopeA] + [cg2.sr SlopeB].start [oBox.xp PHexTop] oBox.top + g2.down.mid (oBox.right - OX) [mix@ 0.5] + [g2c.sl SlopeA].start [oBox.xp PHexBot] oBox.bot + corner oBox.left [pre@slope SlopeB] + match mode + [Just 'o'] : close + [Just 'p'] : ~~~ [corner (pre@ <-> DecoSizeX) (pre@ <-> DecoSizeY)] + ___ : list + + create-glyph "frak/o" 0xAB3D : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local oBox : S.box XH 0 df.leftSB df.rightSB + include : ORightShape 'o' S oBox + + alias 'mathFrak/o' 0x1D52C 'frak/o' + + create-glyph "frak/b" 0x1D51F : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.b + + local oBox : S.box XH 0 df.leftSB df.rightSB + local bBox : S.box Ascender 0 df.leftSB df.rightSB + + local rightStroke : include : ORightShape 'b' S oBox + local leftStroke : include : fraktur-stroke S + LTDecoration bBox.left bBox.top + corner [rightStroke.last].x [rightStroke.last].y + + create-glyph "frak/p" 0x1D52D : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.p + + local oBox : S.box XH 0 df.leftSB df.rightSB + local pBox : S.box XH Descender df.leftSB df.rightSB + + local rightStroke : include : ORightShape 'p' S oBox + local leftStroke : include : fraktur-stroke S + LTDecoration pBox.left pBox.top [rightStroke.first].y + corner pre@ pBox.bot + + create-glyph "frak/v" 0x1D533 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local vBox : S.box XH 0 df.leftSB df.rightSB + + local rightStroke : include : ORightShape 'v' S vBox + local leftStroke : include : fraktur-stroke S + LTDecoration vBox.left vBox.top [rightStroke.first].y + corner [rightStroke.last].x [rightStroke.last].y + + create-glyph "frak/w" 0x1D534 : glyph-proc + local df : include : LowerDf para.diversityM 3 + include : df.markSet.e + + local wBox : M.box XH 0 df.leftSB df.rightSB + local rightHalfBox : wBox.withLeft wBox.xMid + local leftHalfBox : wBox.withRight wBox.xMid + + local rightStroke : include : ORightShape 'o' M rightHalfBox + local middleStroke : include : fraktur-stroke M + corner leftHalfBox.left [post@slope SlopeA] + corner [leftHalfBox.xp PHexTop] leftHalfBox.top + corner leftHalfBox.right [pre@slope SlopeB] + corner pre@ [post@slope SlopeA] + corner [leftHalfBox.xp PHexBot] leftHalfBox.bot + corner leftHalfBox.left [pre@slope SlopeB] + local leftStroke : include : fraktur-stroke M + LTDecoration leftHalfBox.left leftHalfBox.top [middleStroke.first].y + corner [middleStroke.last].x [middleStroke.last].y diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl new file mode 100644 index 000000000..70d739fd6 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl @@ -0,0 +1,40 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-CE : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/e" 0xAB32 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local box : S.box XH 0 df.leftSB df.rightSB + include : fraktur-stroke S + corner (box.left + S.thick) [post@slope SlopeA] + g2 box.xMid [box.yp DesignParameters.eBarPos] + corner box.right [pre@slope SlopeA] + corner [box.xp PHexTop] box.top + corner box.left [pre@slope SlopeA] + curl pre@ (post@ <+> ArchDepthB) + [g2c.sr (-SlopeA)].end [box.xp PHexTop] box.bot + corner box.right [pre@slope SlopeA] + + alias 'mathFrak/e' 0x1D522 'frak/e' + + create-glyph "frak/c" 0x1D520 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local box : S.box XH 0 df.leftSB df.rightSB + include : fraktur-stroke S + corner box.right [post@slope SlopeB] + corner [box.xp PHexTop] box.top + corner box.left [pre@slope SlopeA] + curl pre@ (post@ <+> ArchDepthB) + [g2c.sr (-SlopeA)].end [box.xp PHexTop] box.bot + corner box.right [pre@slope SlopeA] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl new file mode 100644 index 000000000..a78181b14 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl @@ -0,0 +1,27 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-D : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/d" 0x1D521 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.b + + local oBox : S.box XH 0 df.leftSB df.rightSB + local dBox : S.box Ascender 0 df.leftSB df.rightSB + + include : fraktur-stroke S + corner [oBox.xp PHexTop] oBox.top + ~~~ ~~~ [corner oBox.left [pre@slope SlopeA]] + ~~~ ~~~ [corner pre@ [post@slope SlopeB]] + ~~~ [corner [oBox.xp PHexBot] oBox.bot] + ~~~ ~~~ [straight.up.mid (oBox.right - OX) oBox.yMid] + [g4.sl SlopeB].mid pre@ pre@ + g2 oBox.left [pre@slope SlopeB] + [g2.sr SlopeA].end [oBox.xp 0.25] dBox.top [change-pen T] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-e.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-e.ptl deleted file mode 100644 index 00f89b994..000000000 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-e.ptl +++ /dev/null @@ -1,27 +0,0 @@ -$$include '../../meta/macros.ptl' - -glyph-module - -glyph-block LetterLike-Fraktur-Lower-E : begin - glyph-block-import Common-Derivatives - glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile - glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot - - create-glyph "frak/e" 0xAB32 : glyph-proc - local df : include : FrakDf 1 - include : df.markSet.e - - local eBox : S.box XH 0 df.leftSB df.rightSB - include : fraktur-stroke S - corner (eBox.left + S.thick) [post@slope SlopeA] - g2 eBox.xMid [eBox.yp DesignParameters.eBarPos] - corner eBox.right [pre@slope SlopeA] - corner [eBox.xp PHexTop] eBox.top - corner eBox.left [pre@slope SlopeA] - curl pre@ (post@ <+> ArchDepthB) - [g2c.sr (-SlopeA)].end [eBox.xp PHexTop] eBox.bot - corner eBox.right [pre@slope SlopeA] - - alias 'mathFrak/e' 0x1D522 'frak/e' diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl new file mode 100644 index 000000000..5f7cd18d9 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl @@ -0,0 +1,90 @@ +$$include '../../meta/macros.ptl' + +import [mix] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-F : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/f" 0x1D523 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local box : S.box Ascender Descender df.leftSB df.rightSB + + include : fraktur-stroke S + g2 [box.xp (13/16)] (box.top - FHook) + hookstart (sw -- S.thick) box.top + g2 [box.xp (5/16)] (box.top - 0.5 * ArchDepthA) [change-pen T] + flat post@ (XH * DesignParameters.fBarPosToXH - S.thick) [change-pen S] + curl box.xMid box.bottom + + include : fraktur-stroke F + corner box.left (XH * DesignParameters.fBarPosToXH) + corner box.right (XH * DesignParameters.fBarPosToXH) + + create-glyph "frak/k" 0x1D528 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local box : S.box Ascender 0 df.leftSB df.rightSB + local xBox : T.box XH 0 df.leftSB df.rightSB + + local centerStroke : include : fraktur-stroke S + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + corner (box.xMid - 0.75 * TBalance) box.top + corner pre@ [post@slope SlopeB] + corner [mix@ PHexBot] box.bottom + corner [box.xp 0.875] [pre@slope SlopeA] + + include : fraktur-stroke F + corner box.left xBox.top + corner box.right xBox.top + + include : fraktur-stroke F + g2.up.start [centerStroke.first 1].x xBox.top + arch.rhs (sw -- F.thick) (blendPost -- {}) [mix xBox.top box.top 0.75] 0.7 + g2 box.right [mix@ 0.5] + g2 [mix@ 0.25] xBox.top + + define [RTBottom box p] : list + corner pre@ [post@slope SlopeB] + corner [mix@ PHexBot] box.bottom + corner [box.xp p] [pre@slope SlopeA] + + create-glyph "frak/r" 0x1D52F : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local box : S.box XH 0 df.leftSB df.rightSB + local rightHalfBox : box.withLeft [box.xp 0.375] + local rightStroke : include : fraktur-stroke S + corner rightHalfBox.right [post@slope SlopeB] + corner [rightHalfBox.xp PHexTop] rightHalfBox.top + straight.down.end rightHalfBox.left [pre@slope : 2 * SlopeA] + local leftStroke : include : fraktur-stroke S + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) box.top + flat rightHalfBox.left [rightStroke.last].y + RTBottom box (13/16) + + create-glyph "frak/t" 0x1D531 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local box : S.box Ascender 0 df.leftSB df.rightSB + local xBox : T.box XH 0 df.leftSB df.rightSB + + include : fraktur-stroke S + corner (post@ <+> DecoSizeX) box.top + corner (box.xMid - 0.5 * TBalance) (pre@ <-> DecoSizeY) + RTBottom box 0.875 + + include : fraktur-stroke F + corner box.left xBox.top + corner box.right xBox.top diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl new file mode 100644 index 000000000..bc85d3968 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl @@ -0,0 +1,42 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-HY : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot LTDecoration + + define [LeftHalfShape mode box] : fraktur-stroke S + LTDecoration box.left box.top + corner box.left [post@slope SlopeB] + corner (post@ <-> DecoSizeX) box.bottom + corner box.xMid (pre@ <+> DecoSizeY) + + define [RightHalfShape mode box] : fraktur-stroke S + corner box.left [post@slope SlopeA] + [cg2.sr SlopeB].start [box.xp PHexTop] box.top + straight.down.mid box.right [mix@ 0.5] + corner [box.xp PHexTop] box.bottom + + create-glyph "frak/h" 0x1D525 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local leftBox : S.box Ascender 0 df.leftSB df.rightSB + local rightBox : S.box XH Descender df.leftSB df.rightSB + + local leftStroke : include : LeftHalfShape 'h' leftBox + local rightStroke : include : RightHalfShape 'h' rightBox + + create-glyph "frak/y" 0x1D536 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.p + + local leftBox : S.box XH 0 df.leftSB df.rightSB + local rightBox : S.box XH Descender df.leftSB df.rightSB + + local leftStroke : include : LeftHalfShape 'y' leftBox + local rightStroke : include : RightHalfShape 'y' rightBox diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl new file mode 100644 index 000000000..f43049820 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl @@ -0,0 +1,60 @@ +$$include '../../meta/macros.ptl' + +import [mix] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-IJL : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import Letter-Shared : CreateAccentedComposition + glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius + glyph-block-import Mark-Above : StdAnchors aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave PHexTop PHexBot LTDecoration RBDecoration + + create-glyph "frak/tittleAbove" : glyph-proc + set-width 0 + include : StdAnchors.narrow + include : spiro-outline + corner (markMiddle + [mix (-DotRadius) (+DotRadius) PHexBot]) (aboveMarkMid - DotRadius) + ~~~ [curl [pre@tang-out 1] [pre@tang-out SlopeA]] + # g2 (markMiddle + 0.5 * DotRadius) aboveMarkMid + ~~~ [flat [post@tang-out 1] [post@tang-out SlopeB]] + corner (markMiddle + [mix (-DotRadius) (+DotRadius) PHexTop]) (aboveMarkMid + DotRadius) + ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeA]] + # g2 (markMiddle - 0.5 * DotRadius) aboveMarkMid + ~~~ [flat [post@tang-in 1] [post@tang-in SlopeB]] + close + + create-glyph "frak/dotlessi" : glyph-proc + local df : include : LowerDf para.diversityI + include : df.markSet.e + + local box : S.box XH 0 df.leftSB df.rightSB + include : fraktur-stroke S + LTDecoration box.xMid box.top + RBDecoration box.xMid box.bot + + create-glyph "frak/dotlessj" : glyph-proc + local df : include : LowerDf para.diversityI + include : df.markSet.p + + local box : S.box XH Descender df.leftSB df.rightSB + include : fraktur-stroke S + LTDecoration box.xMid box.top + corner pre@ [post@slope SlopeA] + corner box.left box.bot + + CreateAccentedComposition 'frak/i' 0x1D526 'frak/dotlessi' 'frak/tittleAbove' + CreateAccentedComposition 'frak/j' 0x1D527 'frak/dotlessj' 'frak/tittleAbove' + + create-glyph "frak/l" 0x1D529 : glyph-proc + local df : include : LowerDf para.diversityI + include : df.markSet.b + + local box : S.box Ascender 0 df.leftSB df.rightSB + include : fraktur-stroke S + LTDecoration box.xMid box.top + RBDecoration box.xMid box.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl new file mode 100644 index 000000000..7e85fae0c --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl @@ -0,0 +1,62 @@ +$$include '../../meta/macros.ptl' + +import [mix] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-MNU : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import Letter-Shared : CreateAccentedComposition + glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius + glyph-block-import Mark-Above : StdAnchors aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack + glyph-block-import LetterLike-Fraktur-Common : LowerDf S M fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave PHexTop PHexBot LTDecoration RBDecoration + + create-glyph "frak/m" 0x1D52A : glyph-proc + local df : include : LowerDf para.diversityM 3 + include : df.markSet.e + + local box : M.box XH 0 df.leftSB df.rightSB + include : fraktur-stroke M + LTDecoration box.left box.top + corner box.left box.bot + include : fraktur-stroke M + corner box.left [post@slope SlopeA] + corner [box.xp : mix 0 0.5 : mix 0.5 1 PHexTop] box.top + corner box.xMid [pre@slope SlopeB] + corner box.xMid box.bot + include : fraktur-stroke M + corner box.xMid [post@slope SlopeA] + corner [box.xp : mix 0.5 1 : mix 0.5 1 PHexTop] box.top + corner box.right [pre@slope SlopeB] + RBDecoration pre@ box.bot + + create-glyph "frak/n" 0x1D52B : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local box : S.box XH 0 df.leftSB df.rightSB + include : fraktur-stroke S + LTDecoration box.left box.top + corner box.left box.bot + include : fraktur-stroke S + corner box.left [post@slope SlopeA] + corner [box.xp : mix 0.5 1 PHexTop] box.top + corner box.right [pre@slope SlopeB] + RBDecoration pre@ box.bot + + create-glyph "frak/u" 0x1D532 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local box : S.box XH 0 df.leftSB df.rightSB + local leftStroke : include : fraktur-stroke S + LTDecoration box.left box.top + corner pre@ [post@slope SlopeB] + corner [box.xp PHexBot] box.bot + corner box.right [pre@slope SlopeA] + include : fraktur-stroke S + LTDecoration box.right box.top + RBDecoration box.right box.bot [leftStroke.last].y diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-o.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-o.ptl deleted file mode 100644 index 3b6aea73d..000000000 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-o.ptl +++ /dev/null @@ -1,25 +0,0 @@ -$$include '../../meta/macros.ptl' - -glyph-module - -glyph-block LetterLike-Fraktur-Lower-O : begin - glyph-block-import Common-Derivatives - glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile - glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot - - create-glyph "frak/o" 0xAB3D : glyph-proc - local df : include : FrakDf 1 - include : df.markSet.e - - local oBox : S.box XH 0 df.leftSB df.rightSB - include : fraktur-stroke S - [cg2.sr SlopeB].start [oBox.xp PHexTop] oBox.top - g2.down.mid oBox.right [mix@ 0.5] - [g2c.sl SlopeA].start [oBox.xp PHexBot] oBox.bot - corner oBox.left [pre@slope SlopeB] - corner pre@ [post@slope SlopeA] - close - - alias 'mathFrak/o' 0x1D52C 'frak/o' diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl new file mode 100644 index 000000000..f607179f0 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl @@ -0,0 +1,28 @@ +$$include '../../meta/macros.ptl' + +import [mix] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-S : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S M fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB FHook PHexTop + + define [HalfS box] : fraktur-stroke S + corner box.right box.top + ~~~ [g2 [mix@ 0.5] (pre@ <-> 0.5 * FHook)] + corner [box.xp : 0.5 * PHexTop] pre@ + ~~~ [g2.down.mid box.left [mix@ 0.5]] + corner pre@ [post@slope SlopeA] + corner box.xMid box.yMid + + create-glyph "frak/s" 0x1D530 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.bp + + local box : S.box XH 0 df.leftSB df.rightSB + local lowerHalf : include : HalfS box + include : FlipAround box.xMid box.yMid + local upperHalf : include : HalfS box diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl new file mode 100644 index 000000000..1f4bdf38b --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl @@ -0,0 +1,28 @@ +$$include '../../meta/macros.ptl' + +glyph-module + +glyph-block LetterLike-Fraktur-Lower-Z : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : LowerDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB PHexTop + + create-glyph "frak/z" 0x1D537 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local box : S.box XH Descender df.leftSB df.rightSB + + local upperLoop : include : fraktur-stroke S + corner box.left (post@ <+> DecoSizeY) + corner (box.left + DecoSizeX) [post@slope SlopeA] + [cg2.sr SlopeB].start [box.xp PHexTop] box.top + ~~~ [g2.down.mid box.right [mix@ 0.45]] + [g2c.sl SlopeA].end [box.xp 0.375] [box.yp 0.55] + + local lowerLoop : include : fraktur-stroke S + [cg2.sr SlopeA].start [upperLoop.last].x [upperLoop.last].y + g2.down.mid (box.right - OX) [mix@ 0.5] + hookend (sw -- S.thick) box.bottom + g2 box.left (pre@ <+> SHook) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-a.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-a.ptl deleted file mode 100644 index b38cb8b3f..000000000 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-a.ptl +++ /dev/null @@ -1,35 +0,0 @@ -$$include '../../meta/macros.ptl' - -import [mix fallback] from "@iosevka/util" - -glyph-module - -glyph-block LetterLike-Fraktur-Upper-A : begin - glyph-block-import Common-Derivatives - glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile - glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot - - create-glyph 'frak/A' 0x1D504 : glyph-proc - local df : include : FrakDf 1 - include : df.markSet.capital - - local aBox : S.box CAP 0 df.leftSB df.rightSB - - include : fraktur-stroke S - g2.ru.start (post@) ([aBox.yp 0.625] - 2 * F.thick) [change-profile F] - ~~~ [Wave.vc Wave.DepthX] - g2.ru.mid aBox.left (post@ <-> DecoSizeY) [change-profile S] - arch.rhs (sw -- S.thick) (blendPre -- null) aBox.top 0.4 - straight.down.mid [aBox.xp 0.5] [mix@ 0.375] - [flatc.sl SlopeA].end (aBox.left - 0.25 * DecoSizeX) [post@slope SlopeB] - corner [aBox.xp PHexBot] aBox.bot - corner aBox.right [pre@slope SlopeA] - - include : fraktur-stroke S - flat aBox.right aBox.top - curl pre@ [post@slope : 2 * SlopeB] - [flatc.sr SlopeB].end (pre@ <+> 0.5 * DecoSizeX) aBox.bot - corner (pre@ <+> DecoSizeX) (pre@ <+> DecoSizeY) - # g2.ld.mid aBox.left (pre@ <-> Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl new file mode 100644 index 000000000..6e1aa59d6 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl @@ -0,0 +1,53 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Upper-A : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave PHexTop PHexBot LTDecoration RBDecoration + + create-glyph 'frak/A' 0x1D504 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local aBox : S.box CAP 0 df.leftSB df.rightSB + + include : fraktur-stroke S + g2.ru.start (post@) ([aBox.yp 0.625] - 2 * F.thick) [change-pen F] + ~~~ [Wave.vc Wave.DepthX] + g2.ru.mid aBox.left (post@ <-> DecoSizeY) [change-pen S] + arch.rhs (sw -- S.thick) (blendPre -- null) aBox.top 0.4 + straight.down.mid [aBox.xp 0.5] [mix@ 0.375] + [flatc.sl SlopeA].end (aBox.left - 0.25 * DecoSizeX) [post@slope SlopeB] + corner [aBox.xp PHexBot] aBox.bot + corner aBox.right [pre@slope SlopeA] + + include : fraktur-stroke S + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + corner aBox.right aBox.top + RBDecoration pre@ aBox.bot + + create-glyph 'frak/U' 0x1D518 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local uBox : S.box CAP 0 df.leftSB df.rightSB + local uDeco : uBox.padLeft (-0.25 * DecoSizeX) # top-left decoration ref box + local uBody : uBox.padLeft (+1.50 * DecoSizeX) # body ref box + + include : fraktur-stroke S + LTDecoration.g2 [mix uDeco.left uBody.left 0.5] uBody.top nothing + g2.down.mid uBody.left [mix@ 0.45] + corner uDeco.left [post@slope SlopeB] + corner [uDeco.xp PHexBot] uDeco.bot + corner uDeco.right [pre@slope SlopeA] + + include : fraktur-stroke S + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + corner uDeco.right uDeco.top + RBDecoration pre@ uBox.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl index 5df6b2af7..4732d02f5 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl @@ -7,23 +7,21 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-BVW : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S M F fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot - glyph-block-import LetterLike-Fraktur-Common : CutMaskLeft + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot CutMaskLeft define [deriveBoxes box] : begin local body : box.padLeft (+1.50 * DecoSizeX) local deco : box.padLeft (-0.25 * DecoSizeX) return { body deco } - define [StartStroke mode box profile pRight] : glyph-proc + define [StartStroke mode box profile pRight] : begin local { body deco } : deriveBoxes box - - local [knots] : list - g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-profile F] + return : fraktur-stroke profile + g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-pen F] ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-profile M] + g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen M] arch.rhs (sw -- S.thick) (blendPre -- null) deco.top 0.4 match mode [Just "P"] : list @@ -35,36 +33,29 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin corner deco.left [post@slope SlopeB] virt [body.xp : pRight * PHexBot] body.bot - local s : include : fraktur-stroke profile [knots] - return : object - lbKnot : s.last - maskLeft : function [] : fraktur-stroke CutMaskLeft [knots] - create-glyph 'frak/B' 0x1D505 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local box : S.box CAP 0 df.leftSB df.rightSB local { body deco } : deriveBoxes box local leftStroke : include : StartStroke 'B' box S 1 - local rightStroke : include : difference - union - fraktur-stroke S - corner leftStroke.lbKnot.x leftStroke.lbKnot.y - corner [body.xp PHexBot] body.bot - decor@ : g2.up.mid body.right [mix@ 0.5] - corner [body.xp 0.625] [body.yp 0.55] - fraktur-stroke S - corner deco.left [post@slope SlopeA] - corner [body.xp PHexTop] body.top - decor@ : g2.down.mid body.right [mix@ 0.5] - corner [body.xp 0.625] [body.yp 0.55] - corner deco.left [pre@slope : 0.5 * SlopeA] - leftStroke.maskLeft + local rightStroke : include : with-knockout [leftStroke.withPen CutMaskLeft] : union + fraktur-stroke S + corner [leftStroke.last].x [leftStroke.last].y + corner [body.xp PHexBot] body.bot + decor@ : g2.up.mid (body.right - OX) [mix@ 0.5] + corner [body.xp 0.625] [body.yp 0.55] + fraktur-stroke S + corner deco.left [post@slope SlopeA] + corner [body.xp PHexTop] body.top + decor@ : g2.down.mid body.right [mix@ 0.5] + corner [body.xp 0.625] [body.yp 0.55] + corner deco.left [pre@slope : 0.5 * SlopeA] create-glyph 'frak/P' 0x1D513 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capDesc local box : S.box CAP 0 df.leftSB df.rightSB @@ -83,30 +74,28 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin g2 (pre@ <-> Wave.DepthX) [mix@ 0.5] arch.rhs (sw -- S.thick) (blendPre -- {}) body.top corner (body.left - S.thick) (pre@ <-> ArchDepthA) - intersection [leftStroke.maskLeft] [MaskAbove body.yMid] + intersection [leftStroke.withPen CutMaskLeft] [MaskAbove body.yMid] create-glyph 'frak/V' 0x1D519 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local box : S.box CAP 0 df.leftSB df.rightSB local { body deco } : deriveBoxes box local leftStroke : include : StartStroke 'V' box S 1 - local rightStroke : include : difference - fraktur-stroke S - corner leftStroke.lbKnot.x leftStroke.lbKnot.y - [cg2.sr SlopeA].start [body.xp PHexBot] body.bottom - ~~~ [Wave.vDistAfter : 1.5 * Wave.DepthX] - [g2c.sr SlopeA].end (body.right + 0.25 * DecoSizeX) ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> Wave.DepthX) [mix@ 0.5] - arch.rhs (sw -- S.thick) (blendPre -- {}) body.top - corner (body.left - S.thick) (pre@ <-> ArchDepthA) - leftStroke.maskLeft + include : with-knockout [leftStroke.withPen CutMaskLeft] : fraktur-stroke S + corner [leftStroke.last].x [leftStroke.last].y + [cg2.sr SlopeA].start [body.xp PHexBot] body.bottom + ~~~ [Wave.vDistAfter : 1.5 * Wave.DepthX] + [g2c.sr SlopeA].end (body.right + 0.25 * DecoSizeX) ([body.yp 0.75] + S.thick) + ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] + g2 (pre@ <-> Wave.DepthX) [mix@ 0.5] + arch.rhs (sw -- S.thick) (blendPre -- {}) body.top + corner (body.left - S.thick) (pre@ <-> ArchDepthA) create-glyph 'frak/W' 0x1D51A : glyph-proc - local df : include : FrakDf para.diversityM 3 + local df : include : UpperDf para.diversityM 3 include : df.markSet.capital local box : M.box CAP 0 df.leftSB df.rightSB @@ -115,7 +104,7 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin local leftStroke : include : StartStroke 'W' box M 0.5 1 local rightStroke : include : fraktur-stroke M - corner leftStroke.lbKnot.x leftStroke.lbKnot.y + corner [leftStroke.last].x [leftStroke.last].y corner [deco.xp : 0.5 * PHexBot] box.bottom corner deco.xMid [post@slope SlopeB] [cg2.sr SlopeA].start [deco.xp : mix 0.5 1 PHexBot] body.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl index fa0bfeb4a..55fc733fa 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl @@ -7,9 +7,9 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-CEG : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S F T fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot define flex-params [FrakCTopAndCenterStroke] : glyph-proc @@ -51,16 +51,16 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin # Left and bottom stroke include : fraktur-stroke S - g4.ru.start [T.connL S xCenter] [T.connB S waveTop] [change-profile T] + g4.ru.start [T.connL S xCenter] [T.connB S waveTop] [change-pen T] arch.rhs [T.connT S top] (sw -- T.thick) (anglePre -- (-45)) (anglePost -- 0) - flat left (pre@ <-> 0.6 * ArchDepthA) [change-profile S] + flat left (pre@ <-> 0.6 * ArchDepthA) [change-pen S] curl pre@ (post@ <+> ArchDepthB) match mode : [Just 'C'] : list # C and E hookend (sw -- S.thick) bot - g2 [T.connR S right] (pre@ <+> [T.connT S SHook]) [change-profile T] + g2 [T.connR S right] (pre@ <+> [T.connT S SHook]) [change-pen T] : [Just 'G'] : list # G - arch.lhs (sw -- S.thick) bot + arch.lhs (sw -- S.thick) bot flat right (pre@ <+> ArchDepthA) decor@ : curl pre@ (post@ <-> 0.5 * ArchDepthB) decor@@ : g2 [post@tang-out 1] [post@tang-out SlopeB] @@ -70,13 +70,13 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin return : object xCenter waveTop waveBot create-glyph "frak/C" 0x212D : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital include : FrakCOutlineShape df (mode -- 'C') create-glyph "frak/E" 0x1D508 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local [object xCenter waveTop waveBot] : include : FrakCOutlineShape df (mode -- 'C') @@ -87,6 +87,6 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin corner [F.xr df.rightSB] (pre@ <-> 0.5 * DecoSizeY) create-glyph "frak/G" 0x1D50A : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital include : FrakCOutlineShape df (mode -- 'G') diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl new file mode 100644 index 000000000..bd7f0ac71 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl @@ -0,0 +1,68 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-DOQ : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot CutMaskUp CutMaskDown + + create-glyph "frak/D" 0x1D507 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local box : S.box CAP 0 df.leftSB df.rightSB + local frame : include : fraktur-stroke S + cg2.ru.start (box.left - 0.25 * DecoSizeX) box.bottom + ~~~ [g2.right.mid [mix@ (1/3)] (pre@ <+> Wave.DepthY - O)] + g2 [box.xp 0.625] (pre@ <+> O) + ~~~ ~~~ ~~~ [archv] + ~~~ ~~~ [straight.up.mid (box.right - OX) [box.yp 0.5]] + ~~~ ~~~ [arch.lhs (sw -- S.thick) (blendPost -- {}) box.top] + corner [T.connL S : box.left - 0.5 * DecoSizeX] [T.connB S : box.top - FHook] [change-pen T] + + local inner : include : intersection + union + intersection [MaskAbove : box.yMid - TINY] [frame.withPen CutMaskDown] + intersection [MaskBelow : box.yMid + TINY] [frame.withPen CutMaskUp] + fraktur-stroke S + corner [frame.first 2].x [frame.first 2].y + ~~~ [Wave.vc (0.75 * Wave.DepthX)] + corner pre@ (box.top - 0.25 * SHook) + corner pre@ box.top + + + define [FrakOShape box] : fraktur-stroke S + cg2.ru.start (box.left - 0.25 * DecoSizeX) box.bottom + ~~~ [g2.right.mid [mix@ (1/3)] (pre@ <+> Wave.DepthY - O)] + g2 [box.xp 0.625] (pre@ <+> O) + ~~~ ~~~ ~~~ [archv] + ~~~ ~~~ [straight.up.mid (box.right - OX) [box.yp 0.5]] + ~~~ ~~~ [arch.lhs (sw -- S.thick) (blendPost -- {}) box.top] + ~~~ ~~~ [corner [box.xp 0.25] (box.top - FHook)] + ~~~ ~~~ [corner (pre@ <-> DecoSizeX) (pre@ <+> DecoSizeY)] + ~~~ ~~~ ~~~ [Wave.vc (0.75 * -Wave.DepthX)] + ~~~ [corner [mix@rev (1/3)] (post@ <+> Wave.DepthY - O)] + + create-glyph "frak/O" 0x1D512 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local box : S.box CAP 0 df.leftSB df.rightSB + include : FrakOShape box + + create-glyph "frak/Q" 0x1D514 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local box : S.box CAP 0 df.leftSB df.rightSB + local frame : include : FrakOShape box + + include : with-knockout [frame.withPen CutMaskUp] : fraktur-stroke S + corner (post@ <+> DecoSizeX) (post@ <+> DecoSizeY) + corner (box.right + O) (box.bottom + O) + corner (pre@ <-> 2 * DecoSizeX) [pre@slope SlopeB] diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl new file mode 100644 index 000000000..8b0e3c59c --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl @@ -0,0 +1,57 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Upper-F : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/F" 0x1D509 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local fBox : S.box CAP 0 df.leftSB df.rightSB + local topStroke : include : fraktur-stroke S + g2.ld.start fBox.right fBox.top + ~~~ [Wave.h O] + g2.ld.end fBox.left (pre@ <-> Wave.DepthY) [change-pen F] + ~~~ [Wave.vc (-Wave.DepthX)] + g2.ld.end pre@ ([fBox.yp 0.625] - 2 * F.thick) + + local mainStroke : include : fraktur-stroke S + [g2.sl (2 * SlopeA)].start fBox.xMid (fBox.top - 0.5 * Wave.DepthY) + g2 [fBox.xp 0.875] (post@ <+> ArchDepthB) + hookend (sw -- S.thick) fBox.bot + g2 fBox.left (pre@ <+> SHook) + + include : with-knockout [mainStroke.withPen CutMaskLeft] : fraktur-stroke F + corner [F.connR S fBox.right] [post@slope SlopeB] + corner (fBox.right - 0.5 * DecoSizeX) [post@slope SlopeA] + corner fBox.xMid [mix (fBox.top - 0.5 * Wave.DepthY) (fBox.bot + ArchDepthB) 0.5] + + create-glyph "frak/T" 0x1D517 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local tBox : S.box CAP 0 df.leftSB df.rightSB + local topStroke : include : fraktur-stroke S + g2.ld.start tBox.right tBox.top + ~~~ [Wave.h O] + g2.ld.end tBox.left (pre@ <-> Wave.DepthY) [change-pen F] + ~~~ [Wave.vc (-Wave.DepthX)] + g2.ld.end pre@ ([tBox.yp 0.625] - 2 * F.thick) + + local bottomStroke : include : fraktur-stroke S + g2.ld.end tBox.right (tBox.bottom + Wave.DepthY) + ~~~ [Wave.h O] + g2.ld.start tBox.left tBox.bottom + + local middleStroke : include : fraktur-stroke S + g2 tBox.xMid (tBox.bottom + 0.5 * Wave.DepthY) + ~~~ [Wave.vc Wave.DepthX] + g2 tBox.xMid (tBox.top - 0.5 * Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-hkr.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl similarity index 67% rename from packages/font-glyphs/src/letter-like/fraktur/upper-hkr.ptl rename to packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl index 406f05587..931b7f47c 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-hkr.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl @@ -7,9 +7,9 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-HKR : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S F T fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot define [HOuterShape bBody bDeco yConnT yConnB] : fraktur-stroke S g2 bBody.right (post@ <-> FHook) @@ -45,7 +45,7 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin return : object [yConnT [c.first].y] [yConnB [c.last].y] create-glyph "frak/H" 0x210C : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capDesc local hBox : S.box CAP 0 df.leftSB df.rightSB @@ -66,7 +66,7 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin include : HOuterShape hBody hDeco (-VERY-FAR) [c.first].y create-glyph "frak/K" 0x1D50E : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local kBox : S.box CAP 0 df.leftSB df.rightSB @@ -78,8 +78,21 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin include : HOuterShape kBody kDeco leg.yConnT leg.yConnB + define [RKLeftStroke deco body yConnB pRight] : glyph-proc + local s : include : fraktur-stroke F + g2.ru.start post@ ([deco.yp 0.625] - 2 * F.thick) + ~~~ [Wave.vc Wave.LTDecoSize] + g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen S] + arch.rhs (blendPre -- {}) body.top 0.625 + flat body.left (body.top - 0.6 * ArchDepthA) + curl (pre@ <+> 0) [min@ yConnB [mix@ 0.5]] + corner deco.left (post@ <+> 2 * DecoSizeY) + g2c.right.end (post@ <-> DecoSizeX) [S.yb 0] + corner [body.xp : 0.5 * pRight] (pre@ <+> DecoSizeY) + return s + create-glyph "frak/R" 0x211C : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local rBox : S.box CAP 0 df.leftSB df.rightSB @@ -88,15 +101,22 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin # Legs local leg : include : KRLegs rBody + local leftStroke : include : RKLeftStroke rDeco rBody leg.yConnB 1 - # Left stroke - include : fraktur-stroke F - g2.ru.start post@ ([rDeco.yp 0.625] - 2 * F.thick) - ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid rDeco.left (post@ <-> DecoSizeY) [change-profile S] - arch.rhs (blendPre -- {}) rBody.top 0.625 - flat rBody.left (pre@ <-> 0.6 * ArchDepthA) - curl (pre@ <+> 0) leg.yConnB - corner rDeco.left (post@ <+> 2 * DecoSizeY) - g2c.right.end (post@ <-> DecoSizeX) [S.yb 0] - corner [rBody.xp 0.5] (pre@ <+> DecoSizeY) + create-glyph "frak/Y" 0x1D51C : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capDesc + + local yBox : S.box CAP 0 df.leftSB df.rightSB + local yDeco : yBox.padLeft (-0.25 * DecoSizeX) # top-left decoration ref box + local yBody : yBox.padLeft (+1.50 * DecoSizeX) # body ref box + + local leftStroke : include : RKLeftStroke yDeco yBody yBody.top 0.75 + + local yRight : yBody.withBottom Descender + local rightStroke : include : fraktur-stroke S + corner yRight.left [post@slope SlopeA] + corner [yRight.xp PHexTop] yRight.top + g2.down.mid yRight.right [yRight.yp 0.75] + g2.down.mid [yRight.xp 0.75] [yRight.yp 0.25] + g2 yRight.right yRight.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl index 7a6ccb388..6028db898 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl @@ -5,16 +5,16 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-IJ : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S F T fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot define [TopStroke df] : glyph-proc local iBox : S.box CAP 0 df.leftSB df.rightSB include : fraktur-stroke S g2.ld.start iBox.right iBox.top - ~~~ [Wave.h] - g2.ld.end iBox.left (pre@ <-> Wave.DepthY) [change-profile F] + ~~~ [Wave.h O] + g2.ld.end iBox.left (pre@ <-> Wave.DepthY) [change-pen F] ~~~ [Wave.vc (-Wave.DepthX)] g2.ld.end pre@ ([iBox.yp 0.625] - 2 * F.thick) @@ -24,22 +24,22 @@ glyph-block LetterLike-Fraktur-Upper-IJ : begin local ada1 : 0.6 * archScalar * ArchDepthA local ada2 : archScalar * ArchDepthA include : fraktur-stroke S - g4 [T.connR S jBox.right] (post@ <-> FHook) [change-profile T] + g4 [T.connR S jBox.right] (post@ <-> FHook) [change-pen T] hookstart (sw -- S.thick) [T.connT S jBox.top] - g4 ([jBox.xp 0.6] - S.thick) (jBox.top - ada1) [change-profile S] - g4 jBox.right (jBox.bot + ada2) + g4 ([jBox.xp 0.6] - S.thick) (jBox.top - ada1) [change-pen S] + g4 (jBox.right - OX) (jBox.bot + ada2) hookend (sw -- S.thick) jBox.bot g2 jBox.left (pre@ <+> SHook) create-glyph "frak/I" 0x2111 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital include : TopStroke df include : BottomStroke df 0 0.75 create-glyph "frak/J" 0x1D50D : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capDesc include : TopStroke df diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl new file mode 100644 index 000000000..cdb44c088 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl @@ -0,0 +1,27 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Upper-L : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/L" 0x1D50F : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local lBox : S.box CAP 0 df.leftSB df.rightSB + include : fraktur-stroke S + g2 lBox.right (post@ <-> SHook) + hookstart (sw -- S.thick) lBox.top + g2 [lBox.xp 0.125] (pre@ <-> ArchDepthA) + ~~~ [g2.down.mid (pre@ <+> 1.5 * Wave.DepthX) [mix@ 0.5]] + g2c.ld.end lBox.left lBox.bottom + ~~~ [g2 [pre@tang-out 1] [pre@tang-out 1]] + ~~~ ~~~ [Wave.h (-O)] + g2c.ru.end (lBox.right + 0.25 * DecoSizeX) (pre@ <+> Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl index 7b562b2d6..94f12cf5c 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl @@ -7,9 +7,9 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-MNP : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S M F T fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot define [deriveBoxes box] : begin local body : box.padLeft (+1.50 * DecoSizeX) @@ -20,9 +20,9 @@ glyph-block LetterLike-Fraktur-Upper-MNP : begin local { body deco } : deriveBoxes box local [knots] : list - g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-profile F] + g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-pen F] ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-profile profile] + g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen profile] arch.rhs (sw -- profile.thick) (blendPre -- null) deco.top 0.4 flat body.left (pre@ <-> ArchDepthA) curl pre@ (post@ <+> ArchDepthB) @@ -36,7 +36,7 @@ glyph-block LetterLike-Fraktur-Upper-MNP : begin create-glyph 'frak/M' 0x1D510 : glyph-proc - local df : include : FrakDf para.diversityM 3 + local df : include : UpperDf para.diversityM 3 include : df.markSet.capital local box : M.box CAP 0 df.leftSB df.rightSB @@ -65,7 +65,7 @@ glyph-block LetterLike-Fraktur-Upper-MNP : begin curl (body.xMid - 0.25 * Wave.DepthX) (body.top - 0.5 * Wave.DepthY) create-glyph 'frak/N' 0x1D511 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local box : S.box CAP 0 df.leftSB df.rightSB diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl new file mode 100644 index 000000000..932823aa5 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl @@ -0,0 +1,32 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-S : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + create-glyph "frak/S" 0x1D516 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local box : S.box CAP 0 df.leftSB df.rightSB + + include : fraktur-stroke S + g2.ld.start box.right box.top + ~~~ [g2.left.mid [mix@ : 1/3] (pre@ <-> 0.75 * Wave.DepthY - O)] + g2.left.mid [box.xp 0.375] (pre@ <-> O) + ~~~ [archv] + flat box.left (box.top - SmallArchDepthA * (CAP / XH)) + curl box.left (box.bot + SmallArchDepthB * (CAP / XH)) + ~~~ [arch.lhs (sw -- S.thick) box.bottom] + ~~~ [g2.up.mid (box.right - OX) [mix@ 0.5]] + ~~~ ~~~ [arcvh] + ~~~ [g2.left.mid [box.xp 0.625] (box.yMid + 0.25 * Wave.DepthY - O)] + ~~~ ~~~ [g2.left.mid [box.xp 0.3] (box.yMid - 0.25 * Wave.DepthY + O) [change-pen T]] + ~~~ [g2 [box.xp 0.125] pre@] diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl index d80c51eaf..98773e1ed 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl @@ -5,12 +5,12 @@ glyph-module glyph-block LetterLike-Fraktur-Upper-Z : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : FrakDf S F T fraktur-stroke change-profile + glyph-block-import LetterLike-Fraktur-Common : UpperDf S F T fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB - glyph-block-import LetterLike-Fraktur-Common : Wave LbFootRise FHook PHexTop PHexBot + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot create-glyph "frak/Z" 0x2128 : glyph-proc - local df : include : FrakDf 1 + local df : include : UpperDf 1 include : df.markSet.capital local zBox : S.box CAP 0 df.leftSB df.rightSB @@ -18,7 +18,7 @@ glyph-block LetterLike-Fraktur-Upper-Z : begin # Top Stroke include : fraktur-stroke S g2.ld.start zBox.right zBox.top - ~~~ [Wave.h] + ~~~ [Wave.h O] g2.ld.mid zBox.left (pre@ <-> Wave.DepthY) # Bottom Stroke @@ -28,9 +28,9 @@ glyph-block LetterLike-Fraktur-Upper-Z : begin include : difference fraktur-stroke S - g2.ru.start [diag.last].x [diag.last].y + g2.ru.start [diag.last].x [diag.last].y ~~~ [arch.rhs [zBox.yp 0.55] 0.375 (sw -- S.thick)] - g2.down.mid zBox.right (post@ <+> ArchDepthA) + g2.down.mid (zBox.right - OX) (post@ <+> ArchDepthA) hookend zBox.bot (sw -- S.thick) g2 zBox.left (pre@ <+> SHook) MaskAboveLine [diag.first].x [diag.first].y [diag.last].x [diag.last].y 4 diff --git a/packages/font-glyphs/src/letter-like/fraktur/x.ptl b/packages/font-glyphs/src/letter-like/fraktur/x.ptl new file mode 100644 index 000000000..08f8365b0 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/x.ptl @@ -0,0 +1,45 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-X : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf LowerDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + define [XShapeHalf pen box] : glyph-proc + include : fraktur-stroke pen + corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) + corner box.left box.top + straight.down.mid box.xMid [mix@ 0.5] + corner box.left box.bot + corner (pre@ <-> DecoSizeX) (pre@ <+> DecoSizeY) + + define [XSHapeImpl pen box] : glyph-proc + local bodyBox : box.withXPadding (0.5 * DecoSizeX) + include : XShapeHalf pen bodyBox + include : FlipAround box.xMid box.yMid + include : XShapeHalf pen bodyBox + include : fraktur-stroke F + corner ([box.xp 0.25] - 0.5 * DecoSizeX) [post@slope : 0.25 * SlopeA] + corner box.xMid box.yMid + corner [box.xp 0.75] [pre@slope : 0.25 * SlopeA] + corner (pre@ <+> 0.5 * DecoSizeX) (pre@ <-> 0.5 * DecoSizeY) + + create-glyph "frak/X" 0x1D51B : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local xBox : S.box CAP 0 df.leftSB df.rightSB + include : XSHapeImpl S xBox + + create-glyph "frak/x" 0x1D535 : glyph-proc + local df : include : LowerDf 1 + include : df.markSet.e + + local xBox : S.box XH 0 df.leftSB df.rightSB + include : XSHapeImpl S xBox diff --git a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl index 6c9aea3e0..a4d1b9967 100644 --- a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl @@ -58,7 +58,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin curl (RightSB - [if (slabTop === CLOSED-CIRCLE) OX 0]) (top - adb2) arch.lhs top (sw -- stroke) [Just CLOSED-STEM] : OBarRight.arcStart top SB RightSB stroke stemFine ada2 adb2 midy - __ : list [g4 (RightSB + O) (top - hook) [widths.lhs]] [hookstart (top - O) (sw -- stroke)] + __ : list [g4 (RightSB + O) (top - hook) [widths.lhs]] [hookstart top (sw -- stroke)] g4 SB [YSmoothMidL top (midy - stroke / 2)] arcvh flat Middle (midy - (fine - stroke / 2)) [widths.heading fine 0 Rightward] @@ -80,7 +80,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin flat (RightSB - [if (slabBot === CLOSED-CIRCLE) OX 0]) (bot + adb2) curl (RightSB - [if (slabBot === CLOSED-CIRCLE) OX 0]) midy [Just CLOSED-STEM] : OBarRight.arcEnd bot SB RightSB stroke stemFine ada2 adb2 midy - __ : list [hookend (bot + O) (sw -- stroke)] [g4 (RightSB - O) (bot + hook)] + __ : list [hookend bot (sw -- stroke)] [g4 (RightSB - O) (bot + hook)] export : define [Shape] : union [UpperShape] [LowerShape] @@ -131,7 +131,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin curl (left + [if (slabTop === CLOSED-CIRCLE) xo 0]) (top - ada2) arch.rhs top (sw -- stroke) [Just CLOSED-STEM] : OBarLeft.arcStart top left right stroke stemFine ada2 adb2 midy - __ : list [g4 (left - xo) (top - hook) : widths.rhs stroke] [hookstart (top - O) (sw -- stroke)] + __ : list [g4 (left - xo) (top - hook) : widths.rhs stroke] [hookstart top (sw -- stroke)] g4 right [YSmoothMidR top (midy - stroke / 2)] arcvh flat middle (midy - (fine - stroke / 2)) [widths.heading 0 fine Leftward] @@ -157,7 +157,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin flat (left + [if (slabBot === CLOSED-CIRCLE) xo 0]) (bot + adb2) curl (left + [if (slabBot === CLOSED-CIRCLE) xo 0]) midy [Just CLOSED-STEM] : OBarLeft.arcEnd bot left right stroke stemFine ada2 adb2 midy - __ : list [hookend (bot + O) (sw -- stroke)] [g4 (left + xo) (bot + hook)] + __ : list [hookend bot (sw -- stroke)] [g4 (left + xo) (bot + hook)] export : define [UpperShape] : UpperShapeT dispiro diff --git a/packages/font-glyphs/src/letter/greek/lower-sigma-final.ptl b/packages/font-glyphs/src/letter/greek/lower-sigma-final.ptl index a878a1c79..38e5b3526 100644 --- a/packages/font-glyphs/src/letter/greek/lower-sigma-final.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-sigma-final.ptl @@ -24,7 +24,7 @@ glyph-block Letter-Greek-Lower-Sigma-Final : begin include : dispiro widths.lhs g4 RightSB (XH - Hook) - hookstart (XH - O) + hookstart XH flat (SB + OX) (XH - SmallArchDepthA) SignaFinalEndingKnots @@ -47,7 +47,7 @@ glyph-block Letter-Greek-Lower-Sigma-Final : begin dispiro widths.lhs g4 RightSB (CAP - Hook) - hookstart (CAP - O) + hookstart CAP flat (SB + OX) (CAP - ArchDepthA) curl (SB + OX) (yAttach + ArchDepthB) arcvh diff --git a/packages/font-glyphs/src/letter/greek/lower-xi.ptl b/packages/font-glyphs/src/letter/greek/lower-xi.ptl index 2b872f6f1..35b584247 100644 --- a/packages/font-glyphs/src/letter/greek/lower-xi.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-xi.ptl @@ -43,7 +43,7 @@ glyph-block Letter-Greek-Lower-Xi : begin match shape [Just SHAPE-ROUNDED] : list g4 (RightSB + O) (Ascender - Hook) [widths.lhs] - hookstart (Ascender - O) + hookstart Ascender [Just SHAPE-FLAT-TOP] : list flat xBarEnd (Ascender - Stroke + fineTop) [widths.lhs fineTop] curl xBarStart (Ascender - Stroke + fineTop) [widths.lhs fineTop] diff --git a/packages/font-glyphs/src/letter/latin-ext/eszet.ptl b/packages/font-glyphs/src/letter/latin-ext/eszet.ptl index 420b05f03..fad043c37 100644 --- a/packages/font-glyphs/src/letter/latin-ext/eszet.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/eszet.ptl @@ -49,7 +49,7 @@ glyph-block Letter-Latin-Lower-Eszet : begin : else : include : dispiro widths.lhs g4 xHook (Ascender - Hook) - hookstart (Ascender - O) + hookstart Ascender flat l XH curl l 0 [heading Downward] local t : mix 0 Ascender 0.7 @@ -206,7 +206,7 @@ glyph-block Letter-Latin-Upper-Eszet : begin include : dispiro widths.lhs g4 rightTopX (CAP - ArchDepthB) - hookstart (CAP - O) + hookstart CAP flat SB XH curl SB 0 [heading Downward] include : dispiro diff --git a/packages/font-glyphs/src/letter/latin-ext/f-ligatures.ptl b/packages/font-glyphs/src/letter/latin-ext/f-ligatures.ptl index 81afe53d7..29a5d962b 100644 --- a/packages/font-glyphs/src/letter/latin-ext/f-ligatures.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/f-ligatures.ptl @@ -39,7 +39,7 @@ glyph-block Letter-Latin-F-ligatures : begin widths.rhs flat m 0 [heading Upward] curl m (Ascender - ArchDepthA) - hookend (Ascender - O) + hookend Ascender g4 (barr + OXHook) (Ascender - Hook) include : VBar.r barr 0 (Ascender - Hook) include : dispiro diff --git a/packages/font-glyphs/src/letter/latin-ext/glottal-stop.ptl b/packages/font-glyphs/src/letter/latin-ext/glottal-stop.ptl index 2dad9b94a..a838ac274 100644 --- a/packages/font-glyphs/src/letter/latin-ext/glottal-stop.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/glottal-stop.ptl @@ -17,7 +17,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin include : dispiro widths.rhs g4 SB (Ascender - Hook) - hookstart (Ascender - O) + hookstart Ascender g4 RightSB (Ascender - [AdviceGlottalStopArchDepth Ascender 1]) alsoThru.g2 0.5 0.5 important flat (Middle + [HSwToV HalfStroke]) (XH * 0.3) @@ -32,7 +32,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin include : dispiro widths.lhs g4 RightSB (Ascender - Hook) - hookstart (Ascender - O) + hookstart Ascender g4 SB (Ascender - [AdviceGlottalStopArchDepth Ascender (-1)]) alsoThru.g2 0.5 0.5 important flat (Middle - [HSwToV HalfStroke]) (XH * 0.3) @@ -45,7 +45,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin include : dispiro widths.rhs g4 SB (XH - Hook) - hookstart (XH - O) + hookstart XH g4 RightSB (XH - [AdviceGlottalStopArchDepth XH 1]) alsoThru.g2 0.5 0.5 important flat (Middle + [HSwToV HalfStroke]) (XH * 0.15) @@ -58,7 +58,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin include : dispiro widths.lhs g4 RightSB (XH - Hook) - hookstart (XH - O) + hookstart XH g4 SB (XH - [AdviceGlottalStopArchDepth XH (-1)]) alsoThru.g2 0.5 0.5 important flat (Middle - [HSwToV HalfStroke]) (XH * 0.15) diff --git a/packages/font-glyphs/src/letter/latin-ext/insular-t.ptl b/packages/font-glyphs/src/letter/latin-ext/insular-t.ptl index 26e1cd313..901a7dddd 100644 --- a/packages/font-glyphs/src/letter/latin-ext/insular-t.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/insular-t.ptl @@ -17,7 +17,7 @@ glyph-block Letter-Latin-Insular-T : begin archv flat (SB + OX) (top - ada - Stroke + fine) [widths.lhs] curl (SB + OX) (bot + adb) - hookend (bot + O) + hookend bot g4 RightSB (bot + Hook) create-glyph 'TInsular' 0xA786 : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin-ext/long-s.ptl b/packages/font-glyphs/src/letter/latin-ext/long-s.ptl index b439e20bd..0d4affe28 100644 --- a/packages/font-glyphs/src/letter/latin-ext/long-s.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/long-s.ptl @@ -83,7 +83,7 @@ glyph-block Letter-Latin-Long-S : begin include : dispiro widths.lhs g4 xTerminal (Ascender - Hook) - hookstart (Ascender - O) + hookstart Ascender flat m (Ascender - ArchDepthA) curl m 0 [heading Downward] include : LeaningAnchor.Above.Hook m xTerminal diff --git a/packages/font-glyphs/src/letter/latin-ext/yogh.ptl b/packages/font-glyphs/src/letter/latin-ext/yogh.ptl index 91406d5a6..cb56c0d61 100644 --- a/packages/font-glyphs/src/letter/latin-ext/yogh.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/yogh.ptl @@ -24,7 +24,7 @@ glyph-block Letter-Latin-Yogh : begin match slab [Just SLAB-CLASSICAL] : SerifedArcStart.LtrRhs SB (top - offset) Stroke Hook [Just SLAB-INWARD] : InwardSlabArcStart.LtrRhs SB (top - offset) Stroke Hook - __ : list [g4 SB (top - Hook) [widths.rhs]] [hookstart (top - offset - O)] + __ : list [g4 SB (top - Hook) [widths.rhs]] [hookstart (top - offset)] g4 (RightSB - offset) yRightHalf alsoThruThem {{0.5 0.8} {0.75 0.92}} important [if (sink == dispiro) g4 corner] ([mix SB RightSB 0.1] + Stroke * 0.25) yBottomTerminal diff --git a/packages/font-glyphs/src/letter/latin/c.ptl b/packages/font-glyphs/src/letter/latin/c.ptl index f42ac7896..10624b79b 100644 --- a/packages/font-glyphs/src/letter/latin/c.ptl +++ b/packages/font-glyphs/src/letter/latin/c.ptl @@ -35,7 +35,7 @@ glyph-block Letter-Latin-C : begin archv _ : list g4 (df.rightSB - offset) (top - [fallback hook Hook]) - hookstart (top - O - offset) (sw -- sw) + hookstart (top - offset) (sw -- sw) flat (df.leftSB + OX + offset) (top - ada) curl (df.leftSB + OX + offset) (bot + adb) @@ -48,7 +48,7 @@ glyph-block Letter-Latin-C : begin flat [arch.adjust-x.bot df.middle (sw -- sw)] (bot + O + offset) curl (df.width - offset) (bot + O + offset) _ : list - hookend (bot + O + offset) (sw -- sw) + hookend (bot + offset) (sw -- sw) g4 (df.rightSB - offset) (bot + [fallback hook Hook]) define [RevCShapeT sink offset df st sb top bot ada adb hook sw origBar] : sink @@ -62,7 +62,7 @@ glyph-block Letter-Latin-C : begin archv _ : list g4 (df.leftSB + offset) (top - [fallback hook Hook]) - hookstart (top - O - offset) (sw -- sw) + hookstart (top - offset) (sw -- sw) flat (df.rightSB - OX + offset) (top - ada) curl (df.rightSB - OX + offset) (bot + adb) @@ -75,7 +75,7 @@ glyph-block Letter-Latin-C : begin flat [arch.adjust-x.bot df.middle (sw -- sw)] (bot + O + offset) curl (0 + offset) (bot + O + offset) _ : list - hookend (bot + O + offset) (sw -- sw) + hookend (bot + offset) (sw -- sw) g4 (df.leftSB + offset) (bot + [fallback hook Hook]) define [AutoStartSerifR df sty top hook sw] : match sty diff --git a/packages/font-glyphs/src/letter/latin/lower-a.ptl b/packages/font-glyphs/src/letter/latin/lower-a.ptl index 03a637f35..6ffd1d176 100644 --- a/packages/font-glyphs/src/letter/latin/lower-a.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-a.ptl @@ -32,7 +32,7 @@ glyph-block Letter-Latin-Lower-A : begin match hookStyle 1 : list g4 df.leftSB (XH - AHook) - hookstart (XH - O) (sw -- stroke) + hookstart XH (sw -- stroke) 2 : InwardSlabArcStart.LtrRhs df.leftSB XH stroke flat df.rightSB (XH - [ADoubleStoreySmoothB df]) [if isMask corner curl] df.rightSB y0 [heading Downward] diff --git a/packages/font-glyphs/src/letter/latin/lower-e.ptl b/packages/font-glyphs/src/letter/latin/lower-e.ptl index 0ad9cdc20..12bfc8c3c 100644 --- a/packages/font-glyphs/src/letter/latin/lower-e.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-e.ptl @@ -31,7 +31,7 @@ glyph-block Letter-Latin-Lower-E : begin [Just SLAB-INWARD] : begin InwardSlabArcEnd.LtrLhs df.rightSB 0 stroke [HookHeightFull top stroke schwaTail] __ : list - hookend O (sw -- stroke) (noSwash -- schwaTail) + hookend 0 (sw -- stroke) (noSwash -- schwaTail) g4 (df.rightSB - [if (para.isItalic && !schwaTail) 0 0.5] * OX) [HookHeight top stroke schwaTail] define [SmallETerminalSerif df top stroke tailSlab schwaTail] : match tailSlab @@ -69,7 +69,7 @@ glyph-block Letter-Latin-Lower-E : begin arch.rhs top (sw -- stroke) flat (df.rightSB - OX) (top - [df.archDepthB SmallArchDepth]) curl (df.rightSB - OX) (0 + [df.archDepthA SmallArchDepth]) - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 (df.leftSB + 0.5 * OX) [HookHeight top stroke true] glyph-block-export SmallERoundedShape @@ -109,7 +109,7 @@ glyph-block Letter-Latin-Lower-E : begin arch.rhs top (sw -- stroke) flat (df.rightSB - OX) (top - [df.archDepthB SmallArchDepth]) curl (df.rightSB - OX) (0 + [df.archDepthA SmallArchDepth]) - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 (df.leftSB + 0.5 * OX) [HookHeight top stroke true] define [AbkCheShape] : with-params [fDesc Body df top tailSlab] : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/lower-f.ptl b/packages/font-glyphs/src/letter/latin/lower-f.ptl index b4fec0ef6..3ce683d80 100644 --- a/packages/font-glyphs/src/letter/latin/lower-f.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-f.ptl @@ -30,7 +30,7 @@ glyph-block Letter-Latin-Lower-F : begin define [StdFShapeT sink df offset barleft sw] : sink widths.lhs sw g4 [Math.max (barleft + offset + [HSwToV : 2.125 * sw]) (df.rightSB + RBalance2 - (OX - O) - offset)] (Ascender - Hook * 0.75) - hookstart (Ascender - O - offset) (sw -- sw) + hookstart (Ascender - offset) (sw -- sw) flat (barleft + offset) (Ascender - ArchDepthA * 0.8) [if offset corner curl] (barleft + offset) 0 [heading Downward] if offset {[corner (df.rightSB + RBalance2 - (OX - O) - offset) 0]} {} diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index af691fae3..28bc54238 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -69,7 +69,7 @@ glyph-block Letter-Latin-Lower-G : begin curl [mix RightSB SB 0.435] groundy archv 4 g4 grightx [mix (Descender + O) groundy (1.06 * SmallArchDepthA / (SmallArchDepthA + SmallArchDepthB))] - hookend (Descender + O) + hookend Descender g4 gleftx [mix (Descender + O) groundy (1.06 * SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB))] local gm : mix SB (RightSB - 0.3 * SB) 0.5 include : spiro-outline @@ -88,7 +88,7 @@ glyph-block Letter-Latin-Lower-G : begin widths.rhs sw [if (sink == spiro-outline) corner flat] (df.rightSB - offset) yTop [heading Downward] curl (df.rightSB - offset) (Descender + SmallArchDepthA) - hookend (Descender + O + offset) (sw -- sw) + hookend (Descender + offset) (sw -- sw) g4 (df.leftSB + offset) (Descender + SHook) if (sink == spiro-outline) {[corner df.leftSB XH]} {} diff --git a/packages/font-glyphs/src/letter/latin/lower-il.ptl b/packages/font-glyphs/src/letter/latin/lower-il.ptl index ed535a4d1..da1685626 100644 --- a/packages/font-glyphs/src/letter/latin/lower-il.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-il.ptl @@ -73,7 +73,7 @@ glyph-block Letter-Latin-Lower-I : begin widths.lhs df.mvs flat left top [heading Downward] curl left (SmallArchDepthB * 0.8) - hookend O (sw -- df.mvs) (swTerminal -- fine) (isTail -- true) + hookend 0 (sw -- df.mvs) (swTerminal -- fine) (isTail -- true) g4 rightTerm hookDepth [widths.lhs fine] local xDot : xMiddle + [StrokeWidthBlend 0.25 0] * TanSlope * df.width diff --git a/packages/font-glyphs/src/letter/latin/lower-j.ptl b/packages/font-glyphs/src/letter/latin/lower-j.ptl index e9b116f9f..ad502922b 100644 --- a/packages/font-glyphs/src/letter/latin/lower-j.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-j.ptl @@ -49,7 +49,7 @@ glyph-block Letter-Latin-Lower-J : begin widths.rhs flat (xMiddle + [HSwToV HalfStroke]) top [heading Downward] curl (xMiddle + [HSwToV HalfStroke]) (Descender + ArchDepthA) - hookend (Descender + O) + hookend Descender g4 hookx (Descender + JHook) export : define [Straight df top xMiddle] : glyph-proc @@ -160,7 +160,7 @@ glyph-block Letter-Latin-Lower-J : begin widths.rhs BBS flat center XH [heading Downward] curl center (Descender + ArchDepthA) - hookend (Descender + O) (sw -- BBS) + hookend Descender (sw -- BBS) g4 hookx (Descender + JHook) include : HBar.t (center - [HSwToV BBS] / 2 - BBD - Jut) center XH BBS include : intersection @@ -168,7 +168,7 @@ glyph-block Letter-Latin-Lower-J : begin spiro-outline corner center XH [heading Downward] curl center (Descender + ArchDepthA) - hookend (Descender + O) (sw -- BBS) + hookend Descender (sw -- BBS) g4 hookx (Descender + JHook) corner hookx XH diff --git a/packages/font-glyphs/src/letter/latin/lower-r.ptl b/packages/font-glyphs/src/letter/latin/lower-r.ptl index fc48b76af..c2afc4c37 100644 --- a/packages/font-glyphs/src/letter/latin/lower-r.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-r.ptl @@ -154,7 +154,7 @@ glyph-block Letter-Latin-Lower-R : begin include : dispiro widths.lhs g4 hx (XH - rHookY) - hookstart (XH - O) + hookstart XH flat (xBar - [HSwToV Stroke]) (XH - SmallArchDepthA) curl (xBar - [HSwToV Stroke]) 0 [heading Downward] if doBottomSerif : include : rBottomSerif 0 diff --git a/packages/font-glyphs/src/letter/latin/lower-t.ptl b/packages/font-glyphs/src/letter/latin/lower-t.ptl index 568d81c81..43b232238 100644 --- a/packages/font-glyphs/src/letter/latin/lower-t.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-t.ptl @@ -2,7 +2,6 @@ $$include '../../meta/macros.ptl' import [mix clamp SuffixCfg] from "@iosevka/util" - glyph-module glyph-block Letter-Latin-Lower-T : begin @@ -53,7 +52,7 @@ glyph-block Letter-Latin-Lower-T : begin widths.lhs sw [if (sink == spiro-outline) corner flat] (offset + xLeft) top [heading Downward] curl (offset + xLeft) (bot + adb) - hookend (bot + O + offset) (sw -- sw) + hookend (bot + offset) (sw -- sw) g4 (xHook - offset) (bot + Hook) if (sink == spiro-outline) {[corner (xHook - offset) top]} {} @@ -330,7 +329,7 @@ glyph-block Letter-Latin-Lower-T : begin arch.rhs 0 (sw -- stroke) (blendPost -- {}) g4 df.leftSB DToothlessRise __ : list - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 df.leftSB SHook define TSUpperConfig : object diff --git a/packages/font-glyphs/src/letter/latin/lower-y.ptl b/packages/font-glyphs/src/letter/latin/lower-y.ptl index 54ca3125c..d1a2750fe 100644 --- a/packages/font-glyphs/src/letter/latin/lower-y.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-y.ptl @@ -355,7 +355,7 @@ glyph-block Letter-Latin-Lower-Y : begin widths.rhs flat RightSB y0 [heading Downward] curl RightSB (bottom + SmallArchDepthA) - hookend (bottom + O) + hookend bottom g4 SB (bottom + SHook) export : define [FlatHook y0 bottom] : begin diff --git a/packages/font-glyphs/src/letter/latin/s.ptl b/packages/font-glyphs/src/letter/latin/s.ptl index 952dda658..777b33d67 100644 --- a/packages/font-glyphs/src/letter/latin/s.ptl +++ b/packages/font-glyphs/src/letter/latin/s.ptl @@ -49,7 +49,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs df.rightSB top stroke Hook __ : list g4 df.rightSB (top - Hook) [widths.lhs stroke] - hookstart (top - O) (sw -- stroke) + hookstart top (sw -- stroke) g4 df.leftSB (top - archDepth) alsoThru.g2 0.5 0.5 [widths.center ess] @@ -59,7 +59,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs df.leftSB bot stroke Hook [Just SLAB-INWARD] : InwardSlabArcEnd.RtlRhs df.leftSB bot stroke Hook __ : list - hookend (bot + O) (sw -- stroke) + hookend bot (sw -- stroke) g4 (df.leftSB + SOBot) (bot + Hook) define [RevSStroke df st sb stroke ess] : begin @@ -70,7 +70,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-INWARD] : InwardSlabArcStart.LtrRhs df.leftSB CAP stroke Hook __ : list g4 df.leftSB (CAP - Hook) [widths.rhs stroke] - hookstart (CAP - O) (sw -- stroke) + hookstart CAP (sw -- stroke) g4 df.rightSB (CAP - archDepth) alsoThru.g2 0.5 0.5 [widths.center ess] g4 (df.leftSB + SOBot) archDepth [widths.lhs stroke] @@ -78,7 +78,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-CLASSICAL] : SerifedArcEnd.LtrLhs df.rightSB 0 stroke Hook [Just SLAB-INWARD] : InwardSlabArcEnd.LtrLhs df.rightSB 0 stroke Hook __ : list - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 (df.rightSB + OX - SOBot) Hook define [SmallSStrokeImpl df st sb stroke refSwEss] : begin @@ -91,7 +91,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs df.rightSB XH stroke SHook __ : list g4 (df.rightSB + OX) (XH - SHook) [widths.lhs stroke] - hookstart (XH - O) (sw -- stroke) + hookstart XH (sw -- stroke) g4 (df.leftSB - OX) (XH - archDepth) alsoThru.g2 0.5 0.5 [widths.center ess] @@ -102,7 +102,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs df.leftSB 0 stroke SHook [Just SLAB-INWARD] : InwardSlabArcEnd.RtlRhs df.leftSB 0 stroke SHook __ : list - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 (df.leftSB - OX + SOBot) SHook define [SStrokeAlt] : with-params [df top hook swStart swEnd oXLeftTop offsetLT offsetRB offsetC] : begin @@ -114,14 +114,14 @@ glyph-block Letter-Latin-S : begin return : dispiro widths.lhs fine g4 (df.rightSB + OX / 4 - [HSwToV soStart]) (top - hook) - hookstart (top - O - soStart) (sw -- fine) + hookstart (top - soStart) (sw -- fine) g4 (df.leftSB + oXLeftTop + offsetLT.x) (top - archDepth + offsetLT.y) g2 offsetC.x + [mix (df.leftSB + oXLeftTop + offsetLT.x) (df.rightSB - SOBot - offsetRB.x) 0.5] offsetC.y + [mix (top - archDepth) (archDepth) 0.5] widths.center stroke g4 (df.rightSB - SOBot - offsetRB.x) (archDepth + offsetRB.y) [widths.rhs fine] - hookend (O + soEnd) (sw -- fine) + hookend soEnd (sw -- fine) g4 (df.leftSB + SOBot + [HSwToV soEnd]) (hook) [widths.rhs fine] define [SmallSStrokePhoneticRight df st top] : begin @@ -134,7 +134,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs df.rightSB top stroke Hook __ : list g4 df.rightSB (top - Hook) [widths.lhs stroke] - hookstart (top - O) (sw -- stroke) + hookstart top (sw -- stroke) g4 df.leftSB (top - archDepth) alsoThru.g2 0.5 0.5 [widths.center ess] g4 (df.rightSB - SOBot) (archDepth) [widths.rhs stroke] @@ -150,7 +150,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-INWARD] : InwardSlabArcStart.LtrRhs df.leftSB XH stroke SHook __ : list g4 (df.leftSB - OX) (XH - SHook) [widths.rhs stroke] - hookstart (XH - O) (sw -- stroke) + hookstart XH (sw -- stroke) g4 (df.rightSB + OX) (XH - archDepth) alsoThru.g2 0.5 0.5 [widths.center ess] g4 (df.leftSB - OX + SOBot) (archDepth) [widths.lhs stroke] @@ -158,7 +158,7 @@ glyph-block Letter-Latin-S : begin [Just SLAB-CLASSICAL] : SerifedArcEnd.LtrLhs df.rightSB 0 stroke SHook [Just SLAB-INWARD] : InwardSlabArcEnd.LtrLhs df.rightSB 0 stroke SHook __ : list - hookend O (sw -- stroke) + hookend 0 (sw -- stroke) g4 (df.rightSB + OX - SOBot) SHook glyph-block-export SAutoSlabStart diff --git a/packages/font-glyphs/src/letter/latin/upper-g.ptl b/packages/font-glyphs/src/letter/latin/upper-g.ptl index 312556f9c..f52ab3166 100644 --- a/packages/font-glyphs/src/letter/latin/upper-g.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-g.ptl @@ -35,7 +35,7 @@ glyph-block Letter-Latin-Upper-G : begin ([Just SLAB-LETTER] || [Just SLAB-HOOK-TOP]) : begin SerifedArcStart.RtlLhs RightSB top Stroke Hook (slabShape === SLAB-HOOK-TOP) [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB top Stroke Hook - __ : list [widths.lhs] [g4 RightSB (top - Hook)] [hookstart (top - O)] + __ : list [widths.lhs] [g4 RightSB (top - Hook)] [hookstart top] knots.push flat (SB + OX) (top - ada) @@ -148,7 +148,7 @@ glyph-block Letter-Latin-Upper-G : begin define [BBGArcT sink offset top ada adb xTerm yTerm] : sink widths.lhs BBS g4 (RightSB - offset) (top - Hook) - hookstart (top - O - offset) (sw -- BBS) + hookstart (top - offset) (sw -- BBS) flat (SB + OX + offset) (top - ada) curl (SB + OX + offset) adb arch.lhs offset (sw -- BBS) diff --git a/packages/font-glyphs/src/letter/latin/upper-j.ptl b/packages/font-glyphs/src/letter/latin/upper-j.ptl index 1b9fca7a8..e9ea48e39 100644 --- a/packages/font-glyphs/src/letter/latin/upper-j.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-j.ptl @@ -29,7 +29,7 @@ glyph-block Letter-Latin-Upper-J : begin widths.rhs sw flat xBarRight top [heading Downward] curl xBarRight ArchDepthB - hookend O (sw -- sw) + hookend 0 (sw -- sw) g4 hookx Hook define [JFlatHookBase df dfHook top] : glyph-proc @@ -65,7 +65,7 @@ glyph-block Letter-Latin-Upper-J : begin widths.rhs flat center top [heading Downward] curl center (Descender + ArchDepthA) - hookend (Descender + O) + hookend Descender g4 hookx (Descender + JHook) set JFullHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' @@ -160,7 +160,7 @@ glyph-block Letter-Latin-Upper-J : begin widths.rhs BBS flat (RightSB - JBalance2) CAP [heading Downward] curl (RightSB - JBalance2) ArchDepthB - hookend O (sw -- BBS) + hookend 0 (sw -- BBS) g4 hookx Hook include : HBar.t (RightSB - JBalance2 - BBD) (RightSB - JBalance2) CAP BBS include : intersection @@ -168,6 +168,6 @@ glyph-block Letter-Latin-Upper-J : begin spiro-outline corner (RightSB - JBalance2 - 1) CAP [heading Downward] curl (RightSB - JBalance2 - 1) ArchDepthB - hookend (1 + O) (sw -- BBS) + hookend 1 (sw -- BBS) g4 (hookx + 1) Hook corner (hookx + 1) CAP diff --git a/packages/font-glyphs/src/letter/latin/upper-p.ptl b/packages/font-glyphs/src/letter/latin/upper-p.ptl index 93553240e..714429b2f 100644 --- a/packages/font-glyphs/src/letter/latin/upper-p.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-p.ptl @@ -28,7 +28,7 @@ glyph-block Letter-Latin-Upper-P : begin local turn : YSmoothMidR bowlTop bowlBottom ada adb return : list g4 (left - O) (bowlTop - hook) - hookstart (bowlTop - O) + hookstart bowlTop g4 (right - overshoot) turn arcvh flat [arch.adjust-x.bot [Math.max (endX + TINY + sw / 2 * TanSlope) df.middle] (sw -- sw * 0.5)] bowlBottom diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index e33e7d43a..0bfbb56fd 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -24,7 +24,7 @@ glyph-block Letter-Shared : begin currentGlyph.includeMarkWithLeaningSupport gAccent LeaningAnchorMap if (!gr) : begin - if (gnAccents.length === 1 && gnAccents.0 === 'tittleAbove') + if (gnAccents.length === 1 && [gnAccents.0.endsWith 'tittleAbove']) : then : Dotless.set currentGlyph gnBase : else : CvDecompose.set currentGlyph { gnSrc :: gnAccents } diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index e762623ce..8c7d2006d 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -29,6 +29,7 @@ glyph-block Mark-Above : begin define commaOvershoot2 : O * [linreg 16 1 90 (-1) markStroke] define commaAboveRadius : 0.85 * DotRadius * markHalfStroke / HalfStroke + glyph-block-export StdAnchors define StdAnchors : namespace export : define [impl mk padding k fLeaning] : glyph-proc if (mk === 'above') diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index 83b8307d5..0ba4ac96f 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -292,7 +292,7 @@ define-macro glyph-block : syntax-rules widths disable-contrast heading unimportant important alsoThru alsoThruThem bezControls quadControls archv arcvh dispiro spiro-outline spiro-collect] - define booleFnImports `[union intersection difference] + define booleFnImports `[union intersection difference with-knockout] define drvCoordImports `[pre@ post@ mix@ mix@rev pre@slope post@slope min@ max@ decor@ decor@@ decor@@@ pre@tang-in post@tang-in pre@tang-out post@tang-out] diff --git a/packages/font-glyphs/src/number/2.ptl b/packages/font-glyphs/src/number/2.ptl index 7d7ec3337..936485ee3 100644 --- a/packages/font-glyphs/src/number/2.ptl +++ b/packages/font-glyphs/src/number/2.ptl @@ -19,7 +19,7 @@ glyph-block Digits-Two : begin return : sink widths.rhs sw g4 xLeft (top - Hook) - hookstart (top - offset - O) (sw -- sw) + hookstart (top - offset) (sw -- sw) g4.down.mid xRight (top - archDepth) flat [mix xLeft xRight pStraightBarStart] [mix sw yPhRight pStraightBarStart] curl xLeft sw [widths.lhs sw] @@ -29,7 +29,7 @@ glyph-block Digits-Two : begin return : sink widths.rhs sw g4 (SB + offset) (top - Hook) - hookstart (top - offset - O) (sw -- sw) + hookstart (top - offset) (sw -- sw) g4.down.mid (RightSB - offset - OX / 2) (top - archDepth) alsoThru.g2 0.5 ([StrokeWidthBlend 0.425 0.4 sw] * [linreg 500 1 700 0.95 Width]) [widths.center sw] flat (SB - offset) 1 [widths.heading sw 0 Downward] diff --git a/packages/font-glyphs/src/number/3.ptl b/packages/font-glyphs/src/number/3.ptl index d0b9f6391..300c4a5bf 100644 --- a/packages/font-glyphs/src/number/3.ptl +++ b/packages/font-glyphs/src/number/3.ptl @@ -19,7 +19,7 @@ glyph-block Digits-Three : begin include : sink widths.rhs sw g4 (SB + offset - O) (top - Hook) - hookstart (top - offset - O) (sw -- sw) + hookstart (top - offset) (sw -- sw) g4 (RightSB - offset) [YSmoothMidR (top - offset - O) (barcenter - sw / 2) ArchDepthA ArchDepthB] flat (xMid + TINY) (barcenter - (fine - sw / 2)) [widths.rhs.heading fine Leftward] curl xMid (barcenter - (fine - sw / 2)) [heading Leftward] @@ -28,7 +28,7 @@ glyph-block Digits-Three : begin flat xMid (barcenter + (fine - sw / 2)) [heading Rightward] curl (xMid + TINY) (barcenter + (fine - sw / 2)) [heading Rightward] g4 (RightSB - offset - O * 2) [YSmoothMidR (barcenter + sw / 2) (offset + O) ArchDepthA ArchDepthB] [widths.rhs sw] - hookend (offset + O) (sw -- sw) + hookend offset (sw -- sw) g4 (SB + offset + O) Hook define [ThreeShape top] : ThreeShapeT dispiro 0 Stroke top diff --git a/packages/font-glyphs/src/number/5.ptl b/packages/font-glyphs/src/number/5.ptl index a776efae9..141a13af9 100644 --- a/packages/font-glyphs/src/number/5.ptl +++ b/packages/font-glyphs/src/number/5.ptl @@ -16,22 +16,22 @@ glyph-block Digits-Five : begin curl [Math.max (xLeft + TINY) [arch.adjust-x.top Middle sw]] archTop archv g4 (RightSB - OX) [YSmoothMidR archTop 0 ArchDepthA ArchDepthB] - hookend O (sw -- sw) + hookend 0 (sw -- sw) g4 SB (Hook * pShapeHeight) define [FiveArcStroke xLeft archTop pShapeHeight sw] : dispiro widths.rhs sw g4 xLeft (archTop - AHook * pShapeHeight) - hookstart (archTop - O) (sw -- sw) + hookstart archTop (sw -- sw) g4 (RightSB - OX) [YSmoothMidR archTop 0 ArchDepthA ArchDepthB] - hookend O (sw -- sw) + hookend 0 (sw -- sw) g4 SB (Hook * pShapeHeight) define [FiveArcStrokeMask xLeft archTop pShapeHeight sw] : spiro-outline g4 (xLeft + 1) (archTop - AHook * pShapeHeight) - hookstart (archTop - O - 1) (sw -- sw) + hookstart (archTop - 1) (sw -- sw) g4 (RightSB - OX - 1) [YSmoothMidR archTop 0 ArchDepthA ArchDepthB] - hookend (O + 1) (sw -- sw) + hookend 1 (sw -- sw) g4 (SB + 1) (Hook * pShapeHeight) define [FiveShape] : with-params [ diff --git a/packages/font-glyphs/src/number/6.ptl b/packages/font-glyphs/src/number/6.ptl index ed45bd67f..a7cfb2730 100644 --- a/packages/font-glyphs/src/number/6.ptl +++ b/packages/font-glyphs/src/number/6.ptl @@ -36,7 +36,7 @@ glyph-block Digits-Six : begin arch.rhs 0 flat (SB + OX) SmallArchDepthB curl (SB + OX) (top - SmallArchDepthA) - hookend (top - O) + hookend top g4 (RightSB - OX) (top - Hook) glyph-block-export StraightBarSixShape diff --git a/packages/font-glyphs/src/symbol/letter.ptl b/packages/font-glyphs/src/symbol/letter.ptl index b027c5568..f7307ff72 100644 --- a/packages/font-glyphs/src/symbol/letter.ptl +++ b/packages/font-glyphs/src/symbol/letter.ptl @@ -38,7 +38,7 @@ glyph-block Symbol-Currency : begin include : union dispiro g4 hookEndX (CAP - Hook * 0.85) [widths.lhs] - hookstart (CAP - O) + hookstart CAP flat xBarLeft [CAP - ArchDepthA * 0.75] curl xBarLeft [mix Stroke CAP 0.3] g4 SB Stroke @@ -276,7 +276,7 @@ glyph-block Symbol-Letter : begin widths.rhs flat RightSB (CAP - HalfStroke) [heading Downward] curl RightSB ArchDepthB - hookend O + hookend 0 g4 SB Hook do "Roman Numerals" diff --git a/packages/font-glyphs/src/symbol/punctuation/ampersand.ptl b/packages/font-glyphs/src/symbol/punctuation/ampersand.ptl index bcd6defa1..8df2fd4c2 100644 --- a/packages/font-glyphs/src/symbol/punctuation/ampersand.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/ampersand.ptl @@ -190,7 +190,7 @@ glyph-block Symbol-Punctuation-Ampersand : begin define [EtUpperHalf] : dispiro g4 xEtRight (CAP - SHook) [widths.lhs] - hookstart (CAP - O) + hookstart CAP g4 xEtLeft (CAP - adaEt) arcvh flat Middle (yEtMiddle - (fineEt - SwAmpersand / 2)) [widths.heading fineEt 0 Rightward] diff --git a/packages/font-glyphs/src/symbol/punctuation/at.ptl b/packages/font-glyphs/src/symbol/punctuation/at.ptl index b37ee5354..9579b6944 100644 --- a/packages/font-glyphs/src/symbol/punctuation/at.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/at.ptl @@ -139,7 +139,7 @@ glyph-block Symbol-Punctuation-At : begin arch.lhs atTurnBot (sw -- sw) (swBefore -- (sw * shrink)) flat RightSB (atTurnBot + ada) curl RightSB (top - ArchDepthB) - hookend (top - O) (sw -- sw) + hookend top (sw -- sw) g4 SB (top - Hook) define NormalHeight : mix (OperTop - OperBot) (ParenTop - ParenBot) 0.600 diff --git a/packages/font-glyphs/src/symbol/punctuation/emotion.ptl b/packages/font-glyphs/src/symbol/punctuation/emotion.ptl index 832ea78ea..42bff313b 100644 --- a/packages/font-glyphs/src/symbol/punctuation/emotion.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/emotion.ptl @@ -56,7 +56,7 @@ glyph-block Symbol-Punctuation-Emotion : begin include : dispiro widths.rhs g4 left (top - Hook) - hookstart (top - O) + hookstart top g4 right (top - ArchDepthB * 0.9) alsoThru.g2 0.5 0.45 [widths.center EssQuestion] straight.down.end ([mix left right 0.5] - [HSwToV HalfStroke] * strokeEndCor) emotionBottom [widths.lhs.heading (Stroke * strokeEndCor) Downward] @@ -66,7 +66,7 @@ glyph-block Symbol-Punctuation-Emotion : begin include : dispiro widths.lhs g4 right (top - Hook) - hookstart (top - O) + hookstart top g4 left (top - ArchDepthA * 0.9) alsoThru.g2 0.5 0.45 [widths.center EssQuestion] straight.down.end ([mix left right 0.5] + [HSwToV HalfStroke] * strokeEndCor) emotionBottom [widths.rhs.heading (Stroke * strokeEndCor) Downward] @@ -76,7 +76,7 @@ glyph-block Symbol-Punctuation-Emotion : begin include : dispiro widths.rhs g4 left (top - Hook) - hookstart (top - O) + hookstart top g4 (right - OX) [YSmoothMidR top (questionYConnect - Stroke) ArchDepthA ArchDepthB] arcvh straight.left.end [mix left right 0.5] (questionYConnect - Stroke) [heading Leftward] @@ -87,7 +87,7 @@ glyph-block Symbol-Punctuation-Emotion : begin include : dispiro widths.lhs g4 right (top - Hook) - hookstart (top - O) + hookstart top g4 (left + OX) [YSmoothMidL top (questionYConnect - Stroke) ArchDepthA ArchDepthB] arcvh straight.right.end [mix left right 0.5] (questionYConnect - Stroke) [heading Rightward] diff --git a/packages/font-kits/src/boole-kit.mjs b/packages/font-kits/src/boole-kit.mjs index 630f43d49..c43b1d473 100644 --- a/packages/font-kits/src/boole-kit.mjs +++ b/packages/font-kits/src/boole-kit.mjs @@ -34,9 +34,11 @@ export function SetupBuilders(bindings) { new BooleImpl(bindings, TypoGeom.Boolean.ClipType.ctIntersection, operands); const difference = (...operands) => new BooleImpl(bindings, TypoGeom.Boolean.ClipType.ctDifference, operands); + const withKnockout = (mask, ...operands) => difference(union(...operands), mask); return { union: union, intersection: intersection, difference: difference, + "with-knockout": withKnockout, }; }