Some more technical symbols (#2338)

* hourglass

* bell

* extra clock stuff

* doc
This commit is contained in:
Logo 2024-05-21 08:11:32 +08:00 committed by GitHub
parent d6a49822d3
commit 553da2df08
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 248 additions and 23 deletions

View file

@ -1,5 +1,8 @@
* Reduce fully-serifed variants of turned m (`U+019C`, `U+026F`, `U+0270`) and Cyrillic Italic Lower {Sha|Scha} (`U+0448`, `U+0449`) under monospace.
* Add characters:
- WATCH (`U+231A`).
- HOURGLASS (`U+231B`).
- ALARM CLOCK (`U+23F0`) ... HOURGLASS WITH FLOWING SAND (`U+23F3`).
- SQUAT BLACK RIGHTWARDS ARROW (`U+27A7`).
- CYRILLIC CAPITAL LETTER CCHE (`U+A686`).
- CYRILLIC SMALL LETTER CCHE (`U+A687`).
@ -9,5 +12,7 @@
- LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG (`U+AB4F`).
- LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK (`U+1DF12`).
- LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK (`U+1DF17`).
- WINE GLASS (`U+1F377`).
- BELL (`U+1F514`).
- LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD (`U+1F800`) ... DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD (`U+1F80B`).
- LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD (`U+1F810`) ... DOWNWARDS HEAVY ARROW (`U+1F847`).

View file

@ -359,8 +359,8 @@ glyph-block CommonShapes : begin
widths.center sw
flat x ydown [heading : if (ydown < yup) Upward Downward]
curl x yup [heading : if (ydown < yup) Upward Downward]
export : define [l x yd yu _sw] : m (x + [fallback _sw Stroke] * 0.5 * HVContrast) yd yu _sw
export : define [r x yd yu _sw] : m (x - [fallback _sw Stroke] * 0.5 * HVContrast) yd yu _sw
export : define [l x yd yu _sw] : m (x + [HSwToV : [fallback _sw Stroke] * 0.5]) yd yu _sw
export : define [r x yd yu _sw] : m (x - [HSwToV : [fallback _sw Stroke] * 0.5]) yd yu _sw
glyph-block-export HOverlayBar
define [HOverlayBar xleft xright y s] : dispiro

View file

@ -44,9 +44,9 @@ glyph-block Letter-Latin-Lower-R : begin
local rSerifRightJut : rSerifLeftJut * 1.20
export : local [rBottomSerif y] : glyph-proc
include : tagged 'serifLB' : union
HSerif.lb rSerifX y (rSerifLeftJut + [HSwToV: 0.5 * strokeBar])
HSerif.rb rSerifX y (rSerifRightJut + [HSwToV: 0.5 * strokeBar])
local xAtt : rSerifX + rSerifRightJut + [HSwToV: 0.5 * strokeBar]
HSerif.lb rSerifX y (rSerifLeftJut + [HSwToV : 0.5 * strokeBar])
HSerif.rb rSerifX y (rSerifRightJut + [HSwToV : 0.5 * strokeBar])
local xAtt : rSerifX + rSerifRightJut + [HSwToV : 0.5 * strokeBar]
set-base-anchor 'palatalHookAttach' xAtt y
set-base-anchor 'palatalHookPos' xAtt y

View file

@ -5,6 +5,7 @@ export : define [apply] : begin
run-glyph-module "./pictograph/astronomy.mjs"
run-glyph-module "./pictograph/atom.mjs"
run-glyph-module "./pictograph/bell.mjs"
run-glyph-module "./pictograph/bolt-symbol.mjs"
run-glyph-module "./pictograph/checking-marks.mjs"
run-glyph-module "./pictograph/clock.mjs"
@ -13,6 +14,7 @@ export : define [apply] : begin
run-glyph-module "./pictograph/flags.mjs"
run-glyph-module "./pictograph/game-sprite.mjs"
run-glyph-module "./pictograph/heart.mjs"
run-glyph-module "./pictograph/hourglass.mjs"
run-glyph-module "./pictograph/i-ching.mjs"
run-glyph-module "./pictograph/iec-power-and-playback.mjs"
run-glyph-module "./pictograph/keyboard.mjs"

View file

@ -0,0 +1,44 @@
$$include '../../meta/macros.ptl'
import [mix linreg clamp fallback] from "@iosevka/util"
import [Box] from "@iosevka/geometry/box"
glyph-module
glyph-block Symbol-Pictograph-Bell : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Symbol-Geometric-Shared : GeometricDim
for-width-kinds WideWidth1 : begin
define Geom : GeometricDim MosaicUnitWidth MosaicWidth
define clapperRad : Geom.Size * 0.2
define top : mix PictBot PictTop (0.7 + 0.1 * MosaicWidthScalar)
define bot : mix PictBot PictTop (0.3 - 0.1 * MosaicWidthScalar)
define bellTop : mix bot top 0.9
define bellBot : mix bot top 0.2
define px1 0.2
define py1 : 1 / 3
define py2 : 2 / 3
create-glyph [MangleName 'bell'] [MangleUnicode 0x1F514] : glyph-proc
set-width Geom.Width
include : spiro-outline
straight.right.start Geom.Left bellBot
archv
flat [mix Geom.Left Geom.Right px1] [mix bellBot bellTop py1]
curl [mix Geom.Left Geom.Right px1] [mix bellBot bellTop py2]
arcvh
g4 Geom.MidX bellTop
archv
flat [mix Geom.Right Geom.Left px1] [mix bellBot bellTop py2]
curl [mix Geom.Right Geom.Left px1] [mix bellBot bellTop py1]
arcvh
straight.right.end Geom.Right bellBot
include : HBar.t Geom.Left Geom.Right bellBot GeometryStroke
include : DotAt Geom.MidX (bot + clapperRad) clapperRad
include : VBar.m Geom.MidX bellBot top GeometryStroke

View file

@ -14,29 +14,99 @@ glyph-block Symbol-Geometric-Clock : for-width-kinds WideWidth1
define pHour 0.6
define pMin 0.8
define pSec 0.9
define extLightSw : UnicodeWeightGrade 2 Geom.Scalar
define lightSw : UnicodeWeightGrade 3 Geom.Scalar
define mediumSw : UnicodeWeightGrade 5 Geom.Scalar
define [patterns min su] : foreach [hr: range 0 12] : begin
local name : 'clock' + [(hr + 1).toString 10 :.padStart 2 '0'] + [min.toString 10 :.padStart 2 '0']
create-glyph [MangleName name] [MangleUnicode (su + hr)] : glyph-proc
define dotSize : Math.max (0.6 * mediumSw) (0.1 * Geom.Size)
define [ClockRing] : glyph-proc
include : RingStrokeAt Geom.MidX Geom.MidY Geom.Size mediumSw
include : Circle.Outline.At Geom.MidX Geom.MidY dotSize
define [ClockHand angle pLen sw _swTip] : glyph-proc
local swTip : fallback _swTip sw
include : dispiro
corner Geom.MidX Geom.MidY [widths.center sw]
corner
Geom.MidX + (Geom.Size - mediumSw) * pLen * [Math.sin angle]
Geom.MidY + (Geom.Size - mediumSw) * pLen * [Math.cos angle]
widths.center swTip
define [ClockShape hr min] : glyph-proc
local minAngle : 2 * Math.PI * (min / 60)
local hrAngle : 2 * Math.PI * ((min / 60 + hr) / 12)
include : ClockRing
include : ClockHand hrAngle pHour mediumSw
include : ClockHand minAngle pMin lightSw
define [patterns min su] : foreach [hr : range 1 till 12] : begin
local name : 'clock' + [hr.toString 10 :.padStart 2 '0'] + [min.toString 10 :.padStart 2 '0']
create-glyph [MangleName name] [MangleUnicode (su + hr - 1)] : glyph-proc
set-width MosaicWidth
include : RingStrokeAt Geom.MidX Geom.MidY Geom.Size mediumSw
include : Circle.Outline.At Geom.MidX Geom.MidY [Math.max (0.6 * mediumSw) (0.1 * Geom.Size)]
local minAngle : 2 * Math.PI * (min / 60)
include : dispiro
corner Geom.MidX Geom.MidY [widths.center lightSw]
corner
Geom.MidX + (Geom.Size - mediumSw) * pMin * [Math.sin minAngle]
Geom.MidY + (Geom.Size - mediumSw) * pMin * [Math.cos minAngle]
local hrAngle : 2 * Math.PI * ((min / 60 + hr + 1) / 12)
include : dispiro
corner Geom.MidX Geom.MidY [widths.center mediumSw]
corner
Geom.MidX + (Geom.Size - mediumSw) * pHour * [Math.sin hrAngle]
Geom.MidY + (Geom.Size - mediumSw) * pHour * [Math.cos hrAngle]
include : ClockShape hr min
patterns 0 0x1F550
patterns 30 0x1F55C
create-glyph [MangleName 'watch'] [MangleUnicode 0x231A] : glyph-proc
set-width MosaicWidth
include : ClockShape 10 10
include : difference
Rect PictTop PictBot (Geom.MidX - Geom.Size / 2) (Geom.MidX + Geom.Size / 2)
RingAt Geom.MidX Geom.MidY (Geom.Size - 1)
create-glyph [MangleName 'alarm'] [MangleUnicode 0x23F0] : glyph-proc
set-width MosaicWidth
include : ClockShape 7 0
include : difference
union
dispiro
corner (Geom.MidX - Geom.Size * 0.6) Geom.Bot [widths.center.heading lightSw Upward]
corner (Geom.MidX - Geom.Size * 0.3) Geom.MidY
dispiro
corner (Geom.MidX + Geom.Size * 0.6) Geom.Bot [widths.center.heading lightSw Upward]
corner (Geom.MidX + Geom.Size * 0.3) Geom.MidY
dispiro
corner Geom.MidX Geom.MidY [widths.center lightSw]
corner Geom.MidX (Geom.MidY + Geom.Size * 1.15)
RingAt Geom.MidX Geom.MidY (Geom.Size - 1)
include : difference
union
dispiro
corner (Geom.MidX - Geom.Size * 0.6) (Geom.MidY + Geom.Size * 1.1) [widths.center (Geom.Size / 3)]
corner (Geom.MidX - Geom.Size * 0.3) Geom.MidY
dispiro
corner (Geom.MidX + Geom.Size * 0.6) (Geom.MidY + Geom.Size * 1.1) [widths.center (Geom.Size / 3)]
corner (Geom.MidX + Geom.Size * 0.3) Geom.MidY
RingAt Geom.MidX Geom.MidY (Geom.Size + extLightSw)
create-glyph [MangleName 'stopwatch'] [MangleUnicode 0x23F1] : glyph-proc
set-width MosaicWidth
include : ClockRing
include : ClockHand 0 pSec extLightSw
include : difference
union
dispiro
corner Geom.MidX Geom.MidY [widths.center (Geom.Size / 3)]
corner Geom.MidX (Geom.MidY + Geom.Size * 1.25 + extLightSw * 0.5)
dispiro
corner Geom.MidX Geom.MidY [widths.center mediumSw]
corner (Geom.MidX + Geom.Size * 0.95) (Geom.MidY + Geom.Size * 0.95)
RingAt Geom.MidX Geom.MidY (Geom.Size + extLightSw)
create-glyph [MangleName 'timer'] [MangleUnicode 0x23F2] : glyph-proc
set-width MosaicWidth
include : ClockRing
include : ClockHand (Math.PI * 5 / 3) pMin (2 * dotSize) lightSw

View file

@ -0,0 +1,104 @@
$$include '../../meta/macros.ptl'
import [mix linreg clamp fallback] from "@iosevka/util"
import [Box] from "@iosevka/geometry/box"
glyph-module
glyph-block Symbol-Pictograph-Hourglass : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Symbol-Geometric-Shared : GeometricDim
define [HourglassShape bound sw _swRef] : begin
local swRef : fallback _swRef sw
local left : bound.left + [HSwToV : 0.5 * swRef]
local right : bound.right - [HSwToV : 0.5 * swRef]
local curveL : list
straight.down.start left bound.top [heading Downward]
alsoThru 0 0.45
flat [bound.mixX 0.3] [bound.mixY 0.6]
curl [bound.mixX 0.7] [bound.mixY 0.4]
alsoThru 1 0.55
straight.down.end right bound.bottom [heading Downward]
local curveR : list
straight.up.start left bound.bottom [heading Upward]
alsoThru 0 0.45
flat [bound.mixX 0.3] [bound.mixY 0.4]
curl [bound.mixX 0.7] [bound.mixY 0.6]
alsoThru 1 0.55
straight.up.end right bound.top [heading Upward]
return : if sw
union
HBar.t bound.left bound.right bound.top [mix sw swRef 0.5]
HBar.b bound.left bound.right bound.bottom [mix sw swRef 0.5]
dispiro [widths.center sw] curveL
dispiro [widths.center sw] curveR
spiro-outline curveL curveR
for-width-kinds WideWidth1 : begin
define Geom : GeometricDim MosaicUnitWidth MosaicWidth
define Bound : new Box PictTop PictBot Geom.Left Geom.Right
define sandSlope 0.3
define sandFill1 0.33
define sandFill2 0.15
define sandFill3 0.8
create-glyph [MangleName 'hourglass'] [MangleUnicode 0x231B] : glyph-proc
set-width Geom.Width
include : HourglassShape Bound GeometryStroke
local mask : HourglassShape Bound (GeometryStroke * 2) GeometryStroke
local mask2 : HourglassShape Bound 0 GeometryStroke
local sandBot : Bound.bottom + GeometryStroke
local sandTop : mix sandBot (Bound.top - GeometryStroke) sandFill1
local sandRad : (Bound.top - Bound.bottom - GeometryStroke) * sandFill1 / sandSlope
local sand : spiro-outline
corner (Bound.xMid - sandRad) sandBot
corner (Bound.xMid + sandRad) sandBot
corner Bound.xMid sandTop
include : difference [intersection sand mask2] mask
create-glyph [MangleName 'hourglassFlowing'] [MangleUnicode 0x23F3] : glyph-proc
set-width Geom.Width
include : HourglassShape Bound GeometryStroke
local mask : HourglassShape Bound (GeometryStroke * 2) GeometryStroke
local mask2 : HourglassShape Bound 0 GeometryStroke
local sandBot : Bound.bottom + GeometryStroke
local sandTop : mix sandBot (Bound.top - GeometryStroke) sandFill2
local sandRad : (Bound.top - Bound.bottom - GeometryStroke) * sandFill2 / sandSlope
local sand : union
spiro-outline
corner (Bound.xMid - sandRad) sandBot
corner (Bound.xMid + sandRad) sandBot
corner Bound.xMid sandTop
Rect [Bound.mixY sandFill3] Bound.yMid Bound.left Bound.right
VBar.m Bound.xMid Bound.bottom Bound.yMid [AdviceStroke 10]
include : difference [intersection sand mask2] mask
create-glyph [MangleName 'wineglass'] [MangleUnicode 0x1F377] : glyph-proc
set-width Geom.Width
include : HBar.b Geom.Left Geom.Right PictBot GeometryStroke
include : HBar.t Geom.Left Geom.Right PictTop GeometryStroke
include : VBar.m Geom.MidX PictBot SymbolMid GeometryStroke
include : dispiro
widths.lhs GeometryStroke
straight.down.start Geom.Left PictTop [heading Downward]
curl Geom.Left (SymbolMid - GeometryStroke / 2 + ArchDepthB)
arcvh
g4 Geom.MidX (SymbolMid - GeometryStroke / 2)
archv
flat Geom.Right (SymbolMid - GeometryStroke / 2 + ArchDepthA)
straight.up.end Geom.Right PictTop [heading Upward]