Add Musical Symbol Fermata.

This commit is contained in:
John McWilliams 2025-04-25 05:53:00 -04:00
parent 6fed8d9dfb
commit b20e1cf632
5 changed files with 48 additions and 23 deletions

View file

@ -11,3 +11,6 @@
- LATIN SMALL LETTER VOLAPUK UE (`U+A79F`).
- MODIFIER LETTER SMALL CAPITAL G WITH HOOK (`U+10794`).
- MUSICAL SYMBOL DOUBLE SHARP (`U+1D12A`).
* Add Characters:
- MUSICAL SYMBOL FERMATA (`U+1D110`).
- MUSICAL SYMBOL FERMATA BELOW (`U+1D111`).

View file

@ -357,47 +357,47 @@ glyph-block Mark-Above : begin
set-width 0
include : StdAnchors.wide
include : TildeShape
ttop -- aboveMarkTop
tbot -- aboveMarkBot + markFine / 2
ttop -- aboveMarkTop
tbot -- aboveMarkBot + markFine / 2
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- markHalfStroke
hs -- markHalfStroke
create-glyph 'asciiTilde.high' : glyph-proc
include : TildeShape
ttop -- [mix aboveMarkMid aboveMarkTop asciiMarkZoomY]
tbot -- [mix aboveMarkMid (aboveMarkBot + markFine / 2) asciiMarkZoomY]
ttop -- [mix aboveMarkMid aboveMarkTop asciiMarkZoomY]
tbot -- [mix aboveMarkMid (aboveMarkBot + markFine / 2) asciiMarkZoomY]
leftEnd -- SB
rightEnd -- RightSB
hs -- (OperatorStroke / 2)
hs -- (OperatorStroke / 2)
for-width-kinds WideWidth1
define emDashWidth : if (para.isQuasiProportional && MosaicWidthScalar > 1) UPM MosaicWidth
create-glyph [MangleName 'swungDash.high'] : glyph-proc
set-width emDashWidth
include : TildeShape
ttop -- [mix aboveMarkMid aboveMarkTop asciiMarkZoomY]
tbot -- [mix aboveMarkMid (aboveMarkBot + markFine / 2) asciiMarkZoomY]
ttop -- [mix aboveMarkMid aboveMarkTop asciiMarkZoomY]
tbot -- [mix aboveMarkMid (aboveMarkBot + markFine / 2) asciiMarkZoomY]
leftEnd -- SB
rightEnd -- (emDashWidth - SB)
hs -- (OperatorStroke / 2)
hs -- (OperatorStroke / 2)
define [OverlayTildeT sink] : begin
local t : mix aboveMarkMid aboveMarkTop asciiMarkZoomY
local b : mix aboveMarkMid (aboveMarkBot + markFine / 2) asciiMarkZoomY
local offset : SymbolMid - [mix t b (1 / 2)]
return : sink
ttop -- (t + offset)
tbot -- (b + offset)
ttop -- (t + offset)
tbot -- (b + offset)
leftEnd -- [mix 0 SB (1/3)]
rightEnd -- [mix Width RightSB (1/3)]
hs -- ([AdviceStroke 4] / 2)
hs -- ([AdviceStroke 4] / 2)
create-glyph 'overlayTildeOperator' : glyph-proc
include : OverlayTildeT TildeShape
create-glyph 'overlayTildeOperatorAboveMask' : glyph-proc
define FarRight : Width * 4
define FarRight : (+Width) * 4
define FarLeft : (-Width) * 3
define FarAbove : CAP * 4
@ -424,11 +424,11 @@ glyph-block Mark-Above : begin
local fine : [AdviceStroke 4.5] / 2
include : TildeShape
ttop -- ttop
tbot -- tbot
ttop -- ttop
tbot -- tbot
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- fine
hs -- fine
create-forked-glyph 'tildeSlashAbove' 0x34A : glyph-proc
include : dispiro
@ -453,11 +453,11 @@ glyph-block Mark-Above : begin
local tbot : mix m (aboveMarkBot + markFine / 2) 0.7
define [addTilde] : TildeShape
ttop -- ttop
tbot -- tbot
ttop -- ttop
tbot -- tbot
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- ([AdviceStroke 4.5] / 2)
hs -- ([AdviceStroke 4.5] / 2)
local shift : (ttop - tbot) * 1.2
include : addTilde
@ -482,7 +482,7 @@ glyph-block Mark-Above : begin
include : StdAnchors.impl 'above' 0 2
include : dispiro
flat (0 - Width) aboveMarkMid [widths.center : 2 * markHalfStroke]
curl 0 aboveMarkMid
curl 0 aboveMarkMid
create-glyph 'sbRsbOverlineAbove' : glyph-proc
set-width 0
@ -810,6 +810,22 @@ glyph-block Mark-Above : begin
include : DrawAt markMiddle yDot (fine * kdr)
include : ApparentTranslate 0 (fine * 0.5)
include : StdAnchors.mediumWide
create-glyph "largeFermataAbove.\(suffix)" : glyph-proc
set-width 0
local fine : AdviceStroke 6.5 asciiMarkZoomX
local arcSw : Math.min markStroke (fine * 1.25)
local radius : Math.max (asciiMarkZoomX * markExtend - DotRadius) (fine * 1.35)
local yDot : mix [mix aboveMarkMid aboveMarkBot asciiMarkZoomY] [mix aboveMarkMid aboveMarkTop asciiMarkZoomY] 0.375
include : dispiro
widths.lhs arcSw
g4.up.start (markMiddle - radius) yDot [heading Upward]
arcvh
g4.right.mid markMiddle (yDot + radius)
archv
g4.down.end (markMiddle + radius) yDot [heading Downward]
include : DrawAt markMiddle yDot (fine * kdr)
include : ApparentTranslate 0 (fine * (-0.5))
include : StdAnchors.extraWide
create-glyph "cyrlKavykaWithDotAbove.\(suffix)" : glyph-proc
set-width 0
local radius : markExtend * 1.5
@ -829,6 +845,7 @@ glyph-block Mark-Above : begin
select-variant 'candrabinduAbove' 0x310 (follow -- 'diacriticDot')
turned 'fermataAbove' 0x352 'candrabinduAbove' markMiddle aboveMarkMid
select-variant 'largeFermataAbove' (follow -- 'diacriticDot')
select-variant 'cyrlKavykaWithDotAbove' null (follow -- 'diacriticDot')
alias 'graveToneAbove' 0x340 'graveAbove'

View file

@ -217,6 +217,7 @@ glyph-block Mark-Below : begin
TurnAboveMarkToBelow 'downArrowHeadBelow' null 'upArrowHeadAbove'
TurnAboveMarkToBelow 'descenderBarBelow' null 'ascenderBarAbove'
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
TurnAboveMarkToBelow 'largeCandrabinduBelow' null 'largeFermataAbove'
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
set-width 0

View file

@ -280,6 +280,7 @@ glyph-block Symbol-Math-APL : begin
LinkAplFormForNwidWwid 'barArrowDown'
LinkAplFormForNwidWwid 'counterArrowLeft'
LinkAplFormForNwidWwid 'counterArrowRight'
LinkAplFormForNwidWwid 'countersink'
LinkAplFormForNwidWwid 'cwOpenCircleArrow'
LinkAplFormForNwidWwid 'dashArrowUp'
LinkAplFormForNwidWwid 'dottedCircle'
@ -292,7 +293,7 @@ glyph-block Symbol-Math-APL : begin
LinkAplFormForNwidWwid 'vBarSquare'
LinkAplFormForNwidWwid 'zigZagArrow'
LinkAplFormForNwidWwid 'uni21CC'
LinkAplFormForNwidWwid 'uni2335'
LinkAplFormForNwidWwid 'uni231D'
LinkAplFormForNwidWwid 'uni238B'
LinkAplFormForNwidWwid 'uni25E0'
LinkAplFormForNwidWwid 'uni25E1'

View file

@ -14,9 +14,9 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
define [MarkZoom w] : glyph-proc
include : Ungizmo
include : Translate (-w / 2) (-XH - AccentStackOffset)
include : Translate (w * (-0.5)) ((-XH) - AccentStackOffset)
include : Scale ((RightSB - SB) / (markExtend * 3))
include : Translate (w / 2) (XH + AccentStackOffset)
include : Translate (w * (+0.5)) ((+XH) + AccentStackOffset)
include : Regizmo
create-glyph 'asciiTilde.low' : composite-proc
@ -67,3 +67,6 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
derive-composites 'mdfShelf' 0x2FD 'markBaseSpace' 'shelfBelow'
derive-composites 'mdfOpenShelf' 0x2FE 'markBaseSpace' 'openShelfBelow'
derive-composites 'fermata' 0x1D110 'markDemoBaseSpace' 'largeFermataAbove'
derive-composites 'lowFermata' 0x1D111 'markDemoBaseSpace' 'largeCandrabinduBelow'