From 0950a86c20b36ffbcb39f224d1cf8bc45b775f89 Mon Sep 17 00:00:00 2001 From: be5invis Date: Fri, 25 Aug 2023 21:56:19 -0700 Subject: [PATCH] Add - BLACK DIAMOND MINUS WHITE X (`U+2756`) (#1960). - WHITE CONCAVE-SIDED DIAMOND (`U+27E1`) (#1960). - LIGHT FOUR POINTED BLACK CUSP (`U+2BCC`) (#1960). - WHITE FOUR POINTED CUSP (`U+2BCE`) (#1960). --- changes/26.2.2.md | 4 ++ font-src/glyphs/symbol/geometric/masked.ptl | 61 +++++++++++++-------- font-src/glyphs/symbol/geometric/plain.ptl | 20 ++++++- font-src/glyphs/symbol/geometric/shared.ptl | 4 +- 4 files changed, 63 insertions(+), 26 deletions(-) diff --git a/changes/26.2.2.md b/changes/26.2.2.md index 1642f52f7..427dbdcd6 100644 --- a/changes/26.2.2.md +++ b/changes/26.2.2.md @@ -1,5 +1,9 @@ * Add characters: + - BLACK DIAMOND MINUS WHITE X (`U+2756`) (#1960). + - WHITE CONCAVE-SIDED DIAMOND (`U+27E1`) (#1960). - LEFT BARB UP RIGHT BARB UP HARPOON (`U+294E`) ... UP BARB LEFT DOWN BARB LEFT HARPOON (`U+2951`). + - LIGHT FOUR POINTED BLACK CUSP (`U+2BCC`) (#1960). + - WHITE FOUR POINTED CUSP (`U+2BCE`) (#1960). * Add support for specialized Vietnamese dual diacritics (#1935). * Make bowl height of Cyrillic Yat and Tall Yat (`U+0463`, `U+1C67`) consistent (#1945). * Make Guillemets (`«`, `»`) curly for Default Slab. diff --git a/font-src/glyphs/symbol/geometric/masked.ptl b/font-src/glyphs/symbol/geometric/masked.ptl index 18363e102..7ff4bb8b5 100644 --- a/font-src/glyphs/symbol/geometric/masked.ptl +++ b/font-src/glyphs/symbol/geometric/masked.ptl @@ -210,31 +210,18 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1 if T [VBar.m Geom.MidX (Geom.MidY + Geom.Size - hv) (Geom.MidY - hv) s] [glyph-proc] if B [VBar.m Geom.MidX (Geom.MidY - Geom.Size + hv) (Geom.MidY + hv) s] [glyph-proc] - do "Miscellaneous" - create-glyph [MangleName 'uni2389'] [MangleUnicode 0x2389] : glyph-proc - define shiftUp : ApparentTranslate 0 - Math.max - 0.5 * [Math.sqrt 2] * Size.MediumSmall.sw - Geom.Size * (1 - Size.MediumSmall.size) - + do "Diamond minus white X" + create-glyph [MangleName "blackDiamondMinusWhiteX"] [MangleUnicode 0x2756] : glyph-proc set-width Geom.Width - include : refer-glyph : MangleName 'whiteCircle' - include : intersection - refer-glyph : MangleName 'blackCircleO' - union - difference - HBar.m 0 Geom.Width Geom.MidY GeometryStroke - with-transform [ApparentTranslate 0 0.01] : with-transform shiftUp : refer-glyph : MangleName 'blackMediumEqualDiamond' - intersection - MaskBelow (Geom.MidY + GeometryStroke / 2) - with-transform shiftUp : refer-glyph : MangleName 'whiteMediumEqualDiamond' - - create-glyph [MangleName 'uni238A'] [MangleUnicode 0x238A] : glyph-proc - set-width Geom.Width - include : refer-glyph : MangleName 'whiteCircle' - include : intersection - refer-glyph : MangleName 'blackCircleO' - refer-glyph : MangleName 'whiteEqualTriangleDown' + local gap : Math.max (0.2 * Geom.Size) [UnicodeWeightGrade 4 Geom.Scalar] + include : difference + refer-glyph : MangleName "blackDiamond" + dispiro + flat (Geom.MidX - Geom.Size) (Geom.MidY - Geom.Size) [widths.center gap] + curl (Geom.MidX + Geom.Size) (Geom.MidY + Geom.Size) + dispiro + flat (Geom.MidX + Geom.Size) (Geom.MidY - Geom.Size) [widths.center gap] + curl (Geom.MidX - Geom.Size) (Geom.MidY + Geom.Size) do "Moon Phases" alias [MangleName 'newMoon'] [MangleUnicode 0x1F311] [MangleName 'blackCircle'] @@ -282,3 +269,29 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1 composite-proc WaxingMoonMask FlipAround Geom.MidX Geom.MidY + + do "Miscellaneous" + create-glyph [MangleName 'uni2389'] [MangleUnicode 0x2389] : glyph-proc + define shiftUp : ApparentTranslate 0 + Math.max + 0.5 * [Math.sqrt 2] * Size.MediumSmall.sw + Geom.Size * (1 - Size.MediumSmall.size) + + set-width Geom.Width + include : refer-glyph : MangleName 'whiteCircle' + include : intersection + refer-glyph : MangleName 'blackCircleO' + union + difference + HBar.m 0 Geom.Width Geom.MidY GeometryStroke + with-transform [ApparentTranslate 0 0.01] : with-transform shiftUp : refer-glyph : MangleName 'blackMediumEqualDiamond' + intersection + MaskBelow (Geom.MidY + GeometryStroke / 2) + with-transform shiftUp : refer-glyph : MangleName 'whiteMediumEqualDiamond' + + create-glyph [MangleName 'uni238A'] [MangleUnicode 0x238A] : glyph-proc + set-width Geom.Width + include : refer-glyph : MangleName 'whiteCircle' + include : intersection + refer-glyph : MangleName 'blackCircleO' + refer-glyph : MangleName 'whiteEqualTriangleDown' diff --git a/font-src/glyphs/symbol/geometric/plain.ptl b/font-src/glyphs/symbol/geometric/plain.ptl index 54b94254d..ba283ffc8 100644 --- a/font-src/glyphs/symbol/geometric/plain.ptl +++ b/font-src/glyphs/symbol/geometric/plain.ptl @@ -394,7 +394,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 do "Square-lozenge" define [SquareLozengeShape cx cy size] : begin - define p 0.8 + define p 0.7 return : spiro-outline corner (cx - size) (cy + size) g4 cx (cy + p * size) @@ -410,6 +410,24 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 StdWhiteShape SquareLozengeShape 'rotatedWhiteFourPointedCusp' 0x2BCF Size.MediumOblique StdBlackShape SquareLozengeShape 'rotatedBlackFourPointedCusp' 0x2BCD Size.MediumOblique + do "Diamond-lozenge" + define [DiamondLazongeShape cx cy size] : begin + define p 0.7 + return : spiro-outline + corner (cx - size) cy + g4 [mix cx [mix (cx - size) cx 0.5] p] [mix cy [mix cy (cy - size) 0.5] p] + corner cx (cy - size) + g4 [mix cx [mix cx (cx + size) 0.5] p] [mix cy [mix (cy - size) cy 0.5] p] + corner (cx + size) cy + g4 [mix cx [mix (cx + size) cx 0.5] p] [mix cy [mix cy (cy + size) 0.5] p] + corner cx (cy + size) + g4 [mix cx [mix cx (cx - size) 0.5] p] [mix cy [mix (cy + size) cy 0.5] p] + close + + StdWhiteShape DiamondLazongeShape 'whiteConcaveSidedDiamond' 0x27E1 [Object.assign {.} Size.Oblique {.sw ([Math.sqrt 2] * [UnicodeWeightGrade 6 Geom.Scalar])}] + StdBlackShape DiamondLazongeShape 'lightFourPointedBlackCusp' 0x2BCC Size.Oblique + StdWhiteShape DiamondLazongeShape 'whiteFourPointedBlackCusp' 0x2BCE Size.ObliqueSA + do "Circle" define [CircleShape cx cy size] : spiro-outline g4 (cx - size) cy diff --git a/font-src/glyphs/symbol/geometric/shared.ptl b/font-src/glyphs/symbol/geometric/shared.ptl index 285af0c79..dde40c368 100644 --- a/font-src/glyphs/symbol/geometric/shared.ptl +++ b/font-src/glyphs/symbol/geometric/shared.ptl @@ -45,13 +45,15 @@ glyph-block Symbol-Geometric-Shared : begin VerySmall {.size DesignParameters.geometric_very_small_x .sw [Math.min GeometryStroke : AdviceStroke 7 Geom.Scalar]} Tiny {.size DesignParameters.geometric_tiny_x .sw [Math.min GeometryStroke : AdviceStroke 8 Geom.Scalar]} - Oblique { .sw [Math.min GeometryStroke : AdviceStroke 4.75 Geom.Scalar] } + Oblique { .sw [Math.min GeometryStroke : AdviceStroke 4.75 Geom.Scalar] } MediumOblique { .size DesignParameters.geometric_medium_x .sw [Math.min GeometryStroke : AdviceStroke 4.75 Geom.Scalar] } MediumSmallOblique { .size DesignParameters.geometric_medium_small_x .sw [Math.min GeometryStroke : AdviceStroke 5.25 Geom.Scalar] } SmallOblique { .size DesignParameters.geometric_small_x .sw [Math.min GeometryStroke : AdviceStroke 6.25 Geom.Scalar] } VerySmallOblique { .size DesignParameters.geometric_very_small_x .sw [Math.min GeometryStroke : AdviceStroke 7.25 Geom.Scalar] } TinyOblique { .size DesignParameters.geometric_tiny_x .sw [Math.min GeometryStroke : AdviceStroke 8.25 Geom.Scalar] } + ObliqueSA { .sw ([Math.sqrt 2] * [Math.min GeometryStroke : AdviceStroke 4.75 Geom.Scalar]) } + TinyInner { .innerSize (1 / 4) } SmallInner { .innerSize (1 / 3) } MediumInner { .innerSize (2 / 3) }