Make CV feature for l
effective on more derived letters (#1015).
This commit is contained in:
parent
418bd46091
commit
8673826826
16 changed files with 495 additions and 250 deletions
|
@ -1,3 +1,4 @@
|
||||||
* Fix misplaced descender on `U+04AD` (#1005).
|
* Fix misplaced descender on `U+04AD` (#1005).
|
||||||
* Fix inconsistent serif on italic variants of Cyrillic En (#1006).
|
* Fix inconsistent serif on italic variants of Cyrillic En (#1006).
|
||||||
* Fix inconsistent serifs on letters with retroflex hooks, like `U+1D99` and `U+01AE` (#1008).
|
* Fix inconsistent serifs on letters with retroflex hooks, like `U+1D99` and `U+01AE` (#1008).
|
||||||
|
* Make CV feature for `l` effective on more derived letters (#1015).
|
|
@ -109,7 +109,7 @@ glyph-block Autobuild-Enclosure-Shared : begin
|
||||||
glyph-block AutoBuild-Enclosure : begin
|
glyph-block AutoBuild-Enclosure : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Recursive-Build : Miniature Thinner
|
glyph-block-import Recursive-Build : Miniature
|
||||||
glyph-block-import Autobuild-Enclosure-Shared : CircNameNoCheck CircName CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations getGlyphDefaultShift
|
glyph-block-import Autobuild-Enclosure-Shared : CircNameNoCheck CircName CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations getGlyphDefaultShift
|
||||||
|
|
||||||
define circleWidthClasses {{'NWID' Width 0.12} {'WWID' WideWidth0 0.08}}
|
define circleWidthClasses {{'NWID' Width 0.12} {'WWID' WideWidth0 0.08}}
|
||||||
|
@ -728,7 +728,7 @@ glyph-block AutoBuild-Enclosure : begin
|
||||||
glyph-block Autobuild-Fractions : begin
|
glyph-block Autobuild-Fractions : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Recursive-Build : Miniature Thinner
|
glyph-block-import Recursive-Build : Miniature Thner
|
||||||
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations
|
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs EnsureComponentGlyphT CreateDerivedFontFromJobs applyRelations
|
||||||
|
|
||||||
define [createFracImpl prefix demands fine scaleFactor closing] : begin
|
define [createFracImpl prefix demands fine scaleFactor closing] : begin
|
||||||
|
@ -838,7 +838,7 @@ glyph-block Autobuild-Fractions : begin
|
||||||
glyph-block AutoBuild-Accented-Equal : begin
|
glyph-block AutoBuild-Accented-Equal : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Recursive-Build : Miniature Thinner
|
glyph-block-import Recursive-Build : Miniature
|
||||||
glyph-block-import Marks : aboveMarkBot
|
glyph-block-import Marks : aboveMarkBot
|
||||||
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations
|
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations
|
||||||
|
|
||||||
|
@ -1047,6 +1047,7 @@ glyph-block Autobuild-Ligatures : begin
|
||||||
list 0x1F3 { 'd' 'z' }
|
list 0x1F3 { 'd' 'z' }
|
||||||
list 0x478 { 'O' 'y' }
|
list 0x478 { 'O' 'y' }
|
||||||
list 0x479 { 'o' 'y' }
|
list 0x479 { 'o' 'y' }
|
||||||
|
list 0x20A7 { 'P' 't.flatHook' }
|
||||||
list 0x20A8 { 'R' 's' }
|
list 0x20A8 { 'R' 's' }
|
||||||
list 0x20AF { 'D' 'grek/rho' }
|
list 0x20AF { 'D' 'grek/rho' }
|
||||||
list 0x203c { 'exclam' 'exclam' }
|
list 0x203c { 'exclam' 'exclam' }
|
||||||
|
@ -1063,16 +1064,11 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Recursive-Build : Miniature Thinner
|
glyph-block-import Recursive-Build : Miniature Thinner
|
||||||
|
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations
|
||||||
|
|
||||||
define [glyphNameIsNotUsed name] : begin
|
define [createPhoneticLigatures prefix div _shrink1 _shrink2 wadj1 wadj2 demands] : begin
|
||||||
if [query-glyph name] : throw : new Error "Glyph \(name) already exists!"
|
define CWidth : Width * div
|
||||||
return name
|
define jobs : CollectJobs NON-DECOMPOSABLE NOT-CENTERED prefix "" demands
|
||||||
define [PhoneticLigatureGlyphName a b] : glyphNameIsNotUsed "phonetic{\(a)}{\(b)}"
|
|
||||||
|
|
||||||
define [createPhoneticLigatures _shrink1 _shrink2 wadj1 wadj2 records] : begin
|
|
||||||
define CWidth : Width * para.diversityM
|
|
||||||
define pendingGlyphs1 : records.map : [record] => record.1
|
|
||||||
define pendingGlyphs2 : records.map : [record] => record.2
|
|
||||||
local shrink1 : clamp 0 1 _shrink1
|
local shrink1 : clamp 0 1 _shrink1
|
||||||
local shrink2 : clamp 0 1 _shrink2
|
local shrink2 : clamp 0 1 _shrink2
|
||||||
local kern : SB * shrink1 + SB * shrink2 + 0.5 * Stroke * [mix shrink1 shrink2 0.5] - OX * 2
|
local kern : SB * shrink1 + SB * shrink2 + 0.5 * Stroke * [mix shrink1 shrink2 0.5] - OX * 2
|
||||||
|
@ -1084,11 +1080,10 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
||||||
set shrink1 : clamp 0 1 tmp-shrink1
|
set shrink1 : clamp 0 1 tmp-shrink1
|
||||||
set shrink2 : clamp 0 1 tmp-shrink2
|
set shrink2 : clamp 0 1 tmp-shrink2
|
||||||
|
|
||||||
define df1 : Thinner pendingGlyphs1 shrink1
|
local df1 : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrink1 true
|
||||||
define df2 : Thinner pendingGlyphs2 shrink2
|
local df2 : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrink2 true
|
||||||
|
|
||||||
foreach [{unicode c1 c2 mak} : items-of records] : begin
|
foreach [{gn unicode { c1 c2 } mak} : items-of jobs.nonDecomposable] : if [not : query-glyph gn] : begin
|
||||||
local glyphName : PhoneticLigatureGlyphName c1 c2
|
|
||||||
|
|
||||||
local maskOuts {}
|
local maskOuts {}
|
||||||
local s 0
|
local s 0
|
||||||
|
@ -1102,9 +1097,9 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
||||||
include : Translate (s + dfg1.advanceWidth * wadj1 - kern) 0
|
include : Translate (s + dfg1.advanceWidth * wadj1 - kern) 0
|
||||||
set s : s + step
|
set s : s + step
|
||||||
|
|
||||||
create-glyph glyphName unicode : glyph-proc
|
create-glyph gn unicode : glyph-proc
|
||||||
set-width CWidth
|
set-width CWidth
|
||||||
include : [DivFrame (CWidth / Width)].markSet.(mak || 'if')
|
if mak : include : [DivFrame (CWidth / Width)].markSet.(mak)
|
||||||
define dfg1 : df1.queryByNameEnsured c1
|
define dfg1 : df1.queryByNameEnsured c1
|
||||||
define dfg2 : df2.queryByNameEnsured c2
|
define dfg2 : df2.queryByNameEnsured c2
|
||||||
local sumChildrenWidth : dfg1.advanceWidth * wadj1 + dfg2.advanceWidth * wadj2
|
local sumChildrenWidth : dfg1.advanceWidth * wadj1 + dfg2.advanceWidth * wadj2
|
||||||
|
@ -1120,20 +1115,26 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
||||||
include : Translate (CWidth / 2) 0
|
include : Translate (CWidth / 2) 0
|
||||||
include : Italify
|
include : Italify
|
||||||
|
|
||||||
define stdShrink : clamp 0.75 0.9 : linreg 72 0.75 108 0.9 Stroke
|
applyRelations jobs.relApplications
|
||||||
createPhoneticLigatures stdShrink stdShrink 1 1 : list
|
|
||||||
list 0x02A3 'd' 'z' 'b'
|
define stdShrink : clamp 0.75 0.9 : StrokeWidthBlend 0.78 0.9
|
||||||
list 0x02A4 'd' 'ezh' 'if'
|
createPhoneticLigatures 'phonetic' para.diversityM stdShrink stdShrink 1 1 : list
|
||||||
list 0x02A5 'd' 'zCurlyTail' 'if'
|
list 0x02A3 { 'd/phoneticLeft' 'zReduced' } 'b'
|
||||||
list 0x02A6 't.phoneticLeft' 's.phoneticRight' 'b'
|
list 0x02A4 { 'd/phoneticLeft' 'ezh' } 'if'
|
||||||
list 0x02A7 't.phoneticLeft.extended' 'esh' 'if'
|
list 0x02A5 { 'd/phoneticLeft' 'zCurlyTail' } 'if'
|
||||||
list 0x02A8 't.phoneticLeft' 'cCurlyTail' 'b'
|
list 0x02A6 { 't.phoneticLeft' 's/phoneticRight' } 'b'
|
||||||
list 0x02A9 'f.phoneticLeft' 'eng' 'if'
|
list 0x02A7 { 't.phoneticLeft.extended' 'esh' } 'if'
|
||||||
list 0x02AA 'l.phoneticLeft' 's.phoneticRight' 'b'
|
list 0x02A8 { 't.phoneticLeft' 'cCurlyTail' } 'b'
|
||||||
list 0x02AB 'l.phoneticLeft' 'z' 'b'
|
list 0x02A9 { 'f.phoneticLeft' 'eng' } 'if'
|
||||||
list 0xAB66 'd' 'zRTailBR' 'if'
|
list 0x02AA { 'l/phoneticLeft' 's/phoneticRight' } 'b'
|
||||||
list 0xAB67 't.phoneticLeft' 'sRTail' 'if'
|
list 0x02AB { 'l/phoneticLeft' 'zReduced' } 'b'
|
||||||
list 0x20A7 'P' 't.flatHook' 'b'
|
list 0xAB66 { 'd/phoneticLeft' 'zRTailBR' } 'if'
|
||||||
|
list 0xAB67 { 't.phoneticLeft' 'sRTail' } null
|
||||||
|
|
||||||
|
define compatLigShrink : clamp 0.75 1 : StrokeWidthBlend 0.78 1
|
||||||
|
createPhoneticLigatures 'compatLig' 1 compatLigShrink compatLigShrink 1 1 : list
|
||||||
|
list 0xFB01 { 'f/compLigLeft1' 'dotlessi/compLigRight' } null
|
||||||
|
list 0xFB02 { 'f/compLigLeft2' 'l/compLigRight' } null
|
||||||
|
|
||||||
glyph-block Autobuild-Grouped-Digits : begin
|
glyph-block Autobuild-Grouped-Digits : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
|
|
|
@ -269,7 +269,7 @@ glyph-block Autobuild-Transformed : begin
|
||||||
list 0x1DA7 'smcpIBarOver'
|
list 0x1DA7 'smcpIBarOver'
|
||||||
list 0x1DA8 'jCurlyTail'
|
list 0x1DA8 'jCurlyTail'
|
||||||
list 0x1DAB 'smcpL'
|
list 0x1DAB 'smcpL'
|
||||||
list 0x1DA9 'lrtail'
|
list 0x1DA9 'lRTail'
|
||||||
list 0x1DAC 'mltail'
|
list 0x1DAC 'mltail'
|
||||||
list 0x1DAD 'turnmleg'
|
list 0x1DAD 'turnmleg'
|
||||||
list 0x1DAE 'nltail'
|
list 0x1DAE 'nltail'
|
||||||
|
|
|
@ -185,19 +185,24 @@ glyph-block Recursive-Build : begin
|
||||||
forkedPara.diversityM = 1
|
forkedPara.diversityM = 1
|
||||||
return : Fork glyphs forkedPara
|
return : Fork glyphs forkedPara
|
||||||
|
|
||||||
define [Thinner glyphs p crowd] : begin
|
define [Thinner glyphs p fMono] : begin
|
||||||
local forkedPara : Object.create para
|
local forkedPara : Object.create para
|
||||||
forkedPara.stroke = [AdviceStroke : fallback crowd 1]
|
forkedPara.unitWidthScalar = para.unitWidthScalar * p
|
||||||
forkedPara.width = Width * p
|
forkedPara.width = Width * p
|
||||||
forkedPara.accentx = AccentX * p
|
forkedPara.accentx = AccentX * p
|
||||||
forkedPara.jut = Jut * p
|
forkedPara.jut = Jut * p
|
||||||
forkedPara.longjut = LongJut * p
|
forkedPara.longjut = LongJut * p
|
||||||
forkedPara.diversityM = 1
|
forkedPara.diversityM = 1
|
||||||
|
if fMono : begin
|
||||||
|
forkedPara.diversityF = 1
|
||||||
|
forkedPara.diversityI = 1
|
||||||
|
forkedPara.diversityII = 1
|
||||||
#forkedPara.hookx = HookX * p
|
#forkedPara.hookx = HookX * p
|
||||||
return : Fork glyphs forkedPara
|
return : Fork glyphs forkedPara
|
||||||
|
|
||||||
define [Widen glyphs p psb] : begin
|
define [Widen glyphs p psb] : begin
|
||||||
local forkedPara : Object.create para
|
local forkedPara : Object.create para
|
||||||
|
forkedPara.unitWidthScalar = para.unitWidthScalar * p
|
||||||
forkedPara.width = Width * p
|
forkedPara.width = Width * p
|
||||||
forkedPara.sb = SB * [fallback psb p]
|
forkedPara.sb = SB * [fallback psb p]
|
||||||
forkedPara.accentx = AccentX * p
|
forkedPara.accentx = AccentX * p
|
||||||
|
|
|
@ -98,11 +98,17 @@ glyph-block Letter-Latin-Ezh : begin
|
||||||
include : MarkSet.p
|
include : MarkSet.p
|
||||||
include : RevEzhShape XH Descender
|
include : RevEzhShape XH Descender
|
||||||
|
|
||||||
create-glyph 'lyogh' 0x26E : glyph-proc
|
create-glyph 'lyogh.serifless' : glyph-proc
|
||||||
include : MarkSet.if
|
include : MarkSet.if
|
||||||
include : EzhShape XH Descender 0.4
|
include : EzhShape XH Descender 0.4
|
||||||
include : VBarLeft SB (XH * 0.1) CAP
|
include : VBarLeft SB (XH * 0.1) CAP
|
||||||
|
|
||||||
|
create-glyph 'lyogh.hooky' : glyph-proc
|
||||||
|
include [refer-glyph 'lyogh.serifless'] AS_BASE ALSO_METRICS
|
||||||
|
include : LeftwardTopSerif SB CAP SideJut
|
||||||
|
|
||||||
|
select-variant 'lyogh' 0x26E
|
||||||
|
|
||||||
create-glyph 'ezhtail' 0x1BA : glyph-proc
|
create-glyph 'ezhtail' 0x1BA : glyph-proc
|
||||||
local b : mix Descender XH 0.25
|
local b : mix Descender XH 0.25
|
||||||
include : EzhShape XH b nothing nothing 0.5
|
include : EzhShape XH b nothing nothing 0.5
|
||||||
|
|
|
@ -5,5 +5,5 @@ glyph-module
|
||||||
glyph-block Letter-Cyrillic-Orthography : begin
|
glyph-block Letter-Cyrillic-Orthography : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
|
|
||||||
orthographic-italic 'f_i' 0xFB01
|
# orthographic-italic 'f_i' 0xFB01
|
||||||
orthographic-italic 'f_l' 0xFB02
|
# orthographic-italic 'f_l' 0xFB02
|
||||||
|
|
|
@ -17,6 +17,7 @@ glyph-block Letter-Latin-C : begin
|
||||||
glyph-block-import Letter-Shared-Shapes : ArcEndSerifL ArcEndSerifR
|
glyph-block-import Letter-Shared-Shapes : ArcEndSerifL ArcEndSerifR
|
||||||
glyph-block-import Letter-Shared-Shapes : ArcStartInwardSerifL ArcStartInwardSerifR
|
glyph-block-import Letter-Shared-Shapes : ArcStartInwardSerifL ArcStartInwardSerifR
|
||||||
glyph-block-import Letter-Shared-Shapes : ArcEndInwardSerifL ArcEndInwardSerifR
|
glyph-block-import Letter-Shared-Shapes : ArcEndInwardSerifL ArcEndInwardSerifR
|
||||||
|
glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart_RtlLhs
|
||||||
glyph-block-import Letter-Blackboard : BBS BBD
|
glyph-block-import Letter-Blackboard : BBS BBD
|
||||||
|
|
||||||
define SLAB-NONE 0
|
define SLAB-NONE 0
|
||||||
|
@ -140,18 +141,18 @@ glyph-block Letter-Latin-C : begin
|
||||||
__ : glyph-proc
|
__ : glyph-proc
|
||||||
|
|
||||||
define [CCurlyTailShape slabType] : glyph-proc
|
define [CCurlyTailShape slabType] : glyph-proc
|
||||||
local stroke : AdviceStroke2 2 3 XH
|
local sw : AdviceStroke2 2 3 XH
|
||||||
local fine : AdviceStroke2 3 3 XH
|
local fine : AdviceStroke2 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 + sw * HVContrast
|
||||||
local x2 : SB + stroke * 0.3
|
local x2 : SB + sw * 0.3
|
||||||
local y2 : -XH * 0.05
|
local y2 : -XH * 0.05
|
||||||
|
|
||||||
if (slabType === SLAB-CLASSICAL) : include : ArcStartSerifR RightSB XH stroke Hook
|
|
||||||
include : dispiro
|
include : dispiro
|
||||||
match slabType
|
match slabType
|
||||||
[Just SLAB-CLASSICAL] : SerifedArcStart_RtlLhs RightSB Middle XH stroke Hook
|
[Just SLAB-CLASSICAL] : SerifedArcStart_RtlLhs RightSB Middle XH sw Hook
|
||||||
__ : list [g4 RightSB (XH - Hook) [widths.lhs stroke]] [hookstart XH]
|
[Just SLAB-INWARD] : InwardSlabArcStart_RtlLhs RightSB Middle XH sw Hook
|
||||||
|
__ : list [g4 RightSB (XH - Hook) [widths.lhs sw]] [hookstart XH]
|
||||||
flat (SB + OX) (XH - SmallSmoothA)
|
flat (SB + OX) (XH - SmallSmoothA)
|
||||||
curl (SB + OX) SmallSmoothB
|
curl (SB + OX) SmallSmoothB
|
||||||
arcvh
|
arcvh
|
||||||
|
|
|
@ -61,6 +61,7 @@ glyph-block Letter-Latin-Lower-D : begin
|
||||||
include : tagged 'serifRT' : LeftwardTopSerif (RightSB - Stroke * HVContrast) CAP SideJut
|
include : tagged 'serifRT' : LeftwardTopSerif (RightSB - Stroke * HVContrast) CAP SideJut
|
||||||
|
|
||||||
select-variant 'd' 'd'
|
select-variant 'd' 'd'
|
||||||
|
select-variant 'd/phoneticLeft' (shapeFrom -- 'd')
|
||||||
|
|
||||||
derive-glyphs 'dcroat' 0x111 'd' : lambda [src sel] : glyph-proc
|
derive-glyphs 'dcroat' 0x111 'd' : lambda [src sel] : glyph-proc
|
||||||
include [refer-glyph src] AS_BASE
|
include [refer-glyph src] AS_BASE
|
||||||
|
|
|
@ -68,7 +68,16 @@ glyph-block Letter-Latin-Lower-F : begin
|
||||||
[Just CH-DIAGONAL-HOOK] : include : SmallFDiagonalTail df barLeft
|
[Just CH-DIAGONAL-HOOK] : include : SmallFDiagonalTail df barLeft
|
||||||
[Just CH-SERIF] : include : SmallFBottomSerif df 0
|
[Just CH-SERIF] : include : SmallFBottomSerif df 0
|
||||||
|
|
||||||
define [NarrowFShape df m bh counterHook] : glyph-proc
|
define [NarrowFShape clcStyle] : function [df m bh counterHook] : glyph-proc
|
||||||
|
local topHookExt : match clcStyle
|
||||||
|
[Just 1] Width
|
||||||
|
[Just 2] Jut
|
||||||
|
__ 0
|
||||||
|
local topHookHdExt : match clcStyle
|
||||||
|
[Just 1] 1
|
||||||
|
__ 0
|
||||||
|
local crossBarExt : if (clcStyle === 1) Jut 0
|
||||||
|
|
||||||
local barAtCenter : (counterHook === CH-HOOK) || (counterHook === CH-DIAGONAL-HOOK)
|
local barAtCenter : (counterHook === CH-HOOK) || (counterHook === CH-DIAGONAL-HOOK)
|
||||||
local crossLeft : mix 0 df.leftSB m
|
local crossLeft : mix 0 df.leftSB m
|
||||||
local crossRight : mix df.width df.rightSB m
|
local crossRight : mix df.width df.rightSB m
|
||||||
|
@ -78,12 +87,12 @@ glyph-block Letter-Latin-Lower-F : begin
|
||||||
local hd : FlatHookDepth df
|
local hd : FlatHookDepth df
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs
|
widths.lhs
|
||||||
flat crossRight CAP
|
flat (crossRight + topHookExt) CAP
|
||||||
curl [Math.min (barLeft + hd.x) (crossRight - 0.1)] CAP
|
curl [Math.min (barLeft + hd.x * (1 + topHookHdExt)) (crossRight - 0.1)] CAP
|
||||||
archv.superness DesignParameters.tightHookSuperness
|
archv.superness DesignParameters.tightHookSuperness
|
||||||
flat barLeft [Math.max XH (CAP - hd.y)]
|
flat barLeft [Math.max XH (CAP - hd.y)]
|
||||||
curl barLeft 0 [heading Downward]
|
curl barLeft 0 [heading Downward]
|
||||||
include : HCrossBar.top crossLeft crossRight bh
|
include : HCrossBar.top crossLeft (crossRight + crossBarExt) bh
|
||||||
|
|
||||||
match counterHook
|
match counterHook
|
||||||
[Just CH-EXTENSION] : include : SmallFDownExtension barLeft
|
[Just CH-EXTENSION] : include : SmallFDownExtension barLeft
|
||||||
|
@ -115,16 +124,28 @@ glyph-block Letter-Latin-Lower-F : begin
|
||||||
'extendedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-EXTENSION } { 'if' 'if' } }
|
'extendedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-EXTENSION } { 'if' 'if' } }
|
||||||
'tailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-HOOK } { 'if' 'if' } }
|
'tailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-HOOK } { 'if' 'if' } }
|
||||||
'diagonalTailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
'diagonalTailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
||||||
'flatHook' { { NarrowFShape dfNarrowF } { pNarrowSide fbar CH-NONE } { 'b' 'p' } }
|
'flatHook' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-NONE } { 'b' 'p' } }
|
||||||
'flatHookSerifed' { { NarrowFShape dfNarrowF } { pNarrowSide fbar CH-SERIF } { 'b' 'p' } }
|
'flatHookSerifed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-SERIF } { 'b' 'p' } }
|
||||||
'flatHookExtended' { { NarrowFShape dfNarrowF } { pNarrowSide fbar CH-EXTENSION } { 'if' 'if' } }
|
'flatHookExtended' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } { 'if' 'if' } }
|
||||||
'flatHookTailed' { { NarrowFShape dfNarrowF } { pNarrowSide fbar CH-HOOK } { 'if' 'if' } }
|
'flatHookTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-HOOK } { 'if' 'if' } }
|
||||||
'flatHookDiagonalTailed' { { NarrowFShape dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
'flatHookDiagonalTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
||||||
'flatHookCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-NONE } { 'b' 'p' } }
|
'flatHookCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-NONE } { 'b' 'p' } }
|
||||||
'flatHookSerifedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-SERIF } { 'b' 'p' } }
|
'flatHookSerifedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-SERIF } { 'b' 'p' } }
|
||||||
'flatHookExtendedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-EXTENSION } { 'if' 'if' } }
|
'flatHookExtendedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-EXTENSION } { 'if' 'if' } }
|
||||||
'flatHookTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
|
'flatHookTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
|
||||||
'flatHookDiagonalTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
'flatHookDiagonalTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
||||||
|
|
||||||
|
'flatHookCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-NONE } { 'b' 'p' } }
|
||||||
|
'flatHookSerifedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-SERIF } { 'b' 'p' } }
|
||||||
|
'flatHookExtendedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-EXTENSION } { 'if' 'if' } }
|
||||||
|
'flatHookTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
|
||||||
|
'flatHookDiagonalTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
||||||
|
|
||||||
|
'flatHookCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-NONE } { 'b' 'p' } }
|
||||||
|
'flatHookSerifedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-SERIF } { 'b' 'p' } }
|
||||||
|
'flatHookExtendedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } { 'if' 'if' } }
|
||||||
|
'flatHookTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-HOOK } { 'if' 'if' } }
|
||||||
|
'flatHookDiagonalTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
|
||||||
|
|
||||||
'phoneticLeft' { { StandardSmallFShape [DivFrame 1] } { 1 fbar [if SLAB CH-SERIF CH-NONE] } { 'b' 'p' } }
|
'phoneticLeft' { { StandardSmallFShape [DivFrame 1] } { 1 fbar [if SLAB CH-SERIF CH-NONE] } { 'b' 'p' } }
|
||||||
|
|
||||||
|
@ -142,6 +163,8 @@ glyph-block Letter-Latin-Lower-F : begin
|
||||||
select-variant 'turnf' 0x25F (follow -- 'f')
|
select-variant 'turnf' 0x25F (follow -- 'f')
|
||||||
select-variant 'lenisf' 0xAB35 (shapeFrom -- 'f')
|
select-variant 'lenisf' 0xAB35 (shapeFrom -- 'f')
|
||||||
select-variant 'fltail' 0x192 (shapeFrom -- 'f')
|
select-variant 'fltail' 0x192 (shapeFrom -- 'f')
|
||||||
|
select-variant 'f/compLigLeft1' (shapeFrom -- 'f')
|
||||||
|
select-variant 'f/compLigLeft2' (shapeFrom -- 'f')
|
||||||
|
|
||||||
alias 'dotlessJHookBar' 0x284 'f.dotlessJHookBar'
|
alias 'dotlessJHookBar' 0x284 'f.dotlessJHookBar'
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,12 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
set-base-anchor 'topright' (xMiddle + df.rightSB - df.middle) yTop
|
set-base-anchor 'topright' (xMiddle + df.rightSB - df.middle) yTop
|
||||||
|
|
||||||
### dotless i, i and iota
|
### dotless i, i and iota
|
||||||
|
glyph-block-export TailedDotlessXMiddle
|
||||||
|
define [TailedDotlessXMiddle df addTopSerif] : df.middle - [if addTopSerif 0 : IBalance2 df]
|
||||||
|
|
||||||
glyph-block-export IotaShape
|
glyph-block-export IotaShape
|
||||||
define [IotaShape] : params [df top [addTopSerif false]] : glyph-proc
|
define [IotaShape] : params [df top [addTopSerif false]] : glyph-proc
|
||||||
local xMiddle : df.middle - [if addTopSerif 0 : IBalance2 df]
|
local xMiddle : TailedDotlessXMiddle df addTopSerif
|
||||||
local tailLength : LongJut * 1.05 * [mix 1 df.div 0.75]
|
local tailLength : LongJut * 1.05 * [mix 1 df.div 0.75]
|
||||||
local hd : FlatHookDepth df
|
local hd : FlatHookDepth df
|
||||||
|
|
||||||
|
@ -44,13 +47,18 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
curl (xMiddle + [Math.max (hd.x - HalfStroke * HVContrast + 1) tailLength] + HalfStroke * TanSlope) HalfStroke
|
curl (xMiddle + [Math.max (hd.x - HalfStroke * HVContrast + 1) tailLength] + HalfStroke * TanSlope) HalfStroke
|
||||||
include : OverrideILMarks df xMiddle top
|
include : OverrideILMarks df xMiddle top
|
||||||
|
|
||||||
|
glyph-block-export ItalicDotlessIXMiddle
|
||||||
|
define [ItalicDotlessIShift df] : (1 - df.div) * 0.2
|
||||||
|
define [ItalicDotlessIXMiddle df] : begin
|
||||||
|
return : mix df.leftSB df.rightSB ([StrokeWidthBlend 0.42 0.46] - [ItalicDotlessIShift df])
|
||||||
|
|
||||||
glyph-block-export ItalicDotlessIShape
|
glyph-block-export ItalicDotlessIShape
|
||||||
define [ItalicDotlessIShape] : params [df top [addTopSerif false] [setMarks true]] : glyph-proc
|
define [ItalicDotlessIShape] : params [df top [addTopSerif false] [setMarks true]] : glyph-proc
|
||||||
local fine : AdviceStroke 3
|
local fine : AdviceStroke 3
|
||||||
local shift : (1 - df.div) * 0.2
|
local shift : ItalicDotlessIShift df
|
||||||
local xBarMiddle : mix SB df.rightSB ([StrokeWidthBlend 0.42 0.46] - shift)
|
local xBarMiddle : ItalicDotlessIXMiddle df
|
||||||
local left : xBarMiddle - HalfStroke * HVContrast
|
local left : xBarMiddle - HalfStroke * HVContrast
|
||||||
local right : mix SB df.rightSB (1.1 - shift)
|
local right : mix df.leftSB df.rightSB (1.1 - shift)
|
||||||
local rightTerm : Math.max right (left + HookX + Stroke)
|
local rightTerm : Math.max right (left + HookX + Stroke)
|
||||||
local middle : mix left right (0.55 * df.div)
|
local middle : mix left right (0.55 * df.div)
|
||||||
include : dispiro
|
include : dispiro
|
||||||
|
@ -68,7 +76,7 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
|
|
||||||
glyph-block-export TailedDotlessShape
|
glyph-block-export TailedDotlessShape
|
||||||
define [TailedDotlessShape] : params [df top [setMarks true] [addTopSerif false]] : glyph-proc
|
define [TailedDotlessShape] : params [df top [setMarks true] [addTopSerif false]] : glyph-proc
|
||||||
local xMiddle : df.middle - [if addTopSerif 0 : IBalance2 df]
|
local xMiddle : TailedDotlessXMiddle df addTopSerif
|
||||||
local tailLength : LongJut * 1.05 * [mix 1 df.div 0.75]
|
local tailLength : LongJut * 1.05 * [mix 1 df.div 0.75]
|
||||||
|
|
||||||
local hookScaleX : mix 1 df.div 0.5
|
local hookScaleX : mix 1 df.div 0.5
|
||||||
|
@ -256,12 +264,14 @@ glyph-block Letter-Latin-Lower-I : begin
|
||||||
include : DTailDotlessIShape df XH (addTopSerif -- true)
|
include : DTailDotlessIShape df XH (addTopSerif -- true)
|
||||||
|
|
||||||
select-variant 'dotlessi' 0x131
|
select-variant 'dotlessi' 0x131
|
||||||
|
select-variant 'dotlessi/compLigRight' (shapeFrom -- 'dotlessi')
|
||||||
create-glyph 'iogonek.dotless' : glyph-proc
|
create-glyph 'iogonek.dotless' : glyph-proc
|
||||||
include [refer-glyph 'dotlessi'] AS_BASE
|
include [refer-glyph 'dotlessi'] AS_BASE
|
||||||
include : refer-glyph "ogonekBelow"
|
include : refer-glyph "ogonekBelow"
|
||||||
|
|
||||||
CreateDottedComposition 'dotlessi' 'i' 'i'
|
CreateDottedComposition 'dotlessi' 'i' 'i'
|
||||||
CreateDottedComposition 'dotlessi' 'cyrl/Ukrainiani' 0x456
|
CreateDottedComposition 'dotlessi' 'cyrl/Ukrainiani' 0x456
|
||||||
|
CreateDottedComposition 'dotlessi/compLigRight' 'i/compLigRight' null
|
||||||
|
|
||||||
alias 'grek/iota.flatTailed' null 'dotlessi.flatTailed'
|
alias 'grek/iota.flatTailed' null 'dotlessi.flatTailed'
|
||||||
alias 'grek/iota.serifedFlatTailed' null 'dotlessi.serifedFlatTailed'
|
alias 'grek/iota.serifedFlatTailed' null 'dotlessi.serifedFlatTailed'
|
||||||
|
|
|
@ -13,131 +13,168 @@ glyph-block Letter-Latin-Lower-L : begin
|
||||||
glyph-block-import Letter-Latin-Lower-I : IotaShape TailedDotlessShape ItalicDotlessIShape
|
glyph-block-import Letter-Latin-Lower-I : IotaShape TailedDotlessShape ItalicDotlessIShape
|
||||||
glyph-block-import Letter-Latin-Lower-I : DTailDotlessIShape
|
glyph-block-import Letter-Latin-Lower-I : DTailDotlessIShape
|
||||||
glyph-block-import Letter-Latin-Lower-I : OverrideILMarks OverrideILMarksSerifed
|
glyph-block-import Letter-Latin-Lower-I : OverrideILMarks OverrideILMarksSerifed
|
||||||
|
glyph-block-import Letter-Latin-Lower-I : ItalicDotlessIXMiddle TailedDotlessXMiddle
|
||||||
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
||||||
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
||||||
|
|
||||||
create-glyph 'l.hooky' : glyph-proc
|
define [CenterXMiddle df] : return df.middle
|
||||||
local df : DivFrame para.diversityII
|
define [HookyXMiddle df] : df.middle + [IBalance2 df]
|
||||||
set-width df.width
|
define [HookyBottomXMiddle df] : df.middle - [IBalance2 df]
|
||||||
include : df.markSet.b
|
define [SerifedXMiddle df] : df.middle + [IBalance df]
|
||||||
local balance : IBalance2 df
|
define [TailedXMiddle df] : if para.isItalic
|
||||||
local xMiddle : df.middle + balance
|
ItalicDotlessIXMiddle df
|
||||||
|
TailedDotlessXMiddle df false
|
||||||
|
define [SerifedTailedXMiddle df] : if para.isItalic
|
||||||
|
ItalicDotlessIXMiddle df
|
||||||
|
TailedDotlessXMiddle df true
|
||||||
|
define [FlatTailedXMiddle df] : TailedDotlessXMiddle df false
|
||||||
|
define [SerifedFlatTailedXMiddle df] : TailedDotlessXMiddle df true
|
||||||
|
define [PhoneticLeftXMiddle df] : df.leftSB + Stroke * HVContrast
|
||||||
|
|
||||||
|
define [HookyBody df xMiddle] : glyph-proc
|
||||||
include : OverrideILMarks df df.middle CAP
|
include : OverrideILMarks df df.middle CAP
|
||||||
include : VBar xMiddle 0 (CAP - Stroke)
|
include : VBar xMiddle 0 (CAP - Stroke)
|
||||||
include : LeftwardTopSerif xMiddle CAP (LongJut * df.div)
|
include : tagged 'serifLT' : LeftwardTopSerif xMiddle CAP (LongJut * df.div)
|
||||||
|
|
||||||
create-glyph 'l.zshaped' : glyph-proc
|
define [ZShapedBody df xMiddle] : glyph-proc
|
||||||
local df : DivFrame para.diversityI
|
include : VBar xMiddle 0 (CAP - Stroke)
|
||||||
set-width df.width
|
include : tagged 'serifLT' : LeftwardTopSerif xMiddle CAP (LongJut * df.div)
|
||||||
include : df.markSet.b
|
include : tagged 'serifRB' : RightwardBottomSerif xMiddle 0 (LongJut * df.div)
|
||||||
include : VBar (df.middle) 0 (CAP - Stroke)
|
|
||||||
include : tagged 'serifLT' : LeftwardTopSerif (df.middle) CAP (LongJut * df.div)
|
|
||||||
include : tagged 'serifRB' : RightwardBottomSerif (df.middle) 0 (LongJut * df.div)
|
|
||||||
|
|
||||||
create-glyph 'l.serifless' : glyph-proc
|
define [SeriflessBody df xMiddle] : glyph-proc
|
||||||
local df : DivFrame para.diversityII
|
include : VBar xMiddle 0 CAP
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
include : VBar (df.middle) 0 (CAP * 0.6)
|
|
||||||
include : VBar (df.middle) (CAP * 0.4) CAP
|
|
||||||
set currentGlyph.autoRefPriority (-2)
|
set currentGlyph.autoRefPriority (-2)
|
||||||
|
|
||||||
create-glyph 'l.serifed' : glyph-proc
|
define [SerifedBody df xMiddle] : glyph-proc
|
||||||
local df : DivFrame para.diversityI
|
include : VBar xMiddle 0 CAP
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
local balance : IBalance df
|
|
||||||
include : OverrideILMarksSerifed df df.middle CAP
|
|
||||||
include : VBar (df.middle + balance) 0 CAP
|
|
||||||
include : tagged 'serifT'
|
include : tagged 'serifT'
|
||||||
LeftwardTopSerif (df.middle + balance) CAP ((LongJut * df.div) - balance)
|
LeftwardTopSerif xMiddle CAP ((LongJut * df.div) - (xMiddle - df.middle))
|
||||||
include : tagged 'serifB'
|
include : tagged 'serifB'
|
||||||
CenterBottomSerif df.middle 0 (LongJut * df.div)
|
CenterBottomSerif df.middle 0 (LongJut * df.div)
|
||||||
|
|
||||||
create-glyph 'l.serifedAsymmetric' : glyph-proc
|
define [SerifedAsymmetricBody df xMiddle] : glyph-proc
|
||||||
local df : DivFrame para.diversityI
|
include : VBar xMiddle 0 CAP
|
||||||
set-width df.width
|
include : LeftwardTopSerif xMiddle CAP
|
||||||
include : df.markSet.b
|
mix Jut ((LongJut * df.div) - (xMiddle - df.middle)) 0.5
|
||||||
local balance : IBalance df
|
|
||||||
include : OverrideILMarksSerifed df df.middle CAP
|
|
||||||
include : VBar (df.middle + balance) 0 CAP
|
|
||||||
include : LeftwardTopSerif (df.middle + balance) CAP
|
|
||||||
mix Jut ((LongJut * df.div) - balance) 0.5
|
|
||||||
include : CenterBottomSerif df.middle 0 (LongJut * df.div)
|
include : CenterBottomSerif df.middle 0 (LongJut * df.div)
|
||||||
set-base-anchor 'overlay' (df.middle + balance / 2) (CAP * OverlayPos)
|
|
||||||
set-base-anchor 'topright' (df.middle + RightSB - Middle) CAP
|
|
||||||
|
|
||||||
create-glyph 'l.tailed' : glyph-proc
|
define [TailedBody df xMiddle] : if para.isItalic
|
||||||
local df : DivFrame para.diversityII
|
ItalicDotlessIShape df CAP (addTopSerif -- false)
|
||||||
set-width df.width
|
TailedDotlessShape df CAP (addTopSerif -- false)
|
||||||
include : df.markSet.b
|
|
||||||
if para.isItalic
|
|
||||||
: then : begin
|
|
||||||
include : ItalicDotlessIShape df CAP (addTopSerif -- false)
|
|
||||||
: else : begin
|
|
||||||
include : TailedDotlessShape df CAP (addTopSerif -- false)
|
|
||||||
|
|
||||||
create-glyph 'l.serifedTailed' : glyph-proc
|
define [SerifedTailedBody df xMiddle] : if para.isItalic
|
||||||
local df : DivFrame para.diversityI
|
ItalicDotlessIShape df CAP (addTopSerif -- true)
|
||||||
set-width df.width
|
TailedDotlessShape df CAP (addTopSerif -- true)
|
||||||
include : df.markSet.b
|
|
||||||
if para.isItalic
|
|
||||||
: then : begin
|
|
||||||
include : ItalicDotlessIShape df CAP (addTopSerif -- true)
|
|
||||||
: else : begin
|
|
||||||
include : TailedDotlessShape df CAP (addTopSerif -- true)
|
|
||||||
|
|
||||||
create-glyph 'l.flatTailed' : glyph-proc
|
define [FlatTailedBody df xMiddle] : IotaShape df CAP (addTopSerif -- false)
|
||||||
local df : DivFrame para.diversityII
|
define [SerifedFlatTailedBody df xMiddle] : IotaShape df CAP (addTopSerif -- true)
|
||||||
set-width df.width
|
define [DiagTailedBody df xMiddle] : DTailDotlessIShape df CAP (addTopSerif -- false)
|
||||||
include : df.markSet.b
|
define [SerifedDiagTailedBody df xMiddle] : DTailDotlessIShape df CAP (addTopSerif -- true)
|
||||||
include : IotaShape df CAP (addTopSerif -- false)
|
|
||||||
|
|
||||||
create-glyph 'l.serifedFlatTailed' : glyph-proc
|
define [HookyBottomBody df xMiddle] : glyph-proc
|
||||||
local df : DivFrame para.diversityI
|
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
include : IotaShape df CAP (addTopSerif -- true)
|
|
||||||
|
|
||||||
create-glyph 'l.diagonalTailed' : glyph-proc
|
|
||||||
local df : DivFrame para.diversityII
|
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
include : DTailDotlessIShape df CAP (addTopSerif -- false)
|
|
||||||
|
|
||||||
create-glyph 'l.serifedDiagonalTailed' : glyph-proc
|
|
||||||
local df : DivFrame para.diversityI
|
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
include : DTailDotlessIShape df CAP (addTopSerif -- true)
|
|
||||||
|
|
||||||
create-glyph 'l.phoneticLeft' : glyph-proc
|
|
||||||
local df : DivFrame 1
|
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
define middle : SB + Stroke * HVContrast
|
|
||||||
include : dispiro
|
|
||||||
widths.center
|
|
||||||
flat middle CAP [heading Downward]
|
|
||||||
curl middle Hook
|
|
||||||
arcvh
|
|
||||||
flat (middle + Hook - HalfStroke) HalfStroke
|
|
||||||
curl [Math.max RightSB (middle + [Math.max HookX (LongJut * 1.05 * df.div)])] HalfStroke [heading Rightward]
|
|
||||||
set-base-anchor 'topright' (df.middle + RightSB - Middle) CAP
|
|
||||||
|
|
||||||
create-glyph 'l.hookyBottom' : glyph-proc
|
|
||||||
local df : DivFrame para.diversityII
|
|
||||||
set-width df.width
|
|
||||||
include : df.markSet.b
|
|
||||||
local xMiddle : df.middle - [IBalance2 df]
|
|
||||||
include : OverrideILMarks df xMiddle CAP
|
include : OverrideILMarks df xMiddle CAP
|
||||||
include : VBar xMiddle 0 CAP
|
include : VBar xMiddle 0 CAP
|
||||||
include : RightwardBottomSerif xMiddle 0 (LongJut * df.div)
|
include : RightwardBottomSerif xMiddle 0 (LongJut * df.div)
|
||||||
|
|
||||||
|
define [PhoneticLeftBody fSerif] : function [df xMiddle] : glyph-proc
|
||||||
|
if fSerif : include : LeftwardTopSerif (xMiddle - HalfStroke * HVContrast) CAP SideJut
|
||||||
|
include : dispiro
|
||||||
|
widths.center
|
||||||
|
flat xMiddle CAP [heading Downward]
|
||||||
|
curl xMiddle Hook
|
||||||
|
arcvh
|
||||||
|
flat (xMiddle + Hook - HalfStroke) HalfStroke
|
||||||
|
curl [Math.max df.rightSB (xMiddle + [Math.max HookX (LongJut * 1.05 * df.div)])] HalfStroke [heading Rightward]
|
||||||
|
|
||||||
|
define [Belt middle] : begin
|
||||||
|
local fine : AdviceStroke 4.5
|
||||||
|
local r : XH * 0.05
|
||||||
|
return : dispiro
|
||||||
|
widths.rhs fine
|
||||||
|
flat middle (CapMiddle + r) [heading Leftward]
|
||||||
|
curl (middle - HalfStroke - r * 1.5) (CapMiddle + r)
|
||||||
|
archv
|
||||||
|
g4.down.mid (middle - HalfStroke - r * 2.5) CapMiddle [heading Downward]
|
||||||
|
arcvh
|
||||||
|
flat (middle - HalfStroke - r * 1.5) (CapMiddle - r)
|
||||||
|
curl (middle + HalfStroke + r * 1.5 + fine) (CapMiddle - r)
|
||||||
|
|
||||||
|
define SmallLConfig : object
|
||||||
|
'hooky' { HookyBody HookyXMiddle para.diversityII 0 }
|
||||||
|
'zshaped' { ZShapedBody CenterXMiddle para.diversityI Stroke }
|
||||||
|
'serifless' { SeriflessBody CenterXMiddle para.diversityII 0 }
|
||||||
|
'serifed' { SerifedBody SerifedXMiddle para.diversityI Stroke }
|
||||||
|
'serifedAsymmetric' { SerifedAsymmetricBody SerifedXMiddle para.diversityI Stroke }
|
||||||
|
'tailed' { TailedBody TailedXMiddle para.diversityII Stroke }
|
||||||
|
'serifedTailed' { SerifedTailedBody SerifedTailedXMiddle para.diversityI Stroke }
|
||||||
|
'flatTailed' { FlatTailedBody FlatTailedXMiddle para.diversityII Stroke }
|
||||||
|
'serifedFlatTailed' { SerifedFlatTailedBody SerifedFlatTailedXMiddle para.diversityI Stroke }
|
||||||
|
'diagonalTailed' { DiagTailedBody FlatTailedXMiddle para.diversityII Stroke }
|
||||||
|
'serifedDiagonalTailed' { SerifedDiagTailedBody SerifedFlatTailedXMiddle para.diversityI Stroke }
|
||||||
|
'hookyBottom' { HookyBottomBody HookyBottomXMiddle para.diversityII Stroke }
|
||||||
|
# Decompressed
|
||||||
|
'hookyDec' { HookyBody HookyXMiddle para.diversityI 0 }
|
||||||
|
'seriflessDec' { SeriflessBody CenterXMiddle para.diversityI 0 }
|
||||||
|
'tailedDec' { TailedBody TailedXMiddle para.diversityI Stroke }
|
||||||
|
'flatTailedDec' { FlatTailedBody FlatTailedXMiddle para.diversityI Stroke }
|
||||||
|
'diagonalTailedDec' { DiagTailedBody FlatTailedXMiddle para.diversityI Stroke }
|
||||||
|
'hookyBottomDec' { HookyBottomBody HookyBottomXMiddle para.diversityI Stroke }
|
||||||
|
# R Tail
|
||||||
|
'hookyRTail' { HookyBody CenterXMiddle para.diversityII 0 }
|
||||||
|
'seriflessRTail' { SeriflessBody HookyBottomXMiddle para.diversityII 0 }
|
||||||
|
# R Tail + Decompress
|
||||||
|
'hookyRTailDec' { HookyBody CenterXMiddle para.diversityI 0 }
|
||||||
|
'seriflessRTailDec' { SeriflessBody HookyBottomXMiddle para.diversityI 0 }
|
||||||
|
#
|
||||||
|
'hookyPL' { [PhoneticLeftBody 1] PhoneticLeftXMiddle 1 0 }
|
||||||
|
'seriflessPL' { [PhoneticLeftBody 0] PhoneticLeftXMiddle 1 0 }
|
||||||
|
|
||||||
|
foreach { suffix { Body xMiddleT div y0R} } [Object.entries SmallLConfig] : do
|
||||||
|
create-glyph "l.\(suffix)" : glyph-proc
|
||||||
|
local df : DivFrame div
|
||||||
|
set-width df.width
|
||||||
|
include : df.markSet.b
|
||||||
|
local xMiddle : xMiddleT df
|
||||||
|
include : Body df xMiddle
|
||||||
|
|
||||||
|
create-glyph "ldot.\(suffix)" : glyph-proc
|
||||||
|
local df : DivFrame div
|
||||||
|
set-width df.width
|
||||||
|
include [refer-glyph "l.\(suffix)"] AS_BASE
|
||||||
|
include : Translate (-DotRadius / 2) 0
|
||||||
|
include : RingAt [Math.max (df.middle + HalfStroke + DotRadius) (df.rightSB - DotRadius)] [mix y0R CAP 0.5] DotRadius
|
||||||
|
|
||||||
|
create-glyph "lRTail.\(suffix)" : glyph-proc
|
||||||
|
local df : DivFrame div
|
||||||
|
set-width df.width
|
||||||
|
include : refer-glyph "rtailBR"
|
||||||
|
include : Translate ([xMiddleT df] + HalfStroke * HVContrast) 0
|
||||||
|
include : refer-glyph "l.\(suffix)"
|
||||||
|
eject-contour 'serifB'
|
||||||
|
include : df.markSet.if
|
||||||
|
|
||||||
|
create-glyph "lBelt.\(suffix)" : composite-proc
|
||||||
|
refer-glyph "l.\(suffix)"
|
||||||
|
Belt [xMiddleT : DivFrame div]
|
||||||
|
|
||||||
|
create-glyph "lBeltRTail.\(suffix)" : composite-proc
|
||||||
|
refer-glyph "lRTail.\(suffix)"
|
||||||
|
Belt [xMiddleT : DivFrame div]
|
||||||
|
|
||||||
|
create-glyph "lTildeOver.\(suffix)" : composite-proc
|
||||||
|
refer-glyph "l.\(suffix)"
|
||||||
|
refer-glyph "tildeOver"
|
||||||
|
|
||||||
select-variant 'l' 'l'
|
select-variant 'l' 'l'
|
||||||
alias 'cyrl/palochka' 0x4CF 'l'
|
alias 'cyrl/palochka' 0x4CF 'l'
|
||||||
|
|
||||||
turned 'turnl' 0xA781 'l' HalfAdvance (XH / 2) [TurnMarks 'p']
|
turned 'turnl' 0xA781 'l' HalfAdvance (XH / 2) [TurnMarks 'p']
|
||||||
|
select-variant 'l/phoneticLeft' (shapeFrom -- 'l')
|
||||||
|
select-variant 'l/compLigRight' (shapeFrom -- 'l')
|
||||||
|
select-variant 'ldot' 0x140 (follow -- 'l')
|
||||||
|
select-variant 'lTildeOver' 0x26B (follow -- 'l/reduced/decompress')
|
||||||
|
select-variant 'lBelt' 0x26C (follow -- 'l/reduced/decompress')
|
||||||
|
select-variant 'lRTail' 0x26D (follow -- 'l/reduced/rtail')
|
||||||
|
select-variant 'lBeltRTail' 0xA78E (follow -- 'l/reduced/rtailDec')
|
||||||
|
|
||||||
glyph-block-import Letter-Blackboard : BBS BBD BBBarCenter
|
glyph-block-import Letter-Blackboard : BBS BBD BBBarCenter
|
||||||
create-glyph 'mathbb/l' 0x1D55D : glyph-proc
|
create-glyph 'mathbb/l' 0x1D55D : glyph-proc
|
||||||
|
@ -154,97 +191,51 @@ glyph-block Letter-Latin-Lower-L : begin
|
||||||
local stretch : Math.sqrt (currentGlyph.advanceWidth / UPM * 2)
|
local stretch : Math.sqrt (currentGlyph.advanceWidth / UPM * 2)
|
||||||
include : FlatSlashShape anchor.x anchor.y (0.5 * OverlayStroke) (0.8 * stretch) (0.4 * stretch)
|
include : FlatSlashShape anchor.x anchor.y (0.5 * OverlayStroke) (0.8 * stretch) (0.4 * stretch)
|
||||||
|
|
||||||
local LDotOptions : list
|
|
||||||
list 'hooky' Stroke
|
|
||||||
list 'zshaped' Stroke
|
|
||||||
list 'serifed' Stroke
|
|
||||||
list 'serifedTailed' Stroke
|
|
||||||
list 'serifless' 0
|
|
||||||
list 'tailed' Stroke
|
|
||||||
list 'hookyBottom' Stroke
|
|
||||||
list 'serifedAsymmetric' Stroke
|
|
||||||
list 'flatTailed' Stroke
|
|
||||||
list 'serifedFlatTailed' Stroke
|
|
||||||
list 'diagonalTailed' Stroke
|
|
||||||
list 'serifedDiagonalTailed' Stroke
|
|
||||||
|
|
||||||
foreach {suffix y0} [items-of LDotOptions] : if [query-glyph ('l.' + suffix)]
|
# Curly-tail shape
|
||||||
create-glyph ('ldot.' + suffix) : glyph-proc
|
define [CurlyTailShape df fSerif] : glyph-proc
|
||||||
local df : DivFrame ([query-glyph ('l.' + suffix)].advanceWidth / Width)
|
|
||||||
set-width df.width
|
|
||||||
include [refer-glyph ('l.' + suffix)] AS_BASE
|
|
||||||
include : Translate (-DotRadius / 2) 0
|
|
||||||
include : RingAt [Math.max (df.middle + HalfStroke + DotRadius) (df.rightSB - DotRadius)] [mix y0 CAP 0.5] DotRadius
|
|
||||||
|
|
||||||
select-variant 'ldot' 0x140 (follow -- 'l')
|
|
||||||
|
|
||||||
create-glyph 'lrtail' 0x26D : glyph-proc
|
|
||||||
local df : DivFrame para.diversityI
|
|
||||||
set-width df.width
|
|
||||||
include : refer-glyph "rtailBR"
|
|
||||||
include : Translate (df.middle + [IBalance df] + HalfStroke * HVContrast) 0
|
|
||||||
include : refer-glyph "l.serifed"
|
|
||||||
eject-contour 'serifB'
|
|
||||||
include : df.markSet.if
|
|
||||||
|
|
||||||
create-glyph 'lcurlytail' 0x234 : glyph-proc
|
|
||||||
include : MarkSet.b
|
|
||||||
local fine : AdviceStroke 3.5
|
local fine : AdviceStroke 3.5
|
||||||
local rinner : LongJut / 2 - fine / 2
|
local rinner : LongJut / 2 - fine / 2
|
||||||
local m1 : Middle + HalfStroke * HVContrast
|
local m1 : df.middle + HalfStroke * HVContrast
|
||||||
local x2 : mix SB m1 0.25
|
local x2 : mix SB m1 0.25
|
||||||
local y2 : - fine
|
local y2 : - fine
|
||||||
include : LeftwardTopSerif Middle CAP LongJut
|
if fSerif : include : LeftwardTopSerif df.middle CAP LongJut
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.rhs
|
widths.rhs
|
||||||
flat m1 CAP [heading Downward]
|
flat m1 CAP [heading Downward]
|
||||||
curl m1 (fine + rinner * 2)
|
curl m1 (fine + rinner * 2)
|
||||||
CurlyTail fine rinner m1 0 (m1 + LongJut) x2 y2
|
CurlyTail fine rinner m1 0 (m1 + LongJut) x2 y2
|
||||||
|
|
||||||
create-glyph 'ltildeover' 0x26B : glyph-proc
|
create-glyph 'lCurlyTail.serifless' : glyph-proc
|
||||||
local df : DivFrame para.diversityI
|
local df : DivFrame para.diversityI
|
||||||
include [refer-glyph 'l.serifed'] AS_BASE ALSO_METRICS
|
set-width df.width
|
||||||
include : new-glyph : glyph-proc
|
include : df.markSet.b
|
||||||
include : refer-glyph "tildeAboveOverlay"
|
include : CurlyTailShape df false
|
||||||
include : ApparentTranslate (df.middle - markMiddle) (CAP * 0.525 - [mix aboveMarkBot aboveMarkTop 0.5])
|
|
||||||
|
|
||||||
define [Belt middle] : glyph-proc
|
create-glyph 'lCurlyTail.hooky' : glyph-proc
|
||||||
local fine : AdviceStroke 4.5
|
|
||||||
local r : XH * 0.05
|
|
||||||
include : dispiro
|
|
||||||
widths.rhs fine
|
|
||||||
flat middle (CapMiddle + r) [heading Leftward]
|
|
||||||
curl (middle - HalfStroke - r * 1.5) (CapMiddle + r)
|
|
||||||
archv
|
|
||||||
g4.down.mid (middle - HalfStroke - r * 2.5) CapMiddle [heading Downward]
|
|
||||||
arcvh
|
|
||||||
flat (middle - HalfStroke - r * 1.5) (CapMiddle - r)
|
|
||||||
curl (middle + HalfStroke + r * 1.5 + fine) (CapMiddle - r)
|
|
||||||
|
|
||||||
create-glyph 'lbelt' 0x26C : glyph-proc
|
|
||||||
local df : DivFrame para.diversityI
|
local df : DivFrame para.diversityI
|
||||||
include [refer-glyph 'l.serifed'] AS_BASE ALSO_METRICS
|
set-width df.width
|
||||||
include : Belt (df.middle + [IBalance df])
|
include : df.markSet.b
|
||||||
|
include : CurlyTailShape df true
|
||||||
|
|
||||||
create-glyph 'lbeltrtail' 0xA78E : glyph-proc
|
select-variant 'lCurlyTail' 0x234
|
||||||
local df : DivFrame para.diversityI
|
|
||||||
include [refer-glyph 'lrtail'] AS_BASE ALSO_METRICS
|
|
||||||
include : Belt (df.middle + [IBalance2 df])
|
|
||||||
|
|
||||||
create-glyph 'looprevesh' 0x1AA : glyph-proc
|
create-glyph 'looprevesh' 0x1AA : glyph-proc
|
||||||
include : MarkSet.if
|
local df : DivFrame para.diversityI
|
||||||
|
set-width df.width
|
||||||
|
include : df.markSet.if
|
||||||
local fine : AdviceStroke 4
|
local fine : AdviceStroke 4
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.center fine
|
widths.center fine
|
||||||
g4.down.start Middle (CAP - fine * 1.5) [heading Downward]
|
g4.down.start df.middle (CAP - fine * 1.5) [heading Downward]
|
||||||
arcvh
|
arcvh
|
||||||
g4 (Middle - fine * 1) (CAP - fine * 2.5) [heading Leftward]
|
g4 (df.middle - fine * 1) (CAP - fine * 2.5) [heading Leftward]
|
||||||
archv
|
archv
|
||||||
g4 (Middle - fine * 2) (CAP - fine * 1.5) [heading Upward]
|
g4 (df.middle - fine * 2) (CAP - fine * 1.5) [heading Upward]
|
||||||
arcvh
|
arcvh
|
||||||
g4 (Middle - fine * 1) (CAP - fine * 0.5) [heading Rightward]
|
g4 (df.middle - fine * 1) (CAP - fine * 0.5) [heading Rightward]
|
||||||
archv
|
archv
|
||||||
flat Middle (CAP - fine * 1.5) [widths.heading HalfStroke HalfStroke Downward]
|
flat df.middle (CAP - fine * 1.5) [widths.heading HalfStroke HalfStroke Downward]
|
||||||
curl Middle 0 [heading Downward]
|
curl df.middle 0 [heading Downward]
|
||||||
arcvh
|
arcvh
|
||||||
straight.right.end (Middle + HookX) (-Hook)
|
straight.right.end (df.middle + HookX) (-Hook)
|
||||||
|
|
|
@ -143,18 +143,24 @@ glyph-block Letter-Latin-S : begin
|
||||||
hookend (O + soEnd) (sw -- fine) (swItalicAdj -- Stroke) (noAdjTerminalY -- true)
|
hookend (O + soEnd) (sw -- fine) (swItalicAdj -- Stroke) (noAdjTerminalY -- true)
|
||||||
g4 (SB + SOBot + HVContrast * soEnd) (hook) [widths.rhs fine]
|
g4 (SB + SOBot + HVContrast * soEnd) (hook) [widths.rhs fine]
|
||||||
|
|
||||||
define [SmallSStrokePhoneticRight] : begin
|
define [SmallSStrokePhoneticRight st top] : begin
|
||||||
define stroke : AdviceStroke2 2 3 XH
|
define stroke : AdviceStroke2 2 3 top
|
||||||
define ess : AdviceStroke2 2.2 3.2 XH
|
define ess : AdviceStroke2 2.2 3.2 top
|
||||||
define strokeCoeff : StrokeWidthBlend 0 1 stroke
|
define strokeCoeff : StrokeWidthBlend 0 1 stroke
|
||||||
define smooth : adviceSSmooth XH (-1) stroke
|
define smooth : adviceSSmooth top (-1) stroke
|
||||||
return : dispiro
|
return : dispiro
|
||||||
widths.lhs stroke
|
match st
|
||||||
g4 (RightSB + OX) (XH - SHook)
|
[Just SLAB-CLASSICAL] : SerifedArcStart_RtlLhs RightSB Middle top stroke Hook
|
||||||
hookstart (XH - O) (sw -- stroke) (swItalicAdj -- Stroke)
|
[Just SLAB-INWARD] : list
|
||||||
g4 (SB - OX) (XH - smooth)
|
g4 RightSB (top - DToothlessRise) [widths.lhs stroke]
|
||||||
|
g4 (Middle - CorrectionOMidX * stroke) (top - O)
|
||||||
|
archv
|
||||||
|
__ : list
|
||||||
|
g4 RightSB (top - Hook) [widths.lhs stroke]
|
||||||
|
hookstart (top - O) (sw -- stroke) (swItalicAdj -- Stroke)
|
||||||
|
g4 SB (top - smooth)
|
||||||
SNeck (stroke -- ess)
|
SNeck (stroke -- ess)
|
||||||
g4 (RightSB + OX - SOBot) (smooth) [widths 0 stroke]
|
g4 (RightSB - SOBot) (smooth) [widths 0 stroke]
|
||||||
arcvh
|
arcvh
|
||||||
flat (Middle - CorrectionOMidS) 0 [widths 0 Stroke]
|
flat (Middle - CorrectionOMidS) 0 [widths 0 Stroke]
|
||||||
curl SB 0
|
curl SB 0
|
||||||
|
@ -248,6 +254,11 @@ glyph-block Letter-Latin-S : begin
|
||||||
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
||||||
include : SAutoSlabEnd doBS 0 [AdviceStroke2 2 3 XH] Hook
|
include : SAutoSlabEnd doBS 0 [AdviceStroke2 2 3 XH] Hook
|
||||||
|
|
||||||
|
create-glyph "s/phoneticRight.\(suffix)" : glyph-proc
|
||||||
|
include : MarkSet.e
|
||||||
|
include : SmallSStrokePhoneticRight doTS XH
|
||||||
|
include : SAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
|
||||||
|
|
||||||
create-glyph "revS.\(suffix)" : glyph-proc
|
create-glyph "revS.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
include : RevSStroke doTS doBS Stroke Ess
|
include : RevSStroke doTS doBS Stroke Ess
|
||||||
|
@ -354,9 +365,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
select-variant 'cyrl/gheDescender.italic' null (follow -- 'sSwash')
|
select-variant 'cyrl/gheDescender.italic' null (follow -- 'sSwash')
|
||||||
select-variant 'cyrl/gheDHook.italic' null (follow -- 'sSwash')
|
select-variant 'cyrl/gheDHook.italic' null (follow -- 'sSwash')
|
||||||
|
|
||||||
create-glyph 's.phoneticRight' : glyph-proc
|
select-variant 's/phoneticRight'
|
||||||
include : MarkSet.e
|
|
||||||
include : SmallSStrokePhoneticRight
|
|
||||||
|
|
||||||
create-glyph 'mathbb/S' 0x1D54A : glyph-proc
|
create-glyph 'mathbb/S' 0x1D54A : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
|
|
|
@ -59,7 +59,7 @@ glyph-block Letter-Latin-Z : begin
|
||||||
include : XStrand false SLAB SB 0 RightSB XH 0.125 0.4 0.36
|
include : XStrand false SLAB SB 0 RightSB XH 0.125 0.4 0.36
|
||||||
include : tagged 'strokeBottom' : HBarBottom (SB + Stroke * HVContrast) RightSB 0
|
include : tagged 'strokeBottom' : HBarBottom (SB + Stroke * HVContrast) RightSB 0
|
||||||
|
|
||||||
define [ZCursiveShapeImpl top] : glyph-proc
|
define [ZCursiveShapeImpl top fRTB] : glyph-proc
|
||||||
define hookTerminalWidth : AdviceStroke 3.5
|
define hookTerminalWidth : AdviceStroke 3.5
|
||||||
define xDiagWidth : 1 * Stroke
|
define xDiagWidth : 1 * Stroke
|
||||||
define yFootHeight : Math.max (0.15 * top) (Stroke * 0.625)
|
define yFootHeight : Math.max (0.15 * top) (Stroke * 0.625)
|
||||||
|
@ -97,7 +97,7 @@ glyph-block Letter-Latin-Z : begin
|
||||||
corner (SB + xDiagWidth) yFootHeight
|
corner (SB + xDiagWidth) yFootHeight
|
||||||
corner (SB + xDiagWidth) 0
|
corner (SB + xDiagWidth) 0
|
||||||
|
|
||||||
include : tagged 'strokeBottom' : intersection
|
if [not fRTB] : include : tagged 'strokeBottom' : intersection
|
||||||
spiro-outline
|
spiro-outline
|
||||||
corner (SB + xDiagWidth) yFootHeight
|
corner (SB + xDiagWidth) yFootHeight
|
||||||
corner (SB + xDiagWidth) (-top)
|
corner (SB + xDiagWidth) (-top)
|
||||||
|
@ -113,8 +113,25 @@ glyph-block Letter-Latin-Z : begin
|
||||||
flat [mix (RightSB - xHookDepth) SB kBot] (kBot * yTailDepth)
|
flat [mix (RightSB - xHookDepth) SB kBot] (kBot * yTailDepth)
|
||||||
curl SB (yTailDepth)
|
curl SB (yTailDepth)
|
||||||
|
|
||||||
|
if fRTB : include : tagged 'strokeBottom' : intersection
|
||||||
|
spiro-outline
|
||||||
|
corner (SB + xDiagWidth) yFootHeight
|
||||||
|
corner (SB + xDiagWidth) (-top)
|
||||||
|
corner (2 * Width) (-top)
|
||||||
|
corner (2 * Width) (top)
|
||||||
|
corner RightSB top
|
||||||
|
|
||||||
|
union
|
||||||
|
VBarRight RightSB 0 yHookDepth hookTerminalWidth
|
||||||
|
dispiro
|
||||||
|
flat RightSB O [widths.rhs.heading Stroke Leftward]
|
||||||
|
g2 (RightSB - xHookDepth) O [widths.rhs.heading Stroke Leftward]
|
||||||
|
flat [mix (RightSB - xHookDepth) SB kBot] (kBot * yTailDepth)
|
||||||
|
curl SB (yTailDepth)
|
||||||
|
|
||||||
define [ZCursiveShape] : ZCursiveShapeImpl CAP
|
define [ZCursiveShape] : ZCursiveShapeImpl CAP
|
||||||
define [SmallZCursiveShape] : ZCursiveShapeImpl XH
|
define [SmallZCursiveShape] : ZCursiveShapeImpl XH
|
||||||
|
define [SmallZCursiveRTB] : ZCursiveShapeImpl XH 1
|
||||||
|
|
||||||
define [NoBottomStrokeMask top] : glyph-proc
|
define [NoBottomStrokeMask top] : glyph-proc
|
||||||
define [CurlyBottomStrokeMask top] : spiro-outline
|
define [CurlyBottomStrokeMask top] : spiro-outline
|
||||||
|
@ -158,6 +175,7 @@ glyph-block Letter-Latin-Z : begin
|
||||||
cursive { ZCursiveShape SmallZCursiveShape ZSerifless null NoBottomStrokeMask }
|
cursive { ZCursiveShape SmallZCursiveShape ZSerifless null NoBottomStrokeMask }
|
||||||
cursiveWithCrossBar { ZCursiveShape SmallZCursiveShape ZSerifless DBarOver NoBottomStrokeMask }
|
cursiveWithCrossBar { ZCursiveShape SmallZCursiveShape ZSerifless DBarOver NoBottomStrokeMask }
|
||||||
cursiveWithHorizontalCrossBar { ZCursiveShape SmallZCursiveShape ZSerifless HBarOver NoBottomStrokeMask }
|
cursiveWithHorizontalCrossBar { ZCursiveShape SmallZCursiveShape ZSerifless HBarOver NoBottomStrokeMask }
|
||||||
|
cursiveRTBase { ZCursiveShape SmallZCursiveRTB ZSerifless null NoBottomStrokeMask }
|
||||||
|
|
||||||
foreach { suffix { capital small serifs slash bsMask } } [Object.entries ZConfig] : do
|
foreach { suffix { capital small serifs slash bsMask } } [Object.entries ZConfig] : do
|
||||||
create-glyph "Z.\(suffix)" : glyph-proc
|
create-glyph "Z.\(suffix)" : glyph-proc
|
||||||
|
@ -213,6 +231,7 @@ glyph-block Letter-Latin-Z : begin
|
||||||
select-variant 'smcpZ' 0x1D22 (shapeFrom -- 'z') (follow -- 'Z')
|
select-variant 'smcpZ' 0x1D22 (shapeFrom -- 'z') (follow -- 'Z')
|
||||||
select-variant 'ZReduced' (shapeFrom -- 'Z')
|
select-variant 'ZReduced' (shapeFrom -- 'Z')
|
||||||
select-variant 'zReduced' (shapeFrom -- 'z')
|
select-variant 'zReduced' (shapeFrom -- 'z')
|
||||||
|
select-variant 'zReduced/rtailBase' (shapeFrom -- 'z')
|
||||||
if [query-glyph 'Z'] : ZReduced.set [query-glyph 'Z'] 'ZReduced'
|
if [query-glyph 'Z'] : ZReduced.set [query-glyph 'Z'] 'ZReduced'
|
||||||
if [query-glyph 'z'] : ZReduced.set [query-glyph 'z'] 'zReduced'
|
if [query-glyph 'z'] : ZReduced.set [query-glyph 'z'] 'zReduced'
|
||||||
select-variant 'ZDesc' 0x2C6B
|
select-variant 'ZDesc' 0x2C6B
|
||||||
|
@ -296,4 +315,4 @@ glyph-block Letter-Latin-Z : begin
|
||||||
CreateAccentedComposition 'zBar' 0x1B6 'zReduced' 'barOver'
|
CreateAccentedComposition 'zBar' 0x1B6 'zReduced' 'barOver'
|
||||||
CreateAccentedComposition 'ZCaron' 0x17D 'ZReduced' 'caronAbove'
|
CreateAccentedComposition 'ZCaron' 0x17D 'ZReduced' 'caronAbove'
|
||||||
CreateAccentedComposition 'zCaron' 0x17E 'zReduced' 'caronAbove'
|
CreateAccentedComposition 'zCaron' 0x17E 'zReduced' 'caronAbove'
|
||||||
CreateAccentedComposition 'zRTailBR' 0x290 'zReduced' 'rtailBR'
|
CreateAccentedComposition 'zRTailBR' 0x290 'zReduced/rtailBase' 'rtailBR'
|
||||||
|
|
|
@ -333,7 +333,7 @@ glyph-block Letter-Shared-Shapes : begin
|
||||||
|
|
||||||
glyph-block-export DiagonalTailStdDepth
|
glyph-block-export DiagonalTailStdDepth
|
||||||
define [DiagonalTailStdDepth df sw] : Math.max (0.5 * sw)
|
define [DiagonalTailStdDepth df sw] : Math.max (0.5 * sw)
|
||||||
df.div * [Math.hypot HookX Hook] - 0.25 * sw
|
df.div * para.unitWidthScalar * [Math.hypot HookX Hook] - 0.25 * sw
|
||||||
|
|
||||||
glyph-block-export DiagonalTailInnerRadius
|
glyph-block-export DiagonalTailInnerRadius
|
||||||
define [DiagonalTailInnerRadius] : Math.max (XH / 32) (0.5 * [AdviceStroke2 24 32 XH])
|
define [DiagonalTailInnerRadius] : Math.max (XH / 32) (0.5 * [AdviceStroke2 24 32 XH])
|
||||||
|
|
|
@ -43,6 +43,7 @@ isItalic = false # Use italic shapes?
|
||||||
isOblique = false # Use oblique shapes?
|
isOblique = false # Use oblique shapes?
|
||||||
|
|
||||||
spacing = 1 # Spacing indicator
|
spacing = 1 # Spacing indicator
|
||||||
|
unitWidthScalar = 1 # Scalar of unit width, used in derived builds
|
||||||
|
|
||||||
# Powerline-specific parameters
|
# Powerline-specific parameters
|
||||||
powerlineScaleY = 1 # Vertical scale
|
powerlineScaleY = 1 # Vertical scale
|
||||||
|
|
|
@ -1571,54 +1571,63 @@ tag = "cv29"
|
||||||
rank = 1
|
rank = 1
|
||||||
description = "`d` with bottom-right tooth, and without serifs"
|
description = "`d` with bottom-right tooth, and without serifs"
|
||||||
selector.d = "toothedSerifless"
|
selector.d = "toothedSerifless"
|
||||||
|
selector."d/phoneticLeft" = "toothedSerifless"
|
||||||
selector.dhooktop = "toothedSerifless"
|
selector.dhooktop = "toothedSerifless"
|
||||||
|
|
||||||
[prime.d.variants.toothless-corner-serifless]
|
[prime.d.variants.toothless-corner-serifless]
|
||||||
rank = 2
|
rank = 2
|
||||||
description = "`d` without bottom-right tooth, with a corner transition, and without serif"
|
description = "`d` without bottom-right tooth, with a corner transition, and without serif"
|
||||||
selector.d = "toothlessCornerSerifless"
|
selector.d = "toothlessCornerSerifless"
|
||||||
|
selector."d/phoneticLeft" = "toothedSerifless"
|
||||||
selector.dhooktop = "toothlessCornerSerifless"
|
selector.dhooktop = "toothlessCornerSerifless"
|
||||||
|
|
||||||
[prime.d.variants.toothless-rounded-serifless]
|
[prime.d.variants.toothless-rounded-serifless]
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "`d` without bottom-right tooth, with a rounded transition, and without serif"
|
description = "`d` without bottom-right tooth, with a rounded transition, and without serif"
|
||||||
selector.d = "toothlessRoundedSerifless"
|
selector.d = "toothlessRoundedSerifless"
|
||||||
|
selector."d/phoneticLeft" = "toothedSerifless"
|
||||||
selector.dhooktop = "toothlessRoundedSerifless"
|
selector.dhooktop = "toothlessRoundedSerifless"
|
||||||
|
|
||||||
[prime.d.variants.tailed-serifless]
|
[prime.d.variants.tailed-serifless]
|
||||||
rank = 4
|
rank = 4
|
||||||
description = "`d` with a bottom-right tail, and without serif"
|
description = "`d` with a bottom-right tail, and without serif"
|
||||||
selector.d = "tailedSerifless"
|
selector.d = "tailedSerifless"
|
||||||
|
selector."d/phoneticLeft" = "toothedSerifless"
|
||||||
selector.dhooktop = "tailedSerifless"
|
selector.dhooktop = "tailedSerifless"
|
||||||
|
|
||||||
[prime.d.variants.toothed-top-serifed]
|
[prime.d.variants.toothed-top-serifed]
|
||||||
rank = 5
|
rank = 5
|
||||||
description = "`d` with bottom-right tooth and top serif"
|
description = "`d` with bottom-right tooth and top serif"
|
||||||
selector.d = "toothedTopSerifed"
|
selector.d = "toothedTopSerifed"
|
||||||
|
selector."d/phoneticLeft" = "toothedTopSerifed"
|
||||||
selector.dhooktop = "toothedSerifless"
|
selector.dhooktop = "toothedSerifless"
|
||||||
|
|
||||||
[prime.d.variants.toothed-serifed]
|
[prime.d.variants.toothed-serifed]
|
||||||
rank = 6
|
rank = 6
|
||||||
description = "`d` with serifs"
|
description = "`d` with serifs"
|
||||||
selector.d = "toothedSerifed"
|
selector.d = "toothedSerifed"
|
||||||
|
selector."d/phoneticLeft" = "toothedTopSerifed"
|
||||||
selector.dhooktop = "toothedBottomSerifed"
|
selector.dhooktop = "toothedBottomSerifed"
|
||||||
|
|
||||||
[prime.d.variants.toothless-corner-serifed]
|
[prime.d.variants.toothless-corner-serifed]
|
||||||
rank = 7
|
rank = 7
|
||||||
description = "`d` without bottom-right tooth, with a corner transition and top serif"
|
description = "`d` without bottom-right tooth, with a corner transition and top serif"
|
||||||
selector.d = "toothlessCornerSerifed"
|
selector.d = "toothlessCornerSerifed"
|
||||||
|
selector."d/phoneticLeft" = "toothedTopSerifed"
|
||||||
selector.dhooktop = "toothlessCornerSerifless"
|
selector.dhooktop = "toothlessCornerSerifless"
|
||||||
|
|
||||||
[prime.d.variants.toothless-rounded-serifed]
|
[prime.d.variants.toothless-rounded-serifed]
|
||||||
rank = 8
|
rank = 8
|
||||||
description = "`d` without bottom-right tooth, with a rounded transition and top serif"
|
description = "`d` without bottom-right tooth, with a rounded transition and top serif"
|
||||||
selector.d = "toothlessRoundedSerifed"
|
selector.d = "toothlessRoundedSerifed"
|
||||||
|
selector."d/phoneticLeft" = "toothedTopSerifed"
|
||||||
selector.dhooktop = "toothlessRoundedSerifless"
|
selector.dhooktop = "toothlessRoundedSerifless"
|
||||||
|
|
||||||
[prime.d.variants.tailed-serifed]
|
[prime.d.variants.tailed-serifed]
|
||||||
rank = 9
|
rank = 9
|
||||||
description = "`d` with a bottom-right tail and top serif"
|
description = "`d` with a bottom-right tail and top serif"
|
||||||
selector.d = "tailedSerifed"
|
selector.d = "tailedSerifed"
|
||||||
|
selector."d/phoneticLeft" = "toothedTopSerifed"
|
||||||
selector.dhooktop = "tailedSerifless"
|
selector.dhooktop = "tailedSerifless"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1653,6 +1662,8 @@ tag = "cv31"
|
||||||
rank = 1
|
rank = 1
|
||||||
description = "`f` without bottom serif, hook or exension"
|
description = "`f` without bottom serif, hook or exension"
|
||||||
selector.f = "serifless"
|
selector.f = "serifless"
|
||||||
|
selector."f/compLigLeft1" = "flatHookCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookCLC2"
|
||||||
selector.lenisf = "serifless"
|
selector.lenisf = "serifless"
|
||||||
selector.fltail = "tailed"
|
selector.fltail = "tailed"
|
||||||
|
|
||||||
|
@ -1660,6 +1671,8 @@ selector.fltail = "tailed"
|
||||||
rank = 2
|
rank = 2
|
||||||
description = "`f` with bottom serif"
|
description = "`f` with bottom serif"
|
||||||
selector.f = "serifed"
|
selector.f = "serifed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookSerifedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookSerifedCLC2"
|
||||||
selector.lenisf = "serifless"
|
selector.lenisf = "serifless"
|
||||||
selector.fltail = "tailed"
|
selector.fltail = "tailed"
|
||||||
|
|
||||||
|
@ -1667,6 +1680,8 @@ selector.fltail = "tailed"
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "`f` with bottom hook"
|
description = "`f` with bottom hook"
|
||||||
selector.f = "tailed"
|
selector.f = "tailed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookTailedCLC2"
|
||||||
selector.lenisf = "serifless"
|
selector.lenisf = "serifless"
|
||||||
selector.fltail = "tailed"
|
selector.fltail = "tailed"
|
||||||
|
|
||||||
|
@ -1674,6 +1689,8 @@ selector.fltail = "tailed"
|
||||||
rank = 4
|
rank = 4
|
||||||
description = "`f` with bar extended to descender"
|
description = "`f` with bar extended to descender"
|
||||||
selector.f = "extended"
|
selector.f = "extended"
|
||||||
|
selector."f/compLigLeft1" = "flatHookExtendedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookExtendedCLC2"
|
||||||
selector.lenisf = "serifless"
|
selector.lenisf = "serifless"
|
||||||
selector.fltail = "tailed"
|
selector.fltail = "tailed"
|
||||||
|
|
||||||
|
@ -1681,6 +1698,8 @@ selector.fltail = "tailed"
|
||||||
rank = 5
|
rank = 5
|
||||||
description = "`f` with bottom diagonal tail"
|
description = "`f` with bottom diagonal tail"
|
||||||
selector.f = "diagonalTailed"
|
selector.f = "diagonalTailed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookDiagonalTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookDiagonalTailedCLC2"
|
||||||
selector.lenisf = "serifless"
|
selector.lenisf = "serifless"
|
||||||
selector.fltail = "tailed"
|
selector.fltail = "tailed"
|
||||||
|
|
||||||
|
@ -1688,6 +1707,8 @@ selector.fltail = "tailed"
|
||||||
rank = 6
|
rank = 6
|
||||||
description = "`f` without bottom serif, hook or exension; crossbar is placed right at X-height"
|
description = "`f` without bottom serif, hook or exension; crossbar is placed right at X-height"
|
||||||
selector.f = "seriflessCrossbarAtXHeight"
|
selector.f = "seriflessCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookCLC2"
|
||||||
selector.lenisf = "seriflessCrossbarAtXHeight"
|
selector.lenisf = "seriflessCrossbarAtXHeight"
|
||||||
selector.fltail = "tailedCrossbarAtXHeight"
|
selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1695,6 +1716,8 @@ selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
rank = 7
|
rank = 7
|
||||||
description = "`f` with bottom serif; crossbar is placed right at X-height"
|
description = "`f` with bottom serif; crossbar is placed right at X-height"
|
||||||
selector.f = "serifedCrossbarAtXHeight"
|
selector.f = "serifedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookSerifedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookSerifedCLC2"
|
||||||
selector.lenisf = "seriflessCrossbarAtXHeight"
|
selector.lenisf = "seriflessCrossbarAtXHeight"
|
||||||
selector.fltail = "tailedCrossbarAtXHeight"
|
selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1702,6 +1725,8 @@ selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
rank = 8
|
rank = 8
|
||||||
description = "`f` with bottom hook; crossbar is placed right at X-height"
|
description = "`f` with bottom hook; crossbar is placed right at X-height"
|
||||||
selector.f = "tailedCrossbarAtXHeight"
|
selector.f = "tailedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookTailedCLC2"
|
||||||
selector.lenisf = "seriflessCrossbarAtXHeight"
|
selector.lenisf = "seriflessCrossbarAtXHeight"
|
||||||
selector.fltail = "tailedCrossbarAtXHeight"
|
selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1709,6 +1734,8 @@ selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
rank = 9
|
rank = 9
|
||||||
description = "`f` with bar extended to descender; crossbar is placed right at X-height"
|
description = "`f` with bar extended to descender; crossbar is placed right at X-height"
|
||||||
selector.f = "extendedCrossbarAtXHeight"
|
selector.f = "extendedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookExtendedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookExtendedCLC2"
|
||||||
selector.lenisf = "seriflessCrossbarAtXHeight"
|
selector.lenisf = "seriflessCrossbarAtXHeight"
|
||||||
selector.fltail = "tailedCrossbarAtXHeight"
|
selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1716,6 +1743,8 @@ selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
rank = 10
|
rank = 10
|
||||||
description = "`f` with bottom diagonal tail; crossbar is placed right at X-height"
|
description = "`f` with bottom diagonal tail; crossbar is placed right at X-height"
|
||||||
selector.f = "diagonalTailedCrossbarAtXHeight"
|
selector.f = "diagonalTailedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookDiagonalTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookDiagonalTailedCLC2"
|
||||||
selector.lenisf = "seriflessCrossbarAtXHeight"
|
selector.lenisf = "seriflessCrossbarAtXHeight"
|
||||||
selector.fltail = "tailedCrossbarAtXHeight"
|
selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1723,6 +1752,8 @@ selector.fltail = "tailedCrossbarAtXHeight"
|
||||||
rank = 11
|
rank = 11
|
||||||
description = "`f` with flat top hook, without bottom serif, hook or exension"
|
description = "`f` with flat top hook, without bottom serif, hook or exension"
|
||||||
selector.f = "flatHook"
|
selector.f = "flatHook"
|
||||||
|
selector."f/compLigLeft1" = "flatHookCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookCLC2"
|
||||||
selector.lenisf = "flatHook"
|
selector.lenisf = "flatHook"
|
||||||
selector.fltail = "flatHookTailed"
|
selector.fltail = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -1730,6 +1761,8 @@ selector.fltail = "flatHookTailed"
|
||||||
rank = 12
|
rank = 12
|
||||||
description = "`f` with flat top hook and bottom serif"
|
description = "`f` with flat top hook and bottom serif"
|
||||||
selector.f = "flatHookSerifed"
|
selector.f = "flatHookSerifed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookSerifedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookSerifedCLC2"
|
||||||
selector.lenisf = "flatHook"
|
selector.lenisf = "flatHook"
|
||||||
selector.fltail = "flatHookTailed"
|
selector.fltail = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -1737,6 +1770,8 @@ selector.fltail = "flatHookTailed"
|
||||||
rank = 13
|
rank = 13
|
||||||
description = "`f` with flat top hook and bottom hook"
|
description = "`f` with flat top hook and bottom hook"
|
||||||
selector.f = "flatHookTailed"
|
selector.f = "flatHookTailed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookTailedCLC2"
|
||||||
selector.lenisf = "flatHook"
|
selector.lenisf = "flatHook"
|
||||||
selector.fltail = "flatHookTailed"
|
selector.fltail = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -1744,6 +1779,8 @@ selector.fltail = "flatHookTailed"
|
||||||
rank = 14
|
rank = 14
|
||||||
description = "`f` with flat top hook and bar extended to descender"
|
description = "`f` with flat top hook and bar extended to descender"
|
||||||
selector.f = "flatHookExtended"
|
selector.f = "flatHookExtended"
|
||||||
|
selector."f/compLigLeft1" = "flatHookExtendedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookExtendedCLC2"
|
||||||
selector.lenisf = "flatHook"
|
selector.lenisf = "flatHook"
|
||||||
selector.fltail = "flatHookTailed"
|
selector.fltail = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -1751,6 +1788,8 @@ selector.fltail = "flatHookTailed"
|
||||||
rank = 15
|
rank = 15
|
||||||
description = "`f` with falt hook and bottom diagonal tail"
|
description = "`f` with falt hook and bottom diagonal tail"
|
||||||
selector.f = "flatHookDiagonalTailed"
|
selector.f = "flatHookDiagonalTailed"
|
||||||
|
selector."f/compLigLeft1" = "flatHookDiagonalTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookDiagonalTailedCLC2"
|
||||||
selector.lenisf = "flatHook"
|
selector.lenisf = "flatHook"
|
||||||
selector.fltail = "flatHookTailed"
|
selector.fltail = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -1758,6 +1797,8 @@ selector.fltail = "flatHookTailed"
|
||||||
rank = 16
|
rank = 16
|
||||||
description = "`f` with flat top hook, without bottom serif, hook or exension; crossbar is placed right at X-height"
|
description = "`f` with flat top hook, without bottom serif, hook or exension; crossbar is placed right at X-height"
|
||||||
selector.f = "flatHookCrossbarAtXHeight"
|
selector.f = "flatHookCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookCLC2"
|
||||||
selector.lenisf = "flatHookCrossbarAtXHeight"
|
selector.lenisf = "flatHookCrossbarAtXHeight"
|
||||||
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1765,6 +1806,8 @@ selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
rank = 17
|
rank = 17
|
||||||
description = "`f` with flat top hook, bottom serif; crossbar is placed right at X-height"
|
description = "`f` with flat top hook, bottom serif; crossbar is placed right at X-height"
|
||||||
selector.f = "flatHookSerifedCrossbarAtXHeight"
|
selector.f = "flatHookSerifedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookSerifedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookSerifedCLC2"
|
||||||
selector.lenisf = "flatHookCrossbarAtXHeight"
|
selector.lenisf = "flatHookCrossbarAtXHeight"
|
||||||
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1772,6 +1815,8 @@ selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
rank = 18
|
rank = 18
|
||||||
description = "`f` with flat top hook, bottom hook; crossbar is placed right at X-height"
|
description = "`f` with flat top hook, bottom hook; crossbar is placed right at X-height"
|
||||||
selector.f = "flatHookTailedCrossbarAtXHeight"
|
selector.f = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookTailedCLC2"
|
||||||
selector.lenisf = "flatHookCrossbarAtXHeight"
|
selector.lenisf = "flatHookCrossbarAtXHeight"
|
||||||
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1779,6 +1824,8 @@ selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
rank = 19
|
rank = 19
|
||||||
description = "`f` with flat top hook, bar extended to descender; crossbar is placed right at X-height"
|
description = "`f` with flat top hook, bar extended to descender; crossbar is placed right at X-height"
|
||||||
selector.f = "flatHookExtendedCrossbarAtXHeight"
|
selector.f = "flatHookExtendedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookExtendedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookExtendedCLC2"
|
||||||
selector.lenisf = "flatHookCrossbarAtXHeight"
|
selector.lenisf = "flatHookCrossbarAtXHeight"
|
||||||
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1786,6 +1833,8 @@ selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
rank = 20
|
rank = 20
|
||||||
description = "`f` with falt hook and bottom diagonal tail; crossbar is placed right at X-height"
|
description = "`f` with falt hook and bottom diagonal tail; crossbar is placed right at X-height"
|
||||||
selector.f = "flatHookDiagonalTailedCrossbarAtXHeight"
|
selector.f = "flatHookDiagonalTailedCrossbarAtXHeight"
|
||||||
|
selector."f/compLigLeft1" = "flatHookDiagonalTailedCLC1"
|
||||||
|
selector."f/compLigLeft2" = "flatHookDiagonalTailedCLC2"
|
||||||
selector.lenisf = "flatHookCrossbarAtXHeight"
|
selector.lenisf = "flatHookCrossbarAtXHeight"
|
||||||
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
selector.fltail = "flatHookTailedCrossbarAtXHeight"
|
||||||
|
|
||||||
|
@ -1901,61 +1950,73 @@ tag = "cv34"
|
||||||
rank = 1
|
rank = 1
|
||||||
description = "Serifed `i`"
|
description = "Serifed `i`"
|
||||||
selector.dotlessi = "serifed"
|
selector.dotlessi = "serifed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifed"
|
||||||
|
|
||||||
[prime.i.variants.zshaped]
|
[prime.i.variants.zshaped]
|
||||||
rank = 2
|
rank = 2
|
||||||
description = "Z-shaped `i`"
|
description = "Z-shaped `i`"
|
||||||
selector.dotlessi = "zshaped"
|
selector.dotlessi = "zshaped"
|
||||||
|
selector."dotlessi/compLigRight" = "zshaped"
|
||||||
|
|
||||||
[prime.i.variants.serifless]
|
[prime.i.variants.serifless]
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "`i` like a straight line"
|
description = "`i` like a straight line"
|
||||||
selector.dotlessi = "serifless"
|
selector.dotlessi = "serifless"
|
||||||
|
selector."dotlessi/compLigRight" = "hooky"
|
||||||
|
|
||||||
[prime.i.variants.hooky]
|
[prime.i.variants.hooky]
|
||||||
rank = 4
|
rank = 4
|
||||||
description = "Hooky `i`"
|
description = "Hooky `i`"
|
||||||
selector.dotlessi = "hooky"
|
selector.dotlessi = "hooky"
|
||||||
|
selector."dotlessi/compLigRight" = "hooky"
|
||||||
|
|
||||||
[prime.i.variants.hooky-bottom]
|
[prime.i.variants.hooky-bottom]
|
||||||
rank = 5
|
rank = 5
|
||||||
description = "`i` with a sharp-turning horizontal tail"
|
description = "`i` with a sharp-turning horizontal tail"
|
||||||
selector.dotlessi = "hookyBottom"
|
selector.dotlessi = "hookyBottom"
|
||||||
|
selector."dotlessi/compLigRight" = "zshaped"
|
||||||
|
|
||||||
[prime.i.variants.serifed-asymmetric]
|
[prime.i.variants.serifed-asymmetric]
|
||||||
rank = 6
|
rank = 6
|
||||||
description = "`i` with shorter top serif and full bottom serif"
|
description = "`i` with shorter top serif and full bottom serif"
|
||||||
selector.dotlessi = "serifedAsymmetric"
|
selector.dotlessi = "serifedAsymmetric"
|
||||||
|
selector."dotlessi/compLigRight" = "serifed"
|
||||||
|
|
||||||
[prime.i.variants.tailed]
|
[prime.i.variants.tailed]
|
||||||
rank = 7
|
rank = 7
|
||||||
description = "`i` with curly tail"
|
description = "`i` with curly tail"
|
||||||
selector.dotlessi = "tailed"
|
selector.dotlessi = "tailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedTailed"
|
||||||
|
|
||||||
[prime.i.variants.serifed-tailed]
|
[prime.i.variants.serifed-tailed]
|
||||||
rank = 8
|
rank = 8
|
||||||
description = "`i` with top serif and curly tail"
|
description = "`i` with top serif and curly tail"
|
||||||
selector.dotlessi = "serifedTailed"
|
selector.dotlessi = "serifedTailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedTailed"
|
||||||
|
|
||||||
[prime.i.variants.flat-tailed]
|
[prime.i.variants.flat-tailed]
|
||||||
rank = 9
|
rank = 9
|
||||||
description = "`i` with curly-then-flat tail"
|
description = "`i` with curly-then-flat tail"
|
||||||
selector.dotlessi = "flatTailed"
|
selector.dotlessi = "flatTailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedFlatTailed"
|
||||||
|
|
||||||
[prime.i.variants.serifed-flat-tailed]
|
[prime.i.variants.serifed-flat-tailed]
|
||||||
rank = 10
|
rank = 10
|
||||||
description = "`i` with top serif and curly-then-flat tail"
|
description = "`i` with top serif and curly-then-flat tail"
|
||||||
selector.dotlessi = "serifedFlatTailed"
|
selector.dotlessi = "serifedFlatTailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedFlatTailed"
|
||||||
|
|
||||||
[prime.i.variants.diagonal-tailed]
|
[prime.i.variants.diagonal-tailed]
|
||||||
rank = 11
|
rank = 11
|
||||||
description = "`i` with diagonal tail"
|
description = "`i` with diagonal tail"
|
||||||
selector.dotlessi = "diagonalTailed"
|
selector.dotlessi = "diagonalTailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedDiagonalTailed"
|
||||||
|
|
||||||
[prime.i.variants.serifed-diagonal-tailed]
|
[prime.i.variants.serifed-diagonal-tailed]
|
||||||
rank = 12
|
rank = 12
|
||||||
description = "`i` with top serif and diagonal tail"
|
description = "`i` with top serif and diagonal tail"
|
||||||
selector.dotlessi = "serifedDiagonalTailed"
|
selector.dotlessi = "serifedDiagonalTailed"
|
||||||
|
selector."dotlessi/compLigRight" = "serifedDiagonalTailed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2235,61 +2296,145 @@ tag = "cv37"
|
||||||
rank = 1
|
rank = 1
|
||||||
description = "Serifed `l`"
|
description = "Serifed `l`"
|
||||||
selector.l = "serifed"
|
selector.l = "serifed"
|
||||||
|
selector."l/compLigRight" = "serifed"
|
||||||
|
selector."l/reduced/decompress" = "serifed"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.serifless]
|
[prime.l.variants.serifless]
|
||||||
rank = 2
|
rank = 2
|
||||||
description = "`l` like a straight line"
|
description = "`l` like a straight line"
|
||||||
selector.l = "serifless"
|
selector.l = "serifless"
|
||||||
|
selector."l/compLigRight" = "hooky"
|
||||||
|
selector."l/reduced/decompress" = "seriflessDec"
|
||||||
|
selector."l/reduced/rtail" = "seriflessRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "seriflessRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "seriflessPL"
|
||||||
|
selector.lCurlyTail = "serifless"
|
||||||
|
selector.lyogh = "serifless"
|
||||||
|
|
||||||
[prime.l.variants.hooky]
|
[prime.l.variants.hooky]
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "Hooky `l`"
|
description = "Hooky `l`"
|
||||||
selector.l = "hooky"
|
selector.l = "hooky"
|
||||||
|
selector."l/compLigRight" = "hooky"
|
||||||
|
selector."l/reduced/decompress" = "hookyDec"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.zshaped]
|
[prime.l.variants.zshaped]
|
||||||
rank = 4
|
rank = 4
|
||||||
description = "Z-shaped `l`"
|
description = "Z-shaped `l`"
|
||||||
selector.l = "zshaped"
|
selector.l = "zshaped"
|
||||||
|
selector."l/compLigRight" = "zshaped"
|
||||||
|
selector."l/reduced/decompress" = "zshaped"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.hooky-bottom]
|
[prime.l.variants.hooky-bottom]
|
||||||
rank = 5
|
rank = 5
|
||||||
description = "`l` with a straight sharp-turning horizontal tail"
|
description = "`l` with a straight sharp-turning horizontal tail"
|
||||||
selector.l = "hookyBottom"
|
selector.l = "hookyBottom"
|
||||||
|
selector."l/compLigRight" = "zshaped"
|
||||||
|
selector."l/reduced/decompress" = "hookyBottomDec"
|
||||||
|
selector."l/reduced/rtail" = "seriflessRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "seriflessRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "seriflessPL"
|
||||||
|
selector.lCurlyTail = "serifless"
|
||||||
|
selector.lyogh = "serifless"
|
||||||
|
|
||||||
[prime.l.variants.serifed-asymmetric]
|
[prime.l.variants.serifed-asymmetric]
|
||||||
rank = 6
|
rank = 6
|
||||||
description = "`l` with shorter top serif and full bottom serif"
|
description = "`l` with shorter top serif and full bottom serif"
|
||||||
selector.l = "serifedAsymmetric"
|
selector.l = "serifedAsymmetric"
|
||||||
|
selector."l/compLigRight" = "serifed"
|
||||||
|
selector."l/reduced/decompress" = "serifedAsymmetric"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.tailed]
|
[prime.l.variants.tailed]
|
||||||
rank = 7
|
rank = 7
|
||||||
description = "`l` with curly tail"
|
description = "`l` with curly tail"
|
||||||
selector.l = "tailed"
|
selector.l = "tailed"
|
||||||
|
selector."l/compLigRight" = "serifedTailed"
|
||||||
|
selector."l/reduced/decompress" = "tailedDec"
|
||||||
|
selector."l/reduced/rtail" = "seriflessRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "seriflessRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "seriflessPL"
|
||||||
|
selector.lCurlyTail = "serifless"
|
||||||
|
selector.lyogh = "serifless"
|
||||||
|
|
||||||
[prime.l.variants.serifed-tailed]
|
[prime.l.variants.serifed-tailed]
|
||||||
rank = 8
|
rank = 8
|
||||||
description = "`l` with top serif and curly tail"
|
description = "`l` with top serif and curly tail"
|
||||||
selector.l = "serifedTailed"
|
selector.l = "serifedTailed"
|
||||||
|
selector."l/compLigRight" = "serifedTailed"
|
||||||
|
selector."l/reduced/decompress" = "serifedTailed"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.flat-tailed]
|
[prime.l.variants.flat-tailed]
|
||||||
rank = 9
|
rank = 9
|
||||||
description = "`l` with curly-then-flat tail"
|
description = "`l` with curly-then-flat tail"
|
||||||
selector.l = "flatTailed"
|
selector.l = "flatTailed"
|
||||||
|
selector."l/compLigRight" = "serifedFlatTailed"
|
||||||
|
selector."l/reduced/decompress" = "flatTailedDec"
|
||||||
|
selector."l/reduced/rtail" = "seriflessRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "seriflessRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "seriflessPL"
|
||||||
|
selector.lCurlyTail = "serifless"
|
||||||
|
selector.lyogh = "serifless"
|
||||||
|
|
||||||
[prime.l.variants.serifed-flat-tailed]
|
[prime.l.variants.serifed-flat-tailed]
|
||||||
rank = 10
|
rank = 10
|
||||||
description = "`l` with top serif and curly-then-flat tail"
|
description = "`l` with top serif and curly-then-flat tail"
|
||||||
selector.l = "serifedFlatTailed"
|
selector.l = "serifedFlatTailed"
|
||||||
|
selector."l/compLigRight" = "serifedFlatTailed"
|
||||||
|
selector."l/reduced/decompress" = "serifedFlatTailed"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
[prime.l.variants.diagonal-tailed]
|
[prime.l.variants.diagonal-tailed]
|
||||||
rank = 11
|
rank = 11
|
||||||
description = "`l` with diagonal tail"
|
description = "`l` with diagonal tail"
|
||||||
selector.l = "diagonalTailed"
|
selector.l = "diagonalTailed"
|
||||||
|
selector."l/compLigRight" = "serifedDiagonalTailed"
|
||||||
|
selector."l/reduced/decompress" = "diagonalTailedDec"
|
||||||
|
selector."l/reduced/rtail" = "seriflessRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "seriflessRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "seriflessPL"
|
||||||
|
selector.lCurlyTail = "serifless"
|
||||||
|
selector.lyogh = "serifless"
|
||||||
|
|
||||||
[prime.l.variants.serifed-diagonal-tailed]
|
[prime.l.variants.serifed-diagonal-tailed]
|
||||||
rank = 12
|
rank = 12
|
||||||
description = "`l` with top serif and diagonal tail"
|
description = "`l` with top serif and diagonal tail"
|
||||||
selector.l = "serifedDiagonalTailed"
|
selector.l = "serifedDiagonalTailed"
|
||||||
|
selector."l/compLigRight" = "serifedDiagonalTailed"
|
||||||
|
selector."l/reduced/decompress" = "serifedDiagonalTailed"
|
||||||
|
selector."l/reduced/rtail" = "hookyRTail"
|
||||||
|
selector."l/reduced/rtailDec" = "hookyRTailDec"
|
||||||
|
selector."l/phoneticLeft" = "hookyPL"
|
||||||
|
selector.lCurlyTail = "hooky"
|
||||||
|
selector.lyogh = "hooky"
|
||||||
|
|
||||||
|
|
||||||
[prime.m]
|
[prime.m]
|
||||||
|
@ -2734,6 +2879,7 @@ description = "Serifless `s`"
|
||||||
selector.s = "serifless"
|
selector.s = "serifless"
|
||||||
selector."cyrl/ge.italic" = "serifless"
|
selector."cyrl/ge.italic" = "serifless"
|
||||||
selector.sSwash = "serifless"
|
selector.sSwash = "serifless"
|
||||||
|
selector."s/phoneticRight" = "serifless"
|
||||||
|
|
||||||
[prime.s.variants.unilateral-serifed]
|
[prime.s.variants.unilateral-serifed]
|
||||||
rank = 2
|
rank = 2
|
||||||
|
@ -2741,6 +2887,7 @@ description = "`s` with single serif at top"
|
||||||
selector.s = "unilateralSerifed"
|
selector.s = "unilateralSerifed"
|
||||||
selector."cyrl/ge.italic" = "serifless"
|
selector."cyrl/ge.italic" = "serifless"
|
||||||
selector.sSwash = "unilateralSerifed"
|
selector.sSwash = "unilateralSerifed"
|
||||||
|
selector."s/phoneticRight" = "unilateralSerifed"
|
||||||
|
|
||||||
[prime.s.variants.bilateral-serifed]
|
[prime.s.variants.bilateral-serifed]
|
||||||
rank = 3
|
rank = 3
|
||||||
|
@ -2748,6 +2895,7 @@ description = "`s` with serifs at both end"
|
||||||
selector.s = "bilateralSerifed"
|
selector.s = "bilateralSerifed"
|
||||||
selector."cyrl/ge.italic" = "bilateralSerifed"
|
selector."cyrl/ge.italic" = "bilateralSerifed"
|
||||||
selector.sSwash = "unilateralSerifed"
|
selector.sSwash = "unilateralSerifed"
|
||||||
|
selector."s/phoneticRight" = "unilateralSerifed"
|
||||||
|
|
||||||
[prime.s.variants.unilateral-inward-serifed]
|
[prime.s.variants.unilateral-inward-serifed]
|
||||||
rank = 4
|
rank = 4
|
||||||
|
@ -2755,6 +2903,7 @@ description = "`s` with single inward serif at top"
|
||||||
selector.s = "unilateralInwardSerifed"
|
selector.s = "unilateralInwardSerifed"
|
||||||
selector."cyrl/ge.italic" = "serifless"
|
selector."cyrl/ge.italic" = "serifless"
|
||||||
selector.sSwash = "unilateralInwardSerifed"
|
selector.sSwash = "unilateralInwardSerifed"
|
||||||
|
selector."s/phoneticRight" = "unilateralInwardSerifed"
|
||||||
|
|
||||||
[prime.s.variants.bilateral-inward-serifed]
|
[prime.s.variants.bilateral-inward-serifed]
|
||||||
rank = 5
|
rank = 5
|
||||||
|
@ -2762,6 +2911,7 @@ description = "`s` with inward serifs at both end"
|
||||||
selector.s = "bilateralInwardSerifed"
|
selector.s = "bilateralInwardSerifed"
|
||||||
selector."cyrl/ge.italic" = "bilateralInwardSerifed"
|
selector."cyrl/ge.italic" = "bilateralInwardSerifed"
|
||||||
selector.sSwash = "unilateralInwardSerifed"
|
selector.sSwash = "unilateralInwardSerifed"
|
||||||
|
selector."s/phoneticRight" = "unilateralInwardSerifed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3241,6 +3391,7 @@ rank = 1
|
||||||
description = "Straight `z` without serifs"
|
description = "Straight `z` without serifs"
|
||||||
selector.z = "straightSerifless"
|
selector.z = "straightSerifless"
|
||||||
selector."zReduced" = "straightSerifless"
|
selector."zReduced" = "straightSerifless"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifless"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-serifless-with-crossbar]
|
[prime.z.variants.straight-serifless-with-crossbar]
|
||||||
|
@ -3248,6 +3399,7 @@ rank = 2
|
||||||
description = "Straight `z` with a diagonal crossbar, and without serifs"
|
description = "Straight `z` with a diagonal crossbar, and without serifs"
|
||||||
selector.z = "straightSeriflessWithCrossBar"
|
selector.z = "straightSeriflessWithCrossBar"
|
||||||
selector."zReduced" = "straightSerifless"
|
selector."zReduced" = "straightSerifless"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifless"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-serifless-with-horizontal-crossbar]
|
[prime.z.variants.straight-serifless-with-horizontal-crossbar]
|
||||||
|
@ -3255,6 +3407,7 @@ rank = 3
|
||||||
description = "Straight `z` with a horizontal crossbar, and without serifs"
|
description = "Straight `z` with a horizontal crossbar, and without serifs"
|
||||||
selector.z = "straightSeriflessWithHorizontalCrossBar"
|
selector.z = "straightSeriflessWithHorizontalCrossBar"
|
||||||
selector.zReduced = "straightSerifless"
|
selector.zReduced = "straightSerifless"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifless"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifless]
|
[prime.z.variants.curly-serifless]
|
||||||
|
@ -3262,6 +3415,7 @@ rank = 4
|
||||||
description = "Curly `z` without serifs"
|
description = "Curly `z` without serifs"
|
||||||
selector.z = "curlySerifless"
|
selector.z = "curlySerifless"
|
||||||
selector.zReduced = "curlySerifless"
|
selector.zReduced = "curlySerifless"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifless"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifless-with-crossbar]
|
[prime.z.variants.curly-serifless-with-crossbar]
|
||||||
|
@ -3269,6 +3423,7 @@ rank = 5
|
||||||
description = "Curly `z` with a diagonal crossbar, and without serifs"
|
description = "Curly `z` with a diagonal crossbar, and without serifs"
|
||||||
selector.z = "curlySeriflessWithCrossBar"
|
selector.z = "curlySeriflessWithCrossBar"
|
||||||
selector.zReduced = "curlySerifless"
|
selector.zReduced = "curlySerifless"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifless"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifless-with-horizontal-crossbar]
|
[prime.z.variants.curly-serifless-with-horizontal-crossbar]
|
||||||
|
@ -3276,6 +3431,7 @@ rank = 6
|
||||||
description = "Curly `z` with a horizontal crossbar, and without serifs"
|
description = "Curly `z` with a horizontal crossbar, and without serifs"
|
||||||
selector.z = "curlySeriflessWithHorizontalCrossBar"
|
selector.z = "curlySeriflessWithHorizontalCrossBar"
|
||||||
selector.zReduced = "curlySerifless"
|
selector.zReduced = "curlySerifless"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifless"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-serifed]
|
[prime.z.variants.straight-serifed]
|
||||||
|
@ -3283,6 +3439,7 @@ rank = 7
|
||||||
description = "Straight `z` with top and bottom serifs"
|
description = "Straight `z` with top and bottom serifs"
|
||||||
selector.z = "straightSerifed"
|
selector.z = "straightSerifed"
|
||||||
selector.zReduced = "straightSerifed"
|
selector.zReduced = "straightSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.straight-serifed-with-crossbar]
|
[prime.z.variants.straight-serifed-with-crossbar]
|
||||||
|
@ -3290,6 +3447,7 @@ rank = 8
|
||||||
description = "Straight `z` with a diagonal crossbar and serifs"
|
description = "Straight `z` with a diagonal crossbar and serifs"
|
||||||
selector.z = "straightSerifedWithCrossBar"
|
selector.z = "straightSerifedWithCrossBar"
|
||||||
selector.zReduced = "straightSerifed"
|
selector.zReduced = "straightSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.straight-serifed-with-horizontal-crossbar]
|
[prime.z.variants.straight-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3297,6 +3455,7 @@ rank = 9
|
||||||
description = "Straight `z` with a horizontal crossbar and serifs"
|
description = "Straight `z` with a horizontal crossbar and serifs"
|
||||||
selector.z = "straightSerifedWithHorizontalCrossBar"
|
selector.z = "straightSerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "straightSerifed"
|
selector.zReduced = "straightSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifed]
|
[prime.z.variants.curly-serifed]
|
||||||
|
@ -3304,6 +3463,7 @@ rank = 10
|
||||||
description = "Curly `z` woth top and bottom serifs"
|
description = "Curly `z` woth top and bottom serifs"
|
||||||
selector.z = "curlySerifed"
|
selector.z = "curlySerifed"
|
||||||
selector.zReduced = "curlySerifed"
|
selector.zReduced = "curlySerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifed-with-crossbar]
|
[prime.z.variants.curly-serifed-with-crossbar]
|
||||||
|
@ -3311,6 +3471,7 @@ rank = 11
|
||||||
description = "Curly `z` with a diagonal crossbar and serifs"
|
description = "Curly `z` with a diagonal crossbar and serifs"
|
||||||
selector.z = "curlySerifedWithCrossBar"
|
selector.z = "curlySerifedWithCrossBar"
|
||||||
selector.zReduced = "curlySerifed"
|
selector.zReduced = "curlySerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-serifed-with-horizontal-crossbar]
|
[prime.z.variants.curly-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3318,6 +3479,7 @@ rank = 12
|
||||||
description = "Curly `z` with a horizontal crossbar and serifs"
|
description = "Curly `z` with a horizontal crossbar and serifs"
|
||||||
selector.z = "curlySerifedWithHorizontalCrossBar"
|
selector.z = "curlySerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "curlySerifed"
|
selector.zReduced = "curlySerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlySerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.straight-bottom-serifed]
|
[prime.z.variants.straight-bottom-serifed]
|
||||||
|
@ -3325,6 +3487,7 @@ rank = 13
|
||||||
description = "Standard `z` with serif at bottom"
|
description = "Standard `z` with serif at bottom"
|
||||||
selector.z = "straightBottomSerifed"
|
selector.z = "straightBottomSerifed"
|
||||||
selector.zReduced = "straightBottomSerifed"
|
selector.zReduced = "straightBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightBottomSerifed"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-bottom-serifed-with-crossbar]
|
[prime.z.variants.straight-bottom-serifed-with-crossbar]
|
||||||
|
@ -3332,6 +3495,7 @@ rank = 14
|
||||||
description = "Standard `z` with a diagonal crossbar and serif at bottom"
|
description = "Standard `z` with a diagonal crossbar and serif at bottom"
|
||||||
selector.z = "straightBottomSerifedWithCrossbar"
|
selector.z = "straightBottomSerifedWithCrossbar"
|
||||||
selector.zReduced = "straightBottomSerifed"
|
selector.zReduced = "straightBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightBottomSerifed"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-bottom-serifed-with-horizontal-crossbar]
|
[prime.z.variants.straight-bottom-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3339,6 +3503,7 @@ rank = 15
|
||||||
description = "Standard `z` with a horizontal crossbar and serif at bottom"
|
description = "Standard `z` with a horizontal crossbar and serif at bottom"
|
||||||
selector.z = "straightBottomSerifedWithHorizontalCrossBar"
|
selector.z = "straightBottomSerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "straightBottomSerifed"
|
selector.zReduced = "straightBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightBottomSerifed"
|
||||||
selector.zDesc = "straightSerifless"
|
selector.zDesc = "straightSerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-bottom-serifed-with-crossbar]
|
[prime.z.variants.curly-bottom-serifed-with-crossbar]
|
||||||
|
@ -3346,6 +3511,7 @@ rank = 16
|
||||||
description = "Curly `z` with serif at bottom"
|
description = "Curly `z` with serif at bottom"
|
||||||
selector.z = "curlyBottomSerifed"
|
selector.z = "curlyBottomSerifed"
|
||||||
selector.zReduced = "curlyBottomSerifed"
|
selector.zReduced = "curlyBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyBottomSerifed"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-bottom-serifed-with-horizontal-crossbar]
|
[prime.z.variants.curly-bottom-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3353,6 +3519,7 @@ rank = 17
|
||||||
description = "Curly `z` with a diagonal crossbar and serif at bottom"
|
description = "Curly `z` with a diagonal crossbar and serif at bottom"
|
||||||
selector.z = "curlyBottomSerifedWithCrossbar"
|
selector.z = "curlyBottomSerifedWithCrossbar"
|
||||||
selector.zReduced = "curlyBottomSerifed"
|
selector.zReduced = "curlyBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyBottomSerifed"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.curly-bottom-serifed]
|
[prime.z.variants.curly-bottom-serifed]
|
||||||
|
@ -3360,6 +3527,7 @@ rank = 18
|
||||||
description = "Curly `z` with a horizontal crossbar and serif at bottom"
|
description = "Curly `z` with a horizontal crossbar and serif at bottom"
|
||||||
selector.z = "curlyBottomSerifedWithHorizontalCrossBar"
|
selector.z = "curlyBottomSerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "curlyBottomSerifed"
|
selector.zReduced = "curlyBottomSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyBottomSerifed"
|
||||||
selector.zDesc = "curlySerifless"
|
selector.zDesc = "curlySerifless"
|
||||||
|
|
||||||
[prime.z.variants.straight-top-serifed]
|
[prime.z.variants.straight-top-serifed]
|
||||||
|
@ -3367,6 +3535,7 @@ rank = 19
|
||||||
description = "Standard `z` with serif at top"
|
description = "Standard `z` with serif at top"
|
||||||
selector.z = "straightTopSerifed"
|
selector.z = "straightTopSerifed"
|
||||||
selector.zReduced = "straightTopSerifed"
|
selector.zReduced = "straightTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightTopSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.straight-top-serifed-with-crossbar]
|
[prime.z.variants.straight-top-serifed-with-crossbar]
|
||||||
|
@ -3374,6 +3543,7 @@ rank = 20
|
||||||
description = "Standard `z` with a diagonal crossbar and serif at top"
|
description = "Standard `z` with a diagonal crossbar and serif at top"
|
||||||
selector.z = "straightTopSerifedWithCrossbar"
|
selector.z = "straightTopSerifedWithCrossbar"
|
||||||
selector.zReduced = "straightTopSerifed"
|
selector.zReduced = "straightTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightTopSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.straight-top-serifed-with-horizontal-crossbar]
|
[prime.z.variants.straight-top-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3381,6 +3551,7 @@ rank = 21
|
||||||
description = "Standard `z` with a horizontal crossbar and serif at top"
|
description = "Standard `z` with a horizontal crossbar and serif at top"
|
||||||
selector.z = "straightTopSerifedWithHorizontalCrossBar"
|
selector.z = "straightTopSerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "straightTopSerifed"
|
selector.zReduced = "straightTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "straightTopSerifed"
|
||||||
selector.zDesc = "straightTopSerifed"
|
selector.zDesc = "straightTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-top-serifed]
|
[prime.z.variants.curly-top-serifed]
|
||||||
|
@ -3388,6 +3559,7 @@ rank = 22
|
||||||
description = "Curly `z` with serif at top"
|
description = "Curly `z` with serif at top"
|
||||||
selector.z = "curlyTopSerifed"
|
selector.z = "curlyTopSerifed"
|
||||||
selector.zReduced = "curlyTopSerifed"
|
selector.zReduced = "curlyTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyTopSerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-top-serifed-with-crossbar]
|
[prime.z.variants.curly-top-serifed-with-crossbar]
|
||||||
|
@ -3395,6 +3567,7 @@ rank = 23
|
||||||
description = "Curly `z` with a diagonal crossbar and serif at top"
|
description = "Curly `z` with a diagonal crossbar and serif at top"
|
||||||
selector.z = "curlyTopSerifedWithCrossbar"
|
selector.z = "curlyTopSerifedWithCrossbar"
|
||||||
selector.zReduced = "curlyTopSerifed"
|
selector.zReduced = "curlyTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyTopSerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.curly-top-serifed-with-horizontal-crossbar]
|
[prime.z.variants.curly-top-serifed-with-horizontal-crossbar]
|
||||||
|
@ -3402,6 +3575,7 @@ rank = 24
|
||||||
description = "Curly `z` with a horizontal crossbar and serif at top"
|
description = "Curly `z` with a horizontal crossbar and serif at top"
|
||||||
selector.z = "curlyTopSerifedWithHorizontalCrossBar"
|
selector.z = "curlyTopSerifedWithHorizontalCrossBar"
|
||||||
selector.zReduced = "curlyTopSerifed"
|
selector.zReduced = "curlyTopSerifed"
|
||||||
|
selector."zReduced/rtailBase" = "curlyTopSerifed"
|
||||||
selector.zDesc = "curlyTopSerifed"
|
selector.zDesc = "curlyTopSerifed"
|
||||||
|
|
||||||
[prime.z.variants.cursive]
|
[prime.z.variants.cursive]
|
||||||
|
@ -3409,6 +3583,7 @@ rank = 25
|
||||||
description = "Cursive `z`"
|
description = "Cursive `z`"
|
||||||
selector.z = "cursive"
|
selector.z = "cursive"
|
||||||
selector.zReduced = "cursive"
|
selector.zReduced = "cursive"
|
||||||
|
selector."zReduced/rtailBase" = "cursiveRTBase"
|
||||||
selector.zDesc = "cursive"
|
selector.zDesc = "cursive"
|
||||||
|
|
||||||
[prime.z.variants.cursive-with-crossbar]
|
[prime.z.variants.cursive-with-crossbar]
|
||||||
|
@ -3416,6 +3591,7 @@ rank = 26
|
||||||
description = "Cursive `z` with a diagonal cross bar"
|
description = "Cursive `z` with a diagonal cross bar"
|
||||||
selector.z = "cursiveWithCrossBar"
|
selector.z = "cursiveWithCrossBar"
|
||||||
selector.zReduced = "cursive"
|
selector.zReduced = "cursive"
|
||||||
|
selector."zReduced/rtailBase" = "cursiveRTBase"
|
||||||
selector.zDesc = "cursive"
|
selector.zDesc = "cursive"
|
||||||
|
|
||||||
[prime.z.variants.cursive-with-horizontal-crossbar]
|
[prime.z.variants.cursive-with-horizontal-crossbar]
|
||||||
|
@ -3423,6 +3599,7 @@ rank = 27
|
||||||
description = "Cursive `z` with a horizontal cross bar"
|
description = "Cursive `z` with a horizontal cross bar"
|
||||||
selector.z = "cursiveWithHorizontalCrossBar"
|
selector.z = "cursiveWithHorizontalCrossBar"
|
||||||
selector.zReduced = "cursive"
|
selector.zReduced = "cursive"
|
||||||
|
selector."zReduced/rtailBase" = "cursiveRTBase"
|
||||||
selector.zDesc = "cursive"
|
selector.zDesc = "cursive"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue