Fix incorrect shape of Proportional To (U+221D), Infinity (U+221E) and Inverted Lazy S (U+223E) under Italic/Oblique.

This commit is contained in:
be5invis 2021-07-07 20:56:15 -07:00
parent 9313fbf7b0
commit a2dbab91e0
9 changed files with 36 additions and 28 deletions

1
changes/7.2.7.md Normal file
View file

@ -0,0 +1 @@
* Fix incorrect shape of Proportional To (`U+221D`), Infinity (`U+221E`) and Inverted Lazy S (`U+223E`) under Italic/Oblique.

View file

@ -613,9 +613,9 @@ glyph-block Autobuild-Rotated : begin
for-width-kinds WideWidth1 : do
local s : (RightSB - SB - O * 4 + (MosaicWidth - Width) * 0.5) / CAP
local df : Miniature {'eight.lnum.crossing' 'rotetedPropto' 'revS'}
crowd -- 4
scale -- s
slopeAngle -- 0
crowd -- (4 / [Math.sqrt MosaicWidthScalar])
scale -- s
forceUpright -- true
define [InftyLikeShape gn u gns] : begin
create-glyph [MangleName gn] [MangleUnicode u] : glyph-proc

View file

@ -188,13 +188,15 @@ glyph-block Recursive-Build : begin
local gs : buildGlyphs p shouldBuildList shouldBuildUnicodes
return gs.glyphStore
define [MiniatureParaT] : params [pp crowd scale [sbscale (Width / UPM)] [mono false] [mono2 false]] : begin
define [MiniatureParaT] : params [pp crowd scale [sbscale (Width / UPM)] [mono false] [mono2 false] [forceUpright false]] : begin
local forkedPara : Object.create pp
forkedPara.stroke = [AdviceStroke crowd : Math.pow [clamp 0 1 (HalfUPM / Width)] 0.5] / scale
forkedPara.ess = pp.ess * forkedPara.stroke / pp.stroke
forkedPara.dotsize = pp.dotsize * forkedPara.stroke / pp.stroke
forkedPara.periodsize = pp.periodsize * forkedPara.stroke / pp.stroke
forkedPara.sb = SB * sbscale
if forceUpright : begin
forkedPara.slopeAngle = 0
if mono : begin
forkedPara.diversityM = 1
if mono2 : begin

View file

@ -109,7 +109,7 @@ glyph-block Symbol-Math-Arith : begin
do "dotted"
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do
local dr : DotRadius * kDotRadius
local dr : DotRadius * kDotRadius * OperatorStroke / Stroke
create-glyph "dotplus.\(suffix)" : glyph-proc
local gap : AdviceStroke 12
include : union

View file

@ -19,4 +19,4 @@ glyph-block Symbol-Math-Boxed : begin
MakeMathBoxed 0x229E 'innerPlus'
MakeMathBoxed 0x229F 'innerMinus'
MakeMathBoxed 0x22A0 'innerMultiply'
MakeMathBoxed 0x22A1 'mathcdot'
MakeMathBoxed 0x22A1 'mathCDotInner'

View file

@ -20,7 +20,7 @@ glyph-block Symbol-Math-Circled : begin
MakeMathCircled 0x2296 'innerMinus'
MakeMathCircled 0x2297 'innerMultiply'
MakeMathCircled 0x2298 'innerMultiplyStroke1'
MakeMathCircled 0x2299 'mathcdot'
MakeMathCircled 0x2299 'mathCDotInner'
MakeMathCircled 0x229A 'whiteSmallCircle.NWID'
MakeMathCircled 0x229B 'mathAsterisk'
@ -32,7 +32,7 @@ glyph-block Symbol-Math-Circled : begin
refer-glyph : MangleName 'mathOOutlineBig'
refer-glyph src
MakeMathBigCircled 0x2A00 'mathcdotBig'
MakeMathBigCircled 0x2A00 'mathCDotBig'
MakeMathBigCircled 0x2A01 'innerPlusBig'
MakeMathBigCircled 0x2A02 'innerMultiplyBig'

View file

@ -12,7 +12,7 @@ glyph-block Symbol-Math-Dots-And-Colons : begin
glyph-block-import Shared-Symbol-Shapes : DotVariants
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do
local radius1 : PeriodRadius * kDotRadius
local radius1 : PeriodRadius * kDotRadius * OperatorStroke / Stroke
local radius : Math.min radius1 (0.5 * [AdviceStroke 3.5 (Width / kDotRadius)] * PeriodSize * kDotRadius / Stroke)
local left : mix 0 Width (1 / 4)
local right : mix 0 Width (3 / 4)
@ -39,11 +39,14 @@ glyph-block Symbol-Math-Dots-And-Colons : begin
include : DrawAt left yLowerColon (radius - overshoot)
include : DrawAt right yLowerColon (radius - overshoot)
create-glyph "mathcdot.\(suffix)" : glyph-proc
create-glyph "mathCDot.\(suffix)" : glyph-proc
include : DrawAt Middle SymbolMid (radius - overshoot)
create-glyph "mathCDotInner.\(suffix)" : glyph-proc
include : DrawAt Middle SymbolMid (radius * OperatorStroke / Stroke - overshoot)
for-width-kinds WideWidth1
create-glyph "\[MangleName 'mathcdotBig'].\(suffix)" : glyph-proc
create-glyph "\[MangleName 'mathCDotBig'].\(suffix)" : glyph-proc
set-width MosaicWidth
include : DrawAt MosaicMiddle SymbolMid (radius1 - overshoot)
@ -51,7 +54,8 @@ glyph-block Symbol-Math-Dots-And-Colons : begin
select-variant 'because' 0x2235 (follow -- 'punctuationDot')
select-variant 'mathcolon' 0x2236 (follow -- 'punctuationDot')
select-variant 'coloncolon' 0x2237 (follow -- 'punctuationDot')
select-variant 'mathcdot' (follow -- 'punctuationDot')
select-variant 'mathCDot' 0x22C5 (follow -- 'punctuationDot')
select-variant 'mathCDotInner' (follow -- 'punctuationDot')
for-width-kinds WideWidth1
select-variant [MangleName 'mathcdotBig'] (follow -- 'punctuationDot')
select-variant [MangleName 'mathCDotBig'] (follow -- 'punctuationDot')

View file

@ -63,28 +63,30 @@ glyph-block Symbol-Math-Relation-Equal : begin
refer-glyph 'equal'
refer-glyph 'parallel.upright'
define EqDotDistance : EqualHalfSpace * 2 + DotRadius * OperatorStroke / Stroke
WithDotVariants 'oneDotApproxEq' 0x2250 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr
local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal'
include : DrawAt Middle (SymbolMid + EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt Middle (SymbolMid + EqDotDistance) (dr - ov)
WithDotVariants 'twoDotApproxEqCenter' 0x2251 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr
local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal'
include : DrawAt Middle (SymbolMid + EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt Middle (SymbolMid - EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt Middle (SymbolMid + EqDotDistance) (dr - ov)
include : DrawAt Middle (SymbolMid - EqDotDistance) (dr - ov)
WithDotVariants 'twoDotApproxEq' 0x2252 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr
local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal'
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid + EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid - EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid + EqDotDistance) (dr - ov)
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid - EqDotDistance) (dr - ov)
WithDotVariants 'twoDotApproxEqAlt' 0x2253 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr
local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal'
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid + EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid - EqualHalfSpace * 2.5) (dr - ov)
include : DrawAt [mix SB RightSB (5/6)] (SymbolMid + EqDotDistance) (dr - ov)
include : DrawAt [mix SB RightSB (1/6)] (SymbolMid - EqDotDistance) (dr - ov)
create-glyph 'ringInEqual' 0x2256 : glyph-proc
local ringSw : AdviceStroke 4
@ -181,7 +183,7 @@ glyph-block Symbol-Math-Relation-Colons : begin
define ColonEqSbSquash 0.5
define [ColonEqColonShape sign DrawAt kr ov] : new-glyph : glyph-proc
local dr : DotRadius * kr
local dr : DotRadius * kr * OperatorStroke / Stroke
include : DrawAt Middle dr (dr - ov)
include : DrawAt Middle (XH - dr) (dr - ov)
@ -229,8 +231,8 @@ glyph-block Symbol-Math-Relation-Sym : begin
WithDotVariants 'twoDotSym' 0x223B : function [DrawAt kr ov] : composite-proc
refer-glyph 'sym'
DrawAt Middle PlusTop (DotRadius * kr - ov)
DrawAt Middle PlusBot (DotRadius * kr - ov)
DrawAt Middle PlusTop (DotRadius * kr * OperatorStroke / Stroke - ov)
DrawAt Middle PlusBot (DotRadius * kr * OperatorStroke / Stroke - ov)
VDual 'approx' 0x2248 'sym' approxDist

View file

@ -22,4 +22,3 @@ glyph-block Symbol-Punctuation-Interpuncts : begin
alias 'period/mid' null 'interpunct'
alias 'greekbullet' 0x387 'interpunct'
alias 'hyphenpoint' 0x2027 'interpunct'
alias 'mathCDot' 0x22C5 'interpunct'