Skip to content

Commit adf0dc2

Browse files
committed
Fix broken shape of certain power and playback symbols under quasi-proportional (#2528).
1 parent 9a01ef1 commit adf0dc2

File tree

2 files changed

+103
-102
lines changed

2 files changed

+103
-102
lines changed

changes/31.8.0.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
* Optimize stroke width of bar for split bowl variants of Cyrillic Lower Ef (`ф`).
88
* Optimize glyph for Cyrillic Capital Ef (`Ф`) under Bulgarian locale (`'BGR '`) under slab.
99
* Fix seam in glyphs of Cyrillic Capital/Small Letter Zhwe (`U+A684`..`U+A685`).
10+
* Fix broken shape of certain power and playback symbols under quasi-proportional (#2528).

packages/font-glyphs/src/symbol/pictograph/iec-power-and-playback.ptl

+102-102
Original file line numberDiff line numberDiff line change
@@ -7,170 +7,170 @@ glyph-module
77
glyph-block Symbol-Pictograph-IEC-Power-And-Playback : for-width-kinds WideWidth1 : begin
88
glyph-block-import CommonShapes
99
glyph-block-import Common-Derivatives
10+
glyph-block-import Symbol-Geometric-Shared : GeometricDim UnicodeWeightGrade GeometricSizes
1011

11-
define leftFW : 0 + SB * MosaicWidthScalar
12-
define rightFW : MosaicWidth - SB * MosaicWidthScalar
13-
define squareRadiusFW : (rightFW - leftFW) / (2 * [Math.pow MosaicWidthScalar 0.3])
14-
define topFW : SymbolMid + squareRadiusFW
15-
define bottomFW : SymbolMid - squareRadiusFW
16-
17-
define df : DivFrame MosaicWidthScalar
18-
define gap : Math.max (squareRadiusFW / 8 * MosaicWidthScalar) GeometryStroke
12+
define Geom : GeometricDim MosaicUnitWidth MosaicWidth
13+
define Size : GeometricSizes Geom
14+
define gap : Math.max (Geom.Size / 8 * MosaicWidthScalar) GeometryStroke
1915

2016
create-glyph [MangleName 'powerOff'] [MangleUnicode 0x2B58] : glyph-proc
21-
set-width df.width
22-
include : RingStrokeAt df.middle SymbolMid squareRadiusFW GeometryStroke
17+
set-width Geom.Width
18+
include : RingStrokeAt Geom.MidX Geom.MidY Geom.Size GeometryStroke
2319

2420
create-glyph [MangleName 'heavyCircledSaltire'] [MangleUnicode 0x2B59] : glyph-proc
25-
set-width df.width
26-
include : RingStrokeAt df.middle SymbolMid squareRadiusFW GeometryStroke
21+
set-width Geom.Width
22+
include : RingStrokeAt Geom.MidX Geom.MidY Geom.Size GeometryStroke
2723
include : intersection
28-
RingAt df.middle SymbolMid squareRadiusFW
24+
RingAt Geom.MidX Geom.MidY Geom.Size
2925
union
30-
dispiro [widths.center GeometryStroke] [flat leftFW topFW] [curl rightFW bottomFW]
31-
dispiro [widths.center GeometryStroke] [flat leftFW bottomFW] [curl rightFW topFW]
26+
dispiro [widths.center GeometryStroke]
27+
flat Geom.Left Geom.Top
28+
curl Geom.Right Geom.Bot
29+
dispiro [widths.center GeometryStroke]
30+
flat Geom.Left Geom.Bot
31+
curl Geom.Right Geom.Top
3232

3333
create-glyph [MangleName 'powerOn'] [MangleUnicode 0x23FD] : glyph-proc
34-
set-width df.width
34+
set-width Geom.Width
3535
include : Rect
36-
SymbolMid + squareRadiusFW
37-
SymbolMid - squareRadiusFW
38-
df.middle - [HSwToV : 0.5 * GeometryStroke]
39-
df.middle + [HSwToV : 0.5 * GeometryStroke]
36+
Geom.MidY + Geom.Size
37+
Geom.MidY - Geom.Size
38+
Geom.MidX - [HSwToV : 0.5 * GeometryStroke]
39+
Geom.MidX + [HSwToV : 0.5 * GeometryStroke]
4040

4141
create-glyph [MangleName 'powerOnOff'] [MangleUnicode 0x23FC] : glyph-proc
42-
set-width df.width
42+
set-width Geom.Width
4343
include : refer-glyph [MangleName 'powerOff']
4444
include : Rect
45-
SymbolMid + squareRadiusFW - GeometryStroke - gap
46-
SymbolMid - squareRadiusFW + GeometryStroke + gap
47-
df.middle - [HSwToV : 0.5 * GeometryStroke]
48-
df.middle + [HSwToV : 0.5 * GeometryStroke]
45+
Geom.MidY + Geom.Size - GeometryStroke - gap
46+
Geom.MidY - Geom.Size + GeometryStroke + gap
47+
Geom.MidX - [HSwToV : 0.5 * GeometryStroke]
48+
Geom.MidX + [HSwToV : 0.5 * GeometryStroke]
4949

5050
create-glyph [MangleName 'powerStandby'] [MangleUnicode 0x23FB] : glyph-proc
51-
set-width df.width
51+
set-width Geom.Width
5252
include : union
5353
difference
5454
refer-glyph [MangleName 'powerOff']
5555
spiro-outline
56-
corner df.middle SymbolMid
57-
corner (df.middle - gap * 4 - [HSwToV GeometryStroke]) (SymbolMid + squareRadiusFW * 2)
58-
corner (df.middle + gap * 4 + [HSwToV GeometryStroke]) (SymbolMid + squareRadiusFW * 2)
56+
corner Geom.MidX Geom.MidY
57+
corner (Geom.MidX - gap * 4 - [HSwToV GeometryStroke]) (Geom.MidY + Geom.Size * 2)
58+
corner (Geom.MidX + gap * 4 + [HSwToV GeometryStroke]) (Geom.MidY + Geom.Size * 2)
5959
Rect
60-
SymbolMid + 1.125 * squareRadiusFW
61-
SymbolMid - 0.0 * squareRadiusFW
62-
df.middle - [HSwToV : 0.5 * GeometryStroke]
63-
df.middle + [HSwToV : 0.5 * GeometryStroke]
60+
Geom.MidY + 1.125 * Geom.Size
61+
Geom.MidY - 0.0 * Geom.Size
62+
Geom.MidX - [HSwToV : 0.5 * GeometryStroke]
63+
Geom.MidX + [HSwToV : 0.5 * GeometryStroke]
6464

6565
create-glyph [MangleName 'powerSleep'] [MangleUnicode 0x23FE] : glyph-proc
66-
set-width df.width
66+
set-width Geom.Width
6767
include : difference
68-
Circle.Outline.At df.middle SymbolMid squareRadiusFW
68+
Circle.Outline.At Geom.MidX Geom.MidY Geom.Size
6969
Circle.Outline.At
70-
df.middle + squareRadiusFW * 0.5
71-
SymbolMid + squareRadiusFW * 0.35
72-
squareRadiusFW * 1.1
73-
include : Translate (squareRadiusFW * 0.15) 0
70+
Geom.MidX + Geom.Size * 0.5
71+
Geom.MidY + Geom.Size * 0.35
72+
Geom.Size * 1.1
73+
include : Translate (Geom.Size * 0.15) 0
7474

7575
create-glyph [MangleName 'playback/record'] [MangleUnicode 0x23FA] : glyph-proc
76-
set-width df.width
77-
include : RingAt df.middle SymbolMid squareRadiusFW GeometryStroke
76+
set-width Geom.Width
77+
include : RingAt Geom.MidX Geom.MidY Geom.Size GeometryStroke
7878

7979
create-glyph [MangleName 'playback/stop'] [MangleUnicode 0x23F9] : glyph-proc
80-
set-width df.width
81-
include : Rect (SymbolMid + squareRadiusFW) (SymbolMid - squareRadiusFW) (df.middle - squareRadiusFW) (df.middle + squareRadiusFW)
80+
set-width Geom.Width
81+
include : Rect (Geom.MidY + Geom.Size) (Geom.MidY - Geom.Size) (Geom.MidX - Geom.Size) (Geom.MidX + Geom.Size)
8282

8383
create-glyph [MangleName 'playback/pause'] [MangleUnicode 0x23F8] : glyph-proc
84-
set-width df.width
85-
include : Rect (SymbolMid + squareRadiusFW) (SymbolMid - squareRadiusFW) (df.middle - squareRadiusFW) (df.middle - squareRadiusFW / 3)
86-
include : Rect (SymbolMid + squareRadiusFW) (SymbolMid - squareRadiusFW) (df.middle + squareRadiusFW / 3) (df.middle + squareRadiusFW)
84+
set-width Geom.Width
85+
include : Rect (Geom.MidY + Geom.Size) (Geom.MidY - Geom.Size) (Geom.MidX - Geom.Size) (Geom.MidX - Geom.Size / 3)
86+
include : Rect (Geom.MidY + Geom.Size) (Geom.MidY - Geom.Size) (Geom.MidX + Geom.Size / 3) (Geom.MidX + Geom.Size)
8787

88-
local trigRad : squareRadiusFW - O
88+
local trigRad : Geom.Size - O
8989
create-glyph [MangleName 'playback/down'] [MangleUnicode 0x23F7] : glyph-proc
90-
set-width df.width
90+
set-width Geom.Width
9191
include : spiro-outline
92-
corner (df.middle - trigRad) (SymbolMid + trigRad / 2)
93-
corner (df.middle + trigRad) (SymbolMid + trigRad / 2)
94-
corner (df.middle) (SymbolMid - trigRad / 2)
92+
corner (Geom.MidX - trigRad) (Geom.MidY + trigRad / 2)
93+
corner (Geom.MidX + trigRad) (Geom.MidY + trigRad / 2)
94+
corner (Geom.MidX) (Geom.MidY - trigRad / 2)
9595

9696
create-glyph [MangleName 'playback/up'] [MangleUnicode 0x23F6] : glyph-proc
97-
set-width df.width
97+
set-width Geom.Width
9898
include : spiro-outline
99-
corner (df.middle - trigRad) (SymbolMid - trigRad / 2)
100-
corner (df.middle + trigRad) (SymbolMid - trigRad / 2)
101-
corner (df.middle) (SymbolMid + trigRad / 2)
99+
corner (Geom.MidX - trigRad) (Geom.MidY - trigRad / 2)
100+
corner (Geom.MidX + trigRad) (Geom.MidY - trigRad / 2)
101+
corner (Geom.MidX) (Geom.MidY + trigRad / 2)
102102

103103
create-glyph [MangleName 'playback/right'] [MangleUnicode 0x23F5] : glyph-proc
104-
set-width df.width
104+
set-width Geom.Width
105105
include : spiro-outline
106-
corner (df.middle - trigRad / 2) (SymbolMid - trigRad)
107-
corner (df.middle - trigRad / 2) (SymbolMid + trigRad)
108-
corner (df.middle + trigRad / 2) (SymbolMid)
106+
corner (Geom.MidX - trigRad / 2) (Geom.MidY - trigRad)
107+
corner (Geom.MidX - trigRad / 2) (Geom.MidY + trigRad)
108+
corner (Geom.MidX + trigRad / 2) (Geom.MidY)
109109

110110
create-glyph [MangleName 'playback/left'] [MangleUnicode 0x23F4] : glyph-proc
111-
set-width df.width
111+
set-width Geom.Width
112112
include : spiro-outline
113-
corner (df.middle + trigRad / 2) (SymbolMid - trigRad)
114-
corner (df.middle + trigRad / 2) (SymbolMid + trigRad)
115-
corner (df.middle - trigRad / 2) (SymbolMid)
113+
corner (Geom.MidX + trigRad / 2) (Geom.MidY - trigRad)
114+
corner (Geom.MidX + trigRad / 2) (Geom.MidY + trigRad)
115+
corner (Geom.MidX - trigRad / 2) (Geom.MidY)
116116

117117
create-glyph [MangleName 'playback/eject'] [MangleUnicode 0x23CF] : glyph-proc
118-
set-width df.width
119-
include : Rect (SymbolMid - squareRadiusFW / 3) (SymbolMid - squareRadiusFW) (df.middle - squareRadiusFW) (df.middle + squareRadiusFW)
118+
set-width Geom.Width
119+
include : Rect (Geom.MidY - Geom.Size / 3) (Geom.MidY - Geom.Size) (Geom.MidX - Geom.Size) (Geom.MidX + Geom.Size)
120120
include : spiro-outline
121-
corner (df.middle - trigRad) (SymbolMid)
122-
corner (df.middle + trigRad) (SymbolMid)
123-
corner (df.middle) (SymbolMid + trigRad)
121+
corner (Geom.MidX - trigRad) (Geom.MidY)
122+
corner (Geom.MidX + trigRad) (Geom.MidY)
123+
corner (Geom.MidX) (Geom.MidY + trigRad)
124124

125125
create-glyph [MangleName 'playback/fastForward'] [MangleUnicode 0x23E9] : glyph-proc
126-
set-width df.width
126+
set-width Geom.Width
127127
include : spiro-outline
128-
corner (df.middle - trigRad) (SymbolMid - trigRad)
129-
corner (df.middle - trigRad) (SymbolMid + trigRad)
130-
corner df.middle SymbolMid
128+
corner (Geom.MidX - trigRad) (Geom.MidY - trigRad)
129+
corner (Geom.MidX - trigRad) (Geom.MidY + trigRad)
130+
corner Geom.MidX Geom.MidY
131131
include : spiro-outline
132-
corner df.middle (SymbolMid - trigRad)
133-
corner df.middle (SymbolMid + trigRad)
134-
corner (df.middle + trigRad) SymbolMid
132+
corner Geom.MidX (Geom.MidY - trigRad)
133+
corner Geom.MidX (Geom.MidY + trigRad)
134+
corner (Geom.MidX + trigRad) Geom.MidY
135135

136136
create-glyph [MangleName 'playback/fastForwardToEnd'] [MangleUnicode 0x23ED] : glyph-proc
137-
set-width df.width
138-
local sw : Math.max [AdviceStroke (6 * [Math.sqrt df.div]) df.div] (trigRad / 6)
137+
set-width Geom.Width
138+
local sw : Math.max [AdviceStroke (6 * [Math.sqrt Geom.Scalar]) Geom.Scalar] (trigRad / 6)
139139
local swh : HSwToV sw
140140
include : spiro-outline
141-
corner (df.middle - trigRad) (SymbolMid - trigRad)
142-
corner (df.middle - trigRad) (SymbolMid + trigRad)
143-
corner (df.middle - swh / 2) SymbolMid
141+
corner (Geom.MidX - trigRad) (Geom.MidY - trigRad)
142+
corner (Geom.MidX - trigRad) (Geom.MidY + trigRad)
143+
corner (Geom.MidX - swh / 2) Geom.MidY
144144
include : spiro-outline
145-
corner (df.middle - swh / 2) (SymbolMid - trigRad)
146-
corner (df.middle - swh / 2) (SymbolMid + trigRad)
147-
corner (df.middle + trigRad - swh) SymbolMid
148-
include : VBar.r (df.middle + trigRad) (SymbolMid - trigRad) (SymbolMid + trigRad) sw
145+
corner (Geom.MidX - swh / 2) (Geom.MidY - trigRad)
146+
corner (Geom.MidX - swh / 2) (Geom.MidY + trigRad)
147+
corner (Geom.MidX + trigRad - swh) Geom.MidY
148+
include : VBar.r (Geom.MidX + trigRad) (Geom.MidY - trigRad) (Geom.MidY + trigRad) sw
149149

150150
create-glyph [MangleName 'playback/playOrStop'] [MangleUnicode 0x23EF] : glyph-proc
151-
set-width df.width
152-
local sw : Math.max [AdviceStroke (6 * [Math.sqrt df.div]) df.div] (trigRad / 6)
151+
set-width Geom.Width
152+
local sw : Math.max [AdviceStroke (6 * [Math.sqrt Geom.Scalar]) Geom.Scalar] (trigRad / 6)
153153
local swh : HSwToV sw
154-
local gap : Math.max [AdviceStroke (4 * [Math.sqrt df.div]) df.div] (trigRad / 4)
154+
local gap : Math.max [AdviceStroke (4 * [Math.sqrt Geom.Scalar]) Geom.Scalar] (trigRad / 4)
155155
local width : trigRad + swh * 2 + gap
156156
include : spiro-outline
157-
corner (df.middle - width / 2) (SymbolMid - trigRad)
158-
corner (df.middle - width / 2) (SymbolMid + trigRad)
159-
corner (df.middle - width / 2 + trigRad) SymbolMid
160-
include : VBar.r (df.middle + width / 2 - swh - gap) (SymbolMid - trigRad) (SymbolMid + trigRad) sw
161-
include : VBar.r (df.middle + width / 2) (SymbolMid - trigRad) (SymbolMid + trigRad) sw
157+
corner (Geom.MidX - width / 2) (Geom.MidY - trigRad)
158+
corner (Geom.MidX - width / 2) (Geom.MidY + trigRad)
159+
corner (Geom.MidX - width / 2 + trigRad) Geom.MidY
160+
include : VBar.r (Geom.MidX + width / 2 - swh - gap) (Geom.MidY - trigRad) (Geom.MidY + trigRad) sw
161+
include : VBar.r (Geom.MidX + width / 2) (Geom.MidY - trigRad) (Geom.MidY + trigRad) sw
162162

163163
create-glyph [MangleName 'playback/fastUpward'] [MangleUnicode 0x23EB] : glyph-proc
164-
set-width df.width
164+
set-width Geom.Width
165165
include : spiro-outline
166-
corner (df.middle - trigRad) (SymbolMid - trigRad)
167-
corner (df.middle + trigRad) (SymbolMid - trigRad)
168-
corner (df.middle) SymbolMid
166+
corner (Geom.MidX - trigRad) (Geom.MidY - trigRad)
167+
corner (Geom.MidX + trigRad) (Geom.MidY - trigRad)
168+
corner (Geom.MidX) Geom.MidY
169169
include : spiro-outline
170-
corner (df.middle - trigRad) SymbolMid
171-
corner (df.middle + trigRad) SymbolMid
172-
corner (df.middle) (SymbolMid + trigRad)
170+
corner (Geom.MidX - trigRad) Geom.MidY
171+
corner (Geom.MidX + trigRad) Geom.MidY
172+
corner (Geom.MidX) (Geom.MidY + trigRad)
173173

174-
turned [MangleName 'playback/fastBackward'] [MangleUnicode 0x23EA] [MangleName 'playback/fastForward'] df.middle SymbolMid
175-
turned [MangleName 'playback/fastBackwardToEnd'] [MangleUnicode 0x23EE] [MangleName 'playback/fastForwardToEnd'] df.middle SymbolMid
176-
turned [MangleName 'playback/fastDownward'] [MangleUnicode 0x23EC] [MangleName 'playback/fastUpward'] df.middle SymbolMid
174+
turned [MangleName 'playback/fastBackward'] [MangleUnicode 0x23EA] [MangleName 'playback/fastForward'] Geom.MidX Geom.MidY
175+
turned [MangleName 'playback/fastBackwardToEnd'] [MangleUnicode 0x23EE] [MangleName 'playback/fastForwardToEnd'] Geom.MidX Geom.MidY
176+
turned [MangleName 'playback/fastDownward'] [MangleUnicode 0x23EC] [MangleName 'playback/fastUpward'] Geom.MidX Geom.MidY

0 commit comments

Comments
 (0)