Added many mathematical operators, covering WGL4 requirements and basic set theory operators.
This commit is contained in:
parent
849610dcca
commit
ec75ce7f6c
8 changed files with 309 additions and 62 deletions
|
@ -41,6 +41,7 @@ define [buildFont para recursive] : begin {
|
||||||
define [Upright angle] [inverse : Italify angle]
|
define [Upright angle] [inverse : Italify angle]
|
||||||
define [Scale sx sy] (.xx sx .yx 0 .xy 0 .yy [fallback sy sx] .x 0 .y 0)
|
define [Scale sx sy] (.xx sx .yx 0 .xy 0 .yy [fallback sy sx] .x 0 .y 0)
|
||||||
define [Translate x y] (.xx 1 .yx 0 .xy 0 .yy 1 .x x .y y)
|
define [Translate x y] (.xx 1 .yx 0 .xy 0 .yy 1 .x x .y y)
|
||||||
|
define [Rotate angle] (.xx [Math.cos angle] .yx [-[Math.sin angle]] .xy [Math.sin angle] .yy [Math.cos angle] .x 0 .y 0)
|
||||||
|
|
||||||
define globalTransform : Italify para.italicAngle
|
define globalTransform : Italify para.italicAngle
|
||||||
define ITALICCOR : 1 / [Math.sqrt [1 - globalTransform.yx * globalTransform.yx]]
|
define ITALICCOR : 1 / [Math.sqrt [1 - globalTransform.yx * globalTransform.yx]]
|
||||||
|
@ -121,6 +122,8 @@ define [buildFont para recursive] : begin {
|
||||||
define WHITENESS : [[XH - STROKE * 2.5] * [RIGHTSB - SB] * [1 / 3]] / [XH * [RIGHTSB - SB]]
|
define WHITENESS : [[XH - STROKE * 2.5] * [RIGHTSB - SB] * [1 / 3]] / [XH * [RIGHTSB - SB]]
|
||||||
define [adviceBlackness crowdedness] : Math.min STROKE [[RIGHTSB - SB] * [1 - WHITENESS] / crowdedness]
|
define [adviceBlackness crowdedness] : Math.min STROKE [[RIGHTSB - SB] * [1 - WHITENESS] / crowdedness]
|
||||||
|
|
||||||
|
define OPERATORSTROKE : adviceBlackness 3.25
|
||||||
|
|
||||||
# Anchor parameters
|
# Anchor parameters
|
||||||
define BASE 'base'
|
define BASE 'base'
|
||||||
define MARK 'mark'
|
define MARK 'mark'
|
||||||
|
|
|
@ -322,3 +322,17 @@ define [dual newid unicode id spacing] : create-glyph [fallback newid : 'double'
|
||||||
include glyphs.(id)
|
include glyphs.(id)
|
||||||
apply-transform : Translate [spacing / 2] 0
|
apply-transform : Translate [spacing / 2] 0
|
||||||
}
|
}
|
||||||
|
define [vdual newid unicode id spacing] : create-glyph [fallback newid : 'double' + id] : glyph-construction {
|
||||||
|
if unicode : assign-unicode unicode
|
||||||
|
include : create-glyph : glyph-construction {
|
||||||
|
include glyphs.(id)
|
||||||
|
apply-transform : Upright
|
||||||
|
}
|
||||||
|
apply-transform : Translate 0 [-spacing]
|
||||||
|
include : create-glyph : glyph-construction {
|
||||||
|
include glyphs.(id)
|
||||||
|
apply-transform : Upright
|
||||||
|
}
|
||||||
|
apply-transform : Translate 0 [spacing / 2]
|
||||||
|
apply-transform : Italify
|
||||||
|
}
|
|
@ -18,10 +18,7 @@ alias 'Chi' 0x3A7 'X'
|
||||||
alias 'omicron' 0x3BF 'o'
|
alias 'omicron' 0x3BF 'o'
|
||||||
|
|
||||||
# Capital
|
# Capital
|
||||||
create-glyph 'Lambda' : glyph-construction {
|
define [LambdaShape STROKE] : glyph-construction {
|
||||||
assign-unicode 0x39B
|
|
||||||
include capitalMarks
|
|
||||||
|
|
||||||
local TURN [XH * 0.1]
|
local TURN [XH * 0.1]
|
||||||
local curviness 0.1
|
local curviness 0.1
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
|
@ -46,6 +43,11 @@ create-glyph 'Lambda' : glyph-construction {
|
||||||
line-to [MIDDLE + STROKE / 2] CAP
|
line-to [MIDDLE + STROKE / 2] CAP
|
||||||
line-to MIDDLE [CAP - STROKE]
|
line-to MIDDLE [CAP - STROKE]
|
||||||
}
|
}
|
||||||
|
create-glyph 'Lambda' : glyph-construction {
|
||||||
|
assign-unicode 0x39B
|
||||||
|
include capitalMarks
|
||||||
|
include : LambdaShape STROKE
|
||||||
|
}
|
||||||
create-glyph 'Delta' : glyph-construction {
|
create-glyph 'Delta' : glyph-construction {
|
||||||
assign-unicode 0x394
|
assign-unicode 0x394
|
||||||
include glyphs.Lambda AS_BASE
|
include glyphs.Lambda AS_BASE
|
||||||
|
@ -56,20 +58,19 @@ create-glyph 'Gamma' : glyph-construction {
|
||||||
include glyphs.L AS_BASE
|
include glyphs.L AS_BASE
|
||||||
include : FlipAround MIDDLE CAPMIDDLE 1 [-1]
|
include : FlipAround MIDDLE CAPMIDDLE 1 [-1]
|
||||||
}
|
}
|
||||||
define [SigmaShape top bottom] : glyph-construction {
|
define [SigmaShape top bottom _fine] : glyph-construction {
|
||||||
local cor 1.15
|
local cor 1.15
|
||||||
|
local fine : fallback _fine STROKE
|
||||||
|
|
||||||
include : create-stroke :.start-from SB top :.heads-to RIGHTWARD :.set-width 0 STROKE
|
include : HBarTop SB RIGHTSB top fine
|
||||||
:.line-to RIGHTSB top :.heads-to RIGHTWARD
|
include : HBarBottom SB RIGHTSB bottom fine
|
||||||
include : create-stroke :.start-from SB bottom :.heads-to RIGHTWARD :.set-width STROKE 0
|
|
||||||
:.line-to RIGHTSB bottom :.heads-to RIGHTWARD
|
|
||||||
|
|
||||||
local midx : mix SB RIGHTSB 0.4
|
local midx : mix SB RIGHTSB 0.4
|
||||||
start-from SB [bottom + STROKE]
|
start-from SB [bottom + fine]
|
||||||
line-to [SB + STROKE * cor] [bottom + STROKE]
|
line-to [SB + fine * cor] [bottom + fine]
|
||||||
line-to [midx + STROKE * cor] [mix bottom top 0.5]
|
line-to [midx + fine * cor] [mix bottom top 0.5]
|
||||||
line-to [SB + STROKE * cor] [top - STROKE]
|
line-to [SB + fine * cor] [top - fine]
|
||||||
line-to SB [top - STROKE]
|
line-to SB [top - fine]
|
||||||
line-to midx [mix bottom top 0.5]
|
line-to midx [mix bottom top 0.5]
|
||||||
reverse-last
|
reverse-last
|
||||||
}
|
}
|
||||||
|
@ -93,10 +94,11 @@ create-glyph 'Xi' : glyph-construction {
|
||||||
include : HBar SB RIGHTSB [CAP - HALFSTROKE]
|
include : HBar SB RIGHTSB [CAP - HALFSTROKE]
|
||||||
include : HBar SB RIGHTSB [0 + HALFSTROKE]
|
include : HBar SB RIGHTSB [0 + HALFSTROKE]
|
||||||
}
|
}
|
||||||
define [PiShape top bottom shrink] : glyph-construction {
|
define [PiShape top bottom shrink _fine] : glyph-construction {
|
||||||
include : HBar SB RIGHTSB [top - HALFSTROKE]
|
local fine : fallback _fine STROKE
|
||||||
include : VBar [[mix SB RIGHTSB [fallback shrink 0.05]] + HALFSTROKE] bottom top
|
include : HBar SB RIGHTSB [top - [fine / 2]] fine
|
||||||
include : VBar [[mix RIGHTSB SB [fallback shrink 0.05]] - HALFSTROKE] bottom top
|
include : VBar [[mix SB RIGHTSB [fallback shrink 0.05]] + [fine / 2]] bottom top fine
|
||||||
|
include : VBar [[mix RIGHTSB SB [fallback shrink 0.05]] - [fine / 2]] bottom top fine
|
||||||
}
|
}
|
||||||
create-glyph 'Pi' : glyph-construction {
|
create-glyph 'Pi' : glyph-construction {
|
||||||
assign-unicode 0x3A0
|
assign-unicode 0x3A0
|
||||||
|
|
|
@ -373,22 +373,24 @@ create-glyph 'Q' : glyph-construction {
|
||||||
line-to [MIDDLE + STROKE * [1 - 0.5 / 3]] [STROKE * 0.5]
|
line-to [MIDDLE + STROKE * [1 - 0.5 / 3]] [STROKE * 0.5]
|
||||||
reverse-last
|
reverse-last
|
||||||
}
|
}
|
||||||
|
define [UShape top bottom stroke] : glyph-construction {
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB top
|
||||||
|
:.heads-to DOWNWARD
|
||||||
|
:.set-width [fallback stroke STROKE] 0
|
||||||
|
:.line-to SB [bottom + SMOOTHB]
|
||||||
|
:.arc-vh-to MIDDLE [bottom + O]
|
||||||
|
:.heads-to RIGHTWARD
|
||||||
|
:.arc-hv-to RIGHTSB [bottom + SMOOTHA]
|
||||||
|
:.line-to RIGHTSB top
|
||||||
|
:.heads-to UPWARD
|
||||||
|
}
|
||||||
create-glyph 'U' : glyph-construction {
|
create-glyph 'U' : glyph-construction {
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
assign-unicode 'U'
|
assign-unicode 'U'
|
||||||
include capitalMarks
|
include capitalMarks
|
||||||
|
|
||||||
include : create-stroke
|
include : UShape CAP 0
|
||||||
:.start-from SB CAP
|
|
||||||
:.heads-to DOWNWARD
|
|
||||||
:.set-width STROKE 0
|
|
||||||
:.line-to SB SMOOTHB
|
|
||||||
:.arc-vh-to MIDDLE O
|
|
||||||
:.heads-to RIGHTWARD
|
|
||||||
:.arc-hv-to RIGHTSB SMOOTHA
|
|
||||||
:.line-to RIGHTSB CAP
|
|
||||||
:.heads-to UPWARD
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -749,14 +749,14 @@ define [eshHook attach] : glyph-construction {
|
||||||
:.arc-hv-to attach.x attach.y
|
:.arc-hv-to attach.x attach.y
|
||||||
:.line-to attach.x [attach.y + STROKE]
|
:.line-to attach.x [attach.y + STROKE]
|
||||||
}
|
}
|
||||||
define [LongSShape top bottom hookx hooky] : glyph-construction {
|
define [LongSShape top bottom hookx hooky fine] : glyph-construction {
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from [MIDDLE - hookx] [bottom + HALFSTROKE + O * 6]
|
:.start-from [MIDDLE - hookx] [bottom + [[fallback fine STROKE] / 2] + O * 6]
|
||||||
:.heads-to RIGHTWARD
|
:.heads-to RIGHTWARD
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [[fallback fine STROKE] / 2] [[fallback fine STROKE] / 2]
|
||||||
:.arc-hv-to MIDDLE [bottom + hooky]
|
:.arc-hv-to MIDDLE [bottom + hooky]
|
||||||
:.line-to MIDDLE [top - hooky]
|
:.line-to MIDDLE [top - hooky]
|
||||||
:.arc-vh-to [MIDDLE + hookx] [top - HALFSTROKE - O * 6]
|
:.arc-vh-to [MIDDLE + hookx] [top - [[fallback fine STROKE] / 2] - O * 6]
|
||||||
:.heads-to RIGHTWARD
|
:.heads-to RIGHTWARD
|
||||||
}
|
}
|
||||||
create-glyph 'longs.italic' : glyph-construction {
|
create-glyph 'longs.italic' : glyph-construction {
|
||||||
|
|
|
@ -284,17 +284,16 @@ create-glyph 'plus' : glyph-construction {
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
assign-unicode '+'
|
assign-unicode '+'
|
||||||
|
|
||||||
include glyphs.hyphen
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
|
include : VBar MIDDLE [parenMid - [RIGHTSB - SB] * 0.55] [parenMid + [RIGHTSB - SB] * 0.55] OPERATORSTROKE
|
||||||
include : VBar MIDDLE [parenMid - [RIGHTSB - SB] * 0.55] [parenMid + [RIGHTSB - SB] * 0.55]
|
|
||||||
}
|
}
|
||||||
|
local equalHalfSpace : [parenTop - parenBot] * 0.11
|
||||||
create-glyph 'equal' : glyph-construction {
|
create-glyph 'equal' : glyph-construction {
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
assign-unicode '='
|
assign-unicode '='
|
||||||
|
|
||||||
include : HBar SB RIGHTSB [parenMid - XH * 0.2]
|
include : HBar SB RIGHTSB [parenMid + equalHalfSpace] OPERATORSTROKE
|
||||||
include : HBar SB RIGHTSB [parenMid + XH * 0.2]
|
include : HBar SB RIGHTSB [parenMid - equalHalfSpace] OPERATORSTROKE
|
||||||
}
|
}
|
||||||
create-glyph 'bar' : glyph-construction {
|
create-glyph 'bar' : glyph-construction {
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
|
@ -351,14 +350,14 @@ create-glyph 'less' : glyph-construction {
|
||||||
|
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from RIGHTSB top
|
:.start-from RIGHTSB top
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.line-to SB [mix top bot 0.5]
|
:.line-to SB [mix top bot 0.5]
|
||||||
:.heads-to LEFTWARD
|
:.heads-to LEFTWARD
|
||||||
:.set-samples 1
|
:.set-samples 1
|
||||||
|
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from SB [mix top bot 0.5]
|
:.start-from SB [mix top bot 0.5]
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.heads-to RIGHTWARD
|
:.heads-to RIGHTWARD
|
||||||
:.line-to RIGHTSB bot
|
:.line-to RIGHTSB bot
|
||||||
:.set-samples 1
|
:.set-samples 1
|
||||||
|
|
|
@ -2,50 +2,108 @@
|
||||||
|
|
||||||
### Letter-like
|
### Letter-like
|
||||||
alias 'micro' 0xB5 'mu'
|
alias 'micro' 0xB5 'mu'
|
||||||
turned 'forall' 0x2200 'A' MIDDLE [CAP / 2]
|
create-glyph 'forall' : glyph-construction {
|
||||||
create-glyph 'exists' : glyph-construction {
|
assign-unicode 0x2200
|
||||||
assign-unicode 0x2203
|
include : LambdaShape OPERATORSTROKE
|
||||||
include : FShape 0.5
|
include : HBar [SB + OPERATORSTROKE] [RIGHTSB - OPERATORSTROKE] [XH / 2] OPERATORSTROKE
|
||||||
include : HBarBottom [SB * 1.5 - O] RIGHTSB 0
|
|
||||||
include : FlipAround MIDDLE [CAP / 2]
|
include : FlipAround MIDDLE [CAP / 2]
|
||||||
}
|
}
|
||||||
alias 'increment' 0x2206 'Delta'
|
create-glyph 'exists' : glyph-construction {
|
||||||
|
assign-unicode 0x2203
|
||||||
|
include : HBarTop [SB * 1.5 - O] RIGHTSB CAP OPERATORSTROKE
|
||||||
|
include : HBarBottom [SB * 1.5 - O] RIGHTSB 0 OPERATORSTROKE
|
||||||
|
include : HBar [SB * 1.5 - O] [RIGHTSB - HALFSTROKE] [CAP * 0.5] OPERATORSTROKE
|
||||||
|
include : VBarLeft [SB * 1.5] 0 CAP OPERATORSTROKE
|
||||||
|
include : FlipAround MIDDLE [CAP / 2]
|
||||||
|
}
|
||||||
|
create-glyph 'emptyset' : glyph-construction {
|
||||||
|
assign-unicode 0x2205
|
||||||
|
include : smallo CAP 0 SB RIGHTSB OPERATORSTROKE
|
||||||
|
|
||||||
|
local fine : OPERATORSTROKE / 2
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from [SB + O + fine] [mix CAP 0 1.05]
|
||||||
|
:.set-width fine fine
|
||||||
|
:.line-to [RIGHTSB - O - fine] [mix 0 CAP 1.05]
|
||||||
|
}
|
||||||
|
create-glyph 'increment' : glyph-construction {
|
||||||
|
assign-unicode 0x2206
|
||||||
|
include : LambdaShape OPERATORSTROKE
|
||||||
|
include : HBarBottom [SB + [OPERATORSTROKE / 2]] [RIGHTSB - [OPERATORSTROKE / 2]] 0 OPERATORSTROKE
|
||||||
|
}
|
||||||
turned 'nabla' 0x2207 'increment' MIDDLE [CAP / 2]
|
turned 'nabla' 0x2207 'increment' MIDDLE [CAP / 2]
|
||||||
create-glyph 'sum' : glyph-construction {
|
create-glyph 'sum' : glyph-construction {
|
||||||
assign-unicode 0x2211
|
assign-unicode 0x2211
|
||||||
include : SigmaShape parenTop parenBot
|
include : SigmaShape parenTop parenBot OPERATORSTROKE
|
||||||
}
|
}
|
||||||
create-glyph 'product' : glyph-construction {
|
create-glyph 'product' : glyph-construction {
|
||||||
assign-unicode 0x220F
|
assign-unicode 0x220F
|
||||||
include : PiShape parenTop parenBot 0
|
include : PiShape parenTop parenBot 0 OPERATORSTROKE
|
||||||
}
|
}
|
||||||
turned 'coproduct' 0x2210 'product' MIDDLE parenMid
|
turned 'coproduct' 0x2210 'product' MIDDLE parenMid
|
||||||
|
create-glyph 'infty' : glyph-construction {
|
||||||
|
assign-unicode 0x221E
|
||||||
|
local s : [RIGHTSB - SB - O * 4] / CAP
|
||||||
|
include [Miniature ('eight') 5 s].eight
|
||||||
|
apply-transform : Upright
|
||||||
|
apply-transform : Translate [-MIDDLE] [-CAP / 2]
|
||||||
|
apply-transform : Rotate [Math.PI / 2]
|
||||||
|
apply-transform : Scale s
|
||||||
|
apply-transform : Translate MIDDLE parenMid
|
||||||
|
apply-transform : Italify
|
||||||
|
}
|
||||||
|
create-glyph 'propto' : glyph-construction {
|
||||||
|
assign-unicode 0x221D
|
||||||
|
local s : [RIGHTSB - SB - O * 2] / [CAP - SMOOTH]
|
||||||
|
include [Miniature ('eight') 5 s].eight
|
||||||
|
this.contours.pop
|
||||||
|
apply-transform : Upright
|
||||||
|
apply-transform : Translate [-MIDDLE] [-CAP / 2]
|
||||||
|
apply-transform : Rotate [Math.PI / 2]
|
||||||
|
apply-transform : Scale s
|
||||||
|
apply-transform : Translate [MIDDLE + SMOOTH / 2 * s] parenMid
|
||||||
|
apply-transform : Italify
|
||||||
|
}
|
||||||
|
create-glyph 'partial' : glyph-construction {
|
||||||
|
assign-unicode 0x2202
|
||||||
|
include : smallo [CAP * 0.65] 0 SB RIGHTSB OPERATORSTROKE
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from [RIGHTSB - O] SMALLSMOOTHA
|
||||||
|
:.set-width OPERATORSTROKE 0
|
||||||
|
:.line-to [RIGHTSB - O] [XH - SMALLSMOOTHB]
|
||||||
|
:.cubic-to [RIGHTSB - O] [mix XH CAP 0.65] [mix SB RIGHTSB 0.7] [mix XH CAP 1.225] [mix SB RIGHTSB 0.075] [mix XH CAP 0.8]
|
||||||
|
}
|
||||||
|
|
||||||
### Others
|
### standard-sized operators
|
||||||
|
create-glyph 'minus' : glyph-construction {
|
||||||
|
set-width WIDTH
|
||||||
|
assign-unicode 0x2212
|
||||||
|
|
||||||
alias 'minus' 0x2212 'hyphen'
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
|
}
|
||||||
create-glyph 'plusminus' : glyph-construction {
|
create-glyph 'plusminus' : glyph-construction {
|
||||||
assign-unicode 0xB1
|
assign-unicode 0xB1
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
include glyphs.underscore
|
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
|
||||||
include glyphs.plus
|
include glyphs.plus
|
||||||
}
|
}
|
||||||
|
turned 'minusplus' 0x2213 'plusminus' MIDDLE parenMid
|
||||||
create-glyph 'multiply' : glyph-construction {
|
create-glyph 'multiply' : glyph-construction {
|
||||||
assign-unicode 0xD7
|
assign-unicode 0xD7
|
||||||
local radius : [RIGHTSB - SB] / 2
|
local radius : [RIGHTSB - SB] / 2
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from [MIDDLE - radius] [parenMid - radius]
|
:.start-from [MIDDLE - radius] [parenMid - radius]
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.line-to [MIDDLE + radius] [parenMid + radius]
|
:.line-to [MIDDLE + radius] [parenMid + radius]
|
||||||
|
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from [MIDDLE + radius] [parenMid - radius]
|
:.start-from [MIDDLE + radius] [parenMid - radius]
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.line-to [MIDDLE - radius] [parenMid + radius]
|
:.line-to [MIDDLE - radius] [parenMid + radius]
|
||||||
}
|
}
|
||||||
create-glyph 'divide' : glyph-construction {
|
create-glyph 'divide' : glyph-construction {
|
||||||
assign-unicode 0xF7
|
assign-unicode 0xF7
|
||||||
include glyphs.hyphen
|
include glyphs.minus
|
||||||
local radius : [RIGHTSB - SB] / 2
|
local radius : [RIGHTSB - SB] / 2
|
||||||
include : list {
|
include : list {
|
||||||
Ring [parenMid + radius + DOTRADIUS] [parenMid + radius - DOTRADIUS] [MIDDLE - DOTRADIUS + O] [MIDDLE + DOTRADIUS - O]
|
Ring [parenMid + radius + DOTRADIUS] [parenMid + radius - DOTRADIUS] [MIDDLE - DOTRADIUS + O] [MIDDLE + DOTRADIUS - O]
|
||||||
|
@ -55,10 +113,179 @@ create-glyph 'divide' : glyph-construction {
|
||||||
create-glyph 'negate' : glyph-construction {
|
create-glyph 'negate' : glyph-construction {
|
||||||
assign-unicode 0xAC
|
assign-unicode 0xAC
|
||||||
|
|
||||||
include glyphs.hyphen
|
include glyphs.minus
|
||||||
|
|
||||||
include : VBar [RIGHTSB - HALFSTROKE] [parenMid - [RIGHTSB - SB] * 0.55] [parenMid + HALFSTROKE]
|
include : VBarRight RIGHTSB [parenMid - [RIGHTSB - SB] * 0.55] parenMid OPERATORSTROKE
|
||||||
}
|
}
|
||||||
|
local operTop : mix parenMid parenTop 0.8
|
||||||
|
local operBot : mix parenMid parenBot 0.8
|
||||||
|
create-glyph 'vee' : glyph-construction {
|
||||||
|
assign-unicode 0x2228
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB operTop
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to MIDDLE operBot
|
||||||
|
:.heads-to DOWNWARD
|
||||||
|
:.set-samples 1
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB operTop
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to MIDDLE operBot
|
||||||
|
:.heads-to DOWNWARD
|
||||||
|
:.set-samples 1
|
||||||
|
}
|
||||||
|
create-glyph 'Vee' : glyph-construction {
|
||||||
|
assign-unicode 0x22C1
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB parenTop
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to MIDDLE parenBot
|
||||||
|
:.heads-to DOWNWARD
|
||||||
|
:.set-samples 1
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB parenTop
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to MIDDLE parenBot
|
||||||
|
:.heads-to DOWNWARD
|
||||||
|
:.set-samples 1
|
||||||
|
}
|
||||||
|
turned 'wedge' 0x2227 'vee' MIDDLE parenMid
|
||||||
|
turned 'Wedge' 0x22C0 'Vee' MIDDLE parenMid
|
||||||
|
create-glyph 'cup' : glyph-construction {
|
||||||
|
assign-unicode 0x222A
|
||||||
|
include : UShape operTop operBot OPERATORSTROKE
|
||||||
|
}
|
||||||
|
create-glyph 'Cup' : glyph-construction {
|
||||||
|
assign-unicode 0x22C3
|
||||||
|
include : UShape parenTop parenBot OPERATORSTROKE
|
||||||
|
}
|
||||||
|
turned 'cap' 0x2229 'cup' MIDDLE parenMid
|
||||||
|
turned 'Cap' 0x22C2 'Cup' MIDDLE parenMid
|
||||||
|
|
||||||
|
create-glyph 'lesseq' : glyph-construction {
|
||||||
|
assign-unicode 0x2264
|
||||||
|
local fine : adviceBlackness 4
|
||||||
|
local top : [mix parenMid parenTop 0.5] - fine
|
||||||
|
local bot : [mix parenMid parenBot 0.5] + fine
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB [top + fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to SB [[mix top bot 0.5] + fine]
|
||||||
|
:.heads-to LEFTWARD
|
||||||
|
:.set-samples 1
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB [[mix top bot 0.5] + fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.heads-to RIGHTWARD
|
||||||
|
:.line-to RIGHTSB [bot + fine]
|
||||||
|
:.set-samples 1
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB [[mix top bot 0.5] - fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.heads-to RIGHTWARD
|
||||||
|
:.line-to RIGHTSB [bot - fine]
|
||||||
|
:.set-samples 1
|
||||||
|
}
|
||||||
|
create-glyph 'greatereq' : glyph-construction {
|
||||||
|
assign-unicode 0x2265
|
||||||
|
local fine : adviceBlackness 4
|
||||||
|
local top : [mix parenMid parenTop 0.5] - fine
|
||||||
|
local bot : [mix parenMid parenBot 0.5] + fine
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB [top + fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.line-to RIGHTSB [[mix top bot 0.5] + fine]
|
||||||
|
:.heads-to RIGHTWARD
|
||||||
|
:.set-samples 1
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB [[mix top bot 0.5] + fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.heads-to LEFTWARD
|
||||||
|
:.line-to SB [bot + fine]
|
||||||
|
:.set-samples 1
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB [[mix top bot 0.5] - fine]
|
||||||
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
|
:.heads-to LEFTWARD
|
||||||
|
:.line-to SB [bot - fine]
|
||||||
|
:.set-samples 1
|
||||||
|
}
|
||||||
|
create-glyph 'subst' : glyph-construction {
|
||||||
|
assign-unicode 0x2282
|
||||||
|
local top : mix parenMid parenTop 0.5
|
||||||
|
local bot : mix parenMid parenBot 0.5
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from RIGHTSB top
|
||||||
|
:.heads-to LEFTWARD
|
||||||
|
:.set-width OPERATORSTROKE 0
|
||||||
|
:.line-to [SB + [top - bot] / 2] top
|
||||||
|
:.arc-hv-to SB parenMid
|
||||||
|
:.arc-vh-to [SB + [top - bot] / 2] bot
|
||||||
|
:.line-to RIGHTSB bot
|
||||||
|
:.heads-to RIGHTWARD
|
||||||
|
}
|
||||||
|
create-glyph 'element' : glyph-construction {
|
||||||
|
assign-unicode 0x2208
|
||||||
|
include glyphs.subst
|
||||||
|
include : HBar [SB + HALFSTROKE] RIGHTSB parenMid OPERATORSTROKE
|
||||||
|
}
|
||||||
|
turned nothing 0x2283 'subst' MIDDLE parenMid
|
||||||
|
turned nothing 0x220B 'element' MIDDLE parenMid
|
||||||
|
|
||||||
|
create-glyph 'sym' : glyph-construction {
|
||||||
|
assign-unicode 0x223C
|
||||||
|
local wavex : [MIDDLE - SB] * 0.3
|
||||||
|
local wavey : [operTop - parenMid] * 0.15
|
||||||
|
local endwavey : wavey + 0
|
||||||
|
local fine OPERATORSTROKE
|
||||||
|
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from SB [parenMid - endwavey]
|
||||||
|
:.set-width [fine / 2] [fine / 2]
|
||||||
|
:.cubic-to [SB + wavex] [parenMid + wavey] [MIDDLE - wavex] [parenMid + wavey] MIDDLE parenMid
|
||||||
|
:.cubic-to [MIDDLE + wavex] [parenMid - wavey] [RIGHTSB - wavex] [parenMid - wavey] RIGHTSB [parenMid + endwavey]
|
||||||
|
}
|
||||||
|
create-glyph 'ident' : glyph-construction {
|
||||||
|
assign-unicode 0x2261
|
||||||
|
include : HBar SB RIGHTSB [parenMid + equalHalfSpace * 1.5] OPERATORSTROKE
|
||||||
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
|
include : HBar SB RIGHTSB [parenMid - equalHalfSpace * 1.5] OPERATORSTROKE
|
||||||
|
}
|
||||||
|
vdual 'approx' 0x2248 'sym' [equalHalfSpace * 1.75]
|
||||||
|
|
||||||
|
define [notGlyph newid unicode oldid top bot prop shift] : create-glyph [fallback newid : 'not' + oldid] : glyph-construction {
|
||||||
|
assign-unicode unicode
|
||||||
|
include glyphs.(oldid)
|
||||||
|
|
||||||
|
local fine : OPERATORSTROKE / 2
|
||||||
|
include : create-stroke
|
||||||
|
:.start-from [[fallback shift 0] + [mix SB RIGHTSB [fallback prop 0.25]]] [fallback bot operBot]
|
||||||
|
:.set-width fine fine
|
||||||
|
:.line-to [[fallback shift 0] + [mix RIGHTSB SB [fallback prop 0.25]]] [fallback top operTop]
|
||||||
|
}
|
||||||
|
define [notGlyph.right newid unicode oldid top bot prop shift] : notGlyph newid unicode oldid top bot prop [-OPERATORSTROKE * 0.5]
|
||||||
|
define [notGlyph.left newid unicode oldid top bot prop shift] : notGlyph newid unicode oldid top bot prop [OPERATORSTROKE * 0.5]
|
||||||
|
notGlyph 'noteq' 0x2260 'equal'
|
||||||
|
notGlyph 'notident' 0x2262 'ident'
|
||||||
|
notGlyph.left 'notless' 0x226E 'less'
|
||||||
|
notGlyph.right 'notgreater' 0x226F 'greater'
|
||||||
|
notGlyph 'notapprox' 0x2249 'approx' [mix parenMid operTop 0.75] [mix parenMid operBot 0.75]
|
||||||
|
notGlyph 'notsym' 0x2241 'sym' [mix parenMid operTop 0.75] [mix parenMid operBot 0.75]
|
||||||
|
notGlyph.left 'notsubst' 0x2284 'subst'
|
||||||
|
notGlyph.right 'notturnsubst' 0x2285 'turnsubst'
|
||||||
|
notGlyph.left 'notelement' 0x2209 'element'
|
||||||
|
notGlyph.right 'notturnelement' 0x220C 'turnelement'
|
||||||
|
notGlyph.left 'notlesseq' 0x2270 'lesseq'
|
||||||
|
notGlyph.right 'notgreatereq' 0x2271 'greatereq'
|
||||||
|
notGlyph.right 'nonexist' 0x2204 'exists' [CAP - DESCENDER / 2] [DESCENDER / 2] 0.4
|
||||||
|
|
||||||
|
### Others
|
||||||
|
|
||||||
alias 'mathbullet' 0x2219 'bullet'
|
alias 'mathbullet' 0x2219 'bullet'
|
||||||
create-glyph 'sqrt' : glyph-construction {
|
create-glyph 'sqrt' : glyph-construction {
|
||||||
|
@ -66,14 +293,14 @@ create-glyph 'sqrt' : glyph-construction {
|
||||||
|
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from SB [mix parenBot parenTop 0.45]
|
:.start-from SB [mix parenBot parenTop 0.45]
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.line-to MIDDLE parenBot
|
:.line-to MIDDLE parenBot
|
||||||
:.heads-to DOWNWARD
|
:.heads-to DOWNWARD
|
||||||
:.set-samples 1
|
:.set-samples 1
|
||||||
|
|
||||||
include : create-stroke
|
include : create-stroke
|
||||||
:.start-from WIDTH parenTop
|
:.start-from WIDTH parenTop
|
||||||
:.set-width HALFSTROKE HALFSTROKE
|
:.set-width [OPERATORSTROKE / 2] [OPERATORSTROKE / 2]
|
||||||
:.line-to MIDDLE parenBot
|
:.line-to MIDDLE parenBot
|
||||||
:.heads-to DOWNWARD
|
:.heads-to DOWNWARD
|
||||||
:.set-samples 1
|
:.set-samples 1
|
||||||
|
@ -81,6 +308,6 @@ create-glyph 'sqrt' : glyph-construction {
|
||||||
|
|
||||||
create-glyph 'integrate' : glyph-construction {
|
create-glyph 'integrate' : glyph-construction {
|
||||||
assign-unicode 0x222B
|
assign-unicode 0x222B
|
||||||
include : LongSShape parenTop parenBot HOOK [HOOK * 0.75]
|
include : LongSShape parenTop parenBot HOOK [HOOK * 0.75] OPERATORSTROKE
|
||||||
}
|
}
|
||||||
dual 'doubleintegrate' 0x222C 'integrate' [0.5 * WIDTH]
|
dual 'doubleintegrate' 0x222C 'integrate' [0.5 * WIDTH]
|
|
@ -40,7 +40,7 @@ define regular (
|
||||||
.family 'Iosevka'
|
.family 'Iosevka'
|
||||||
.style 'Regular'
|
.style 'Regular'
|
||||||
.weight 400
|
.weight 400
|
||||||
.version 'r0.0.13'
|
.version 'r0.0.14'
|
||||||
.variantSelector (.)
|
.variantSelector (.)
|
||||||
.copyright 'Copyright (c) 2015 Belleve Invis.'
|
.copyright 'Copyright (c) 2015 Belleve Invis.'
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue