Add Characters (#1736)

* Add Characters

- UP TACK WITH CIRCLE ABOVE (`U+27DF`).
- MINUS SIGN WITH FALLING DOTS (`U+2A2B`).
- MINUS SIGN WITH RISING DOTS (`U+2A2C).
- MULTIPLICATION SIGN WITH UNDERBAR (`U+2A31`).
- SEMIDIRECT PRODUCT WITH BOTTOM CLOSED (`U+2A32`).
- TILDE OPERATOR WITH RISING DOTS (`U+2A6B`).
- SIMILAR MINUS SIMILAR (`U+2A6C`).
- APPROXIMATELY EQUAL TO OR EQUAL TO (`U+2A70`) ... EQUALS SIGN ABOVE TILDE OPERATOR (`U+2A73`).
- VERTICAL LINE WITH CIRCLE ABOVE (`U+2AEF`) ... DOWN TACK WITH CIRCLE BELOW (`U+2AF1`).

* typo

* Add

- N-ARY TIMES OPERATOR (`U+2A09`).

* Remove bigmult for now, optimize diagonals
This commit is contained in:
John McWilliams 2023-05-20 22:59:49 -04:00 committed by GitHub
parent 85d42148c6
commit 73aca2eef9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 111 additions and 16 deletions

View file

@ -8,6 +8,7 @@ glyph-block Symbol-Math-Arith : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Symbol-Math-Frame : MathEnclosureSw
glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace
do "Plus/Minus"
glyph-block-export PlusShape
@ -34,10 +35,18 @@ glyph-block Symbol-Math-Arith : begin
SquareAt Middle SymbolMid DotRadius
create-glyph 'plusminus' 0xB1 : glyph-proc
include : HBar.b SB RightSB 0 OperatorStroke
include : refer-glyph "plus"
include : HBar.b SB RightSB 0 OperatorStroke
turned 'minusplus' 0x2213 'plusminus' Middle SymbolMid
create-glyph 'plusequal' 0x2A72 : glyph-proc
include : refer-glyph "plus"
include : ApparentTranslate 0 (EqualHalfSpace * 1.5)
include : HBar.b SB RightSB (EqualHalfSpace * 1.5) OperatorStroke
include : HBar.b SB RightSB 0 OperatorStroke
turned 'equalplus' 0x2A71 'plusequal' Middle SymbolMid
do "Multiply"
define Size : 0.5 * (RightSB - SB) + 0.25 * SB
@ -67,6 +76,10 @@ glyph-block Symbol-Math-Arith : begin
include : MultiplyStroke1Shape OperatorStroke 1 1 1
include : MultiplyStroke2Shape OperatorStroke 1 1 1
create-glyph 'multiplyUnderbar' 0x2A31 : glyph-proc
include : refer-glyph "multiply"
include : HBar.b (Middle - Size) (Middle + Size) 0 OperatorStroke
alias 'vectorOrCrossProduct' 0x2A2F 'multiply'
create-glyph 'multiplyInMulDiv' : glyph-proc
@ -108,6 +121,17 @@ glyph-block Symbol-Math-Arith : begin
MultiplyStroke1Shape swBowtie 1 1 1
MultiplyStroke2Shape swBowtie 1 1 1
create-glyph 'bowtieBot' 0x2A32 : glyph-proc
include : union
intersection
CoMultiplyMask 1 1 1
HBar.b (Middle - Size) (Middle + Size) (SymbolMid - Size) swBowtieHv
intersection
Rect ParenTop (SymbolMid - Size) (-Width) (2 * Width)
union
MultiplyStroke1Shape swBowtie 1 1 1
MultiplyStroke2Shape swBowtie 1 1 1
create-glyph 'bowtieWithLeftHalfBlack' 0x29D1 : union
refer-glyph 'bowtie'
MultiplyMask 1 1 0
@ -220,6 +244,18 @@ glyph-block Symbol-Math-Arith : begin
DrawAt Middle (SymbolMid + gap) (dr * sw / OperatorStroke - overshoot)
DrawAt Middle (SymbolMid - gap) (dr * sw / OperatorStroke - overshoot)
create-glyph "minusFallingDots.\(suffix)" : glyph-proc
include : refer-glyph "minus"
define gap : (RightSB - SB) / 2
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid + gap) (dr - overshoot)
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid - gap) (dr - overshoot)
create-glyph "minusRisingDots.\(suffix)" : glyph-proc
include : refer-glyph "minus"
define gap : (RightSB - SB) / 2
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid - gap) (dr - overshoot)
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid + gap) (dr - overshoot)
select-variant 'dotplus' 0x2214 (follow -- 'punctuationDot')
turned 'plusdot' 0x2A25 'dotplus' Middle SymbolMid
@ -233,6 +269,9 @@ glyph-block Symbol-Math-Arith : begin
select-variant 'divide' 0xF7 (follow -- 'punctuationDot')
select-variant 'divisionTimes' 0x22C7 (follow -- 'punctuationDot')
select-variant 'minusFallingDots' 0x2A2B (follow -- 'punctuationDot')
select-variant 'minusRisingDots' 0x2A2C (follow -- 'punctuationDot')
do
define fine : AdviceStroke 5.5
define radius : Math.max ((RightSB - SB) / 8) (fine / 2)
@ -322,3 +361,17 @@ glyph-block Symbol-Math-Arith : begin
set-width MosaicWidth
include : refer-glyph : MangleName "innerMultiplyStroke1Big"
include : refer-glyph : MangleName "innerMultiplyStroke2Big"
create-glyph [MangleName 'risingDiagonal'] [MangleUnicode 0x27CB] : glyph-proc
set-width MosaicWidth
include : dispiro
widths.center OperatorStroke
flat SB ParenBot
curl (MosaicWidth - SB) ParenTop
create-glyph [MangleName 'fallingDiagonal'] [MangleUnicode 0x27CD] : glyph-proc
set-width MosaicWidth
include : dispiro
widths.center OperatorStroke
flat SB ParenTop
curl (MosaicWidth - SB) ParenBot

View file

@ -48,12 +48,6 @@ glyph-block Symbol-Math-Geometry : begin
dispiro [widths.lhs GeometryStroke] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.rhs GeometryStroke] [flat leftBox topBox] [curl rightBox bottomBox]
create-glyph 'risingDiagonal' 0x27CB : glyph-proc
include : dispiro [widths.center GeometryStroke] [flat rightBox topBox] [curl leftBox bottomBox]
create-glyph 'fallingDiagonal' 0x27CD : glyph-proc
include : dispiro [widths.center GeometryStroke] [flat leftBox topBox] [curl rightBox bottomBox]
create-glyph 'measuredAngle' 0x2221 : glyph-proc
include [refer-glyph 'angle'] AS_BASE ALSO_METRICS
include : intersection

View file

@ -102,5 +102,21 @@ glyph-block Symbol-Math-Logicals : begin
include : HBar.b SB RightSB 0 OperatorStroke
include : VBar.m Middle (SymbolMid * 2) 0 OperatorStroke
create-glyph 'barRingAbove' 0x2AEF : glyph-proc
define sw : AdviceStroke 4
define radius : (RightSB - SB) / 6
define mid : top - radius
include : VBar.m Middle (top - radius * 2 - sw / 2 ) bot OperatorStroke
include : difference
DotAt Middle mid (radius + sw)
DotAt Middle mid radius
create-glyph 'botRingAbove' 0x27DF : glyph-proc
include : refer-glyph "barRingAbove"
include : HBar.b SB RightSB bot OperatorStroke
turned 'barRingBelow' 0x2AF0 'barRingAbove' Middle SymbolMid
turned 'topRingBelow' 0x2AF1 'botRingAbove' Middle SymbolMid
create-glyph 'endOfProof' 0x220E : glyph-proc
include : Rect TackTop TackBot SB RightSB

View file

@ -240,10 +240,6 @@ glyph-block Symbol-Math-Relation-Sym : begin
create-glyph 'sym' 0x223C : symWave SymbolMid 1
create-glyph 'flipSym' 0x223D : symWave SymbolMid (-1)
WithDotVariants 'oneDotSym' 0x2A6A : function [DrawAt kr ov] : composite-proc
refer-glyph 'sym'
DrawAt Middle PlusTop (DotRadius * kr * OperatorStroke / Stroke - ov)
WithDotVariants 'twoDotSym' 0x223B : function [DrawAt kr ov] : composite-proc
refer-glyph 'sym'
DrawAt Middle PlusTop (DotRadius * kr * OperatorStroke / Stroke - ov)
@ -282,10 +278,6 @@ glyph-block Symbol-Math-Relation-Sym : begin
SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5
SymbolMid - sympShift / 2
WithDotVariants 'oneDotSymEqEq' 0x2A6D : function [DrawAt kr ov] : composite-proc
refer-glyph 'symEqEq'
DrawAt Middle (PlusTop + EqualHalfSpace * 1.5) (DotRadius * kr * OperatorStroke / Stroke - ov)
create-glyph 'flipSymEq' 0x22CD : glyph-proc
include [refer-glyph 'flipSym'] AS_BASE
include : ApparentTranslate 0 (approxDist / 2)
@ -298,6 +290,38 @@ glyph-block Symbol-Math-Relation-Sym : begin
include : HBar.m SB RightSB (SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke
include : HBar.m SB RightSB (SymbolMid - sympShift / 2) OperatorStroke
WithDotVariants 'oneDotSym' 0x2A6A : function [DrawAt kr ov] : composite-proc
refer-glyph 'sym'
DrawAt Middle PlusTop (DotRadius * kr * OperatorStroke / Stroke - ov)
WithDotVariants 'twoDotSymAlt' 0x2A6B : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'sym'
include : DrawAt [mix SB RightSB (1/6)] PlusBot (dr - ov)
include : DrawAt [mix SB RightSB (5/6)] PlusTop (dr - ov)
create-glyph 'symMinusSym' 0x2A6C : glyph-proc
include : symWave (SymbolMid + approxDist) 1
include : HBar.m SB RightSB SymbolMid OperatorStroke
include : symWave (SymbolMid - approxDist) 1
WithDotVariants 'oneDotSymEqEq' 0x2A6D : function [DrawAt kr ov] : composite-proc
refer-glyph 'symEqEq'
DrawAt Middle (PlusTop + EqualHalfSpace * 1.5) (DotRadius * kr * OperatorStroke / Stroke - ov)
create-glyph 'approxEqEq' 0x2A70 : glyph-proc
include : symWave (SymbolMid + approxDist * 1.375) 1
include : symWave (SymbolMid + approxDist * 0.375) 1
include : HBar.m SB RightSB (SymbolMid - approxDist * 1.5 + EqualHalfSpace * 1.5) OperatorStroke
include : HBar.m SB RightSB (SymbolMid - approxDist * 1.5) OperatorStroke
create-glyph 'eqEqSym' 0x2A73 : glyph-proc
local sympShift : approxDist + EqualHalfSpace * 1.5
include [refer-glyph 'sym'] AS_BASE
include : ApparentTranslate 0 (-sympShift / 2)
include : HBar.m SB RightSB (SymbolMid + sympShift / 2 - EqualHalfSpace * 1.5) OperatorStroke
include : HBar.m SB RightSB (SymbolMid + sympShift / 2) OperatorStroke
glyph-block Symbol-Math-Relation-Inequality : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives