Add Characters:

- MODIFIER LETTER RAISED UP ARROW (`U+A71B`) (#1460).
  - MODIFIER LETTER RAISED DOWN ARROW (`U+A71C`) (#1460).
  - MODIFIER LETTER RAISED EXCLAMATION MARK (`U+A71D`).
  - MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK (`U+A71E`).
  - MODIFIER LETTER LOW INVERTED EXCLAMATION MARK (`U+A71F`).
  - MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON (`U+10781`) ...  MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK (`U+107B9`).
  - LATIN LETTER SMALL CAPITAL L WITH BELT (`U+1DF04`).
  - LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK (`U+1DF05`).
  - LATIN SMALL LETTER TURNED Y WITH BELT (`U+1DF06`).
  - LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK (`U+1DF08`).
  - LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK (`U+1DF0A`).
This commit is contained in:
be5invis 2022-12-11 18:29:18 -08:00
parent 09623460b5
commit dd54bbcece
17 changed files with 316 additions and 177 deletions

View file

@ -7,6 +7,17 @@
- LATIN SMALL LETTER F WITH STROKE (`U+A799`) (#1453). - LATIN SMALL LETTER F WITH STROKE (`U+A799`) (#1453).
- LATIN CAPITAL LETTER U WITH STROKE (`U+A7B8`) (#1453). - LATIN CAPITAL LETTER U WITH STROKE (`U+A7B8`) (#1453).
- LATIN SMALL LETTER U WITH STROKE (`U+A7B9`) (#1453). - LATIN SMALL LETTER U WITH STROKE (`U+A7B9`) (#1453).
- MODIFIER LETTER RAISED UP ARROW (`U+A71B`) (#1460).
- MODIFIER LETTER RAISED DOWN ARROW (`U+A71C`) (#1460).
- MODIFIER LETTER RAISED EXCLAMATION MARK (`U+A71D`).
- MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK (`U+A71E`).
- MODIFIER LETTER LOW INVERTED EXCLAMATION MARK (`U+A71F`).
- MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON (`U+10781`) ... MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK (`U+107B9`).
- LATIN LETTER SMALL CAPITAL L WITH BELT (`U+1DF04`).
- LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK (`U+1DF05`).
- LATIN SMALL LETTER TURNED Y WITH BELT (`U+1DF06`).
- LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK (`U+1DF08`).
- LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK (`U+1DF0A`).
* Fix metrics of ASCII single quotes under Aile (#1454). * Fix metrics of ASCII single quotes under Aile (#1454).
* Fix overshoot of oval-shaped `0`, and open `6`/`9` (#1455). * Fix overshoot of oval-shaped `0`, and open `6`/`9` (#1455).
* Fix serifs of certain letters (#1458): * Fix serifs of certain letters (#1458):

View file

@ -71,21 +71,34 @@ glyph-block AutoBuild-Accents : begin
# When recursively building, `recursiveCodes` contain an array of "needed" Unicode list # When recursively building, `recursiveCodes` contain an array of "needed" Unicode list
local goalCodes : recursiveCodes || [range 0x0000 0xFFFF] local goalCodes : recursiveCodes || [range 0x0000 0xFFFF]
foreach code goalCodes : if [not : glyphStore.queryByUnicode code] : do foreach code goalCodes : if [not : glyphStore.queryByUnicode code] : do
local parts { }
local allFound true
local customDecomp UnicodeKnowledge.decompOverrides.(code)
local str : String.fromCodePoint code local str : String.fromCodePoint code
local nfd : fallback UnicodeKnowledge.decompositionOverrides.(str) : str.normalize 'NFD' local nfd : str.normalize 'NFD'
if (str !== nfd) : begin
local nfdChars : Array.from nfd if customDecomp
local parts { } : then : begin
local allFound true foreach partName customDecomp : begin
foreach part [items-of nfdChars] : begin local part : glyphStore.queryByName partName
local part : glyphStore.queryByUnicode [part.codePointAt 0]
if [not part] if [not part]
: then : set allFound false : then : set allFound false
: else : parts.push part : else : parts.push part
if allFound : begin
local glyphName : 'u' + [code.toString 16 :.padStart 4 '0'] : else : if (str !== nfd) : begin
set parts : subParts parts local nfdChars : Array.from nfd
set foundDecompositions.(glyphName) { glyphName code parts } foreach partChar [items-of nfdChars] : begin
local part : glyphStore.queryByUnicode [partChar.codePointAt 0]
if [not part]
: then : set allFound false
: else : parts.push part
if (allFound && parts.length) : begin
local glyphName : 'u' + [code.toString 16 :.padStart 4 '0']
set parts : subParts parts
set foundDecompositions.(glyphName) { glyphName code parts }
local s_goalName nothing local s_goalName nothing
local s_code nothing local s_code nothing

View file

@ -1240,7 +1240,7 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
glyph-block-import Recursive-Build : Thinner glyph-block-import Recursive-Build : Thinner
glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations
define [createPhoneticLigatures prefix div _shrink1 _shrink2 wadj1 wadj2 demands] : begin define [createPhoneticLigatures prefix div _shrink1 _shrink2 wadj1 wadj2 tfm demands] : begin
define CWidth : Width * div define CWidth : Width * div
define jobs : CollectJobs NON-DECOMPOSABLE NOT-CENTERED ALLOW-PROPORTIONAL prefix "" demands define jobs : CollectJobs NON-DECOMPOSABLE NOT-CENTERED ALLOW-PROPORTIONAL prefix "" demands
local shrink1 : clamp 0 1 _shrink1 local shrink1 : clamp 0 1 _shrink1
@ -1288,10 +1288,21 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
include : Translate (CWidth / 2) 0 include : Translate (CWidth / 2) 0
include : Regizmo include : Regizmo
include : tfm div
applyRelations jobs.relApplications applyRelations jobs.relApplications
define [ToLetter] : glyph-proc
define [ToSuperscript div] : glyph-proc
local df : DivFrame df
include [Ungizmo] true
include [Translate (-df.middle) (-CAP)] true
include [Scale 0.7] true
include [Translate df.middle (CAP + AccentStackOffset / 2)] true
include [Regizmo] true
define stdShrink : clamp 0.75 0.9 : StrokeWidthBlend 0.75 0.9 define stdShrink : clamp 0.75 0.9 : StrokeWidthBlend 0.75 0.9
createPhoneticLigatures 'phonetic' para.diversityM stdShrink stdShrink 1 1 : list createPhoneticLigatures 'phonetic' para.diversityM stdShrink stdShrink 1 1 ToLetter : list
list 0x02A3 { 'd/phoneticLeft' 'z' } 'b' list 0x02A3 { 'd/phoneticLeft' 'z' } 'b'
list 0x02A4 { 'd/phoneticLeft' 'ezh' } 'if' list 0x02A4 { 'd/phoneticLeft' 'ezh' } 'if'
list 0x02A5 { 'd/phoneticLeft' 'zCurlyTail' } 'if' list 0x02A5 { 'd/phoneticLeft' 'zCurlyTail' } 'if'
@ -1302,10 +1313,23 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
list 0x02AA { 'l/phoneticLeft' 's/phoneticRight' } 'b' list 0x02AA { 'l/phoneticLeft' 's/phoneticRight' } 'b'
list 0x02AB { 'l/phoneticLeft' 'z' } 'b' list 0x02AB { 'l/phoneticLeft' 'z' } 'b'
list 0xAB66 { 'd/phoneticLeft' 'zRTailBR' } 'if' list 0xAB66 { 'd/phoneticLeft' 'zRTailBR' } 'if'
list 0xAB67 { 't/phoneticLeft1' 'sRTail' } null list 0xAB67 { 't/phoneticLeft1' 'sRTail' } 'p'
list 0xFB01 { 'f/compLigLeft1' 'dotlessi/compLigRight' } null list 0xFB01 { 'f/compLigLeft1' 'dotlessi/compLigRight' } null
list 0xFB02 { 'f/compLigLeft2' 'l/compLigRight' } null list 0xFB02 { 'f/compLigLeft2' 'l/compLigRight' } null
createPhoneticLigatures 'phoneticSuperscript' 1 stdShrink stdShrink 1 1 ToSuperscript : list
list 0x10787 { 'd/phoneticLeft' 'z' } 'b'
list 0x1078A { 'd/phoneticLeft' 'ezh' } 'if'
list 0x10789 { 'd/phoneticLeft' 'zCurlyTail' } 'if'
list 0x107AC { 't/phoneticLeft2' 's/phoneticRight' } 'b'
list 0x107AE { 't/teshLeft' 'esh' } 'if'
list 0x107AB { 't/phoneticLeft1' 'cCurlyTail' } 'b'
list 0x10790 { 'f/phoneticLeft' 'eng/phoneticRight' } 'if'
list 0x10799 { 'l/phoneticLeft' 's/phoneticRight' } 'b'
list 0x1079A { 'l/phoneticLeft' 'z' } 'b'
list 0x10788 { 'd/phoneticLeft' 'zRTailBR' } 'if'
list 0x107AD { 't/phoneticLeft1' 'sRTail' } 'p'
glyph-block Autobuild-Double-Emotions : begin glyph-block Autobuild-Double-Emotions : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives

View file

@ -218,13 +218,13 @@ glyph-block Autobuild-Transformed : begin
list 0x02B6 'invSmcpR' list 0x02B6 'invSmcpR'
list 0x02B7 'w' list 0x02B7 'w'
list 0x02B8 'y' list 0x02B8 'y'
list 0x02C0 'fineglottalstop' list 0x02C0 'fineGlottalStop'
list 0x02C1 'finerevglottalstop' list 0x02C1 'fineRevGlottalStop'
list 0x02E0 'latn/gamma' list 0x02E0 'latn/gamma'
list 0x02E1 'l' list 0x02E1 'l'
list 0x02E2 's' list 0x02E2 's'
list 0x02E3 'x' list 0x02E3 'x'
list 0x02E4 'revglottalstop' list 0x02E4 'revGlottalStop'
list 0x2071 'i' list 0x2071 'i'
list 0x207F 'n' list 0x207F 'n'
list 0x1D43 'a' list 0x1D43 'a'
@ -323,17 +323,66 @@ glyph-block Autobuild-Transformed : begin
list 0x207C 'equal' list 0x207C 'equal'
list 0x207D 'parenLeft' list 0x207D 'parenLeft'
list 0x207E 'parenRight' list 0x207E 'parenRight'
list 0xA7F8 'smcpHStroke'
list 0xA7F9 'oe'
list 0xA702 'subst' list 0xA702 'subst'
list 0xA703 'substBarNoRise' list 0xA703 'substBarNoRise'
list 0xA704 'supst' list 0xA704 'supst'
list 0xA705 'supstBarNoRise' list 0xA705 'supstBarNoRise'
list 0xAB5C 'heng' list 0xA71B 'arrowUp.NWID'
list 0xAB69 'turnw' list 0xA71C 'arrowDown.NWID'
list 0xA71D 'alveolarclick'
list 0xA71E 'exclamDownAlt'
list 0xA7F2 'C' list 0xA7F2 'C'
list 0xA7F3 'F' list 0xA7F3 'F'
list 0xA7F4 'Q' list 0xA7F4 'Q'
list 0xA7F8 'smcpHStroke'
list 0xA7F9 'oe'
list 0xAB5C 'heng'
list 0xAB5E 'lTildeOver'
list 0xAB69 'turnw'
list 0x107AF 'tRTail'
list 0x1078B 'dHookBottom'
list 0x107A5 'q'
list 0x10792 'smcpG'
list 0x107B3 'glottalStopBar'
list 0x10795 'hBar'
list 0x10797 'hHookTopLTail'
list 0x107B0 'vHookTop'
list 0x107A9 'rFlap'
list 0x107A8 'rRTail'
list 0x10784 'smcpB'
list 0x107AA 'smcpR'
list 0x10796 'smcpH'
list 0x107B4 'revGlottalStopBar'
list 0x1079B 'lBelt'
list 0x1079E 'lyogh'
list 0x1079D 'lBeltRTail'
list 0x1079F 'lyoghRTail'
list 0x107A1 'turnyBelt'
list 0x1079C 'smcpLBelt'
list 0x107A0 'turny'
list 0x107A6 'turnrlongleg'
list 0x107A7 'rTurnLongLetRTail'
list 0x10785 'bHookTop'
list 0x1078C 'dHookTop'
list 0x1078D 'dHookTopBottom'
list 0x10798 'dotlessjBarHookTop'
list 0x10793 'gScriptHookTop'
list 0x10794 'smcpGHookTop'
list 0x107B5 'bullEye'
list 0x107B6 'dentalclick'
list 0x107B8 'palatoalveolarclick'
list 0x107B9 'retroflexClickHook'
list 0x107B7 'alveolarlateralclick'
list 0x107B2 'smcpY'
list 0x107A4 'closeomega'
list 0x107A2 'oSlash'
list 0x1078E 'eRev'
list 0x10791 'ramshorn'
list 0x1078F 'closeturnepsilon'
list 0x10783 'ae'
list 0x107A3 'smcpOE'
list 0x10781 'triangleColon'
list 0x10782 'halfTriangleColon'
list null 'S' # there is no superscript S in unicode, but is is used for the SM symbol list null 'S' # there is no superscript S in unicode, but is is used for the SM symbol
createSuperscripts 'numerator' NumeratorForm : list createSuperscripts 'numerator' NumeratorForm : list
@ -409,6 +458,7 @@ glyph-block Autobuild-Transformed : begin
list 0xA701 'substBarNoRise' list 0xA701 'substBarNoRise'
list 0xA706 'supst' list 0xA706 'supst'
list 0xA707 'supstBarNoRise' list 0xA707 'supstBarNoRise'
list 0xA71F 'exclamDownAlt'
createSubscripts 'denominator' DenominatorForm : list createSubscripts 'denominator' DenominatorForm : list
list null 'zero.onum' list null 'zero.onum'

View file

@ -108,6 +108,19 @@ glyph-block Letter-Latin-Ezh : begin
select-variant 'lyogh' 0x26E select-variant 'lyogh' 0x26E
create-glyph 'lyoghRTail.serifless' : glyph-proc
include : MarkSet.if
include : EzhShape XH 0 0.4
include : VBarLeft SB 0 Ascender
include : WithTransform [ApparentTranslate (SB + HVContrast * Stroke - RightSB) (-Descender)]
refer-glyph 'rtailBR'
create-glyph 'lyoghRTail.hooky' : glyph-proc
include [refer-glyph 'lyoghRTail.serifless'] AS_BASE ALSO_METRICS
include : LeftwardTopSerif SB Ascender SideJut
select-variant 'lyoghRTail' 0x1DF05 (follow -- 'lyogh')
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

View file

@ -11,7 +11,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin
glyph-block-import Mark-Shared-Metrics : markHalfStroke glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
create-glyph 'glottalstop' 0x294 : glyph-proc create-glyph 'glottalStop' 0x294 : glyph-proc
include : MarkSet.b include : MarkSet.b
include : dispiro include : dispiro
widths.rhs widths.rhs
@ -24,9 +24,9 @@ glyph-block Letter-Latin-Glottal-Stop : begin
if SLAB : begin if SLAB : begin
include : CenterBottomSerif Middle 0 Jut include : CenterBottomSerif Middle 0 Jut
alias 'capglottalstop' 0x241 'glottalstop' alias 'capGlottalStop' 0x241 'glottalStop'
create-glyph 'revglottalstop' 0x295 : glyph-proc create-glyph 'revGlottalStop' 0x295 : glyph-proc
include : MarkSet.b include : MarkSet.b
include : dispiro include : dispiro
widths.lhs widths.lhs
@ -39,7 +39,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin
if SLAB : begin if SLAB : begin
include : CenterBottomSerif Middle 0 Jut include : CenterBottomSerif Middle 0 Jut
create-glyph 'smallglottalstop' 0x242 : glyph-proc create-glyph 'smallGlottalStop' 0x242 : glyph-proc
include : MarkSet.b include : MarkSet.b
include : dispiro include : dispiro
widths.rhs widths.rhs
@ -52,7 +52,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin
if SLAB : begin if SLAB : begin
include : CenterBottomSerif Middle 0 Jut include : CenterBottomSerif Middle 0 Jut
create-glyph 'fineglottalstop' : glyph-proc create-glyph 'fineGlottalStop' : glyph-proc
include : MarkSet.b include : MarkSet.b
local fine : markHalfStroke * 2 local fine : markHalfStroke * 2
include : dispiro include : dispiro
@ -66,7 +66,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin
if SLAB : begin if SLAB : begin
include : CenterBottomSerif Middle 0 Jut fine include : CenterBottomSerif Middle 0 Jut fine
create-glyph 'finerevglottalstop' : glyph-proc create-glyph 'fineRevGlottalStop' : glyph-proc
include : MarkSet.b include : MarkSet.b
local fine : markHalfStroke * 2 local fine : markHalfStroke * 2
include : dispiro include : dispiro
@ -80,12 +80,12 @@ glyph-block Letter-Latin-Glottal-Stop : begin
if SLAB : begin if SLAB : begin
include : CenterBottomSerif Middle 0 Jut fine include : CenterBottomSerif Middle 0 Jut fine
turned 'invglottalstop' 0x296 'revglottalstop' Middle (Ascender / 2) turned 'invGlottalStop' 0x296 'revGlottalStop' Middle (Ascender / 2)
create-glyph 'glottalstopbar' 0x2A1 : glyph-proc create-glyph 'glottalStopBar' 0x2A1 : glyph-proc
include [refer-glyph 'glottalstop'] AS_BASE include [refer-glyph 'glottalStop'] AS_BASE
include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5) 0.5 include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5) 0.5
create-glyph 'revglottalstopbar' 0x2A2 : glyph-proc create-glyph 'revGlottalStopBar' 0x2A2 : glyph-proc
include [refer-glyph 'revglottalstop'] AS_BASE include [refer-glyph 'revGlottalStop'] AS_BASE
include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5) 0.5 include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5) 0.5

View file

@ -60,7 +60,7 @@ glyph-block Letter-Latin-Lower-H : begin
if fTailed : include : RightwardTailedBar RightSB 0 (XH - SmallArchDepthB) if fTailed : include : RightwardTailedBar RightSB 0 (XH - SmallArchDepthB)
include : Serifs fTailed false include : Serifs fTailed false
create-glyph "hbar.\(suffix)" : glyph-proc create-glyph "hBar.\(suffix)" : glyph-proc
include [refer-glyph "h.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "h.\(suffix)"] AS_BASE ALSO_METRICS
include : HBarOverlay fHasTopSerif include : HBarOverlay fHasTopSerif
@ -94,7 +94,7 @@ glyph-block Letter-Latin-Lower-H : begin
select-variant 'h' 'h' select-variant 'h' 'h'
link-reduced-variant 'h/sansSerif' 'h' MathSansSerif link-reduced-variant 'h/sansSerif' 'h' MathSansSerif
turned 'turnh' 0x265 'h' Middle (XH / 2) [MarkSet.p] turned 'turnh' 0x265 'h' Middle (XH / 2) [MarkSet.p]
select-variant 'hbar' 0x127 (follow -- 'h') select-variant 'hBar' 0x127 (follow -- 'h')
select-variant 'cyrl/shha' 0x4BB (shapeFrom -- 'h') select-variant 'cyrl/shha' 0x4BB (shapeFrom -- 'h')
derive-composites 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender RightSB] derive-composites 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender RightSB]
@ -142,7 +142,7 @@ glyph-block Letter-Latin-Lower-H : begin
include [refer-glyph src] include [refer-glyph src]
include : MarkSet.if include : MarkSet.if
alias 'cyrl/tshe' 0x45B 'hbar' alias 'cyrl/tshe' 0x45B 'hBar'
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
create-glyph 'mathbb/h' 0x1D559 : glyph-proc create-glyph 'mathbb/h' 0x1D559 : glyph-proc

View file

@ -200,6 +200,16 @@ glyph-block Letter-Latin-Lower-R : begin
include : refer-glyph "rtailBR" include : refer-glyph "rtailBR"
include : ApparentTranslate (df.rightSB - xBar + df.leftSB + Stroke * HVContrast) 0 include : ApparentTranslate (df.rightSB - xBar + df.leftSB + Stroke * HVContrast) 0
create-glyph "rTurnLongLetRTail.\(suffix)" : glyph-proc
include [refer-glyph "rlongleg.\(suffix)"] AS_BASE ALSO_METRICS
eject-contour 'serifLT'
include : FlipAround df.middle (XH / 2)
include : df.markSet.if
define [object xBar] : RDim df mode
include : new-glyph : glyph-proc
include : refer-glyph "rtailBR"
include : ApparentTranslate (df.rightSB - xBar + df.leftSB + Stroke * HVContrast) 0
select-variant 'r' 'r' select-variant 'r' 'r'
link-reduced-variant 'r/sansSerif' 'r' MathSansSerif link-reduced-variant 'r/sansSerif' 'r' MathSansSerif
@ -218,6 +228,7 @@ glyph-block Letter-Latin-Lower-R : begin
include : df.markSet.b include : df.markSet.b
select-variant 'rTurnRTail' 0x27B select-variant 'rTurnRTail' 0x27B
select-variant 'rTurnLongLetRTail' 0x1DF08 (follow -- 'rTurnRTail')
define [BBRShape df md doTopSerif doBottomSerif] : glyph-proc define [BBRShape df md doTopSerif doBottomSerif] : glyph-proc

View file

@ -12,7 +12,7 @@ glyph-block Letter-Latin-Lower-Y : begin
glyph-block-import Mark-Shared-Metrics : markExtend markStroke markStress markFine glyph-block-import Mark-Shared-Metrics : markExtend markStroke markStress markFine
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
glyph-block-import Mark-Below : belowMarkStack glyph-block-import Mark-Below : belowMarkStack
glyph-block-import Letter-Shared-Shapes : nShoulder FlatHookDepth SerifFrame glyph-block-import Letter-Shared-Shapes : nShoulder FlatHookDepth SerifFrame BeltOverlay
define SLAB-NONE { false false false } define SLAB-NONE { false false false }
define SLAB-AUTO { SLAB SLAB false } define SLAB-AUTO { SLAB SLAB false }
@ -299,9 +299,17 @@ glyph-block Letter-Latin-Lower-Y : begin
set-base-anchor 'overlay' Middle (XH / 2) set-base-anchor 'overlay' Middle (XH / 2)
select-variant 'y' 'y' select-variant 'y' 'y'
select-variant 'y/nonCursive' (shapeFrom -- 'y')
link-reduced-variant 'y/sansSerif' 'y' MathSansSerif link-reduced-variant 'y/sansSerif' 'y' MathSansSerif
alias 'cyrl/u' 0x443 'y' alias 'cyrl/u' 0x443 'y'
turned 'turny' 0x28E 'y/nonCursive' Middle (XH / 2) [MarkSet.b]
derive-glyphs 'turnyBelt' 0x1DF06 'y/nonCursive' : function [src sel] : glyph-proc
include : MarkSet.b
include [refer-glyph src]
include : FlipAround Middle (XH / 2)
include : BeltOverlay.at Middle XH
foreach { suffix { DrawAt kdr } } [Object.entries DotVariants] : do foreach { suffix { DrawAt kdr } } [Object.entries DotVariants] : do
create-glyph "yDotBelowDot1.\(suffix)" : glyph-proc create-glyph "yDotBelowDot1.\(suffix)" : glyph-proc
set-mark-anchor 'yBelowDot' 0 0 0 belowMarkStack set-mark-anchor 'yBelowDot' 0 0 0 belowMarkStack
@ -362,8 +370,6 @@ glyph-block Letter-Latin-Lower-Y : begin
select-variant 'yHookTop' 0x1B4 select-variant 'yHookTop' 0x1B4
select-variant 'cyrl/U' 0x423 select-variant 'cyrl/U' 0x423
turned 'turny' 0x28E 'y' Middle (XH / 2) [MarkSet.b]
define [LambdaBarOverlayShape] : FlatSlashShape [mix SB RightSB 0.45] [mix 0 CAP 0.8] (OverlayStroke / 2) define [LambdaBarOverlayShape] : FlatSlashShape [mix SB RightSB 0.45] [mix 0 CAP 0.8] (OverlayStroke / 2)
define LambdaConfig : object define LambdaConfig : object
straight { true false SLAB-NONE } straight { true false SLAB-NONE }

View file

@ -175,7 +175,7 @@ glyph-block Letter-Latin-O : begin
alias 'grek/capSymbolTheta' 0x3F4 'Obar' alias 'grek/capSymbolTheta' 0x3F4 'Obar'
alias 'cyrl/oe' 0x4E9 'obar' alias 'cyrl/oe' 0x4E9 'obar'
create-glyph 'bulleye' 0x298 : glyph-proc create-glyph 'bullEye' 0x298 : glyph-proc
include [refer-glyph 'O'] AS_BASE include [refer-glyph 'O'] AS_BASE
local halfDotWidth : Math.min DotRadius ((RightSB - SB - HVContrast * Stroke * 2) / 4) local halfDotWidth : Math.min DotRadius ((RightSB - SB - HVContrast * Stroke * 2) / 4)
local halfDotHeight : Math.min DotRadius (halfDotWidth * 1.5) local halfDotHeight : Math.min DotRadius (halfDotWidth * 1.5)

View file

@ -80,5 +80,7 @@ glyph-block Letter-Latin-Upper-L : begin
create-glyph 'LBarOverlay' : LetterBarOverlay.l.in LBarLeftX 0 CAP create-glyph 'LBarOverlay' : LetterBarOverlay.l.in LBarLeftX 0 CAP
create-glyph 'LBeltOverlay' : BeltOverlay CAP (LBarLeftX + 0.5 * HVContrast * Stroke) create-glyph 'LBeltOverlay' : BeltOverlay CAP (LBarLeftX + 0.5 * HVContrast * Stroke)
create-glyph 'smcpLBeltOverlay' : BeltOverlay XH (LBarLeftX + 0.5 * HVContrast * Stroke)
derive-composites 'LBar' 0x23D 'L' 'LBarOverlay' derive-composites 'LBar' 0x23D 'L' 'LBarOverlay'
derive-composites 'LBelt' 0xA7AD 'L' 'LBeltOverlay' derive-composites 'LBelt' 0xA7AD 'L' 'LBeltOverlay'
derive-composites 'smcpLBelt' 0x1DF04 'smcpL' 'smcpLBeltOverlay'

View file

@ -538,19 +538,22 @@ glyph-block Letter-Shared-Shapes : begin
archv archv
straight.down.end SB bottom [heading Downward] straight.down.end SB bottom [heading Downward]
glyph-block-export BeltOverlay define [BeltOverlayAt x y] : begin
define [BeltOverlay top xMiddle] : begin
local fine : AdviceStroke 4.5 local fine : AdviceStroke 4.5
local r : XH * 0.05 local r : XH * 0.05
return : dispiro return : dispiro
widths.rhs fine widths.rhs fine
flat xMiddle (0.5 * top + r) [heading Leftward] flat x (y + r) [heading Leftward]
curl (xMiddle - HalfStroke - r * 1.5) (0.5 * top + r) curl (x - HalfStroke - r * 1.5) (y + r)
archv archv
g4.down.mid (xMiddle - HalfStroke - r * 2.5) (0.5 * top) [heading Downward] g4.down.mid (x - HalfStroke - r * 2.5) y [heading Downward]
arcvh arcvh
flat (xMiddle - HalfStroke - r * 1.5) (0.5 * top - r) flat (x - HalfStroke - r * 1.5) (y - r)
curl (xMiddle + HalfStroke + r * 1.5 + fine) (0.5 * top - r) curl (x + HalfStroke + r * 1.5 + fine) (y - r)
glyph-block-export BeltOverlay
define [BeltOverlay top xMiddle] : BeltOverlayAt xMiddle (0.5 * top)
set BeltOverlay.at BeltOverlayAt
glyph-block-export LetterBarOverlay glyph-block-export LetterBarOverlay
define [LetterBarOverlay] : params [x y space refSw pXInSw sw] : begin define [LetterBarOverlay] : params [x y space refSw pXInSw sw] : begin

View file

@ -17,7 +17,7 @@ glyph-block Symbol-Punctuation-Emotion : begin
create-glyph "exclam.\(suffix)" : glyph-proc create-glyph "exclam.\(suffix)" : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : MarkSet.capital include : df.markSet.capital
include : VBar df.middle [clamp 0 (CAP * 0.4) (emotionBottom * 1.18)] CAP include : VBar df.middle [clamp 0 (CAP * 0.4) (emotionBottom * 1.18)] CAP
include : DrawAt df.middle dr (dr - overshoot) include : DrawAt df.middle dr (dr - overshoot)
@ -35,8 +35,16 @@ glyph-block Symbol-Punctuation-Emotion : begin
select-variant 'question/dotPart' (follow -- 'punctuationDot') select-variant 'question/dotPart' (follow -- 'punctuationDot')
select-variant 'questionDown/dotPart' (follow -- 'punctuationDot') select-variant 'questionDown/dotPart' (follow -- 'punctuationDot')
alias 'alveolarclick' 0x1C3 'exclam' derive-glyphs 'retroflexClickHook' 0x1DF0A 'exclam' : function [src sel] : glyph-proc
turned 'exclamDown' 0xA1 'exclam' [DivFrame para.diversityF].middle (XH / 2) include [refer-glyph src] AS_BASE ALSO_METRICS
local df : DivFrame para.diversityF
include : df.markSet.capDesc
include : WithTransform [ApparentTranslate (df.middle + HVContrast * HalfStroke - df.rightSB) (-Descender)]
refer-glyph "rtailBR"
alias 'alveolarclick' 0x1C3 'exclam'
turned 'exclamDown' 0xA1 'exclam' [DivFrame para.diversityF].middle (XH / 2)
turned 'exclamDownAlt' null 'exclam' [DivFrame para.diversityF].middle (XH / 2)
do "Question" do "Question"
local [YConnectT top emotionBottom] : mix emotionBottom (top - HalfStroke) 0.375 local [YConnectT top emotionBottom] : mix emotionBottom (top - HalfStroke) 0.375

View file

@ -10,11 +10,11 @@ glyph-block Symbol-Other-Phonetic : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
local triangleSize : Math.min (PeriodRadius) (XH / 5) local triangleSize : Math.min (PeriodRadius) (XH / 6)
local toneMarkLeft : mix SB RightSB 0.1 local toneMarkLeft : mix SB RightSB 0.1
local toneMarkRight : Width - toneMarkLeft local toneMarkRight : Width - toneMarkLeft
create-glyph 'trianglecolon' 0x2D0 : glyph-proc create-glyph 'triangleColon' 0x2D0 : glyph-proc
include : union include : union
spiro-outline spiro-outline
corner (Middle - triangleSize * 1.35) XH corner (Middle - triangleSize * 1.35) XH
@ -25,7 +25,7 @@ glyph-block Symbol-Other-Phonetic : begin
corner Middle (0 + triangleSize * 2.75) corner Middle (0 + triangleSize * 2.75)
corner (Middle + triangleSize * 1.35) 0 corner (Middle + triangleSize * 1.35) 0
create-glyph 'halftrianglecolon' 0x2D1 : glyph-proc create-glyph 'halfTriangleColon' 0x2D1 : glyph-proc
include : spiro-outline include : spiro-outline
corner (Middle - triangleSize * 1.35) XH corner (Middle - triangleSize * 1.35) XH
corner Middle (XH - triangleSize * 2.75) corner Middle (XH - triangleSize * 2.75)

View file

@ -34,136 +34,120 @@ export : define markCompositionTf : object
'cyrlPsiliAbove' : object 'cyrlPsiliAbove' : object
'cyrlPokrytieAbove' 'cyrlPsiliPokrytieAbove' 'cyrlPokrytieAbove' 'cyrlPsiliPokrytieAbove'
export : define decompositionOverrides : object export : define decompOverrides : object
# Latvians use comma instead of cedillas in several letters. # Latvians use comma instead of cedillas in several letters.
# Record them as custom decomposition. # Record them as custom decomposition.
."\u0156" "R\u0326" 0x122 { 'G' 'commaBelow' }
."\u0157" "r\u0326" 0x123 { 'g' 'turnCommaAbove' }
."\u0136" "K\u0326" 0x136 { 'K' 'commaBelow' }
."\u0137" "k\u0326" 0x137 { 'k' 'commaBelow' }
."\u0145" "N\u0326" 0x13b { 'L' 'commaBelow' }
."\u0146" "n\u0326" 0x13c { 'l' 'commaBelow' }
."\u013B" "L\u0326" 0x145 { 'N' 'commaBelow' }
."\u013C" "l\u0326" 0x146 { 'n' 'commaBelow' }
."\u0122" "G\u0326" 0x156 { 'R' 'commaBelow' }
."\u0123" "g\u0312" 0x157 { 'r' 'commaBelow' }
# autobuild Latin glyphs # Spacing marks
."\u0167" "t\u0335" 0xa8 { 'markBaseSpace' 'dieresisAbove' }
."\u0197" "I\u0335" 0xaf { 'markBaseSpace' 'macronAbove' }
."\u019A" "l\u0335" 0xb8 { 'markBaseSpace' 'cedillaBelow' }
."\u0248" "J\u0335" 0x2c2 { 'markBaseSpace' 'lessAbove' }
."\u0249" "j\u0335" 0x2c3 { 'markBaseSpace' 'greaterAbove' }
."\u0268" "i\u0335" 0x2c4 { 'markBaseSpace' 'upArrowHeadAbove' }
."\u024D" "r\u0335" 0x2c5 { 'markBaseSpace' 'downArrowHeadAbove' }
."\u1D7B" "\u026A\u0335" 0x2c6 { 'markBaseSpace' 'circumflexAbove' }
."\u1D7C" "\u0269\u0335" 0x2c7 { 'markBaseSpace' 'caronAbove' }
0x2c9 { 'markBaseSpace' 'macronAbove' }
0x2ca { 'markBaseSpace' 'acuteAbove' }
0x2cb { 'markBaseSpace' 'graveAbove' }
0x2cd { 'markBaseSpace' 'macronBelow' }
0x2ce { 'markBaseSpace' 'graveBelow' }
0x2cf { 'markBaseSpace' 'acuteBelow' }
0x2d2 { 'markBaseSpace' 'rightHalfCircleBelow' }
0x2d3 { 'markBaseSpace' 'leftHalfCircleBelow' }
0x2d4 { 'markBaseSpace' 'uptackBelow' }
0x2d5 { 'markBaseSpace' 'downtackBelow' }
0x2d6 { 'markBaseSpace' 'plusBelow' }
0x2d7 { 'markBaseSpace' 'minusBelow' }
0x2d8 { 'markBaseSpace' 'breveAbove' }
0x2d9 { 'markBaseSpace' 'dotAbove' }
0x2da { 'markBaseSpace' 'ringAbove' }
0x2db { 'markBaseSpace' 'ogonekBelow' }
0x2dc { 'markBaseSpace' 'tildeAbove' }
0x2dd { 'markBaseSpace' 'doubleAcuteAbove' }
0x2df { 'markBaseSpace' 'crossAbove' }
0x2ec { 'markBaseSpace' 'caronBelow' }
0x2ed { 'markBaseSpace' 'dblOverlineAbove' }
0x2ef { 'markBaseSpace' 'downArrowHeadBelow' }
0x2f0 { 'markBaseSpace' 'upArrowHeadBelow' }
0x2f1 { 'markBaseSpace' 'lessBelow' }
0x2f2 { 'markBaseSpace' 'greaterBelow' }
0x2f3 { 'markBaseSpace' 'ringBelow' }
0x2f7 { 'markBaseSpace' 'tildeBelow' }
0x2ff { 'markBaseSpace' 'leftArrowBelow' }
0x37a { 'markBaseSpace' 'iotaBelow' }
0x384 { 'markBaseSpace' 'acuteAbove' }
0x385 { 'markBaseSpace' 'dieresisAbove' 'acuteAbove' }
0x1fbd { 'markBaseSpace' 'commaAbove' }
0x1fbe { 'markBaseSpace' 'iotaBelow' }
0x1fbf { 'markBaseSpace' 'commaAbove' }
0x1fc0 { 'markBaseSpace' 'perispomeniAbove' }
0x1fc1 { 'markBaseSpace' 'dieresisAbove' 'perispomeniAbove' }
0x1fed { 'markBaseSpace' 'dieresisAbove' 'graveAbove' }
0x1fee { 'markBaseSpace' 'dieresisAbove' 'acuteAbove' }
0x1fef { 'markBaseSpace' 'graveAbove' }
0x1ffd { 'markBaseSpace' 'acuteAbove' }
0x1ffe { 'markBaseSpace' 'revCommaAbove' }
."\u1D7F" "\u028A\uE001" 0x167 { 't' 'barOver' }
."\u0289" "u\uE001" 0x197 { 'I' 'barOver' }
."\u0244" "U\uE001" 0x19a { 'l' 'barOver' }
."\u01E5" "g\uE001" 0x1bb { 'two.lnum' 'longBarOver' }
."\u01BB" "2\uE001" 0x23a { 'A' 'longSlashOver' }
."\u04B0" "\u04AE\u0335" 0x23b { 'C' 'longSlashOver' }
."\u04B1" "\u04AF\u0335" 0x23c { 'c' 'slashOver' }
."\u024F" "y\uE001" 0x23e { 'T' 'longSlashOver' }
."\uAB30" "\uAB64\uE001" 0x244 { 'U' 'longBarOver' }
."\u1D7D" "p\uE001" 0x246 { 'E' 'longSlashOver' }
0x247 { 'e' 'slashOver' }
0x248 { 'J' 'barOver' }
0x249 { 'j' 'barOver' }
0x24d { 'r' 'barOver' }
0x24f { 'y' 'longBarOver' }
."\u023A" "A\u0338" 0x47c { 'cyrl/BroadOmega' 'cyrlPsiliAbove' 'cyrlPokrytieAbove' }
."\u023B" "C\u0338" 0x47d { 'cyrl/broadOmega' 'cyrlPsiliAbove' 'cyrlPokrytieAbove' }
."\u023C" "c\u0337" 0x498 { 'cyrl/Ze' 'cedillaBelow' }
."\u023E" "T\u0338" 0x499 { 'cyrl/ze' 'cedillaBelow' }
."\u0246" "E\u0338" 0x4aa { 'cyrl/Es' 'cedillaBelow' }
."\u0247" "e\u0337" 0x4ab { 'cyrl/es' 'cedillaBelow' }
0x4b0 { 'cyrl/Ue' 'barOver' }
0x4b1 { 'cyrl/ue' 'barOver' }
."\u0290" "z\u0322" 0x1d7c { 'latn/iota' 'barOver' }
."\u1D90" "\u0251\u0322" 0x1d7d { 'p' 'longBarOver' }
0x1d7f { 'latinupsilon1' 'longBarOver' }
0x1e10 { 'D' 'commaBelow' }
0x1e11 { 'd' 'commaBelow' }
0x1e9c { 'longs' 'shortSlashOver' }
0x1eda { 'OHorn' 'acuteAbove' }
0x1edb { 'oHorn' 'acuteAbove' }
0x1edc { 'OHorn' 'graveAbove' }
0x1edd { 'oHorn' 'graveAbove' }
0x1ede { 'OHorn' 'hookAbove' }
0x1edf { 'oHorn' 'hookAbove' }
0x1ee0 { 'OHorn' 'tildeAbove' }
0x1ee1 { 'oHorn' 'tildeAbove' }
0x1ee2 { 'OHorn' 'dotBelow' }
0x1ee3 { 'oHorn' 'dotBelow' }
."\u1E10" "D\u0326" 0x2c65 { 'a' 'slashOver' }
."\u1E11" "d\u0326" 0x2c66 { 't' 'longSlashOver' }
."\u1E9C" "\u017F\uE000" 0xa7b8 { 'U' 'longSlashOver' }
0xa7b9 { 'u' 'slashOver' }
."\u1EDC" "\u01A0\u0300" 0xa7bb { 'a' 'EgyptologicalYodAbove' }
."\u1EDD" "\u01A1\u0300" 0xa7bd { 'i' 'EgyptologicalYodAbove' }
."\u1EDA" "\u01A0\u0301" 0xa7bf { 'u' 'EgyptologicalYodAbove' }
."\u1EDB" "\u01A1\u0301" 0xab30 { 'scripta' 'longBarOver' }
."\u1EDE" "\u01A0\u0309"
."\u1EDF" "\u01A1\u0309"
."\u1EE0" "\u01A0\u0303"
."\u1EE1" "\u01A1\u0303"
."\u1EE2" "\u01A0\u0323"
."\u1EE3" "\u01A1\u0323"
."\u2C65" "a\u0337"
."\u2C66" "t\u0338"
# Cyrillic composite characters
."\u0498" "\u0417\u0327"
."\u0499" "\u0437\u0327"
."\u04AA" "\u0421\u0327"
."\u04AB" "\u0441\u0327"
."\u047C" "\uA64C\u0486\u0487"
."\u047D" "\uA64D\u0486\u0487"
# Spacing modifers
."\u02CB" "\uE00D\u0300"
."\u02CA" "\uE00D\u0301"
."\u02C6" "\uE00D\u0302"
."\u02DC" "\uE00D\u0303"
."\u00AF" "\uE00D\u0304"
."\u02C9" "\uE00D\u0304"
."\u02D8" "\uE00D\u0306"
."\u02D9" "\uE00D\u0307"
."\u00A8" "\uE00D\u0308"
."\u02DA" "\uE00D\u030A"
."\u02C7" "\uE00D\u030C"
."\u00B8" "\uE00D\u0327"
."\u02CD" "\uE00D\u0331"
."\u02CE" "\uE00D\u0316"
."\u02CF" "\uE00D\u0317"
."\u02D2" "\uE00D\u0339"
."\u02D3" "\uE00D\u031C"
."\u02D4" "\uE00D\u031D"
."\u02D5" "\uE00D\u031E"
."\u02D6" "\uE00D\u031F"
."\u02D7" "\uE00D\u0320"
."\u02DB" "\uE00D\u0328"
."\u02DD" "\uE00D\u030B"
."\u02DF" "\uE00D\u033D"
."\u02EC" "\uE00D\u032C"
."\u02ED" "\uE00D\u033F"
."\u02F3" "\uE00D\u0325"
."\u02F7" "\uE00D\u0330"
."\u02BE" "\uE00D\u0357"
."\u02BF" "\uE00D\u0351"
."\u02C2" "\uE00D\u1DFE"
."\u02C3" "\uE00D\u0350"
."\u02C4" "\uE00D\uE002"
."\u02C5" "\uE00D\uE003"
."\u02EF" "\uE00D\uE005"
."\u02F0" "\uE00D\uE004"
."\u02F1" "\uE00D\u0354"
."\u02F2" "\uE00D\u0355"
."\u02FF" "\uE00D\u20EE"
."\u1FED" "\uE00D\u0308\u0300"
."\u1FEE" "\uE00D\u0308\u0301"
."\u1FEF" "\uE00D\u0300"
."\u1FFD" "\uE00D\u0301"
."\u1FFE" "\uE00D\u0314"
."\u1FBD" "\uE00D\u0313"
."\u1FBE" "\uE00D\u0345"
."\u1FBF" "\uE00D\u0313"
."\u1FC0" "\uE00D\u0342"
."\u1FC1" "\uE00D\u0308\u0342"
."\u0384" "\uE00D\u0301"
."\u0385" "\uE00D\u0308\u0301"
."\u037A" "\uE00D\u0345"
."\uAB30" "\u0251\uE001"
."\uA7B8" "U\u0338"
."\uA7B9" "u\u0337"
."\uA7BB" "a\uE010"
."\uA7BD" "i\uE010"
."\uA7BF" "u\uE010"

View file

@ -4301,6 +4301,7 @@ tag = "cv49"
rank = 1 rank = 1
description = "Letter `y` that is fully straight" description = "Letter `y` that is fully straight"
selector.y = "straight" selector.y = "straight"
selector."y/nonCursive" = "straight"
selector."y/sansSerif" = "straight" selector."y/sansSerif" = "straight"
selector.yHookTop = "straight" selector.yHookTop = "straight"
@ -4308,6 +4309,7 @@ selector.yHookTop = "straight"
rank = 2 rank = 2
description = "Letter `y` with straight upper and a tail turns leftward" description = "Letter `y` with straight upper and a tail turns leftward"
selector.y = "straightTurn" selector.y = "straightTurn"
selector."y/nonCursive" = "straightTurn"
selector."y/sansSerif" = "straightTurn" selector."y/sansSerif" = "straightTurn"
selector.yHookTop = "straightTurn" selector.yHookTop = "straightTurn"
@ -4315,6 +4317,7 @@ selector.yHookTop = "straightTurn"
rank = 3 rank = 3
description = "More curly letter `y`, like Iosevka 2.x" description = "More curly letter `y`, like Iosevka 2.x"
selector.y = "curly" selector.y = "curly"
selector."y/nonCursive" = "curly"
selector."y/sansSerif" = "curly" selector."y/sansSerif" = "curly"
selector.yHookTop = "curly" selector.yHookTop = "curly"
@ -4322,6 +4325,7 @@ selector.yHookTop = "curly"
rank = 4 rank = 4
description = "More curly letter `y`, like Iosevka 2.x, with a tail turns leftward" description = "More curly letter `y`, like Iosevka 2.x, with a tail turns leftward"
selector.y = "curlyTurn" selector.y = "curlyTurn"
selector."y/nonCursive" = "curlyTurn"
selector."y/sansSerif" = "curlyTurn" selector."y/sansSerif" = "curlyTurn"
selector.yHookTop = "curlyTurn" selector.yHookTop = "curlyTurn"
@ -4329,6 +4333,7 @@ selector.yHookTop = "curlyTurn"
rank = 5 rank = 5
description = "Cursive-like `y`" description = "Cursive-like `y`"
selector.y = "cursive" selector.y = "cursive"
selector."y/nonCursive" = "straightTurn"
selector."y/sansSerif" = "cursive" selector."y/sansSerif" = "cursive"
selector.yHookTop = "cursive" selector.yHookTop = "cursive"
@ -4336,6 +4341,7 @@ selector.yHookTop = "cursive"
rank = 6 rank = 6
description = "Cursive-like `y` with flat terminal hook" description = "Cursive-like `y` with flat terminal hook"
selector.y = "cursiveFlatHook" selector.y = "cursiveFlatHook"
selector."y/nonCursive" = "straightTurn"
selector."y/sansSerif" = "cursiveFlatHook" selector."y/sansSerif" = "cursiveFlatHook"
selector.yHookTop = "cursiveFlatHook" selector.yHookTop = "cursiveFlatHook"
@ -4343,6 +4349,7 @@ selector.yHookTop = "cursiveFlatHook"
rank = 7 rank = 7
description = "Letter `y` that is fully straight, with motion serifs" description = "Letter `y` that is fully straight, with motion serifs"
selector.y = "straightMotionSerifed" selector.y = "straightMotionSerifed"
selector."y/nonCursive" = "straightMotionSerifed"
selector."y/sansSerif" = "straight" selector."y/sansSerif" = "straight"
selector.yHookTop = "straight" selector.yHookTop = "straight"
@ -4350,6 +4357,7 @@ selector.yHookTop = "straight"
rank = 8 rank = 8
description = "Letter `y` with straight upper and a tail turns leftward, and motion serifs" description = "Letter `y` with straight upper and a tail turns leftward, and motion serifs"
selector.y = "straightTurnMotionSerifed" selector.y = "straightTurnMotionSerifed"
selector."y/nonCursive" = "straightTurnMotionSerifed"
selector."y/sansSerif" = "straightTurn" selector."y/sansSerif" = "straightTurn"
selector.yHookTop = "straightTurn" selector.yHookTop = "straightTurn"
@ -4357,6 +4365,7 @@ selector.yHookTop = "straightTurn"
rank = 9 rank = 9
description = "More curly letter `y`, like Iosevka 2.x, with motion serifs" description = "More curly letter `y`, like Iosevka 2.x, with motion serifs"
selector.y = "curlyMotionSerifed" selector.y = "curlyMotionSerifed"
selector."y/nonCursive" = "curlyMotionSerifed"
selector."y/sansSerif" = "curly" selector."y/sansSerif" = "curly"
selector.yHookTop = "curly" selector.yHookTop = "curly"
@ -4364,6 +4373,7 @@ selector.yHookTop = "curly"
rank = 10 rank = 10
description = "More curly letter `y`, like Iosevka 2.x, with a tail turns leftward and motion serifs" description = "More curly letter `y`, like Iosevka 2.x, with a tail turns leftward and motion serifs"
selector.y = "curlyTurnMotionSerifed" selector.y = "curlyTurnMotionSerifed"
selector."y/nonCursive" = "curlyTurnMotionSerifed"
selector."y/sansSerif" = "curlyTurn" selector."y/sansSerif" = "curlyTurn"
selector.yHookTop = "curlyTurn" selector.yHookTop = "curlyTurn"
@ -4371,6 +4381,7 @@ selector.yHookTop = "curlyTurn"
rank = 11 rank = 11
description = "Cursive-like `y`, with motion serifs" description = "Cursive-like `y`, with motion serifs"
selector.y = "cursiveMotionSerifed" selector.y = "cursiveMotionSerifed"
selector."y/nonCursive" = "straightTurnMotionSerifed"
selector."y/sansSerif" = "cursive" selector."y/sansSerif" = "cursive"
selector.yHookTop = "cursive" selector.yHookTop = "cursive"
@ -4378,6 +4389,7 @@ selector.yHookTop = "cursive"
rank = 12 rank = 12
description = "Cursive-like `y` with flat terminal hook, and motion serifs" description = "Cursive-like `y` with flat terminal hook, and motion serifs"
selector.y = "cursiveFlatHookMotionSerifed" selector.y = "cursiveFlatHookMotionSerifed"
selector."y/nonCursive" = "straightTurnMotionSerifed"
selector."y/sansSerif" = "cursiveFlatHook" selector."y/sansSerif" = "cursiveFlatHook"
selector.yHookTop = "cursiveFlatHook" selector.yHookTop = "cursiveFlatHook"

View file

@ -5,6 +5,8 @@ export async function collectBlockData() {
[[0xe0a0, 0xe0df], "Private Use Area — Powerline"], [[0xe0a0, 0xe0df], "Private Use Area — Powerline"],
[[0xee00, 0xee3f], "Private Use Area — Progress Bar"], [[0xee00, 0xee3f], "Private Use Area — Progress Bar"],
// Missing ranges in UnicodeDataIndex // Missing ranges in UnicodeDataIndex
[[0x10780, 0x107bf], "Latin Extended-F"],
[[0x1df00, 0x1dfff], "Latin Extended-G"],
[[0x1fa70, 0x1faff], "Symbols and Pictographs Extended-A "], [[0x1fa70, 0x1faff], "Symbols and Pictographs Extended-A "],
[[0x1fb00, 0x1fbff], "Symbols for Legacy Computing"] [[0x1fb00, 0x1fbff], "Symbols for Legacy Computing"]
]; ];