Add straight lambda (λ) shape, and corresponded variant selector cv94. Old shape is placed under cv95 (#467).

This commit is contained in:
Belleve Invis 2020-03-31 00:26:33 -07:00
parent 86bf2175e1
commit 9ea722566d
13 changed files with 104 additions and 72 deletions

View file

@ -315,6 +315,12 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* Styles for `7`:
* `v-seven-noserif`, `cv64`: `7` without serif (default for Sans).
* `v-seven-serifed`, `cv65`: `7` with initial serif (default for Slab).
* Styles for `ß`:
* `v-eszet-traditional`, `cv34`: Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher`, `cv35`: A more modern, beta-like Eszet (default).
* Styles for `λ`:
* `v-lambda-straight`, `cv94`: More-straight letter `λ` (default).
* `v-lambda-curly`, `cv95`: More curly letter `λ`, like Iosevka 2.x.
* Styles for `~`:
* `v-tilde-high`, `cv16`: Higher tilde `~`.
* `v-tilde-low`, `cv17`: Lower tilde `~` (default).
@ -353,9 +359,6 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* Styles for `<=`, `>=`:
* `v-lig-ltgteq-flat`, `cv66`: The lower bar of `<=` and `>=` ligation is flat (default).
* `v-lig-ltgteq-slanted`, `cv67`: The lower bar of `<=` and `>=` ligation is slanted.
* Styles for `ß`:
* `v-eszet-traditional`, `cv34`: Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher`, `cv35`: A more modern, beta-like Eszet (default).
<!-- END Section-Cherry-Picking-Styles -->

View file

@ -1 +1,2 @@
* Add IEC power symbol.
* Add straight lambda (`λ`) shape, and corresponded variant selector `cv94`. Old shape is placed under `cv95` (#467).

View file

@ -1306,9 +1306,10 @@ glyph-block LetterUnified-Basic : begin
### y
do "y and related ============================================================================"
define [GenSmallYShape straightBar] : begin
local useStraightBottom : !SLAB && straightBar
local useCurlyBottom : SLAB || straightBar
define [GenSmallYShape straightBar serifless] : begin
local slab : if serifless false SLAB
local useStraightBottom : !slab && straightBar
local useCurlyBottom : slab || straightBar
local px1 0.84
local py1 : linreg 18 0.8 126 0.76 STROKE
local px2 0.95
@ -1321,8 +1322,9 @@ glyph-block LetterUnified-Basic : begin
local dpy2 : (1 - [linreg (1 - px1) (1 - py1) px2 py2 1]) / (1 - py2)
local yrstrokel0 : MIDDLE - WIDTH * 0.1
local yrstrokel : MIDDLE - WIDTH * 0.1 + (STROKE * HVCONTRAST * [if (useStraightBottom || useCurlyBottom) (2 / 3) (1 / 3)])
local ySbCor : (XH / CAP) * (OX * [if SLAB 1 4])
local yrstroker : RIGHTSB - [if straightBar ySbCor 0]
local ySbCor : (XH / CAP) * (OX * [if slab 1 4])
local sbScalar : if (straightBar && SLAB && !slab) 1.5 1
local yrstroker : WIDTH - SB * sbScalar - [if straightBar ySbCor 0]
local yshrink : [linreg 18 1 126 0.85 STROKE] * [if straightBar ([adviceBlackness 3.25] / STROKE) 1]
local yBottomJut : JUT * 1.25
local slabysize : JUT * 1.0625 * (WIDTH / UPM) + STROKE
@ -1428,7 +1430,7 @@ glyph-block LetterUnified-Basic : begin
yJoinKnots ds ds2 top bottom
SmallYStrokeSplitMask top bottom false (-1)
if SLAB : begin
if slab : begin
include : AIVSerifs top
define [SmallYHookTopShape top bottom] : glyph-construction
@ -1457,34 +1459,20 @@ glyph-block LetterUnified-Basic : begin
yJoinKnots ds ds2 top bottom true
SmallYStrokeSplitMask top bottom true (-1)
if SLAB : begin
if slab : begin
include : AIVSerifs top
eject-contour 'serifRT'
define [SmallLambdaShape top bottom] : glyph-construction
local ds : (top - bottom) * pds
local ds2 : (top - bottom) * pds2
local left yrstrokel0
local right : yrstroker - HALFSTROKE * HVCONTRAST
include : dispiro
widths.center
flat right bottom [heading UPWARD]
curl right (bottom + ds) [heading UPWARD]
quadcontrols 0 dpy1 16
flat [mix right left (1 - px1)] [mix (top - ds2) (bottom + ds) py1]
curl [mix right left px2] [mix (top - ds2) (bottom + ds) (1 - py20)]
quadcontrols 1 (1 - dpy20) 16
flat left (top - ds2) [heading UPWARD]
curl left top [heading UPWARD]
include : dispiro
widths.center
flat (WIDTH - right) bottom [heading UPWARD]
curl (WIDTH - right) (bottom + ds) [heading UPWARD]
quadcontrols 0 dpy1 16
flat [mix (WIDTH - left) (WIDTH - right) px1] [mix (top - ds2) (bottom + ds) py1]
curl MIDDLE [mix (top - ds2) (bottom + ds) [linreg (1 - px2) (1 - py20) px1 py1 ((MIDDLE - left) / (right - left))]]
set currentGlyph.gizmo : Italify (-para.slantAngle)
include : SmallYShape top bottom
set currentGlyph.gizmo : Italify (+para.slantAngle)
# apply-transform : Upright
apply-transform : Translate 0 (-[mix bottom top 0.5])
apply-transform : Scale 1 (-1)
apply-transform : Translate 0 (+[mix bottom top 0.5])
# apply-transform : Italify
currentGlyph.reverse-all
return : object SmallYShape SmallYHookTopShape SmallLambdaShape
@ -1553,16 +1541,26 @@ glyph-block LetterUnified-Basic : begin
turned 'turny.curly' nothing 'y.curly' MIDDLE (XH / 2) MarkSet.b
select-variant 'turny' 0x28E (follow -- 'yhooktop')
sketch # lambda
include MarkSet.b
include : [GenSmallYShape false].SmallLambdaShape CAP 0
set-anchor "overlay" BASE MIDDLE (XH / 2)
save 'lambda' 0x3BB
define [LambdaBarOverlayShape] : FlatSlashShape ([tp [Upright] [query-glyph 'l.serifed'].anchors.above].x / para.diversityI) [mix 0 CAP 0.7] (OVERLAYSTROKE / 2)
sketch # lambdaslash
include [refer-glyph 'lambda'] AS_BASE
include : FlatSlashShape ([tp [Upright] [query-glyph 'l.serifed'].anchors.above].x / para.diversityI) [mix 0 CAP 0.7] (OVERLAYSTROKE / 2)
save 'lambdaslash' 0x19B
sketch # lambda.straight
include MarkSet.b
include : [GenSmallYShape true true].SmallLambdaShape CAP 0
set-anchor "overlay" BASE MIDDLE (XH / 2)
save 'lambda.straight'
include : LambdaBarOverlayShape
save 'lambdaSlash.straight'
sketch # lambda.curly
include MarkSet.b
include : [GenSmallYShape false true].SmallLambdaShape CAP 0
set-anchor "overlay" BASE MIDDLE (XH / 2)
save 'lambda.curly'
include : LambdaBarOverlayShape
save 'lambdaSlash.curly'
select-variant 'lambda' 0x3BB
select-variant 'lambdaSlash' 0x19B (follow -- 'lambda')
### K and k
do "k and related ============================================================================"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 399 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 KiB

After

Width:  |  Height:  |  Size: 337 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 KiB

After

Width:  |  Height:  |  Size: 337 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 957 KiB

After

Width:  |  Height:  |  Size: 957 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

After

Width:  |  Height:  |  Size: 318 KiB

Before After
Before After

View file

@ -436,6 +436,30 @@
<span class="sample italic" style="font-feature-settings:'cv65'">7</span>
</li>
</ol></li>
<li><ol class="group">
<li>
<span class="tag">cv34</span>
<span class="sample" style="font-feature-settings:'cv34'">ß</span>
<span class="sample italic" style="font-feature-settings:'cv34'">ß</span>
</li>
<li>
<span class="tag">cv35</span>
<span class="sample" style="font-feature-settings:'cv35'">ß</span>
<span class="sample italic" style="font-feature-settings:'cv35'">ß</span>
</li>
</ol></li>
<li><ol class="group">
<li>
<span class="tag">cv94</span>
<span class="sample" style="font-feature-settings:'cv94'">λ</span>
<span class="sample italic" style="font-feature-settings:'cv94'">λ</span>
</li>
<li>
<span class="tag">cv95</span>
<span class="sample" style="font-feature-settings:'cv95'">λ</span>
<span class="sample italic" style="font-feature-settings:'cv95'">λ</span>
</li>
</ol></li>
<li><ol class="group">
<li>
<span class="tag">cv16</span>
@ -593,18 +617,6 @@
<span class="sample" style="font-feature-settings:'cv67'">&gt;=</span>
</li>
</ol></li>
<li><ol class="group">
<li>
<span class="tag">cv34</span>
<span class="sample" style="font-feature-settings:'cv34'">ß</span>
<span class="sample italic" style="font-feature-settings:'cv34'">ß</span>
</li>
<li>
<span class="tag">cv35</span>
<span class="sample" style="font-feature-settings:'cv35'">ß</span>
<span class="sample italic" style="font-feature-settings:'cv35'">ß</span>
</li>
</ol></li>
</ol>
</section>
<section id="stylesets" class="opentype">

View file

@ -89,6 +89,11 @@ export all : class Glyph
return this
public reverseLast : public reverse-last
public [reverse-all] : begin
if this.contours : set this.contours : this.contours.map : lambda [c] : c.reverse
return this
public reverseAll : public reverse-all
public [tag-contour tag n] : begin
if this.contours : begin
local lastContour this.contours.(this.contours.length - 1)

View file

@ -339,6 +339,30 @@ description = 'Cursive-like `y`'
y = "cursive"
yhooktop = "straight"
[simple.v-eszet-traditional]
tag = 'cv34'
sampler = 'ß'
description = 'Traditional, Fraktur-like Eszet'
eszet = 'traditional'
[simple.v-eszet-sulzbacher]
tag = 'cv35'
sampler = 'ß'
description = 'A more modern, beta-like Eszet'
eszet = 'sulzbacher'
[simple.v-lambda-straight]
tag = "cv94"
sampler = 'λ'
description = 'More-straight letter `λ`'
lambda = "straight"
[simple.v-lambda-curly]
tag = "cv95"
sampler = 'λ'
description = 'More curly letter `λ`, like Iosevka 2.x'
lambda = "curly"
[simple.v-zero-slashed]
tag = 'cv13'
sampler = '0'
@ -567,18 +591,6 @@ description = 'The lower bar of `<=` and `>=` ligation is slanted'
"eq.at-lteq.lig2" = "slanted"
"eq.at-gteq.lig2" = "slanted"
[simple.v-eszet-traditional]
tag = 'cv34'
sampler = 'ß'
description = 'Traditional, Fraktur-like Eszet'
eszet = 'traditional'
[simple.v-eszet-sulzbacher]
tag = 'cv35'
sampler = 'ß'
description = 'A more modern, beta-like Eszet'
eszet = 'sulzbacher'
########## "Untagged" variants, used for Aile, etc.
[simple.v-capital-i-straight]
@ -641,7 +653,8 @@ design = [
'v-capital-y-straight',
'v-capital-r-straight',
'v-u-with-bar',
'v-capital-g-tooth'
'v-capital-g-tooth',
'v-lambda-straight'
]
upright = [
'v-a-doublestorey',
@ -700,9 +713,9 @@ design = ['v-at-fourfold', 'v-a-singlestorey', 'v-i-zshaped', 'v-l-zshaped', 'v-
[composite.ss08]
description = 'Pragmata Pro Style'
design = ['v-at-threefold', 'v-a-doublestorey', 'v-l-serifed', 'v-i-serifed', 'v-asterisk-low', 'v-zero-dotted', 'v-brace-straight', 'v-dollar-open', 'v-underscore-low', 'v-numbersign-slanted', 'v-percent-dots', 'v-v-curly', 'v-turn-v-curly', 'v-w-curly', 'v-x-curly', 'v-capital-y-curly', 'v-capital-r-curly']
upright = ['v-k-curly', 'v-y-curly', 'v-g-doublestorey']
italic = ['v-k-curly', 'v-y-curly', 'v-g-singlestorey']
design = ['v-at-threefold', 'v-a-doublestorey', 'v-l-serifed', 'v-i-serifed', 'v-asterisk-low', 'v-zero-dotted', 'v-brace-straight', 'v-dollar-open', 'v-underscore-low', 'v-numbersign-slanted', 'v-percent-dots', 'v-v-curly', 'v-turn-v-curly', 'v-w-curly', 'v-x-curly', 'v-capital-y-curly', 'v-capital-r-curly', 'v-k-curly', 'v-y-curly', 'v-lambda-curly']
upright = ['v-g-doublestorey']
italic = ['v-g-singlestorey']
[composite.ss09]
description = 'Source Code Pro Style'
@ -732,6 +745,6 @@ design = ['v-i-serifed', 'v-l-italic', 'v-u-without-bar', 'v-zero-dotted', 'v-th
[composite.ss20]
description = 'Curly Style'
design = ['v-v-curly', 'v-turn-v-curly', 'v-w-curly', 'v-x-curly', 'v-capital-y-curly', 'v-capital-r-curly']
design = ['v-v-curly', 'v-turn-v-curly', 'v-w-curly', 'v-x-curly', 'v-capital-y-curly', 'v-capital-r-curly', 'v-lambda-curly']
upright = ['v-k-curly', 'v-y-curly']
italic = ['v-k-cursive', 'v-y-cursive']