* Add Characters

- REVERSED SEMICOLON (`U+204F`);
   - REVERSED QUESTION MARK (`U+2E2E`);
   - REVERSED COMMA (`U+2E41`);
   - DOUBLE LOW-REVERSED-9 QUOTATION MARK (`U+2E42`);
This commit is contained in:
be5invis 2022-01-26 23:37:45 -08:00
parent 1933fe85f2
commit 0c6cd3993d
7 changed files with 162 additions and 129 deletions

5
changes/11.2.8.md Normal file
View file

@ -0,0 +1,5 @@
* Add Characters
- REVERSED SEMICOLON (`U+204F`);
- REVERSED QUESTION MARK (`U+2E2E`);
- REVERSED COMMA (`U+2E41`);
- DOUBLE LOW-REVERSED-9 QUOTATION MARK (`U+2E42`);

View file

@ -33,14 +33,12 @@ glyph-block Mark-Above : begin
### Above marks
create-glyph 'dotAbove' 0x307 : glyph-proc
set-width 0
currentGlyph.shortName = 'dot'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
include : DotAt markMiddle aboveMarkMid DotRadius
create-glyph 'dieresisAbove' 0x308 : glyph-proc
set-width 0
currentGlyph.shortName = 'dieresis'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
include : DotAt (markMiddle - markExtend) aboveMarkMid markDotsRadius
@ -53,7 +51,6 @@ glyph-block Mark-Above : begin
create-glyph 'ringAbove' 0x30A : glyph-proc
set-width 0
currentGlyph.shortName = 'ring'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
local [object radiusIn radiusOut] : RingDims
@ -72,7 +69,6 @@ glyph-block Mark-Above : begin
create-glyph 'graveAbove' 0x300 : glyph-proc
set-width 0
currentGlyph.shortName = 'grave'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -89,7 +85,6 @@ glyph-block Mark-Above : begin
create-glyph 'acuteAbove' 0x301 : glyph-proc
set-width 0
currentGlyph.shortName = 'acute'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -106,7 +101,6 @@ glyph-block Mark-Above : begin
create-glyph 'circumflexAbove' 0x302 : glyph-proc
set-width 0
currentGlyph.shortName = 'circum'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -153,7 +147,6 @@ glyph-block Mark-Above : begin
create-glyph 'caronAbove' 0x30c : glyph-proc
set-width 0
currentGlyph.shortName = 'caron'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -222,7 +215,6 @@ glyph-block Mark-Above : begin
create-glyph 'tildeAbove' 0x303 : glyph-proc
set-width 0
currentGlyph.shortName = 'tilde'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -235,7 +227,6 @@ glyph-block Mark-Above : begin
create-glyph 'tildeAboveOverlay' : glyph-proc
set-width 0
currentGlyph.shortName = 'tilde'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -351,7 +342,6 @@ glyph-block Mark-Above : begin
create-glyph 'macronAbove' 0x304 : glyph-proc
set-width 0
currentGlyph.shortName = 'macron'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -364,7 +354,6 @@ glyph-block Mark-Above : begin
create-glyph 'sbOverlineAbove' : glyph-proc
set-width 0
currentGlyph.shortName = 'overline'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -374,7 +363,6 @@ glyph-block Mark-Above : begin
create-glyph 'overlineAbove' 0x305 : glyph-proc
set-width 0
currentGlyph.shortName = 'overline'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -384,7 +372,6 @@ glyph-block Mark-Above : begin
create-glyph 'sbRsbOverlineAbove' : glyph-proc
set-width 0
currentGlyph.shortName = 'overline'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -411,7 +398,6 @@ glyph-block Mark-Above : begin
create-glyph 'breveAbove' 0x306 : glyph-proc
set-width 0
currentGlyph.shortName = 'breve'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -427,7 +413,6 @@ glyph-block Mark-Above : begin
create-glyph 'archAbove' 0x311 : glyph-proc
set-width 0
currentGlyph.shortName = 'arch'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -443,7 +428,6 @@ glyph-block Mark-Above : begin
create-glyph 'hookAbove' 0x309 : glyph-proc
set-width 0
currentGlyph.shortName = 'hook'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -463,7 +447,6 @@ glyph-block Mark-Above : begin
create-glyph 'doubleGraveAbove' 0x30F : glyph-proc
set-width 0
currentGlyph.shortName = 'dblgrave'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -478,7 +461,6 @@ glyph-block Mark-Above : begin
create-glyph 'doubleAcuteAbove' 0x30B : glyph-proc
set-width 0
currentGlyph.shortName = 'dblacute'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -493,7 +475,6 @@ glyph-block Mark-Above : begin
create-glyph 'commaAbove' 0x313 : glyph-proc
set-width 0
currentGlyph.shortName = 'comma'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -513,7 +494,6 @@ glyph-block Mark-Above : begin
create-glyph 'turnCommaAbove' 0x312 : glyph-proc
set-width 0
currentGlyph.shortName = 'turnComma'
include : refer-glyph "commaAbove"
include : FlipAround markMiddle ([mix aboveMarkTop (aboveMarkBot - commaAboveRadius) 0.5] + (DotRadius * 0.3) + commaOvershoot / 2)
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
@ -521,7 +501,6 @@ glyph-block Mark-Above : begin
create-glyph 'revCommaAbove' 0x314 : glyph-proc
set-width 0
currentGlyph.shortName = 'revComma'
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -631,7 +610,6 @@ glyph-block Mark-Above : begin
create-glyph 'perispomeniAbove' 0x342 : glyph-proc
set-width 0
currentGlyph.shortName = 'perisp'
include : refer-glyph "archAbove"
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid

View file

@ -57,7 +57,6 @@ glyph-block Mark-Below : begin
create-glyph 'iotaBelow' 0x345 : glyph-proc
set-width 0
set currentGlyph.shortName 'iota'
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar markMiddle belowMarkBot belowMarkTop (markHalfStroke * 2)

View file

@ -10,112 +10,156 @@ glyph-block Symbol-Punctuation-Emotion : begin
glyph-block-import Common-Derivatives
glyph-block-import Shared-Symbol-Shapes : DotVariants
local questionBottom : Math.max (CAP * 0.3) (DotSize * 1.5)
local [questionYConnectT top questionBottom] : mix questionBottom (top - HalfStroke) 0.375
local emotionBottom : Math.max (CAP * 0.3) (DotSize * 1.5)
foreach { suffix { DrawAt kdr overshoot } } [Object.entries DotVariants] : do
local dr : DotRadius * kdr
create-glyph "exclam.\(suffix)" : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : MarkSet.capital
include : VBar df.middle [clamp 0 (CAP * 0.4) (questionBottom * 1.18)] CAP
include : DrawAt df.middle dr (dr - overshoot)
do "Exclamation"
foreach { suffix { DrawAt kdr overshoot } } [Object.entries DotVariants] : do
local dr : DotRadius * kdr
create-glyph "exclam.\(suffix)" : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : MarkSet.capital
include : VBar df.middle [clamp 0 (CAP * 0.4) (emotionBottom * 1.18)] CAP
include : DrawAt df.middle dr (dr - overshoot)
create-glyph "question/dotPart.\(suffix)" : glyph-proc
set-width 0
include : DrawAt (Middle - Width) dr (dr - overshoot)
set-mark-anchor 'cvDecompose' (0 - Width) 0
create-glyph "question/dotPart.\(suffix)" : glyph-proc
set-width 0
include : DrawAt (Middle - Width) dr (dr - overshoot)
set-mark-anchor 'cvDecompose' (0 - Width) 0
create-glyph "questionDown/dotPart.\(suffix)" : glyph-proc
set-width 0
include : DrawAt (Middle - Width) (XH - dr) (dr - overshoot)
set-mark-anchor 'cvDecompose' (0 - Width) 0
create-glyph "questionDown/dotPart.\(suffix)" : glyph-proc
set-width 0
include : DrawAt (Middle - Width) (XH - dr) (dr - overshoot)
set-mark-anchor 'cvDecompose' (0 - Width) 0
select-variant 'exclam' '!' (follow -- 'punctuationDot')
select-variant 'question/dotPart' (follow -- 'punctuationDot')
select-variant 'questionDown/dotPart' (follow -- 'punctuationDot')
select-variant 'exclam' '!' (follow -- 'punctuationDot')
select-variant 'question/dotPart' (follow -- 'punctuationDot')
select-variant 'questionDown/dotPart' (follow -- 'punctuationDot')
alias 'alveolarclick' 0x1C3 'exclam'
turned 'exclamDown' 0xA1 'exclam' [DivFrame para.diversityF].middle (XH / 2)
alias 'alveolarclick' 0x1C3 'exclam'
turned 'exclamDown' 0xA1 'exclam' [DivFrame para.diversityF].middle (XH / 2)
define [QuestionSmoothShape top questionBottom left right] : glyph-proc
define strokeEndCor : Math.hypot 1 TanSlope
include : dispiro
widths.rhs
g4 left (top - Hook)
hookstart (top - O)
g4 right (top - SmoothB * 0.9)
alsoThru.g2 0.5 0.45 [widths.center EssQuestion]
straight.down.end ([mix left right 0.5] - HalfStroke * HVContrast * strokeEndCor) questionBottom [widths.heading (Stroke * strokeEndCor) 0 Downward]
do "Question"
local [YConnectT top emotionBottom] : mix emotionBottom (top - HalfStroke) 0.375
define [QuestionCornerShape top questionBottom left right] : glyph-proc
local questionYConnect : questionYConnectT top questionBottom
include : dispiro
widths.rhs
g4 left (top - Hook)
hookstart (top - O)
g4 (right - OX) [YSmoothMidR top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.left.end [mix left right 0.5] (questionYConnect - Stroke) [heading Leftward]
include : VBar [mix left right 0.5] questionBottom questionYConnect
define [SmoothShape top emotionBottom left right] : glyph-proc
define strokeEndCor : Math.hypot 1 TanSlope
include : dispiro
widths.rhs
g4 left (top - Hook)
hookstart (top - O)
g4 right (top - SmoothB * 0.9)
alsoThru.g2 0.5 0.45 [widths.center EssQuestion]
straight.down.end ([mix left right 0.5] - HalfStroke * HVContrast * strokeEndCor) emotionBottom [widths.lhs.heading (Stroke * strokeEndCor) Downward]
define [QuestionCornerFlatShape top questionBottom left right] : glyph-proc
local questionYConnect : questionYConnectT top questionBottom
local depth : Math.max (Stroke * 1.5) ((right - left) * 0.5)
include : dispiro
widths.rhs
flat [mix left right 0.125] top [heading Rightward]
curl (right - depth - CorrectionOMidS) top
archv
g4 (right - OX) [YSmoothMidR top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.left.end [mix left right 0.5] (questionYConnect - Stroke) [heading Leftward]
include : VBar [mix left right 0.5] questionBottom questionYConnect
define [RevSmoothShape top emotionBottom left right] : glyph-proc
define strokeEndCor : Math.hypot 1 TanSlope
include : dispiro
widths.lhs
g4 right (top - Hook)
hookstart (top - O)
g4 left (top - SmoothA * 0.9)
alsoThru.g2 0.5 0.45 [widths.center EssQuestion]
straight.down.end ([mix left right 0.5] + HalfStroke * HVContrast * strokeEndCor) emotionBottom [widths.rhs.heading (Stroke * strokeEndCor) Downward]
define QuestionConfig : object
smooth { QuestionSmoothShape }
corner { QuestionCornerShape }
cornerFlatHooked { QuestionCornerFlatShape }
define [CornerShape top emotionBottom left right] : glyph-proc
local questionYConnect : YConnectT top emotionBottom
include : dispiro
widths.rhs
g4 left (top - Hook)
hookstart (top - O)
g4 (right - OX) [YSmoothMidR top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.left.end [mix left right 0.5] (questionYConnect - Stroke) [heading Leftward]
include : VBar [mix left right 0.5] emotionBottom questionYConnect
foreach { suffix { Body } } [Object.entries QuestionConfig] : do
create-glyph "question/hookPart.\(suffix)" : glyph-proc
include : Body CAP questionBottom SB RightSB
set-base-anchor 'cvDecompose' 0 0
define [RevCornerShape top emotionBottom left right] : glyph-proc
local questionYConnect : YConnectT top emotionBottom
include : dispiro
widths.lhs
g4 right (top - Hook)
hookstart (top - O)
g4 (left + OX) [YSmoothMidL top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.right.end [mix left right 0.5] (questionYConnect - Stroke) [heading Rightward]
include : VBar [mix left right 0.5] emotionBottom questionYConnect
create-glyph "questionDown/hookPart.\(suffix)" : glyph-proc
include : Body CAP questionBottom SB RightSB
include : FlipAround Middle (XH / 2)
set-base-anchor 'cvDecompose' 0 0
define [CornerFlatShape top emotionBottom left right] : glyph-proc
local questionYConnect : YConnectT top emotionBottom
local depth : Math.max (Stroke * 1.5) ((right - left) * 0.5)
include : dispiro
widths.rhs
flat [mix left right 0.125] top [heading Rightward]
curl (right - depth - CorrectionOMidS) top
archv
g4 (right - OX) [YSmoothMidR top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.left.end [mix left right 0.5] (questionYConnect - Stroke) [heading Leftward]
include : VBar [mix left right 0.5] emotionBottom questionYConnect
define [InterroBangBodyImpl] : glyph-proc
local angle : 12 / 180 * Math.PI
include : Body CAP questionBottom [mix Middle SB 0.75] RightSB
include : Translate (-Middle) (-DotRadius)
include : Rotate (-2 * angle)
include : Translate Middle DotRadius
include : VBar Middle questionBottom CAP
include : Translate (-Middle) (-DotRadius)
include : Rotate (1.2 * angle)
include : Translate Middle DotRadius
define [RevCornerFlatShape top emotionBottom left right] : glyph-proc
local questionYConnect : YConnectT top emotionBottom
local depth : Math.max (Stroke * 1.5) ((right - left) * 0.5)
include : dispiro
widths.lhs
flat [mix right left 0.125] top [heading Leftward]
curl (left + depth + CorrectionOMidS) top
archv
g4 (left + OX) [YSmoothMidL top (questionYConnect - Stroke) SmoothA SmoothB]
arcvh
straight.right.end [mix left right 0.5] (questionYConnect - Stroke) [heading Rightward]
include : VBar [mix left right 0.5] emotionBottom questionYConnect
create-glyph "interrobang/bodyPart.\(suffix)" : glyph-proc
include : InterroBangBodyImpl
set-base-anchor 'cvDecompose' 0 0
define Config : object
smooth { SmoothShape RevSmoothShape }
corner { CornerShape RevCornerShape }
cornerFlatHooked { CornerFlatShape RevCornerFlatShape }
create-glyph "interrobangDown/bodyPart.\(suffix)" : glyph-proc
include : InterroBangBodyImpl
include : FlipAround Middle (XH / 2)
set-base-anchor 'cvDecompose' 0 0
foreach { suffix { Body RevBody } } [Object.entries Config] : do
create-glyph "question/hookPart.\(suffix)" : glyph-proc
include : Body CAP emotionBottom SB RightSB
set-base-anchor 'cvDecompose' 0 0
select-variant 'question/hookPart' (follow -- 'question')
create-two-part-glyph 'question' '?' 'question/hookPart' 'question/dotPart'
create-glyph "questionDown/hookPart.\(suffix)" : glyph-proc
include : Body CAP emotionBottom SB RightSB
include : FlipAround Middle (XH / 2)
set-base-anchor 'cvDecompose' 0 0
select-variant 'questionDown/hookPart' (follow -- 'question')
create-two-part-glyph 'questionDown' 0xBF 'questionDown/hookPart' 'questionDown/dotPart'
create-glyph "revQuestion/hookPart.\(suffix)" : glyph-proc
include : RevBody CAP emotionBottom SB RightSB
set-base-anchor 'cvDecompose' 0 0
select-variant 'interrobang/bodyPart' (follow -- 'question')
create-two-part-glyph 'interrobang' 0x203D 'interrobang/bodyPart' 'question/dotPart'
define [InterroBangBodyImpl] : glyph-proc
local angle : 12 / 180 * Math.PI
include : Body CAP emotionBottom [mix Middle SB 0.75] RightSB
include : Translate (-Middle) (-DotRadius)
include : Rotate (-2 * angle)
include : Translate Middle DotRadius
include : VBar Middle emotionBottom CAP
include : Translate (-Middle) (-DotRadius)
include : Rotate (1.2 * angle)
include : Translate Middle DotRadius
select-variant 'interrobangDown/bodyPart' (follow -- 'question')
create-two-part-glyph 'gnaborretni' 0x2E18 'interrobangDown/bodyPart' 'questionDown/dotPart'
create-glyph "interrobang/bodyPart.\(suffix)" : glyph-proc
include : InterroBangBodyImpl
set-base-anchor 'cvDecompose' 0 0
create-glyph "interrobangDown/bodyPart.\(suffix)" : glyph-proc
include : InterroBangBodyImpl
include : FlipAround Middle (XH / 2)
set-base-anchor 'cvDecompose' 0 0
select-variant 'question/hookPart' (follow -- 'question')
create-two-part-glyph 'question' '?' 'question/hookPart' 'question/dotPart'
select-variant 'questionDown/hookPart' (follow -- 'question')
create-two-part-glyph 'questionDown' 0xBF 'questionDown/hookPart' 'questionDown/dotPart'
select-variant 'revQuestion/hookPart' (follow -- 'question')
create-two-part-glyph 'revQuestion' 0x2E2E 'revQuestion/hookPart' 'question/dotPart'
select-variant 'interrobang/bodyPart' (follow -- 'question')
create-two-part-glyph 'interrobang' 0x203D 'interrobang/bodyPart' 'question/dotPart'
select-variant 'interrobangDown/bodyPart' (follow -- 'question')
create-two-part-glyph 'gnaborretni' 0x2E18 'interrobangDown/bodyPart' 'questionDown/dotPart'

View file

@ -23,6 +23,12 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
include : refer-glyph src
include : FlipAround df.middle 0 ratio ratio
derive-glyphs 'revLowSingleQuote' null 'revComma' : function [src sel] : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : refer-glyph src
include : FlipAround df.middle 0 ratio ratio
derive-glyphs 'openSingleQuote' 0x2018 'lowSingleQuote' : function [src sel] : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
@ -35,7 +41,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
include : refer-glyph src
include : FlipAround df.middle yCurlyQuotes
derive-glyphs 'revertSingleQuote' 0x201B 'invertComma' : function [src sel] : glyph-proc
derive-glyphs 'revSingleQuote' 0x201B 'revComma' : function [src sel] : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : refer-glyph src
@ -51,18 +57,15 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
include : refer-glyph gn
include : Translate (dist + Middle - dfSingle.middle) 0
derive-glyphs 'lowDoubleQuote' 0x201E 'lowSingleQuote'
function [src sel] : DoubleQuoteProc src
derive-glyphs 'openDoubleQuote' 0x201C 'openSingleQuote'
function [src sel] : DoubleQuoteProc src
derive-glyphs 'closeDoubleQuote' 0x201D 'closeSingleQuote'
function [src sel] : DoubleQuoteProc src
derive-glyphs 'revertDoubleQuote' 0x201F 'revertSingleQuote'
function [src sel] : DoubleQuoteProc src
derive-glyphs 'lowDoubleQuote' 0x201E 'lowSingleQuote' DoubleQuoteProc
derive-glyphs 'openDoubleQuote' 0x201C 'openSingleQuote' DoubleQuoteProc
derive-glyphs 'closeDoubleQuote' 0x201D 'closeSingleQuote' DoubleQuoteProc
derive-glyphs 'revDoubleQuote' 0x201F 'revSingleQuote' DoubleQuoteProc
derive-glyphs 'revLowDoubleQuote' 0x2E42 'revLowSingleQuote' DoubleQuoteProc
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
alias 'mdfRevComma' 0x2BD 'revertSingleQuote'
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
# Primes
create-glyph 'prime' 0x2032 : glyph-proc
@ -154,7 +157,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
g4 df.middle quoteBottom [widths.heading (HalfStroke * 0.95) (HalfStroke * 0.95) Downward]
alias 'asciiSingleQuote.raisedComma' null 'closeSingleQuote'
alias 'asciiGrave.raisedInverseComma' null 'revertSingleQuote'
alias 'asciiGrave.raisedInverseComma' null 'revSingleQuote'
alias 'asciiGrave.raisedTurnComma' null 'openSingleQuote'
select-variant 'asciiSingleQuote' 0x27

View file

@ -80,7 +80,7 @@ glyph-block Symbol-Punctuation-Small : begin
g4 (-commaOverflow + Descender * TanSlope) Descender [widths.rhs swEnd]
create-glyph 'invertComma.round' : glyph-proc
create-glyph 'revComma.round' : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : CommaShapeT df.middle 0 : glyph-proc
@ -114,7 +114,7 @@ glyph-block Symbol-Punctuation-Small : begin
quadControls (0 - TanSlope / 2) (0.5 - TanSlope * r / Descender) 12
g4 (commaOverflow + Descender * TanSlope) Descender [widths.lhs swEnd]
create-glyph 'invertComma.square' : glyph-proc
create-glyph 'revComma.square' : glyph-proc
local df : DivFrame para.diversityF
set-width df.width
include : WithTransform [Translate df.middle 0] : glyph-proc
@ -131,7 +131,7 @@ glyph-block Symbol-Punctuation-Small : begin
g4 (commaOverflow + Descender * TanSlope) Descender [widths.lhs swEnd]
select-variant 'comma' ',' (follow -- 'punctuationDot')
select-variant 'invertComma' (follow -- 'punctuationDot')
select-variant 'revComma' 0x2E41 (follow -- 'punctuationDot')
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do
create-glyph "colon.\(suffix)" : glyph-proc
@ -153,10 +153,15 @@ glyph-block Symbol-Punctuation-Small : begin
include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "xhPeriod.\(suffix)"]
create-glyph "invertSemicolon.\(suffix)" : glyph-proc
include [refer-glyph "revComma.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "xhPeriod.\(suffix)"]
select-variant 'colon' ':' (follow -- 'punctuationDot')
select-variant 'colon/mid' (follow -- 'punctuationDot')
select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot')
select-variant 'semicolon' ';' (follow -- 'punctuationDot')
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
alias 'greekquestion' 0x37E 'semicolon'
# Hollow (no CV)

View file

@ -94,7 +94,6 @@ exports.Glyph = class Glyph {
this.cloneRankFromGlyph(g);
}
cloneRelationFromGlyph(g) {
this.shortName = g.shortName;
this.related = g.related;
}
cloneRankFromGlyph(g) {