Revamp the weight grades

This commit is contained in:
be5invis 2020-10-29 22:34:30 -07:00
parent 23fc0eede6
commit e01065074a
75 changed files with 195 additions and 243 deletions

View file

@ -33,7 +33,7 @@ glyph-block Autobuild-Enclosure-Shared : begin
local rs : new Set local rs : new Set
local gniPart : fnBuildup gidPart local gniPart : fnBuildup gidPart
local grs : AnyDerivingCv.query [query-glyph gidPart] local grs : AnyDerivingCv.query [query-glyph gidPart]
if grs : foreach gr [items-of grs] : begin if (para.enableCvSs && grs) : foreach gr [items-of grs] : begin
local relatedGidPart : gr.get [query-glyph gidPart] local relatedGidPart : gr.get [query-glyph gidPart]
local gniRelated : fnBuildup relatedGidPart local gniRelated : fnBuildup relatedGidPart
if [query-glyph gniPart] : begin if [query-glyph gniPart] : begin
@ -54,7 +54,7 @@ glyph-block Autobuild-Enclosure-Shared : begin
local restInfo : demand.slice 2 local restInfo : demand.slice 2
local origJobGlyphGn : CircName unicode prefix parts suffix local origJobGlyphGn : CircName unicode prefix parts suffix
local demandDecomposable globallyDecomposable local demandDecomposable : para.enableCvSs && globallyDecomposable
foreach part [items-of parts] : if [query-glyph part] : begin foreach part [items-of parts] : if [query-glyph part] : begin
local g : query-glyph part local g : query-glyph part
local relatedGlyphs : AnyDerivingCv.query g local relatedGlyphs : AnyDerivingCv.query g
@ -66,12 +66,14 @@ glyph-block Autobuild-Enclosure-Shared : begin
local jobsRel : if demandDecomposable decomposableRelJobs nonDecomposable local jobsRel : if demandDecomposable decomposableRelJobs nonDecomposable
jobsOrig.push { origJobGlyphGn unicode parts :: restInfo } jobsOrig.push { origJobGlyphGn unicode parts :: restInfo }
local mesh : getGrMesh parts AnyDerivingCv query-glyph if para.enableCvSs : begin
foreach {gr fromParts toParts} [items-of mesh] : do local mesh : getGrMesh parts AnyDerivingCv query-glyph
local fromGn : CircNameNoCheck unicode prefix fromParts suffix foreach {gr fromParts toParts} [items-of mesh] : do
local toGn : CircName unicode prefix toParts suffix local fromGn : CircNameNoCheck unicode prefix fromParts suffix
jobsRel.push { toGn null toParts :: restInfo } local toGn : CircName unicode prefix toParts suffix
if [not demandDecomposable] : relApplications.push : list gr fromGn toGn jobsRel.push { toGn null toParts :: restInfo }
if [not demandDecomposable] : relApplications.push { gr fromGn toGn }
return : object nonDecomposable decomposableJobs decomposableRelJobs relApplications return : object nonDecomposable decomposableJobs decomposableRelJobs relApplications
glyph-block-export CreateDerivedFontFromJobs glyph-block-export CreateDerivedFontFromJobs
@ -1047,17 +1049,17 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin
foreach [{unicode c1 c2 mak} : items-of records] : begin foreach [{unicode c1 c2 mak} : items-of records] : begin
local glyphName : PhoneticLigatureGlyphName c1 c2 local glyphName : PhoneticLigatureGlyphName c1 c2
define [maskOut] : new-glyph : glyph-proc local maskOuts {}
local s 0 local s 0
local step (-OX) local step (-OX)
local dist (Stroke * 2) local dist (Stroke * 2)
define dfg1 : df1.queryByNameEnsured c1 while (s < dist) : do
define dfg2 : df2.queryByNameEnsured c2 maskOuts.push : new-glyph : glyph-proc
while (s < dist) : begin define dfg1 : df1.queryByNameEnsured c1
define dfg2 : df2.queryByNameEnsured c2
include dfg2 include dfg2
include : Translate step 0 include : Translate (s + dfg1.advanceWidth * wadj1 - kern) 0
set s : s + step set s : s + step
include : Translate (dfg1.advanceWidth * wadj1 - kern) 0
create-glyph glyphName unicode : glyph-proc create-glyph glyphName unicode : glyph-proc
set-width CWidth set-width CWidth
@ -1068,11 +1070,9 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin
local refW : sumChildrenWidth - kern local refW : sumChildrenWidth - kern
include dfg2 include dfg2
include : Translate (dfg1.advanceWidth * wadj1 - kern) 0 include : Translate (dfg1.advanceWidth * wadj1 - kern) 0
include : difference local leftHalf : intersection dfg1
intersection Rect (CAP * 2) (Descender * 2) (-CWidth) (dfg1.advanceWidth * wadj1 - kern + dfg2.advanceWidth * wadj2 / 2)
Rect (CAP * 2) (Descender * 2) (-CWidth) (dfg1.advanceWidth * wadj1 - kern + dfg2.advanceWidth * wadj2 / 2) include : difference.apply null { leftHalf :: maskOuts}
glyph-proc : include dfg1
maskOut
include : Upright include : Upright
include : Translate (-refW / 2) 0 include : Translate (-refW / 2) 0
include : Scale [clamp 0 1 ((CWidth - SB * 1.25) / (CWidth - SB * 2) * CWidth / refW)] 1 include : Scale [clamp 0 1 ((CWidth - SB * 1.25) / (CWidth - SB * 2) * CWidth / refW)] 1

View file

@ -74,7 +74,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
glyphObject.setWidth Width glyphObject.setWidth Width
glyphObject.gizmo = GlobalTransform glyphObject.gizmo = GlobalTransform
glyphObject.include actions true true glyphObject.include actions true true
warnAboutBrokenGlyph glyphObject ensuredGlyphName warnAboutBrokenGlyph glyphObject ensuredGlyphName saveGlyphName
if saveGlyphName : begin if saveGlyphName : begin
if (saveGlyphName.0 != '.' && [glyphStore.queryByName saveGlyphName]) if (saveGlyphName.0 != '.' && [glyphStore.queryByName saveGlyphName])
@ -86,7 +86,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
return glyphObject return glyphObject
define [warnAboutBrokenGlyph g ensuredGlyphName] : begin define [warnAboutBrokenGlyph g ensuredGlyphName saveGlyphName] : begin
local complexity 0 local complexity 0
local broken false local broken false
if g.contours : begin if g.contours : begin
@ -95,9 +95,10 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
if [not : isFinite z.x] : set broken true if [not : isFinite z.x] : set broken true
if [not : isFinite z.y] : set broken true if [not : isFinite z.y] : set broken true
if ([not recursive] && (broken || complexity > 0x7fff)) : begin if ([not recursive] && (broken || complexity > 4096)) : begin
console.log 'Possible broken shape found in' ensuredGlyphName 'Complexity' complexity console.log 'Possible broken shape found in' ensuredGlyphName 'Complexity' complexity
console.log 'Family' para.naming.family para.naming.weight para.naming.width para.naming.slope console.log 'Family' para.naming.family para.naming.weight para.naming.width para.naming.slope
if saveGlyphName : throw : new Error "Overcomplicated \(saveGlyphName)"
define [$assignUnicodeImpl$ g unicode] : begin define [$assignUnicodeImpl$ g unicode] : begin
local u unicode local u unicode

View file

@ -217,7 +217,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
define StdBlend 0.65 define StdBlend 0.65
define [SmallEpsilonShapeDim top bot blend] : begin define [SmallEpsilonShapeDim top bot blend] : begin
local stroke : adviceBlackness2 2.875 2 (top - bot) local stroke : adviceBlackness2 2 3 (top - bot)
local midx : mix SB RightSB blend local midx : mix SB RightSB blend
local midy : mix bot top OverlayPos local midy : mix bot top OverlayPos
local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke
@ -261,7 +261,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : SmallEpsilonShape CAP 0 StdBlend Hook include : SmallEpsilonShape CAP 0 StdBlend Hook
define [CyrZeShapeDim top bot blend] : begin define [CyrZeShapeDim top bot blend] : begin
local stroke : adviceBlackness2 2.875 2 (top - bot) local stroke : adviceBlackness2 2 3 (top - bot)
local midx : mix RightSB SB blend local midx : mix RightSB SB blend
local midy : mix bot top OverlayPos local midy : mix bot top OverlayPos
local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke

View file

@ -965,7 +965,7 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-import Marks : markHalfStroke glyph-block-import Marks : markHalfStroke
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
define ADoubleStoreyStroke : adviceBlackness2 2.875 2 XH define ADoubleStoreyStroke : adviceBlackness2 2 3 XH
define ADoubleStoreySmoothA : SmoothAOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width define ADoubleStoreySmoothA : SmoothAOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width
define ADoubleStoreySmoothB : SmoothBOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width define ADoubleStoreySmoothB : SmoothBOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width
@ -1365,7 +1365,7 @@ glyph-block Letter-Latin-X : begin
: else : begin : else : begin
local height : Math.abs (lefty - righty) local height : Math.abs (lefty - righty)
local slabClearance : if slab [adviceBlackness2 3 2 height] 0 local slabClearance : if slab [adviceBlackness2 2 3 height] 0
local turnyleft : mix lefty righty [if slab [Math.max turn (slabClearance / height)] turn] local turnyleft : mix lefty righty [if slab [Math.max turn (slabClearance / height)] turn]
local cyleft : mix turnyleft righty tension local cyleft : mix turnyleft righty tension
local straightxleft : mix leftx rightx pStraight local straightxleft : mix leftx rightx pStraight
@ -2104,7 +2104,7 @@ glyph-block Letter-Latin-Upper-B : begin
glyph-block-import Letter-Shared-Metrics : BowlXDepth glyph-block-import Letter-Shared-Metrics : BowlXDepth
define [BShape] : params [top [barPos 0.52] [topArcShift 0] [topArcInnerShift 0]] : glyph-proc define [BShape] : params [top [barPos 0.52] [topArcShift 0] [topArcInnerShift 0]] : glyph-proc
local stroke : adviceBlackness2 2.875 2 top local stroke : adviceBlackness2 2 3 top
local bowl : top * barPos + stroke * (1 - barPos) local bowl : top * barPos + stroke * (1 - barPos)
local barleft SB local barleft SB
local mockBowlDepth : BowlXDepth top (bowl - stroke) barleft RightSB stroke local mockBowlDepth : BowlXDepth top (bowl - stroke) barleft RightSB stroke
@ -2163,7 +2163,7 @@ glyph-block Letter-Latin-Upper-B : begin
include : LeftHook SB CAP include : LeftHook SB CAP
define [ItalicCyrveShape top] : glyph-proc define [ItalicCyrveShape top] : glyph-proc
local stroke : adviceBlackness2 2.875 2 top local stroke : adviceBlackness2 2 3 top
local mid : mix RightSB SB 0.65 local mid : mix RightSB SB 0.65
local midy : top * HBarPos local midy : top * HBarPos
local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke
@ -2189,7 +2189,7 @@ glyph-block Letter-Latin-Upper-B : begin
curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
define [ClosedEpsilonShape top] : glyph-proc define [ClosedEpsilonShape top] : glyph-proc
local stroke : adviceBlackness2 2.875 2 top local stroke : adviceBlackness2 2 3 top
local mid : mix SB RightSB 0.65 local mid : mix SB RightSB 0.65
local midy : top * HBarPos local midy : top * HBarPos
local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke
@ -2236,7 +2236,7 @@ glyph-block Letter-Latin-Upper-B : begin
create-glyph 'Bbar' 0x243 : glyph-proc create-glyph 'Bbar' 0x243 : glyph-proc
include [refer-glyph 'B'] AS_BASE include [refer-glyph 'B'] AS_BASE
local stroke : adviceBlackness2 2.875 2 CAP local stroke : adviceBlackness2 2 3 CAP
include : HOverlayBar include : HOverlayBar
mix SB 0 0.7 mix SB 0 0.7
mix SB RightSB 0.5 mix SB RightSB 0.5
@ -2884,13 +2884,14 @@ glyph-block Letter-Latin-Lower-R : begin
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend
local dfN : DivFrame 1
local dfR : DivFrame para.diversityF local dfR : DivFrame para.diversityF
local rStraight 0 local rStraight 0
local rSerifed 1 local rSerifed 1
local rNarrow 2 local rNarrow 2
local rEarless 3 local rEarless 3
define [RDim mode] : begin define [RDim df mode] : begin
local rBalanceMultiplier : match mode [0 1] [1 (4 / 3)] [2 (1 / 2)] [3 1] local rBalanceMultiplier : match mode [0 1] [1 (4 / 3)] [2 (1 / 2)] [3 1]
local rHookMultiplier : match mode [0 1] [1 (2 / 3)] [2 1] [3 1] local rHookMultiplier : match mode [0 1] [1 (2 / 3)] [2 1] [3 1]
local rHookSwMultiplier : match mode [0 0] [1 (1 / 4)] [2 0] [3 0] local rHookSwMultiplier : match mode [0 0] [1 (1 / 4)] [2 0] [3 0]
@ -2907,11 +2908,11 @@ glyph-block Letter-Latin-Lower-R : begin
local [rTopSerif y] : tagged 'serifLT' local [rTopSerif y] : tagged 'serifLT'
LeftwardTopSerif rSerifX y (rSerifLeftJut + HalfStroke * HVContrast) LeftwardTopSerif rSerifX y (rSerifLeftJut + HalfStroke * HVContrast)
local fine : ShoulderFine * CThin local fine : ShoulderFine * CThin
local rHookX : dfR.rightSB + RBalance2 * rBalanceMultiplier - (OX - O) local rHookX : df.rightSB + RBalance2 * rBalanceMultiplier - (OX - O)
local rmiddle : match mode local rmiddle : match mode
0 : mix (rbar - fine) rHookX (0.54 + 2 * TanSlope * Stroke / Width) 0 : mix (rbar - fine) rHookX (0.54 + 2 * TanSlope * Stroke / Width)
1 : mix (rbar - fine) rHookX (0.59 + 2 * TanSlope * Stroke / Width) 1 : mix (rbar - fine) rHookX (0.59 + 2 * TanSlope * Stroke / Width)
2 : mix rHookX dfR.width (3 / 8) 2 : mix rHookX df.width (3 / 8)
3 : mix (rbar - Stroke * HVContrast) rHookX 0.5 3 : mix (rbar - Stroke * HVContrast) rHookX 0.5
local mixpin : match mode local mixpin : match mode
0 : 0.65 + 4 * TanSlope * Stroke / Width 0 : 0.65 + 4 * TanSlope * Stroke / Width
@ -2924,7 +2925,7 @@ glyph-block Letter-Latin-Lower-R : begin
return : object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness return : object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness
define [StandardLowerRShape df md doTopSerif doBottomSerif] : glyph-proc define [StandardLowerRShape df md doTopSerif doBottomSerif] : glyph-proc
define [object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness] : RDim md define [object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness] : RDim df md
include : dispiro include : dispiro
widths.lhs widths.lhs
g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward] g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward]
@ -2938,7 +2939,7 @@ glyph-block Letter-Latin-Lower-R : begin
if doTopSerif : include : rTopSerif XH if doTopSerif : include : rTopSerif XH
define [NarrowLowerRshape df md doTopSerif doBottomSerif] : glyph-proc define [NarrowLowerRshape df md doTopSerif doBottomSerif] : glyph-proc
define [object rbar fine rmiddle] : RDim md define [object rbar fine rmiddle] : RDim df md
include : dispiro include : dispiro
widths.lhs widths.lhs
g4.left.mid (rmiddle - CorrectionOMidS * [linreg 72 0.75 108 1 Stroke]) (XH - O) g4.left.mid (rmiddle - CorrectionOMidS * [linreg 72 0.75 108 1 Stroke]) (XH - O)
@ -2948,7 +2949,7 @@ glyph-block Letter-Latin-Lower-R : begin
set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5) set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5)
define [EarlessCornerLowerRShape df md doTopSerif doBottomSerif] : glyph-proc define [EarlessCornerLowerRShape df md doTopSerif doBottomSerif] : glyph-proc
define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim md define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim df md
include : dispiro include : dispiro
widths.lhs widths.lhs
g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward] g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward]
@ -2959,7 +2960,7 @@ glyph-block Letter-Latin-Lower-R : begin
set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5) set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5)
define [EarlessRoundedLowerRShape df md doTopSerif doBottomSerif] : glyph-proc define [EarlessRoundedLowerRShape df md doTopSerif doBottomSerif] : glyph-proc
define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim md define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim df md
local hx : Math.max rHookX (rbar + 1.25 * Stroke) local hx : Math.max rHookX (rbar + 1.25 * Stroke)
include : dispiro include : dispiro
widths.lhs widths.lhs
@ -2972,11 +2973,11 @@ glyph-block Letter-Latin-Lower-R : begin
create-glyph : glyph-proc create-glyph : glyph-proc
set-width dfR.width set-width dfR.width
include : dfR.markSet.e include : dfR.markSet.e
create-derived "r.straight" : StandardLowerRShape dfR rStraight 0 0 create-derived "r.straight" : StandardLowerRShape dfN rStraight 0 0
create-derived "r.serifed" : StandardLowerRShape dfR rSerifed 1 1 create-derived "r.serifed" : StandardLowerRShape dfN rSerifed 1 1
create-derived "r.top-serifed" : StandardLowerRShape dfR rSerifed 1 0 create-derived "r.top-serifed" : StandardLowerRShape dfN rSerifed 1 0
create-derived "r.earlessCorner" : EarlessCornerLowerRShape dfR rEarless 0 0 create-derived "r.earlessCorner" : EarlessCornerLowerRShape dfN rEarless 0 0
create-derived "r.earlessRounded" : EarlessRoundedLowerRShape dfR rEarless 0 0 create-derived "r.earlessRounded" : EarlessRoundedLowerRShape dfN rEarless 0 0
create-glyph 'r.narrow' : glyph-proc create-glyph 'r.narrow' : glyph-proc
set-width dfR.width set-width dfR.width
@ -2985,105 +2986,108 @@ glyph-block Letter-Latin-Lower-R : begin
select-variant 'r' 'r' select-variant 'r' 'r'
define [TurnRMarks] : compositeBaseAnchors [dfR.markSet.e] define [HalfAdvance] : this.advanceWidth / 2
begin {.baseAnchors {.bottomright {.x (dfR.rightSB - RBalance) .y 0}}} define [TurnRMarks k] : glyph-proc
turned 'turnr' 0x279 'r' dfR.middle (XH / 2) [TurnRMarks] local df : DivFrame (currentGlyph.advanceWidth / Width)
local mx : compositeBaseAnchors [df.markSet.(k)]
begin {.baseAnchors {.bottomright {.x (df.rightSB - RBalance) .y 0}}}
include mx
turned 'turnr' 0x279 'r' HalfAdvance (XH / 2) [TurnRMarks 'e']
do do
define [SmallRLongLegShape F mode doTopSerif] : glyph-proc define [SmallRLongLegShape F df mode doTopSerif] : glyph-proc
define [object rbar rBottomSerif] : RDim mode set-width df.width
include : F dfR mode doTopSerif 0 include : df.markSet.p
define [object rbar rBottomSerif] : RDim df mode
include : F df mode doTopSerif 0
eject-contour 'serifLB' eject-contour 'serifLB'
include : VBarRight rbar Descender 0 include : VBarRight rbar Descender 0
if SLAB : include : rBottomSerif Descender if SLAB : include : rBottomSerif Descender
create-glyph : glyph-proc create-glyph 'rlongleg.straight'
set-width dfR.width SmallRLongLegShape StandardLowerRShape dfN rStraight 0
include : dfR.markSet.p create-glyph 'rlongleg.serifed'
create-derived 'rlongleg.straight' SmallRLongLegShape StandardLowerRShape dfN rSerifed 1
SmallRLongLegShape StandardLowerRShape rStraight 0 create-glyph 'rlongleg.top-serifed'
create-derived 'rlongleg.serifed' SmallRLongLegShape StandardLowerRShape dfN rSerifed 1
SmallRLongLegShape StandardLowerRShape rSerifed 1 create-glyph 'rlongleg.earlessCorner'
create-derived 'rlongleg.top-serifed' SmallRLongLegShape EarlessCornerLowerRShape dfN rEarless 0
SmallRLongLegShape StandardLowerRShape rSerifed 1 create-glyph 'rlongleg.earlessRounded'
create-derived 'rlongleg.earlessCorner' SmallRLongLegShape EarlessRoundedLowerRShape dfN rEarless 0
SmallRLongLegShape EarlessCornerLowerRShape rEarless 0 create-glyph 'rlongleg.narrow'
create-derived 'rlongleg.earlessRounded' SmallRLongLegShape NarrowLowerRshape dfR rNarrow 0
SmallRLongLegShape EarlessRoundedLowerRShape rEarless 0
create-derived 'rlongleg.narrow'
SmallRLongLegShape NarrowLowerRshape rNarrow 0
select-variant 'rlongleg' 0x27C (follow -- 'r') select-variant 'rlongleg' 0x27C (follow -- 'r')
define [TurnRLongLegMarks] : compositeBaseAnchors [dfR.markSet.b] turned 'turnrlongleg' 0x27A 'rlongleg' HalfAdvance (XH / 2) [TurnRMarks 'b']
begin {.baseAnchors {.bottomright {.x (dfR.rightSB - RBalance) .y 0}}}
turned 'turnrlongleg' 0x27A 'rlongleg' dfR.middle (XH / 2) [TurnRLongLegMarks]
do do
define [SmallRRTailShape F mode doTopSerif] : glyph-proc define [SmallRRTailShape F df mode doTopSerif] : glyph-proc
define [object rbar] : RDim mode set-width df.width
include : F dfR mode doTopSerif 0 include : df.markSet.p
define [object rbar] : RDim df mode
include : F df mode doTopSerif 0
eject-contour 'serifLB' eject-contour 'serifLB'
include : new-glyph : glyph-proc include : new-glyph : glyph-proc
include : refer-glyph "rtailBR" include : refer-glyph "rtailBR"
include : Upright include : Upright
include : Translate rbar 0 include : Translate rbar 0
include : Italify include : Italify
create-glyph : glyph-proc create-glyph 'rrtail.straight'
set-width dfR.width SmallRRTailShape StandardLowerRShape dfN rStraight 0
include : dfR.markSet.p create-glyph 'rrtail.serifed'
create-derived 'rrtail.straight' SmallRRTailShape StandardLowerRShape dfN rSerifed 1
SmallRRTailShape StandardLowerRShape rStraight 0 create-glyph 'rrtail.top-serifed'
create-derived 'rrtail.serifed' SmallRRTailShape StandardLowerRShape dfN rSerifed 1
SmallRRTailShape StandardLowerRShape rSerifed 1 create-glyph 'rrtail.earlessCorner'
create-derived 'rrtail.top-serifed' SmallRRTailShape EarlessCornerLowerRShape dfN rEarless 0
SmallRRTailShape StandardLowerRShape rSerifed 1 create-glyph 'rrtail.earlessRounded'
create-derived 'rrtail.earlessCorner' SmallRRTailShape EarlessRoundedLowerRShape dfN rEarless 0
SmallRRTailShape EarlessCornerLowerRShape rEarless 0 create-glyph 'rrtail.narrow'
create-derived 'rrtail.earlessRounded' SmallRRTailShape NarrowLowerRshape dfR rNarrow 0
SmallRRTailShape EarlessRoundedLowerRShape rEarless 0
create-derived 'rrtail.narrow'
SmallRRTailShape NarrowLowerRshape rNarrow 0
select-variant 'rrtail' 0x27D (follow -- 'r') select-variant 'rrtail' 0x27D (follow -- 'r')
turned 'smallLetterTurnedRWithTail' 0x2C79 'rrtail' dfR.middle (XH / 2) [dfR.markSet.b] turned 'smallLetterTurnedRWithTail' 0x2C79 'rrtail' HalfAdvance (XH / 2) : glyph-proc
local df : DivFrame (currentGlyph.advanceWidth / Width)
include : df.markSet.b
do do
define [TurnRRTailShape F mode doBottomSerif] : glyph-proc define [TurnRRTailShape F df mode doBottomSerif] : glyph-proc
define [object rbar] : RDim mode set-width df.width
include : F dfR mode 0 doBottomSerif include : df.markSet.p
define [object rbar] : RDim df mode
include : F df mode 0 doBottomSerif
eject-contour 'serifLT' eject-contour 'serifLT'
include : FlipAround dfR.middle (XH / 2) include : FlipAround df.middle (XH / 2)
include : new-glyph : glyph-proc include : new-glyph : glyph-proc
include : refer-glyph "rtailBR" include : refer-glyph "rtailBR"
include : Upright include : Upright
include : Translate (dfR.rightSB - rbar + dfR.leftSB + Stroke * HVContrast) 0 include : Translate (df.rightSB - rbar + df.leftSB + Stroke * HVContrast) 0
include : Italify include : Italify
create-glyph : glyph-proc
set-width dfR.width create-glyph 'turnrrtail.straight'
include : dfR.markSet.p TurnRRTailShape StandardLowerRShape dfN rStraight 0
create-derived 'turnrrtail.straight' create-glyph 'turnrrtail.serifed'
TurnRRTailShape StandardLowerRShape rStraight 0 TurnRRTailShape StandardLowerRShape dfN rSerifed 1
create-derived 'turnrrtail.serifed' create-glyph 'turnrrtail.top-serifed'
TurnRRTailShape StandardLowerRShape rSerifed 1 TurnRRTailShape StandardLowerRShape dfN rSerifed 0
create-derived 'turnrrtail.top-serifed' create-glyph 'turnrrtail.narrow'
TurnRRTailShape StandardLowerRShape rSerifed 0 TurnRRTailShape NarrowLowerRshape dfR rNarrow 0
create-derived 'turnrrtail.narrow'
TurnRRTailShape NarrowLowerRshape rNarrow 0
select-variant 'turnrrtail' 0x27B select-variant 'turnrrtail' 0x27B
create-glyph 'rflap.straight' : glyph-proc create-glyph 'rflap.straight' : glyph-proc
set-width dfR.width set-width dfN.width
include : dfR.markSet.e include : dfN.markSet.e
define [object rBottomSerif] : RDim rEarless define [object rBottomSerif] : RDim dfN rEarless
include : EarlessRoundedLowerRShape dfR rEarless 0 0 include : EarlessRoundedLowerRShape dfN rEarless 0 0
create-derived 'rflap.serifed' : rBottomSerif 0 create-derived 'rflap.serifed' : rBottomSerif 0
create-glyph 'rflap.narrow' : glyph-proc create-glyph 'rflap.narrow' : glyph-proc
set-width dfR.width set-width dfR.width
include : dfR.markSet.e include : dfR.markSet.e
define [object rbar rBottomSerif rmiddle] : RDim rNarrow define [object rbar rBottomSerif rmiddle] : RDim dfR rNarrow
include : dispiro include : dispiro
widths.lhs widths.lhs
@ -3225,7 +3229,7 @@ glyph-block Letter-Latin-C : begin
create-glyph 'ccurlytail' 0x255 : glyph-proc create-glyph 'ccurlytail' 0x255 : glyph-proc
include : MarkSet.e include : MarkSet.e
local stroke : adviceBlackness2 2.875 2 XH local stroke : adviceBlackness2 2 3 XH
local fine : adviceBlackness2 3 3 XH local fine : adviceBlackness2 3 3 XH
local rinner : ((XH * 0.45) - fine * 1.5) / 2 local rinner : ((XH * 0.45) - fine * 1.5) / 2
local m1 : SB + O + stroke * HVContrast local m1 : SB + O + stroke * HVContrast
@ -3252,11 +3256,11 @@ glyph-block Letter-Latin-C : begin
create-glyph 'cyrl/Ye' 0x404 : glyph-proc create-glyph 'cyrl/Ye' 0x404 : glyph-proc
include [refer-glyph "C"] AS_BASE include [refer-glyph "C"] AS_BASE
include : HBar SB [mix RightSB SB 0.25] (CAP / 2) [adviceBlackness2 4 2 CAP] include : HBar SB [mix RightSB SB 0.25] (CAP / 2) [adviceBlackness2 2 4 CAP]
create-glyph 'cyrl/ye' 0x454 : glyph-proc create-glyph 'cyrl/ye' 0x454 : glyph-proc
include [refer-glyph "c"] AS_BASE include [refer-glyph "c"] AS_BASE
include : HBar SB [mix RightSB SB 0.25] (XH / 2) [adviceBlackness2 4 2 XH] include : HBar SB [mix RightSB SB 0.25] (XH / 2) [adviceBlackness2 2 4 XH]
create-glyph 'grek/sigma' 0x3C3 : glyph-proc create-glyph 'grek/sigma' 0x3C3 : glyph-proc
include : MarkSet.e include : MarkSet.e
@ -3487,7 +3491,7 @@ glyph-block Letter-Latin-Lower-G : begin
define l : mix 0 SB 0.3 define l : mix 0 SB 0.3
define r : mix Width RightSB 0.3 define r : mix Width RightSB 0.3
define bwDoubleStorey : Math.min [adviceBlackness 5] (0.5 / 3 * (CAP - Stroke * 4)) define bwDoubleStorey : Math.min [adviceBlackness 5] (0.5 / 3 * (CAP - Stroke * 4))
define bwSingleStorey : adviceBlackness2 4 2 XH define bwSingleStorey : adviceBlackness2 2 4 XH
create-glyph 'gbar.doubleStorey' : glyph-proc create-glyph 'gbar.doubleStorey' : glyph-proc
include [refer-glyph "g.doubleStorey"] AS_BASE include [refer-glyph "g.doubleStorey"] AS_BASE
include : HBar l r [query-glyph "g.doubleStorey"].baseAnchors.overlay.y bwDoubleStorey include : HBar l r [query-glyph "g.doubleStorey"].baseAnchors.overlay.y bwDoubleStorey
@ -4381,7 +4385,7 @@ glyph-block Letter-Latin-Lower-M : begin
define [SmallMBottomRightSerif df top rbot] : glyph-proc define [SmallMBottomRightSerif df top rbot] : glyph-proc
if (df.width > para.refJut * 7) : begin if (df.width > para.refJut * 7) : begin
if [not para.isItalic] : begin if para.isItalic : begin
include : tagged 'serifRB' : intersection include : tagged 'serifRB' : intersection
CenterBottomSerif (df.rightSB - 0.5 * df.mvs * HVContrast) rbot Jut df.mvs CenterBottomSerif (df.rightSB - 0.5 * df.mvs * HVContrast) rbot Jut df.mvs
Rect top rbot (df.rightSB + O) df.width Rect top rbot (df.rightSB + O) df.width
@ -4917,7 +4921,7 @@ glyph-block Letter-Latin-Upper-F : begin
return { jutTop jutBot } return { jutTop jutBot }
define [FShape] : params [top pyBar noSerif] : glyph-proc define [FShape] : params [top pyBar noSerif] : glyph-proc
define stroke : adviceBlackness2 2.875 2 CAP define stroke : adviceBlackness2 2 3 CAP
define xFBarLeft : SB * 1.5 define xFBarLeft : SB * 1.5
include : VBarLeft (xFBarLeft) 0 top stroke include : VBarLeft (xFBarLeft) 0 top stroke
include : HBarTop (xFBarLeft - O) RightSB top stroke include : HBarTop (xFBarLeft - O) RightSB top stroke
@ -4930,7 +4934,7 @@ glyph-block Letter-Latin-Upper-F : begin
include : DownwardRightSerif RightSB top jutTop include : DownwardRightSerif RightSB top jutTop
define [RevFShape] : params [top pyBar noSerif] : glyph-proc define [RevFShape] : params [top pyBar noSerif] : glyph-proc
define stroke : adviceBlackness2 2.875 2 CAP define stroke : adviceBlackness2 2 3 CAP
define xFBarRight : Width - SB * 1.5 define xFBarRight : Width - SB * 1.5
include : VBarRight (xFBarRight) 0 top stroke include : VBarRight (xFBarRight) 0 top stroke
include : HBarTop SB (xFBarRight + O) top stroke include : HBarTop SB (xFBarRight + O) top stroke
@ -5260,7 +5264,7 @@ glyph-block Letter-Latin-Upper-E : begin
glyph-block-export EShape glyph-block-export EShape
define [EShape] : params [top pyBar noSerif] : glyph-proc define [EShape] : params [top pyBar noSerif] : glyph-proc
define stroke : adviceBlackness2 2.875 2 CAP define stroke : adviceBlackness2 2 3 CAP
define xEBarLeft : SB * 1.5 define xEBarLeft : SB * 1.5
include : FShape top pyBar true include : FShape top pyBar true
include : HBarBottom (xEBarLeft - O) RightSB 0 stroke include : HBarBottom (xEBarLeft - O) RightSB 0 stroke
@ -5273,7 +5277,7 @@ glyph-block Letter-Latin-Upper-E : begin
glyph-block-export RevEShape glyph-block-export RevEShape
define [RevEShape] : params [top pyBar noSerif] : glyph-proc define [RevEShape] : params [top pyBar noSerif] : glyph-proc
define stroke : adviceBlackness2 2.875 2 CAP define stroke : adviceBlackness2 2 3 CAP
define xEBarRight : Width - SB * 1.5 define xEBarRight : Width - SB * 1.5
include : RevFShape top pyBar true include : RevFShape top pyBar true
include : HBarBottom SB (xEBarRight + O) 0 stroke include : HBarBottom SB (xEBarRight + O) 0 stroke
@ -5329,11 +5333,11 @@ glyph-block Letter-Latin-Lower-E : begin
create-glyph 'e' 'e' : glyph-proc create-glyph 'e' 'e' : glyph-proc
include : MarkSet.e include : MarkSet.e
include : SmallEShape XH [adviceBlackness2 2.875 2 XH] include : SmallEShape XH [adviceBlackness2 2 3 XH]
create-glyph 'Schwa' 0x18F : glyph-proc create-glyph 'Schwa' 0x18F : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : SmallEShape CAP [adviceBlackness2 2.875 2 CAP] include : SmallEShape CAP [adviceBlackness2 2 3 CAP]
include : FlipAround Middle (CAP / 2) include : FlipAround Middle (CAP / 2)
alias 'cyrl/ie' 0x435 'e' alias 'cyrl/ie' 0x435 'e'
@ -5362,7 +5366,7 @@ glyph-block Letter-Latin-Lower-E : begin
create-glyph 'reve' 0x258 : glyph-proc create-glyph 'reve' 0x258 : glyph-proc
include : MarkSet.e include : MarkSet.e
include : RevSmallEShape XH [adviceBlackness2 2.875 2 XH] include : RevSmallEShape XH [adviceBlackness2 2 3 XH]
glyph-block Letter-Latin-Upper-T : begin glyph-block Letter-Latin-Upper-T : begin
@ -5574,7 +5578,7 @@ glyph-block Letter-Latin-S : begin
return : alsoThruThem {{(0.5 - dist) tension} {(0.5 + dist) (1 - tension)}} [widths.center stroke] return : alsoThruThem {{(0.5 - dist) tension} {(0.5 + dist) (1 - tension)}} [widths.center stroke]
define [SStroke] : begin define [SStroke] : begin
local stroke : adviceBlackness2 2.875 2 CAP local stroke : adviceBlackness2 2 3 CAP
local ess : Ess * stroke / Stroke local ess : Ess * stroke / Stroke
define smooth : adviceSSmooth CAP (-1) stroke define smooth : adviceSSmooth CAP (-1) stroke
return : dispiro return : dispiro
@ -5588,7 +5592,7 @@ glyph-block Letter-Latin-S : begin
g4 (SB + SOBot) Hook g4 (SB + SOBot) Hook
define [RevSStroke] : begin define [RevSStroke] : begin
local stroke : adviceBlackness2 2.875 2 CAP local stroke : adviceBlackness2 2 3 CAP
local ess : Ess * stroke / Stroke local ess : Ess * stroke / Stroke
local smooth : adviceSSmooth CAP 0.5 stroke local smooth : adviceSSmooth CAP 0.5 stroke
return : dispiro return : dispiro
@ -5602,8 +5606,8 @@ glyph-block Letter-Latin-S : begin
g4 (RightSB - SOBot) Hook g4 (RightSB - SOBot) Hook
define [sStroke] : begin define [sStroke] : begin
define stroke : adviceBlackness2 2.875 2 XH define stroke : adviceBlackness2 2 3 XH
define ess : adviceBlackness2 3.2 2.2 XH define ess : adviceBlackness2 2.2 3.2 XH
define strokeCoeff : StrokeWidthBlend 0 1 stroke define strokeCoeff : StrokeWidthBlend 0 1 stroke
define smooth : adviceSSmooth XH (-1) stroke define smooth : adviceSSmooth XH (-1) stroke
return : dispiro return : dispiro
@ -5617,8 +5621,8 @@ glyph-block Letter-Latin-S : begin
g4 (SB + SOBot) SHook g4 (SB + SOBot) SHook
define [sStrokePhoneticRight] : begin define [sStrokePhoneticRight] : begin
define stroke : adviceBlackness2 2.875 2 XH define stroke : adviceBlackness2 2 3 XH
define ess : adviceBlackness2 3.2 2.2 XH define ess : adviceBlackness2 2.2 3.2 XH
define strokeCoeff : StrokeWidthBlend 0 1 stroke define strokeCoeff : StrokeWidthBlend 0 1 stroke
define smooth : adviceSSmooth XH (-1) stroke define smooth : adviceSSmooth XH (-1) stroke
return : dispiro return : dispiro
@ -5633,8 +5637,8 @@ glyph-block Letter-Latin-S : begin
curl SB 0 curl SB 0
define [RevsStroke] : begin define [RevsStroke] : begin
define stroke : adviceBlackness2 2.875 2 XH define stroke : adviceBlackness2 2 3 XH
define ess : adviceBlackness2 3.2 2.2 XH define ess : adviceBlackness2 2.2 3.2 XH
define strokeCoeff : StrokeWidthBlend 0 1 stroke define strokeCoeff : StrokeWidthBlend 0 1 stroke
define smooth : adviceSSmooth XH 0.75 stroke define smooth : adviceSSmooth XH 0.75 stroke
return : dispiro return : dispiro
@ -5691,7 +5695,7 @@ glyph-block Letter-Latin-S : begin
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
include : new-glyph : glyph-proc include : new-glyph : glyph-proc
local sw : adviceBlackness2 2.875 2 XH local sw : adviceBlackness2 2 3 XH
include : refer-glyph "rtailBR" include : refer-glyph "rtailBR"
include : Upright include : Upright
include : Translate (start.x + sw * HVContrast) 0 include : Translate (start.x + sw * HVContrast) 0
@ -5705,7 +5709,7 @@ glyph-block Letter-Latin-S : begin
local stroke : [SStroke].call currentGlyph local stroke : [SStroke].call currentGlyph
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : adviceBlackness2 2.875 2 CAP local sw : adviceBlackness2 2 3 CAP
include : dispiro include : dispiro
widths.lhs [adviceBlackness 4.5] widths.lhs [adviceBlackness 4.5]
g4 start.x start.y g4 start.x start.y
@ -5719,7 +5723,7 @@ glyph-block Letter-Latin-S : begin
local stroke : [sStroke].call currentGlyph local stroke : [sStroke].call currentGlyph
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : adviceBlackness2 2.875 2 XH local sw : adviceBlackness2 2 3 XH
include : dispiro include : dispiro
widths.lhs [adviceBlackness 4.5] widths.lhs [adviceBlackness 4.5]
g4 start.x start.y g4 start.x start.y
@ -6009,7 +6013,7 @@ glyph-block Letter-Latin-Eszet : begin
SB + swOuter * HVContrast + (RightSB - SB - Stroke) * 0.1 SB + swOuter * HVContrast + (RightSB - SB - Stroke) * 0.1
mix SB RightSB 0.3 mix SB RightSB 0.3
define widthInner : Width - swOuter * HVContrast - (RightSB - SB - Stroke) * 0.1 define widthInner : Width - swOuter * HVContrast - (RightSB - SB - Stroke) * 0.1
define swInner : adviceBlackness2 3 2 XH (widthInner / Width) define swInner : adviceBlackness2 2 3 XH (widthInner / Width)
define sTopY : XH + swInner / 8 define sTopY : XH + swInner / 8
define smooth : SmoothBOf (swInner + (widthInner / Width) * ([adviceSSmooth XH (-1) swInner] - swInner)) widthInner define smooth : SmoothBOf (swInner + (widthInner / Width) * ([adviceSSmooth XH (-1) swInner] - swInner)) widthInner
define sTurnX : Math.max sEndX [mix SB RightSB 0.3] define sTurnX : Math.max sEndX [mix SB RightSB 0.3]
@ -6076,7 +6080,7 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
define eBarPos : designParameters.upperEBarPos SLAB define eBarPos : designParameters.upperEBarPos SLAB
define sw : Math.min df.mvs : adviceBlackness2 3 3 CAP df.div define sw : Math.min df.mvs : adviceBlackness2 3 3 CAP df.div
define eleft : df.middle - sw * 0.25 * HVContrast define eleft : df.middle - sw * 0.25 * HVContrast
define fine : adviceBlackness2 4 3 CAP df.div define fine : adviceBlackness2 3 4 CAP df.div
define swVJut : Math.min sw ((df.rightSB - eleft - sw * HVContrast) * (4 / 5)) define swVJut : Math.min sw ((df.rightSB - eleft - sw * HVContrast) * (4 / 5))
set-width df.width set-width df.width
@ -6454,7 +6458,7 @@ glyph-block Letter-Latin-Ezh : begin
include : MarkSet.e include : MarkSet.e
local p (SmallSmoothB / (SmallSmoothA + SmallSmoothB)) local p (SmallSmoothB / (SmallSmoothA + SmallSmoothB))
include : EzhShape XH Descender nothing nothing p include : EzhShape XH Descender nothing nothing p
local fine : adviceBlackness2 5 3 (XH - Descender) local fine : adviceBlackness2 3 5 (XH - Descender)
local rinner : (XH * 0.4 - fine * 1.5) / 2 local rinner : (XH * 0.4 - fine * 1.5) / 2
local m1 : RightSB - Stroke * HVContrast - OX local m1 : RightSB - Stroke * HVContrast - OX
local x2 : RightSB - HalfStroke local x2 : RightSB - HalfStroke

View file

@ -15,9 +15,9 @@ glyph-block Marks : begin
### Combining marks ### Combining marks
glyph-block-export markExtend markHalfStroke markFine glyph-block-export markExtend markHalfStroke markFine
local markExtend (AccentX * 0.5) local markExtend (AccentX * 0.5)
local markHalfStroke : 0.5 * [adviceBlackness2 3.5 3.375 XH] local markHalfStroke : 0.5 * [adviceBlackness2 3.375 3.5 XH]
local markStress : markHalfStroke * 1.1 local markStress : markHalfStroke * 1.1
local markFine : markHalfStroke * 0.9 local markFine : Math.min (markHalfStroke * 0.9) (0.5 * [adviceBlackness2 3.875 4.25 XH])
glyph-block-export markMiddle glyph-block-export markMiddle
local markMiddle (-Middle) local markMiddle (-Middle)
@ -1045,16 +1045,17 @@ glyph-block Marks : begin
define [HornShape attX attY overshootX overshootY yrP] : glyph-proc define [HornShape attX attY overshootX overshootY yrP] : glyph-proc
local [object radius hornFine hornStroke startX startY] : HornDim attX attY overshootX overshootY yrP local [object radius hornFine hornStroke startX startY] : HornDim attX attY overshootX overshootY yrP
local swStart : Math.min (radius / 2) ShoulderFine
include : union include : union
RingAt (startX - radius) startY (radius + OX / 2) RingAt (startX - radius) startY (radius + OX)
dispiro dispiro
g4.down.start (startX + OX) (startY) [widths.rhs.heading [Math.min (radius / 2) ShoulderFine] Downward] g4.down.start (startX + OX) (startY) [widths.rhs.heading swStart Downward]
arcvh arcvh
g4.left.mid (startX - radius) (startY - radius) [heading Leftward] g4.left.mid (startX - radius) (startY - radius) [widths.rhs.heading [mix swStart hornFine 0.25] Leftward]
archv archv
g4.up.mid (startX - 2 * radius) (startY) [heading Upward] g4.up.mid (startX - 2 * radius) (startY) [widths.rhs.heading [mix swStart hornFine 0.5] Upward]
arcvh arcvh
g4.right.mid (startX - radius) (startY + radius) [heading Rightward] g4.right.mid (startX - radius) (startY + radius) [widths.rhs.heading [mix swStart hornFine 0.75] Rightward]
archv archv
g4.down.mid startX startY [widths.rhs.heading hornFine Downward] g4.down.mid startX startY [widths.rhs.heading hornFine Downward]
quadcontrols.g4 0 0.75 16 : object : blend : lambda [t] quadcontrols.g4 0 0.75 16 : object : blend : lambda [t]

View file

@ -543,7 +543,7 @@ glyph-block Digits-Eight : begin
local EightPr : StrokeWidthBlend 0.85 0.925 local EightPr : StrokeWidthBlend 0.85 0.925
define [EightShape top] : begin define [EightShape top] : begin
local stroke : adviceBlackness2 2.875 2 CAP local stroke : adviceBlackness2 2 3 CAP
local p 0.96 local p 0.96
local l (SB + OX) local l (SB + OX)
local r (RightSB - OX) local r (RightSB - OX)

View file

@ -258,7 +258,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow [HookArrowShape 1] [MangleName 'hookarrowdownleft'] [MangleUnicode 0x2926] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot MkArrow [HookArrowShape 1] [MangleName 'hookarrowdownleft'] [MangleUnicode 0x2926] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
do "Half Circle Arrow" do "Half Circle Arrow"
local arcSW : adviceBlackness 4 MosaicWidthScalar local arcSW : Math.min OperatorStroke [adviceBlackness 4 MosaicWidthScalar]
local headSize : mix arcSW arrowSize 0.5 local headSize : mix arcSW arrowSize 0.5
local hsx0 : HVContrast * arcSW / 2 local hsx0 : HVContrast * arcSW / 2
local hsx : hsx0 + headSize / 2 local hsx : hsx0 + headSize / 2

View file

@ -1452,7 +1452,7 @@ glyph-block Symbol-Punctuation-Percentages : begin
local m : mix l r (1 / 2) local m : mix l r (1 / 2)
local sma : SmoothA * 0.5 * para.diversityM local sma : SmoothA * 0.5 * para.diversityM
local smb : SmoothB * 0.5 * para.diversityM local smb : SmoothB * 0.5 * para.diversityM
local sw : adviceBlackness2 5 4 CAP para.diversityM local sw : adviceBlackness2 4 5 CAP para.diversityM
local fine : adviceBlackness2 5 5 CAP para.diversityM local fine : adviceBlackness2 5 5 CAP para.diversityM
local cor : HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - sw) / (CAP - 0)) 2])] local cor : HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - sw) / (CAP - 0)) 2])]
local pTerm : (fine / 2) / [Math.hypot CAP (r - l)] local pTerm : (fine / 2) / [Math.hypot CAP (r - l)]
@ -1475,7 +1475,7 @@ glyph-block Symbol-Punctuation-Percentages : begin
local fill : ((r2 - l1) - gap) / 2 local fill : ((r2 - l1) - gap) / 2
local r1 : l1 + fill local r1 : l1 + fill
local l2 : r1 + gap local l2 : r1 + gap
local swp : adviceBlackness 4 local swp : adviceBlackness2 4 5 CAP para.diversityM
include : OShape otop 0 l1 r1 swp sma smb include : OShape otop 0 l1 r1 swp sma smb
include : OShape otop 0 l2 r2 swp sma smb include : OShape otop 0 l2 r2 swp sma smb
@ -1488,7 +1488,7 @@ glyph-block Symbol-Punctuation-Percentages : begin
local l2 : r1 + gap local l2 : r1 + gap
local r2 : l2 + fill local r2 : l2 + fill
local l3 : r2 + gap local l3 : r2 + gap
local swp : adviceBlackness2 5 6.5 CAP para.diversityM local swp : adviceBlackness2 6 5 CAP para.diversityM
local smap : SmoothA * (1/3) * para.diversityM local smap : SmoothA * (1/3) * para.diversityM
local smbp : SmoothB * (1/3) * para.diversityM local smbp : SmoothB * (1/3) * para.diversityM
include : OShape otop 0 l1 r1 swp smap smbp include : OShape otop 0 l1 r1 swp smap smbp

View file

@ -76,15 +76,16 @@ export : define [calculateMetrics para] : begin
# We will estimate blackness using lower-case 'e' # We will estimate blackness using lower-case 'e'
define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.pow (Width / HalfUPM) 0.5]) Width define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.pow (Width / HalfUPM) 0.5]) Width
define DarknessMockWidth2 : HalfUPM * [Math.pow (Width / HalfUPM) 0.5] define DarknessMockWidth2 : HalfUPM * [Math.pow (Width / HalfUPM) 0.5]
define BaseFillRate : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2) define [BaseFillRate con] : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2)
define [InverseCrowdedness c] : [Math.tanh c] / c define [InverseCrowdedness con cow] : [Math.tanh (cow * [Math.sqrt con])] / (cow * [Math.sqrt con])
define [adviceBlackness crowdedness div mul] : begin define [adviceBlacknessImpl con cow div mul] : begin
local gap : DarknessMockWidth * [fallback div 1] - SB * 2 local gap : DarknessMockWidth * [fallback div 1] - SB * 2
local shrink : BaseFillRate * [InverseCrowdedness crowdedness] local shrink : [BaseFillRate con] * [InverseCrowdedness con cow]
return : Math.min para.stroke ([fallback mul 1] * gap * shrink) return : Math.min para.stroke ([fallback mul 1] * gap * shrink)
define [adviceBlackness cow div mul] : adviceBlacknessImpl HVContrast cow div mul
define [adviceBlackness2 cowX cowY refH div] : Math.min define [adviceBlackness2 cowX cowY refH div] : Math.min
adviceBlackness cowX (refH / DarknessMockWidth2) adviceBlacknessImpl HVContrast cowX div
adviceBlackness cowY div adviceBlacknessImpl 1 cowY (refH / DarknessMockWidth2)
define Stroke : adviceBlackness 2 define Stroke : adviceBlackness 2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 KiB

After

Width:  |  Height:  |  Size: 375 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

After

Width:  |  Height:  |  Size: 363 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

After

Width:  |  Height:  |  Size: 388 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

After

Width:  |  Height:  |  Size: 310 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 965 KiB

After

Width:  |  Height:  |  Size: 972 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Before After
Before After

View file

@ -26,8 +26,6 @@ plusSize = 0.52 # Size of plus and arith symbols
pictSize = 1.10 # Size of pictograms pictSize = 1.10 # Size of pictograms
arrowHeight = 1.50 # Height of arrows arrowHeight = 1.50 # Height of arrows
contrast = 1.11111 # Stroke width contrast.
slopeAngle = 0 # slope angle, in degrees. slopeAngle = 0 # slope angle, in degrees.
derivedSlopeAngle = 10 # Slope angle of derived letters requiring italics derivedSlopeAngle = 10 # Slope angle of derived letters requiring italics

View file

@ -1,17 +1,18 @@
[shapeWeight.blend.400] [shapeWeight.blend.400]
stroke = 72 # Primary stroke width stroke = 72 # Primary stroke width
sb = 60 # Primary sidebearings contrast = 1.11 # Stroke width contrast
essx = 1.12 # Proportion of widen of center of "S" sb = 60 # Primary sidebearings
dotsize = 125 # Size of dots essx = 1.12 # Proportion of widen of center of "S"
periodsize = 140 # Size of period dotsize = 125 # Size of dots
periodsize = 140 # Size of period
jut = 85 # Length of slab serif jut = 85 # Length of slab serif
refJut = 85 # Reference JUT, used in `m` refJut = 85 # Reference JUT, used in `m`
vjut = 145 # Length of vertical slab serif vjut = 145 # Length of vertical slab serif
longjut = 175 # Length of long serifs, like that in `i`. longjut = 175 # Length of long serifs, like that in `i`.
smooth = 195 # Vertical arc size in capital letters. smooth = 195 # Vertical arc size in capital letters.
smallsmooth = 200 # Vertical arc size in lowercase letters. smallsmooth = 200 # Vertical arc size in lowercase letters.
rbalance = 60 rbalance = 60
rbalance2 = 15 rbalance2 = 15
@ -21,7 +22,7 @@ jbalance = 63
fbalance = 6 fbalance = 6
onebalance = 30 onebalance = 30
hook = 155 # Hook depth in most letters. hook = 155 # Hook depth in most letters.
ahook = 130 ahook = 130
shook = 110 shook = 110
jhook = 135 jhook = 135
@ -34,115 +35,61 @@ cthinb = 0.5
vtipfine = 0.8 vtipfine = 0.8
vtipfineSlab = 0.9 vtipfineSlab = 0.9
[shapeWeight.blend.100] [shapeWeight.blend.100]
stroke = 18
contrast = 1.08
sb = 72
essx = 1.12
dotsize = 53
periodsize = 55
jut = 70 jut = 70
vjut = 145 vjut = 145
smooth = 195 smooth = 195
rhook = 110
rbalance = 60 rbalance = 60
rbalance2 = 15 rbalance2 = 15
cthin = 0.9 cthin = 0.9
cthinb = 0.9 cthinb = 0.9
vtipfine = 1 vtipfine = 1
vtipfineSlab = 1 vtipfineSlab = 1
stroke = 18
sb = 72
dotsize = 53
periodsize = 55
[shapeWeight.blend.200] [shapeWeight.blend.200]
jut = 75
vjut = 145
smooth = 195
rhook = 110
rbalance = 60
rbalance2 = 15
cthin = 0.75 cthin = 0.75
cthinb = 0.75 cthinb = 0.75
vtipfine = 1 vtipfine = 1
vtipfineSlab = 1 vtipfineSlab = 1
stroke = 36
sb = 68
dotsize = 70
periodsize = 77
[shapeWeight.blend.300] [shapeWeight.blend.300]
jut = 80
vjut = 145
smooth = 195
rhook = 110
rbalance = 60
rbalance2 = 15
cthin = 0.75 cthin = 0.75
cthinb = 0.5 cthinb = 0.5
vtipfine = 0.9 vtipfine = 0.9
vtipfineSlab = 0.9 vtipfineSlab = 0.9
stroke = 56
sb = 64
dotsize = 100
periodsize = 115
[shapeWeight.blend.500] [shapeWeight.blend.500]
essx = 1.12
jut = 85
vjut = 157
smooth = 200
rhook = 110
rbalance = 60 rbalance = 60
rbalance2 = 15 rbalance2 = 15
stroke = 84
sb = 57
dotsize = 135
periodsize = 160
[shapeWeight.blend.600] [shapeWeight.blend.600]
essx = 1.07 # Interpolated
jut = 85
vjut = 170
smooth = 203
rhook = 110
rbalance = 55
rbalance2 = 20
stroke = 97
sb = 54
dotsize = 145
periodsize = 168
[shapeWeight.blend.700] [shapeWeight.blend.700]
essx = 1.06 # Interpolated
jut = 89
vjut = 179
smooth = 206
rhook = 95
rbalance = 52
rbalance2 = 23
stroke = 106
sb = 50
dotsize = 157
periodsize = 180
[shapeWeight.blend.800] [shapeWeight.blend.800]
essx = 1.05 # Interpolated
jut = 96
vjut = 189
smooth = 210
rhook = 97
rbalance = 50
rbalance2 = 25
stroke = 116
sb = 45
dotsize = 167
periodsize = 188
[shapeWeight.blend.900] [shapeWeight.blend.900]
essx = 1.03 stroke = 116
jut = 100 contrast = 1.16
vjut = 199
smooth = 215
rhook = 105
rbalance = 50
rbalance2 = 25
stroke = 126
sb = 42 sb = 42
essx = 1.05
dotsize = 180 dotsize = 180
periodsize = 200 periodsize = 200
jut = 95
vjut = 200
smooth = 215
rbalance = 50
rbalance2 = 25