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 for-width-kinds WideWidth1 : do
local s : (RightSB - SB - O * 4 + (MosaicWidth - Width) * 0.5) / CAP local s : (RightSB - SB - O * 4 + (MosaicWidth - Width) * 0.5) / CAP
local df : Miniature {'eight.lnum.crossing' 'rotetedPropto' 'revS'} local df : Miniature {'eight.lnum.crossing' 'rotetedPropto' 'revS'}
crowd -- 4 crowd -- (4 / [Math.sqrt MosaicWidthScalar])
scale -- s scale -- s
slopeAngle -- 0 forceUpright -- true
define [InftyLikeShape gn u gns] : begin define [InftyLikeShape gn u gns] : begin
create-glyph [MangleName gn] [MangleUnicode u] : glyph-proc 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 local gs : buildGlyphs p shouldBuildList shouldBuildUnicodes
return gs.glyphStore 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 local forkedPara : Object.create pp
forkedPara.stroke = [AdviceStroke crowd : Math.pow [clamp 0 1 (HalfUPM / Width)] 0.5] / scale forkedPara.stroke = [AdviceStroke crowd : Math.pow [clamp 0 1 (HalfUPM / Width)] 0.5] / scale
forkedPara.ess = pp.ess * forkedPara.stroke / pp.stroke forkedPara.ess = pp.ess * forkedPara.stroke / pp.stroke
forkedPara.dotsize = pp.dotsize * forkedPara.stroke / pp.stroke forkedPara.dotsize = pp.dotsize * forkedPara.stroke / pp.stroke
forkedPara.periodsize = pp.periodsize * forkedPara.stroke / pp.stroke forkedPara.periodsize = pp.periodsize * forkedPara.stroke / pp.stroke
forkedPara.sb = SB * sbscale forkedPara.sb = SB * sbscale
if forceUpright : begin
forkedPara.slopeAngle = 0
if mono : begin if mono : begin
forkedPara.diversityM = 1 forkedPara.diversityM = 1
if mono2 : begin if mono2 : begin

View file

@ -109,7 +109,7 @@ glyph-block Symbol-Math-Arith : begin
do "dotted" do "dotted"
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do 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 create-glyph "dotplus.\(suffix)" : glyph-proc
local gap : AdviceStroke 12 local gap : AdviceStroke 12
include : union include : union

View file

@ -19,4 +19,4 @@ glyph-block Symbol-Math-Boxed : begin
MakeMathBoxed 0x229E 'innerPlus' MakeMathBoxed 0x229E 'innerPlus'
MakeMathBoxed 0x229F 'innerMinus' MakeMathBoxed 0x229F 'innerMinus'
MakeMathBoxed 0x22A0 'innerMultiply' 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 0x2296 'innerMinus'
MakeMathCircled 0x2297 'innerMultiply' MakeMathCircled 0x2297 'innerMultiply'
MakeMathCircled 0x2298 'innerMultiplyStroke1' MakeMathCircled 0x2298 'innerMultiplyStroke1'
MakeMathCircled 0x2299 'mathcdot' MakeMathCircled 0x2299 'mathCDotInner'
MakeMathCircled 0x229A 'whiteSmallCircle.NWID' MakeMathCircled 0x229A 'whiteSmallCircle.NWID'
MakeMathCircled 0x229B 'mathAsterisk' MakeMathCircled 0x229B 'mathAsterisk'
@ -32,7 +32,7 @@ glyph-block Symbol-Math-Circled : begin
refer-glyph : MangleName 'mathOOutlineBig' refer-glyph : MangleName 'mathOOutlineBig'
refer-glyph src refer-glyph src
MakeMathBigCircled 0x2A00 'mathcdotBig' MakeMathBigCircled 0x2A00 'mathCDotBig'
MakeMathBigCircled 0x2A01 'innerPlusBig' MakeMathBigCircled 0x2A01 'innerPlusBig'
MakeMathBigCircled 0x2A02 'innerMultiplyBig' MakeMathBigCircled 0x2A02 'innerMultiplyBig'

View file

@ -12,7 +12,7 @@ glyph-block Symbol-Math-Dots-And-Colons : begin
glyph-block-import Shared-Symbol-Shapes : DotVariants glyph-block-import Shared-Symbol-Shapes : DotVariants
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do 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 radius : Math.min radius1 (0.5 * [AdviceStroke 3.5 (Width / kDotRadius)] * PeriodSize * kDotRadius / Stroke)
local left : mix 0 Width (1 / 4) local left : mix 0 Width (1 / 4)
local right : mix 0 Width (3 / 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 left yLowerColon (radius - overshoot)
include : DrawAt right 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) include : DrawAt Middle SymbolMid (radius - overshoot)
create-glyph "mathCDotInner.\(suffix)" : glyph-proc
include : DrawAt Middle SymbolMid (radius * OperatorStroke / Stroke - overshoot)
for-width-kinds WideWidth1 for-width-kinds WideWidth1
create-glyph "\[MangleName 'mathcdotBig'].\(suffix)" : glyph-proc create-glyph "\[MangleName 'mathCDotBig'].\(suffix)" : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : DrawAt MosaicMiddle SymbolMid (radius1 - overshoot) 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 'because' 0x2235 (follow -- 'punctuationDot')
select-variant 'mathcolon' 0x2236 (follow -- 'punctuationDot') select-variant 'mathcolon' 0x2236 (follow -- 'punctuationDot')
select-variant 'coloncolon' 0x2237 (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 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 'equal'
refer-glyph 'parallel.upright' refer-glyph 'parallel.upright'
define EqDotDistance : EqualHalfSpace * 2 + DotRadius * OperatorStroke / Stroke
WithDotVariants 'oneDotApproxEq' 0x2250 : function [DrawAt kr ov] : glyph-proc WithDotVariants 'oneDotApproxEq' 0x2250 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal' 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 WithDotVariants 'twoDotApproxEqCenter' 0x2251 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal' include : refer-glyph 'equal'
include : DrawAt Middle (SymbolMid + EqualHalfSpace * 2.5) (dr - ov) include : DrawAt Middle (SymbolMid + EqDotDistance) (dr - ov)
include : DrawAt Middle (SymbolMid - EqualHalfSpace * 2.5) (dr - ov) include : DrawAt Middle (SymbolMid - EqDotDistance) (dr - ov)
WithDotVariants 'twoDotApproxEq' 0x2252 : function [DrawAt kr ov] : glyph-proc WithDotVariants 'twoDotApproxEq' 0x2252 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal' include : refer-glyph 'equal'
include : DrawAt [mix SB RightSB (1/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 - EqualHalfSpace * 2.5) (dr - ov) include : DrawAt [mix SB RightSB (5/6)] (SymbolMid - EqDotDistance) (dr - ov)
WithDotVariants 'twoDotApproxEqAlt' 0x2253 : function [DrawAt kr ov] : glyph-proc WithDotVariants 'twoDotApproxEqAlt' 0x2253 : function [DrawAt kr ov] : glyph-proc
local dr : DotRadius * kr local dr : DotRadius * kr * OperatorStroke / Stroke
include : refer-glyph 'equal' include : refer-glyph 'equal'
include : DrawAt [mix SB RightSB (5/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 - EqualHalfSpace * 2.5) (dr - ov) include : DrawAt [mix SB RightSB (1/6)] (SymbolMid - EqDotDistance) (dr - ov)
create-glyph 'ringInEqual' 0x2256 : glyph-proc create-glyph 'ringInEqual' 0x2256 : glyph-proc
local ringSw : AdviceStroke 4 local ringSw : AdviceStroke 4
@ -181,7 +183,7 @@ glyph-block Symbol-Math-Relation-Colons : begin
define ColonEqSbSquash 0.5 define ColonEqSbSquash 0.5
define [ColonEqColonShape sign DrawAt kr ov] : new-glyph : glyph-proc 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 dr (dr - ov)
include : DrawAt Middle (XH - 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 WithDotVariants 'twoDotSym' 0x223B : function [DrawAt kr ov] : composite-proc
refer-glyph 'sym' refer-glyph 'sym'
DrawAt Middle PlusTop (DotRadius * kr - ov) DrawAt Middle PlusTop (DotRadius * kr * OperatorStroke / Stroke - ov)
DrawAt Middle PlusBot (DotRadius * kr - ov) DrawAt Middle PlusBot (DotRadius * kr * OperatorStroke / Stroke - ov)
VDual 'approx' 0x2248 'sym' approxDist VDual 'approx' 0x2248 'sym' approxDist

View file

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