From 2386643d1acd994bf957689e1058f22d3104090f Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:09:28 -0400 Subject: [PATCH 01/15] Add five mathematic/logical characters. (#2551) * Add five mathematic/logical characters. * cleanup. --- changes/31.9.2.md | 6 ++++ doc/custom-build.md | 2 ++ packages/font-glyphs/src/meta/aesthetics.ptl | 18 ++++++----- packages/font-glyphs/src/meta/macros.ptl | 26 ++++++++-------- packages/font-glyphs/src/symbol/arrow.ptl | 6 ++-- packages/font-glyphs/src/symbol/math/apl.ptl | 10 +++---- .../font-glyphs/src/symbol/math/circled.ptl | 7 +++++ .../src/symbol/math/large-operators.ptl | 18 +++++++++-- .../font-glyphs/src/symbol/math/logicals.ptl | 30 +++++++++++++++++-- packages/font/src/derive-spacing.mjs | 2 ++ params/parameters.toml | 1 + 11 files changed, 93 insertions(+), 33 deletions(-) create mode 100644 changes/31.9.2.md diff --git a/changes/31.9.2.md b/changes/31.9.2.md new file mode 100644 index 0000000000..a064051462 --- /dev/null +++ b/changes/31.9.2.md @@ -0,0 +1,6 @@ +* Add characters: + - LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`). + - LEFT AND RIGHT TACK (`U+27DB`). + - LONG RIGHT TACK (`U+27DD`). + - LONG LEFT TACK (`U+27DE`). + - UP ARROW THROUGH CIRCLE (`U+29BD`). diff --git a/doc/custom-build.md b/doc/custom-build.md index 68e0264762..43e3df2136 100644 --- a/doc/custom-build.md +++ b/doc/custom-build.md @@ -58,6 +58,8 @@ Inside the plan, top-level properties include: - `fontconfig-mono`: Apply `term` spacing changes and further apply changes to be compatible with FontConfig's Mono spacing, which recognizes a font as monospace if and only if its every non-combining characters having the same width. The changes include: - Completely remove wide glyphs. All non-combining glyphs will be exactly the same width. - As a consequence, the following characters will be **removed**: + - `U+27DD` LONG RIGHT TACK + - `U+27DE` LONG LEFT TACK - `U+27F5` LONG LEFTWARDS ARROW - `U+27F6` LONG RIGHTWARDS ARROW - `U+27F7` LONG LEFT RIGHT ARROW diff --git a/packages/font-glyphs/src/meta/aesthetics.ptl b/packages/font-glyphs/src/meta/aesthetics.ptl index 1328545aa8..71e2e40ab7 100644 --- a/packages/font-glyphs/src/meta/aesthetics.ptl +++ b/packages/font-glyphs/src/meta/aesthetics.ptl @@ -32,6 +32,8 @@ export : define [calculateMetrics para] : begin define PictBot : SymbolMid - para.pictSize * (Width - SB * 2) define BgOpTop : SymbolMid + para.bgopSize * (Width - SB * 2) define BgOpBot : SymbolMid - para.bgopSize * (Width - SB * 2) + define BgTkTop : SymbolMid + para.bgtkSize * (Width - SB * 2) + define BgTkBot : SymbolMid - para.bgtkSize * (Width - SB * 2) define Contrast : fallback para.contrast 1 @@ -75,8 +77,8 @@ export : define [calculateMetrics para] : begin # Weight Control # We will estimate blackness using lower-case 'e' - define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.pow (Width / HalfUPM) 0.5]) Width - define DarknessMockWidth2 : HalfUPM * [Math.pow (Width / HalfUPM) 0.5] + define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.sqrt : Width / HalfUPM]) Width + define DarknessMockWidth2 : HalfUPM * [Math.sqrt : Width / HalfUPM] define [BaseFillRate con] : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2) define [InverseCrowdedness con cow] : [Math.tanh (cow * [Math.sqrt con])] / (cow * [Math.sqrt con]) define [advicestrokeImpl con cow div mul] : begin @@ -188,12 +190,12 @@ export : define [calculateMetrics para] : begin return [object DesignParameters UPM HalfUPM Width SB CAP XH Ascender Descender Contrast SymbolMid ParenTop ParenBot OperTop OperBot TackTop TackBot PlusTop PlusBot PictTop PictBot BgOpTop - BgOpBot Italify Upright Scale Translate ApparentTranslate Rotate GlobalTransform TanSlope - HVContrast Upward Downward Rightward Leftward O OX OXHook Hook AHook SHook RHook JHook - HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos - LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight - CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance - RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 + BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate + GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook + AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize + HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance + AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 + RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index 7a6dbca013..fb21c142b4 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -270,19 +270,19 @@ define-macro glyph-block : syntax-rules define metricImports `[DesignParameters UPM HalfUPM Width SB CAP XH Ascender Descender Contrast SymbolMid ParenTop ParenBot OperTop OperBot TackTop TackBot PlusTop PlusBot - PictTop PictBot BgOpTop BgOpBot Italify Upright Scale Translate ApparentTranslate Rotate - GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook - AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize - PeriodSize HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth - AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 - TBalance TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 - WideWidth2 WideWidth3 WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB - Middle DotRadius PeriodRadius SideJut ArchDepthA ArchDepthB SmallArchDepthA - SmallArchDepthB CorrectionOMidX CorrectionOMidS AdviceStroke AdviceStroke2 - OverlayStroke OperatorStroke GeometryStroke ShoulderFine AdviceGlottalStopArchDepth - StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust MidJutSide MidJutCenter - compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT WideUnicodeT - VERY-FAR TINY] + PictTop PictBot BgOpTop BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate + ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward + Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth + SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut Jut VJut + VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight CThin CThinB + SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance RBalance2 + FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper + EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut + ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS + AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke ShoulderFine + AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust + MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV + NarrowUnicodeT WideUnicodeT VERY-FAR TINY] define spiroFnImports `[g4 g2 corner flat curl virt close end straight g2c cg2 flatc ccurl widths disable-contrast heading unimportant important alsoThru alsoThruThem bezControls quadControls archv arcvh dispiro spiro-outline spiro-collect] diff --git a/packages/font-glyphs/src/symbol/arrow.ptl b/packages/font-glyphs/src/symbol/arrow.ptl index fe9f088842..de66db8620 100644 --- a/packages/font-glyphs/src/symbol/arrow.ptl +++ b/packages/font-glyphs/src/symbol/arrow.ptl @@ -9,7 +9,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 glyph-block-import Common-Derivatives glyph-block-import Symbol-Geometric-Shared : GeometricDim UnicodeWeightGrade GeometricSizes - define arrowHeight : para.arrowHeight * (Width - SB / 2) * [Math.pow MosaicWidthScalar (1 / 3)] + define arrowHeight : para.arrowHeight * (Width - SB / 2) * [Math.cbrt MosaicWidthScalar] define arrowWidth : Math.min (MosaicWidth - SB / 2) arrowHeight define arrowTop : SymbolMid + arrowHeight / 2 define arrowBot : SymbolMid - arrowHeight / 2 @@ -18,7 +18,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 define arrowRSB : MosaicWidth - arrowSB define o : O * 2 - define arrowHeadSize : (Width - SB) * DesignParameters.arrow_size * [Math.pow (arrowWidth / Width) 0.5] - [AdviceStroke 5] / 4 + define arrowHeadSize : (Width - SB) * DesignParameters.arrow_size * [Math.sqrt : arrowWidth / Width] - [AdviceStroke 5] / 4 define arrowSw OperatorStroke define halfArrowSw : arrowSw / 2 define bendArrowHeadSize : mix arrowSw arrowHeadSize 0.75 @@ -1492,4 +1492,4 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 include : FlipAround arrowMidX SymbolMid if (MosaicWidthScalar == 1) : begin - glyph-block-export ArrowShape + glyph-block-export ArrowShape ArrowHead ArrowBar diff --git a/packages/font-glyphs/src/symbol/math/apl.ptl b/packages/font-glyphs/src/symbol/math/apl.ptl index 02b1156075..ef82200c5f 100644 --- a/packages/font-glyphs/src/symbol/math/apl.ptl +++ b/packages/font-glyphs/src/symbol/math/apl.ptl @@ -70,9 +70,9 @@ glyph-block Symbol-Math-APL : begin create-glyph 'apl/iBar' 0x2336 : glyph-proc local l [mix 0 SB (1 / 3)] local r [mix Width RightSB (1 / 3)] - include : HBar.t l r OperTop OperatorStroke - include : HBar.b l r OperBot OperatorStroke - include : VBar.m Middle OperTop OperBot OperatorStroke + include : HBar.t l r TackTop OperatorStroke + include : HBar.b l r TackBot OperatorStroke + include : VBar.m Middle TackTop TackBot OperatorStroke create-glyph 'apl/squish' 0x2337 : glyph-proc local l : mix SB RightSB (1 / 8) @@ -110,8 +110,8 @@ glyph-block Symbol-Math-APL : begin create-glyph 'apl/minus' : glyph-proc include : dispiro widths.center aplBoxSW - flat RightSB [mix OperTop OperBot 0.5] - curl SB [mix OperTop OperBot 0.5] + flat RightSB SymbolMid + curl SB SymbolMid create-glyph 'apl/backSlash' : glyph-proc include : dispiro diff --git a/packages/font-glyphs/src/symbol/math/circled.ptl b/packages/font-glyphs/src/symbol/math/circled.ptl index d87c5a6f84..04bf323491 100644 --- a/packages/font-glyphs/src/symbol/math/circled.ptl +++ b/packages/font-glyphs/src/symbol/math/circled.ptl @@ -8,6 +8,7 @@ glyph-block Symbol-Math-Circled : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Symbol-Math-Frame : MathEnclosureSw + glyph-block-import Symbol-Arrow : ArrowHead ArrowBar define [MakeMathCircled u inner] : begin derive-glyphs "mathCircled{\(inner)}" u inner : function [src gr] @@ -93,3 +94,9 @@ glyph-block Symbol-Math-Circled : begin union VBar.m Middle PlusTop (SymbolMid - eqD) eqS HBar.m (SB + eqS) (RightSB - eqS) (SymbolMid - eqD) eqS + + local arrowTop : mix SymbolMid BgOpTop 1.1 + local arrowBot : mix SymbolMid BgOpBot 1.1 + create-glyph 0x29BD : composite-proc [refer-glyph 'mathO'] : union + ArrowHead Middle arrowBot Middle arrowTop ((RightSB - SB) / 2) + ArrowBar Middle arrowBot Middle arrowTop (MathEnclosureSw / 2) diff --git a/packages/font-glyphs/src/symbol/math/large-operators.ptl b/packages/font-glyphs/src/symbol/math/large-operators.ptl index dc7a417765..3acdfa43f7 100644 --- a/packages/font-glyphs/src/symbol/math/large-operators.ptl +++ b/packages/font-glyphs/src/symbol/math/large-operators.ptl @@ -72,11 +72,25 @@ glyph-block Symbol-Math-Large-Operators : for-width-kinds WideWidth1 create-glyph [MangleName 'Top'] [MangleUnicode 0x27D9] : glyph-proc set-width df.width - include : HBar.t df.leftSB df.rightSB BgOpTop OperatorStroke - include : VBar.m df.middle BgOpTop BgOpBot OperatorStroke + include : HBar.t df.leftSB df.rightSB BgTkTop OperatorStroke + include : VBar.m df.middle BgTkTop BgTkBot OperatorStroke turned [MangleName 'Bot'] [MangleUnicode 0x27D8] [MangleName 'Top'] df.middle SymbolMid + # These operators are always wide. In force-monospace variants they will be deleted + if (MosaicWidthScalar > 1 && !para.forceMonospace) : do + define kLongTackSB : [DivFrame MosaicWidthScalar 4].leftSB / [DivFrame MosaicWidthScalar 2].leftSB + + define l : mix 0 SB kLongTackSB + define r : MosaicWidth - l + + create-glyph 'longVDash' 0x27DD : glyph-proc + set-width MosaicWidth + include : HBar.m l r SymbolMid OperatorStroke + include : VBar.l l TackTop TackBot OperatorStroke + + turned 'longDashV' 0x27DE 'longVDash' (MosaicWidth / 2) SymbolMid + create-glyph [MangleName 'SquareCap'] [MangleUnicode 0x2A05] : glyph-proc set-width df.width include : PiShape df BgOpTop BgOpBot (shrinkRate -- 0) (fine -- OperatorStroke) (doSerif -- false) diff --git a/packages/font-glyphs/src/symbol/math/logicals.ptl b/packages/font-glyphs/src/symbol/math/logicals.ptl index 3bbd9abdb8..be1a240262 100644 --- a/packages/font-glyphs/src/symbol/math/logicals.ptl +++ b/packages/font-glyphs/src/symbol/math/logicals.ptl @@ -115,6 +115,32 @@ glyph-block Symbol-Math-Logicals : begin include : HBar.b SB RightSB 0 OperatorStroke include : VBar.m Middle (SymbolMid * 2) 0 OperatorStroke + create-glyph 'turnedTautologyTautology' 0x27DA : glyph-proc + local df : include : DivFrame para.diversityM 4 + local vs : df.mvs * OperatorStroke / Stroke + local innerSB : Math.min (SB * [Math.min (df.div / 1.5) 1]) df.leftSB + local l : Math.max (df.middle - innerSB - vs / 2) : mix df.middle df.leftSB (1 / 3) + local r : Math.min (df.middle + innerSB + vs / 2) : mix df.middle df.rightSB (1 / 3) + local t : mix SymbolMid top (1 / 3) + local b : mix SymbolMid bot (1 / 3) + include : VBar.m l top bot vs + include : VBar.m r top bot vs + include : HBar.m df.leftSB l t OperatorStroke + include : HBar.m df.leftSB l b OperatorStroke + include : HBar.m r df.rightSB t OperatorStroke + include : HBar.m r df.rightSB b OperatorStroke + + create-glyph 'dashvvdash' 0x27DB : glyph-proc + local df : include : DivFrame para.diversityM 4 + local vs : df.mvs * OperatorStroke / Stroke + local innerSB : Math.min (SB * [Math.min (df.div / 1.5) 1]) df.leftSB + local l : Math.max (df.middle - innerSB - vs / 2) : mix df.middle df.leftSB (1 / 3) + local r : Math.min (df.middle + innerSB + vs / 2) : mix df.middle df.rightSB (1 / 3) + include : VBar.m l top bot vs + include : VBar.m r top bot vs + include : HBar.m df.leftSB l SymbolMid OperatorStroke + include : HBar.m r df.rightSB SymbolMid OperatorStroke + create-glyph 'gleichStark' 0x29E6 : glyph-proc local l : mix Middle SB 1 local r : mix Middle RightSB 1 @@ -195,7 +221,7 @@ glyph-block Symbol-Math-Logicals : begin create-glyph 'barRingAbove' 0x2AEF : glyph-proc local sw : AdviceStroke 4 local radius : (RightSB - SB) / 6 - include : VBar.m Middle (top - radius - sw / 2 ) bot OperatorStroke + include : VBar.m Middle (top - radius - sw / 2) bot OperatorStroke include : difference DotAt Middle top (radius + sw) DotAt Middle top radius @@ -209,4 +235,4 @@ glyph-block Symbol-Math-Logicals : begin create-glyph 'interleave' 0x2AF4 : TripleBarShape Middle top bot OperatorStroke - create-glyph 'bigInterleave' 0x2AFC : TripleBarShape Middle ParenTop ParenBot OperatorStroke + create-glyph 'bigInterleave' 0x2AFC : TripleBarShape Middle BgTkTop BgTkBot OperatorStroke diff --git a/packages/font/src/derive-spacing.mjs b/packages/font/src/derive-spacing.mjs index ff8f033a71..f55178668a 100644 --- a/packages/font/src/derive-spacing.mjs +++ b/packages/font/src/derive-spacing.mjs @@ -73,6 +73,8 @@ async function deriveTerm(font) { // Drop the following "long" characters. async function deriveFixed_DropWideChars(font) { const longCharCodes = [ + 0x27dd, // LONG RIGHT TACK + 0x27de, // LONG LEFT TACK 0x27f5, // LONG LEFTWARDS ARROW 0x27f6, // LONG RIGHTWARDS ARROW 0x27f7, // LONG LEFT RIGHT ARROW diff --git a/params/parameters.toml b/params/parameters.toml index 46de1f28e4..cc02f1bc2d 100644 --- a/params/parameters.toml +++ b/params/parameters.toml @@ -24,6 +24,7 @@ parenSize = 966 # Size of parens, brackets, braces, slashes, etc. operSize = 0.80 # Size of mathematical operators (cups, etc.) tackSize = 0.80 # Size of logical operators (tacks, etc.) bgopSize = 1.10 # Size of "taller" mathematical operators +bgtkSize = 1.10 # Size of "taller" logical operators plusSize = 0.52 # Size of plus and arith symbols pictSize = 1.10 # Size of pictograms arrowHeight = 1.50 # Height of arrows From e51ddb86e94f3eaba55beb23476dfff5b546bc72 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Wed, 16 Oct 2024 19:52:06 -0400 Subject: [PATCH 02/15] Optimize auto-serif behavior of four characters. (#2553) --- .../src/letter/greek/lower-epsilon.ptl | 4 +- .../src/letter/greek/upper-gamma.ptl | 26 ++-- .../font-glyphs/src/letter/latin/lower-g.ptl | 2 +- .../font-glyphs/src/letter/latin/upper-h.ptl | 98 ++++++++------- params/variants.toml | 116 ++++++++++-------- 5 files changed, 129 insertions(+), 117 deletions(-) diff --git a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl index f5d9f5c692..b03df37e33 100644 --- a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl @@ -516,8 +516,8 @@ glyph-block Letter-Greek-Lower-Epsilon : begin include : Base df XH Slabs SHook SmallArchDepthA SmallArchDepthB - select-variant 'AeVolapuk' 0xA79A (follow -- 'a/single') - select-variant 'aeVolapuk' 0xA79B (follow -- 'a/single') + select-variant 'AeVolapuk' 0xA79A (follow -- [conditional-follow SLAB 'a/single/autoSerifed/slab' 'a/single/autoSerifed/sans']) + select-variant 'aeVolapuk' 0xA79B (follow -- [conditional-follow SLAB 'a/single/autoSerifed/slab' 'a/single/autoSerifed/sans']) select-variant 'UeVolapuk' 0xA79E (follow -- 'u') select-variant 'ueVolapuk' 0xA79F (follow -- 'u') diff --git a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl index 6745b0aeb0..10b57add8b 100644 --- a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl +++ b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl @@ -43,7 +43,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin bottomSerifed { SLAB-BOTTOM false } serifed { SLAB-ALL true } - foreach { suffix { slabType doSM } } [Object.entries GammaConfig] : do + foreach { suffix { slabType doST } } [Object.entries GammaConfig] : do create-glyph "grek/Gamma.\(suffix)" : glyph-proc include : MarkSet.capital include : GammaShape CAP 0 slabType @@ -51,11 +51,10 @@ glyph-block Letter-Greek-Upper-Gamma: begin create-glyph "grek/Digamma.\(suffix)" : glyph-proc include : MarkSet.capital include : GammaShape CAP 0 slabType - local yBar : CAP * DesignParameters.upperEBarPos - include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink doSM]) yBar - if doSM : include : tagged 'serifRM' - VSerif.dr (RightSB - [xMidBarShrink doSM]) (yBar + HalfStroke) [mix Stroke VJut 0.5] + include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink doST]) yBar + if doST : include : tagged 'serifRM' + VSerif.dr (RightSB - [xMidBarShrink doST]) (yBar + HalfStroke) [mix Stroke VJut 0.5] create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS @@ -140,18 +139,15 @@ glyph-block Letter-Greek-Upper-Gamma: begin select-variant 'cyrl/ge' 0x491 select-variant 'cyrl/gheMidHook' 0x495 (follow -- 'cyrl/ghe.upright') - create-glyph "grek/digamma.serifless" : glyph-proc + select-variant 'grek/Digamma' 0x3DC (follow -- 'grek/Gamma') + + create-glyph 'grek/digamma' 0x3DD : glyph-proc include : MarkSet.p include : GammaShape XH Descender SLAB-NONE - include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) [mix 0 XH DesignParameters.upperEBarPos] - - create-glyph "grek/digamma.topRightSerifed" : glyph-proc - include [refer-glyph "grek/digamma.serifless"] AS_BASE ALSO_METRICS - include : tagged 'serifRM' - VSerif.dr (RightSB - [xMidBarShrink SLAB]) ([mix 0 XH DesignParameters.upperEBarPos] + HalfStroke) [mix Stroke VJut 0.5] - - select-variant 'grek/Digamma' 0x3DC - select-variant 'grek/digamma' 0x3DD + local yBar : mix 0 XH DesignParameters.upperEBarPos + include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) yBar + if SLAB : include : tagged 'serifRM' + VSerif.dr (RightSB - [xMidBarShrink SLAB]) (yBar + HalfStroke) [mix Stroke VJut 0.5] define [GhaynOverlayBar top] : LetterBarOverlay.l GammaBarLeft (top * (1 - OverlayPos)) diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index 8b5c1a90a6..a9d1f6a3ec 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -207,7 +207,7 @@ glyph-block Letter-Latin-Lower-G : begin link-reduced-variant 'g/sansSerif' 'g' MathSansSerif CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] select-variant "gBar" 0x1E5 (follow -- 'g') - select-variant 'g/single' null (shapeFrom -- 'g') + select-variant 'g/single' null (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) select-variant 'g/hookTopBase' null (shapeFrom -- 'g') diff --git a/packages/font-glyphs/src/letter/latin/upper-h.ptl b/packages/font-glyphs/src/letter/latin/upper-h.ptl index 3126efead7..66fccc93e0 100644 --- a/packages/font-glyphs/src/letter/latin/upper-h.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-h.ptl @@ -25,6 +25,7 @@ glyph-block Letter-Latin-Upper-H : begin define SLAB-ALL 4 define SLAB-ALL-BGR 5 define SLAB-TAILED-CYRILLIC-BGR 6 + define SLAB-SMALL-HETA 7 define [HSerifs slabType t b l r sw] : begin local sf : SerifFrame t b l r (swRef -- [fallback sw Stroke]) @@ -36,6 +37,7 @@ glyph-block Letter-Latin-Upper-H : begin [Just SLAB-ALL] : composite-proc sf.lt.full sf.rt.full sf.lb.full sf.rb.full [Just SLAB-ALL-BGR] : composite-proc sf.lt.outer sf.rt.inner sf.lb.full sf.rb.full [Just SLAB-TAILED-CYRILLIC-BGR] : composite-proc sf.lt.outer sf.rt.inner sf.lb.full + [Just SLAB-SMALL-HETA] : NeedSlab SLAB : begin sf.lt.outer define [HShape l r top _sw] : glyph-proc local sw : fallback _sw Stroke @@ -45,10 +47,25 @@ glyph-block Letter-Latin-Upper-H : begin define [HTurned l r top _sw] : glyph-proc local sw : fallback _sw Stroke + include : LeaningAnchor.Below.VBar.r r include : tagged 'strokeL' : VBar.l l (top * HBarPos - sw / 2) top sw include : tagged 'strokeR' : VBar.r r 0 top sw include : HBar.m (l - O) (r + O) (top * HBarPos) sw + define [HLeftHalf l r top _sw] : glyph-proc + local sw : fallback _sw Stroke + include : LeaningAnchor.Above.VBar.l l + include : LeaningAnchor.Below.VBar.l l + include : tagged 'strokeL' : VBar.l l 0 top sw + include : HBar.m (l - O) (r + O) (top * HBarPos) sw + + define [HRightHalf l r top _sw] : glyph-proc + local sw : fallback _sw Stroke + include : LeaningAnchor.Above.VBar.r r + include : LeaningAnchor.Below.VBar.r r + include : tagged 'strokeR' : VBar.r r 0 top sw + include : HBar.m (l - O) (r + O) (top * HBarPos) sw + define [TailedHShape l r top _sw] : glyph-proc local sw : fallback _sw Stroke include : tagged 'strokeL' : VBar.l l 0 top sw @@ -94,22 +111,22 @@ glyph-block Letter-Latin-Upper-H : begin Math.min OverlayStroke (0.625 * (yt - yb)) define HConfig : object - serifless { HShape HTurned SLAB-NONE } - tailedSerifless { TailedHShape HTurned SLAB-NONE } - topLeftSerifed { HShape HTurned SLAB-TOP-LEFT } - tailedTopLeftSerifed { TailedHShape HTurned SLAB-TOP-LEFT } - topLeftBottomRightSerifed { HShape HTurned SLAB-TOP-LEFT-BOTTOM-RIGHT } - serifed { HShape HTurned SLAB-ALL } - tailedSerifed { TailedHShape HTurned SLAB-TAILED-CYRILLIC } - serifedExceptBottomRight { HShape HTurned SLAB-TAILED-CYRILLIC } - serifedBGR { HShape HTurned SLAB-ALL-BGR } - tailedSerifedBGR { TailedHShape HTurned SLAB-TAILED-CYRILLIC-BGR } + serifless { HShape HTurned HLeftHalf HRightHalf SLAB-NONE } + tailedSerifless { TailedHShape HTurned HLeftHalf HRightHalf SLAB-NONE } + topLeftSerifed { HShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT } + tailedTopLeftSerifed { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT } + topLeftBottomRightSerifed { HShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT-BOTTOM-RIGHT } + serifed { HShape HTurned HLeftHalf HRightHalf SLAB-ALL } + tailedSerifed { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC } + serifedExceptBottomRight { HShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC } + serifedBGR { HShape HTurned HLeftHalf HRightHalf SLAB-ALL-BGR } + tailedSerifedBGR { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC-BGR } define EnGheGheConfig : object serifless false topRightSerifed true - foreach { suffix { Body TurnedBody slabType } } [Object.entries HConfig] : do + foreach { suffix { Body TurnedBody LeftHalfBody RightHalfBody slabType } } [Object.entries HConfig] : do create-glyph "H.\(suffix)" : glyph-proc include : MarkSet.capital include : Body SB RightSB CAP @@ -121,7 +138,6 @@ glyph-block Letter-Latin-Upper-H : begin create-glyph "HTurned.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Below.VBar.r RightSB include : TurnedBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifLB' @@ -133,40 +149,28 @@ glyph-block Letter-Latin-Upper-H : begin create-glyph "leftHalfH.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Above.VBar.l SB - include : LeaningAnchor.Below.VBar.l SB - include : Body SB RightSB CAP - eject-contour 'strokeR' + include : LeftHalfBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifRT' eject-contour 'serifRB' create-glyph "rightHalfH.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Above.VBar.r RightSB - include : LeaningAnchor.Below.VBar.r RightSB - include : Body SB RightSB CAP - eject-contour 'strokeL' + include : RightHalfBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifLT' eject-contour 'serifLB' create-glyph "leftHalfSmcpH.\(suffix)" : glyph-proc include : MarkSet.e - include : LeaningAnchor.Above.VBar.l SB - include : LeaningAnchor.Below.VBar.l SB - include : Body SB RightSB XH - eject-contour 'strokeR' + include : LeftHalfBody SB RightSB XH include : HSerifs slabType XH 0 SB RightSB eject-contour 'serifRT' eject-contour 'serifRB' create-glyph "rightHalfSmcpH.\(suffix)" : glyph-proc include : MarkSet.e - include : LeaningAnchor.Above.VBar.r RightSB - include : LeaningAnchor.Below.VBar.r RightSB - include : Body SB RightSB XH - eject-contour 'strokeL' + include : RightHalfBody SB RightSB XH include : HSerifs slabType XH 0 SB RightSB eject-contour 'serifLT' eject-contour 'serifLB' @@ -236,7 +240,6 @@ glyph-block Letter-Latin-Upper-H : begin include : HSerifs slabType XH 0 df.leftSB xm df.mvs include : MidHook.m df XH - select-variant 'H' 'H' link-reduced-variant 'H/sansSerif' 'H' MathSansSerif select-variant 'H/descBase' (shapeFrom -- 'H') @@ -247,7 +250,6 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/En/descBase' (shapeFrom -- 'H') select-variant 'leftHalfH' 0x2C75 select-variant 'rightHalfH' 0xA7F5 - select-variant 'grek/Heta' 0x370 (shapeFrom -- 'leftHalfH') select-variant 'smcpH' 0x29C (follow -- 'H') select-variant 'leftHalfSmcpH' 0x2C76 (follow -- 'leftHalfH') @@ -255,7 +257,13 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH') select-variant 'cyrl/en/descBase' (shapeFrom -- 'smcpH') select-variant 'cyrl/en.BGR' (shapeFrom -- 'smcpH') - select-variant 'grek/heta' 0x371 (shapeFrom -- 'leftHalfSmcpH') + + alias 'grek/Heta' 0x370 'leftHalfH' + + create-glyph 'grek/heta' 0x371 : glyph-proc + include : MarkSet.e + include : LeftHalfBody SB RightSB XH + include : HSerifs SLAB-SMALL-HETA XH 0 SB RightSB derive-composites 'HDescender' 0x2C67 'H/descBase' [CyrDescender.rSideJut RightSB 0] @@ -280,18 +288,6 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/NjeKomi' 0x050A select-variant 'cyrl/njeKomi' 0x050B - create-glyph 'mathbb/H' 0x210D : glyph-proc - include : MarkSet.capital - include : VBar.l SB 0 CAP BBS - include : VBar.r RightSB 0 CAP BBS - include : VBar.l (SB + BBD) 0 CAP BBS - include : VBar.r (RightSB - BBD) 0 CAP BBS - include : HBar.m (SB + BBD) (RightSB - BBD) (CAP * HBarPos) BBS - include : HBar.t SB (SB + BBD) CAP BBS - include : HBar.t (RightSB - BBD) RightSB CAP BBS - include : HBar.b SB (SB + BBD) 0 BBS - include : HBar.b (RightSB - BBD) RightSB 0 BBS - derive-glyphs 'HCedilla' 0x1E28 'H' : lambda [src gr] : glyph-proc local shift : Width + SB - Middle + [HSwToV HalfStroke] include [refer-glyph 'cedillaBelow'] @@ -317,12 +313,24 @@ glyph-block Letter-Latin-Upper-H : begin derive-glyphs 'cyrl/EnHook' 0x4C7 'cyrl/En/descBase' DProcCapitalHeng derive-glyphs 'cyrl/enHook' 0x4C8 'cyrl/en/descBase' DProcSmallHeng - derive-glyphs 'cyrl/EnLHook' 0x528 'cyrl/En' : lambda [src srl] : glyph-proc + derive-glyphs 'cyrl/EnHookLeft' 0x528 'cyrl/En' : lambda [src srl] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour 'serifLB' include : PalatalHook.lExt SB 0 - derive-glyphs 'cyrl/enLHook' 0x529 'cyrl/en' : lambda [src srl] : glyph-proc + derive-glyphs 'cyrl/enHookLeft' 0x529 'cyrl/en' : lambda [src srl] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour 'serifLB' include : PalatalHook.lExt SB 0 + + create-glyph 'mathbb/H' 0x210D : glyph-proc + include : MarkSet.capital + include : VBar.l SB 0 CAP BBS + include : VBar.r RightSB 0 CAP BBS + include : VBar.l (SB + BBD) 0 CAP BBS + include : VBar.r (RightSB - BBD) 0 CAP BBS + include : HBar.m (SB + BBD) (RightSB - BBD) (CAP * HBarPos) BBS + include : HBar.t SB (SB + BBD) CAP BBS + include : HBar.t (RightSB - BBD) RightSB CAP BBS + include : HBar.b SB (SB + BBD) 0 BBS + include : HBar.b (RightSB - BBD) RightSB 0 BBS diff --git a/params/variants.toml b/params/variants.toml index 44f46e5a08..3ef99c5662 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -967,8 +967,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "serifless" selector.leftHalfH = "serifless" selector.rightHalfH = "serifless" -selector."grek/Heta" = "serifless" -selector."grek/heta" = "serifless" selector.Hwair = "serifless" selector.HHookTop = "serifless" @@ -980,8 +978,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "serifless" -selector."grek/Heta" = "topLeftSerifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookTop = "serifless" @@ -993,8 +989,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "topLeftBottomRightSerifed" -selector."grek/Heta" = "topLeftSerifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookTop = "topLeftBottomRightSerifed" @@ -1006,8 +1000,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "serifed" selector.leftHalfH = "serifed" selector.rightHalfH = "serifed" -selector."grek/Heta" = "serifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "serifedExceptBottomRight" selector.HHookTop = "serifed" @@ -2145,8 +2137,9 @@ selectorAffix."ae/a" = "doubleStorey" selectorAffix."a/sansSerif" = "doubleStorey" selectorAffix."a/rtailBase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey" -selectorAffix."a/single" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."a/single/autoSerifed/slab" = "singleStorey" +selectorAffix."a/single/autoSerifed/sans" = "singleStorey" +selectorAffix.scripta = "singleStorey" [prime.a.variants-buildup.stages.storey.single-storey] rank = 2 @@ -2157,8 +2150,9 @@ selectorAffix."ae/a" = "doubleStorey" selectorAffix."a/sansSerif" = "singleStorey" selectorAffix."a/rtailBase" = "singleStorey" selectorAffix."a/turnABase" = "doubleStorey" -selectorAffix."a/single" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."a/single/autoSerifed/slab" = "singleStorey" +selectorAffix."a/single/autoSerifed/sans" = "singleStorey" +selectorAffix.scripta = "singleStorey" [prime.a.variants-buildup.stages.double-storey-hook."*"] next = "bar" @@ -2172,8 +2166,9 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix.scripta = "" [prime.a.variants-buildup.stages.double-storey-hook.hook-serifed] rank = 2 @@ -2184,8 +2179,9 @@ selectorAffix."ae/a" = "hookInwardSerifed" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "hookInwardSerifed" selectorAffix."a/turnABase" = "hookInwardSerifed" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix.scripta = "" [prime.a.variants-buildup.stages.ear."*"] next = "bar" @@ -2198,8 +2194,9 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix.scripta = "" [prime.a.variants-buildup.stages.ear.earless-corner] rank = 2 @@ -2209,8 +2206,9 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "earlessCorner" selectorAffix."a/rtailBase" = "earlessCorner" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "earlessCorner" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "earlessCorner" +selectorAffix."a/single/autoSerifed/sans" = "earlessCorner" +selectorAffix.scripta = "" [prime.a.variants-buildup.stages.ear.earless-rounded] rank = 3 @@ -2220,8 +2218,9 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "earlessRounded" selectorAffix."a/rtailBase" = "earlessRounded" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "earlessRounded" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "earlessRounded" +selectorAffix."a/single/autoSerifed/sans" = "earlessRounded" +selectorAffix.scripta = "" [prime.a.variants-buildup.stages.bar.serifless] rank = 1 @@ -2232,8 +2231,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifless" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix.scripta = "serifless" [prime.a.variants-buildup.stages.bar.serifed] rank = 2 @@ -2243,8 +2243,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifed" -selectorAffix."a/single" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } -selectorAffix.scripta = "serifed" +selectorAffix."a/single/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } +selectorAffix."a/single/autoSerifed/sans" = "serifed" +selectorAffix.scripta = "serifed" [prime.a.variants-buildup.stages.bar.double-serifed] rank = 3 @@ -2255,8 +2256,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "serifed" -selectorAffix."a/single" = "doubleSerifed" -selectorAffix.scripta = "serifed" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" +selectorAffix."a/single/autoSerifed/sans" = "doubleSerifed" +selectorAffix.scripta = "serifed" [prime.a.variants-buildup.stages.bar.tailed] rank = 4 @@ -2266,8 +2268,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "tailed" -selectorAffix."a/single" = "tailed" -selectorAffix.scripta = "tailed" +selectorAffix."a/single/autoSerifed/slab" = "tailed" +selectorAffix."a/single/autoSerifed/sans" = "tailed" +selectorAffix.scripta = "tailed" [prime.a.variants-buildup.stages.bar.tailed-serifed] rank = 5 @@ -2278,8 +2281,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "tailed" -selectorAffix."a/single" = "tailedSerifed" -selectorAffix.scripta = "tailed" +selectorAffix."a/single/autoSerifed/slab" = "tailedSerifed" +selectorAffix."a/single/autoSerifed/sans" = "tailedSerifed" +selectorAffix.scripta = "tailed" [prime.a.variants-buildup.stages.bar.toothless-corner] rank = 6 @@ -2290,8 +2294,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessCorner" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessCorner" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix.scripta = "serifless" [prime.a.variants-buildup.stages.bar.toothless-rounded] rank = 7 @@ -2302,8 +2307,9 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessRounded" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessRounded" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix.scripta = "serifless" @@ -2748,7 +2754,8 @@ selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" [prime.g.variants-buildup.stages.openness."*"] next = "END" @@ -2761,7 +2768,8 @@ selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" +selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" [prime.g.variants-buildup.stages.openness.open] rank = 1 @@ -2771,7 +2779,8 @@ selectorAffix."g/sansSerif" = "openDoubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" +selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" [prime.g.variants-buildup.stages.storey.single-storey] next = "hook" @@ -2782,7 +2791,8 @@ selectorAffix."g/sansSerif" = "singleStorey" selectorAffix."g/hookTopBase" = "singleStorey" selectorAffix."gScript" = "singleStorey" selectorAffix."gScriptCrossedTail" = "singleStorey" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStorey" +selectorAffix."g/single/autoSerifed/sans" = "singleStorey" [prime.g.variants-buildup.stages.hook."*"] next = "ear" @@ -2795,7 +2805,8 @@ selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" [prime.g.variants-buildup.stages.hook.flat-hook] rank = 2 @@ -2805,7 +2816,8 @@ selectorAffix."g/sansSerif" = "flatHook" selectorAffix."g/hookTopBase" = "flatHook" selectorAffix."gScript" = "flatHook" selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "flatHook" +selectorAffix."g/single/autoSerifed/slab" = "flatHook" +selectorAffix."g/single/autoSerifed/sans" = "flatHook" [prime.g.variants-buildup.stages.ear.serifless] rank = 1 @@ -2814,7 +2826,8 @@ selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "serifless" +selectorAffix."g/single/autoSerifed/slab" = "serifless" +selectorAffix."g/single/autoSerifed/sans" = "serifless" [prime.g.variants-buildup.stages.ear.serifed] rank = 2 @@ -2824,7 +2837,8 @@ selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "serifed" +selectorAffix."g/single/autoSerifed/slab" = "serifed" +selectorAffix."g/single/autoSerifed/sans" = "serifed" [prime.g.variants-buildup.stages.ear.earless-corner] rank = 3 @@ -2834,7 +2848,8 @@ selectorAffix."g/sansSerif" = "earlessCorner" selectorAffix."g/hookTopBase" = "earlessCornerHTB" selectorAffix."gScript" = "scriptCut" selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "earlessCorner" +selectorAffix."g/single/autoSerifed/slab" = "earlessCorner" +selectorAffix."g/single/autoSerifed/sans" = "earlessCorner" [prime.g.variants-buildup.stages.ear.earless-rounded] rank = 4 @@ -2844,7 +2859,8 @@ selectorAffix."g/sansSerif" = "earlessRounded" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "earlessRounded" +selectorAffix."g/single/autoSerifed/slab" = "earlessRounded" +selectorAffix."g/single/autoSerifed/sans" = "earlessRounded" @@ -5538,8 +5554,6 @@ rank = 1 description = "Greek capital Gamma (`Γ`) without serifs" selector."grek/Gamma" = "serifless" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "serifless" -selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "serifless" selector."cyrl/ghe.upright" = "serifless" selector."cyrl/Ge" = "serifless" @@ -5552,8 +5566,6 @@ rank = 2 description = "Greek capital Gamma (`Γ`) with serifs at top right" selector."grek/Gamma" = "topRightSerifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "topRightSerifed" -selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "topRightSerifed" selector."cyrl/ghe.upright" = "topRightSerifed" selector."cyrl/Ge" = "serifless" @@ -5566,8 +5578,6 @@ rank = 3 description = "Greek capital Gamma (`Γ`) with bottom serif" selector."grek/Gamma" = "bottomSerifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "bottomSerifed" -selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "bottomSerifed" selector."cyrl/ghe.upright" = "serifless" selector."cyrl/Ge" = "bottomSerifed" @@ -5580,8 +5590,6 @@ rank = 4 description = "Greek capital Gamma (`Γ`) with motion serifs at top and bottom" selector."grek/Gamma" = "serifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "serifed" -selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "serifed" selector."cyrl/ghe.upright" = "serifed" selector."cyrl/Ge" = "serifed" From 50f37ec7161ec1fa713e03e08f34cba111048fa9 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:43:47 -0400 Subject: [PATCH 03/15] Cleanup of #2553 . (#2554) --- .../font-glyphs/src/letter/latin/lower-a.ptl | 9 ++-- .../font-glyphs/src/letter/latin/lower-g.ptl | 5 +- params/variants.toml | 48 ++++++++++++------- 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/packages/font-glyphs/src/letter/latin/lower-a.ptl b/packages/font-glyphs/src/letter/latin/lower-a.ptl index 22029c3171..7ee90c87ac 100644 --- a/packages/font-glyphs/src/letter/latin/lower-a.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-a.ptl @@ -275,10 +275,11 @@ glyph-block Letter-Latin-Lower-A : begin derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) - select-variant 'scripta' 0x0251 - select-variant 'largescripta' 0x2C6D (follow -- 'scripta') - select-variant 'invscripta' 0xAB64 (follow -- 'scripta') - derive-composites 'alphaRetroflexHook' 0x1D90 'scripta.singleStoreySerifless' + select-variant 'scripta' 0x251 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + select-variant 'largescripta' 0x2C6D (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + select-variant 'invscripta' 0xAB64 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + + derive-composites 'scriptaRetroflexHook' 0x1D90 'scripta.singleStoreySerifless' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) CreateTurnedLetter 'turnscripta' 0x252 'scripta' HalfAdvance (XH / 2) diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index a9d1f6a3ec..f71a014739 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -207,7 +207,6 @@ glyph-block Letter-Latin-Lower-G : begin link-reduced-variant 'g/sansSerif' 'g' MathSansSerif CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] select-variant "gBar" 0x1E5 (follow -- 'g') - select-variant 'g/single' null (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) select-variant 'g/hookTopBase' null (shapeFrom -- 'g') @@ -216,8 +215,8 @@ glyph-block Letter-Latin-Lower-G : begin select-variant 'gScriptPalatalHook' 0x1D83 (follow -- 'gScript') select-variant 'gScriptCrossedTail' 0xAB36 - alias 'cyrl/de.BGR' null 'g/single' - alias 'cyrl/de.SRB' null 'g/single' + select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) + alias 'cyrl/de.SRB' null 'cyrl/de.BGR' derive-glyphs 'gHookTop' 0x260 "g/hookTopBase" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS diff --git a/params/variants.toml b/params/variants.toml index 3ef99c5662..407e7177fc 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2139,7 +2139,8 @@ selectorAffix."a/rtailBase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/single/autoSerifed/slab" = "singleStorey" selectorAffix."a/single/autoSerifed/sans" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."scripta/autoSerifed/slab" = "singleStorey" +selectorAffix."scripta/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.storey.single-storey] rank = 2 @@ -2152,7 +2153,8 @@ selectorAffix."a/rtailBase" = "singleStorey" selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/single/autoSerifed/slab" = "singleStorey" selectorAffix."a/single/autoSerifed/sans" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."scripta/autoSerifed/slab" = "singleStorey" +selectorAffix."scripta/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.double-storey-hook."*"] next = "bar" @@ -2168,7 +2170,8 @@ selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" selectorAffix."a/single/autoSerifed/slab" = "" selectorAffix."a/single/autoSerifed/sans" = "" -selectorAffix.scripta = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.double-storey-hook.hook-serifed] rank = 2 @@ -2181,7 +2184,8 @@ selectorAffix."a/rtailBase" = "hookInwardSerifed" selectorAffix."a/turnABase" = "hookInwardSerifed" selectorAffix."a/single/autoSerifed/slab" = "" selectorAffix."a/single/autoSerifed/sans" = "" -selectorAffix.scripta = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear."*"] next = "bar" @@ -2196,7 +2200,8 @@ selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" selectorAffix."a/single/autoSerifed/slab" = "" selectorAffix."a/single/autoSerifed/sans" = "" -selectorAffix.scripta = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-corner] rank = 2 @@ -2208,7 +2213,8 @@ selectorAffix."a/rtailBase" = "earlessCorner" selectorAffix."a/turnABase" = "" selectorAffix."a/single/autoSerifed/slab" = "earlessCorner" selectorAffix."a/single/autoSerifed/sans" = "earlessCorner" -selectorAffix.scripta = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-rounded] rank = 3 @@ -2220,7 +2226,8 @@ selectorAffix."a/rtailBase" = "earlessRounded" selectorAffix."a/turnABase" = "" selectorAffix."a/single/autoSerifed/slab" = "earlessRounded" selectorAffix."a/single/autoSerifed/sans" = "earlessRounded" -selectorAffix.scripta = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.bar.serifless] rank = 1 @@ -2233,7 +2240,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifless" selectorAffix."a/single/autoSerifed/slab" = "serifless" selectorAffix."a/single/autoSerifed/sans" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifless" +selectorAffix."scripta/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.serifed] rank = 2 @@ -2245,7 +2253,8 @@ selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifed" selectorAffix."a/single/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } selectorAffix."a/single/autoSerifed/sans" = "serifed" -selectorAffix.scripta = "serifed" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.double-serifed] rank = 3 @@ -2258,7 +2267,8 @@ selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "serifed" selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/single/autoSerifed/sans" = "doubleSerifed" -selectorAffix.scripta = "serifed" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.tailed] rank = 4 @@ -2268,9 +2278,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "tailed" -selectorAffix."a/single/autoSerifed/slab" = "tailed" +selectorAffix."a/single/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "tailedSerifed", else = "tailed" } selectorAffix."a/single/autoSerifed/sans" = "tailed" -selectorAffix.scripta = "tailed" +selectorAffix."scripta/autoSerifed/slab" = "tailed" +selectorAffix."scripta/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.tailed-serifed] rank = 5 @@ -2283,7 +2294,8 @@ selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "tailed" selectorAffix."a/single/autoSerifed/slab" = "tailedSerifed" selectorAffix."a/single/autoSerifed/sans" = "tailedSerifed" -selectorAffix.scripta = "tailed" +selectorAffix."scripta/autoSerifed/slab" = "tailed" +selectorAffix."scripta/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.toothless-corner] rank = 6 @@ -2294,9 +2306,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessCorner" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessCorner" -selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/single/autoSerifed/sans" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.toothless-rounded] rank = 7 @@ -2307,9 +2320,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessRounded" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessRounded" -selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" selectorAffix."a/single/autoSerifed/sans" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifless" From 0c4234540938c7d15f10d1f5f9dbd65ea09b78c2 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sun, 20 Oct 2024 17:27:04 -0400 Subject: [PATCH 04/15] Optimize serifed `semi-chancery` variants for `x`. (#2557) * Optimize serifed semi-chancery variants for `x`. * cleanup * fix mistakes. * Cleanup. --- changes/31.9.2.md | 1 + packages/font-glyphs/src/letter/latin/x.ptl | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/changes/31.9.2.md b/changes/31.9.2.md index a064051462..a9877b9338 100644 --- a/changes/31.9.2.md +++ b/changes/31.9.2.md @@ -4,3 +4,4 @@ - LONG RIGHT TACK (`U+27DD`). - LONG LEFT TACK (`U+27DE`). - UP ARROW THROUGH CIRCLE (`U+29BD`). +* Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). diff --git a/packages/font-glyphs/src/letter/latin/x.ptl b/packages/font-glyphs/src/letter/latin/x.ptl index fd4a91a610..886e43e78a 100644 --- a/packages/font-glyphs/src/letter/latin/x.ptl +++ b/packages/font-glyphs/src/letter/latin/x.ptl @@ -51,7 +51,7 @@ glyph-block Letter-Latin-X : begin include : HalfXStrand stb slab xLeft yLeft xMid yMid turn pStraight tension _sw (-0.001) include : HalfXStrand stb slab xRight yRight xMid yMid turn pStraight tension _sw (-0.001) - define [XChanceryStrand sign leftX leftY rightX rightY fHalf _sw] : begin + define [XChanceryStrand sign fSlab leftX leftY rightX rightY fHalf _sw] : begin local sw : fallback _sw Stroke local blendK1X : StrokeWidthBlend 0.58 0.65 local blendK1Y 0.2 @@ -63,17 +63,22 @@ glyph-block Letter-Latin-X : begin local fine : [AdviceStroke 3] * (sw / Stroke) + local leftXExt : leftX - [if fSlab SideJut 0] + local rightXExt : rightX + [if fSlab SideJut 0] + return : dispiro if fHalf flat [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine] list - straight.right.start leftX (leftY - sign * sw / 2) [widths.center sw] + flat leftXExt (leftY - sign * sw / 2) [widths.center.heading sw Rightward] + curl (leftX + TINY) (leftY - sign * sw / 2) [widths.center.heading sw Rightward] alsoThruThem {{blendK1X blendK1Y} {blendK2X blendK2Y}} flat [mix leftX rightX pStraightX] [mix leftY rightY pStraightY] [widths.center : mix sw fine 0.5] corner [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine] curl [mix leftX rightX (1 - pStraightX)] [mix leftY rightY (1 - pStraightY)] [widths.center : mix sw fine 0.5] alsoThruThem {{(1 - blendK2X) (1 - blendK2Y)} {(1 - blendK1X) (1 - blendK1Y)}} - straight.right.end rightX (rightY + sign * sw / 2) [widths.center sw] + flat (rightX - TINY) (rightY + sign * sw / 2) [widths.center.heading sw Rightward] + curl rightXExt (rightY + sign * sw / 2) [widths.center.heading sw Rightward] glyph-block-export XCursiveHalfShape define [XCursiveHalfShape] : with-params [ @@ -142,7 +147,7 @@ glyph-block Letter-Latin-X : begin include : match stroke1 [Just STROKE-STRAIGHT] : XStrand true fSlab df.leftSB bot df.rightSB top turn 0.4 tension sw [Just STROKE-CURLY] : XStrand false fSlab df.leftSB bot df.rightSB top turn 0.4 tension sw - [Just STROKE-CHANCERY] : XChanceryStrand (-1) df.leftSB bot df.rightSB top false sw + [Just STROKE-CHANCERY] : XChanceryStrand (-1) fSlab df.leftSB bot df.rightSB top false sw ([Just STROKE-CURSIVE] || [Just STROKE-CURSIVE-FLAT]) : composite-proc XCursiveHalfShape top bot df.middle df.rightSB swCoEnd -- swCursiveCoEnd @@ -154,7 +159,7 @@ glyph-block Letter-Latin-X : begin include : match stroke2 [Just STROKE-STRAIGHT] : XStrand true fSlab df.leftSB top df.rightSB bot turn 0.4 tension sw [Just STROKE-CURLY] : XStrand false fSlab df.leftSB top df.rightSB bot turn 0.4 tension sw - [Just STROKE-CHANCERY] : XChanceryStrand (+1) df.leftSB top df.rightSB bot false sw + [Just STROKE-CHANCERY] : XChanceryStrand (+1) fSlab df.leftSB top df.rightSB bot false sw [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB swCoEnd -- swCursiveCoEnd swEnd -- swCursiveEnd @@ -168,12 +173,12 @@ glyph-block Letter-Latin-X : begin include : match stroke1 [Just STROKE-STRAIGHT] : HalfXStrand true fSlab df.rightSB top df.middle midy turn 0.4 tension sw [Just STROKE-CURLY] : HalfXStrand false fSlab df.rightSB top df.middle midy turn 0.4 tension sw - [Just STROKE-CHANCERY] : XChanceryStrand (-1) df.leftSB bot df.rightSB top true sw + [Just STROKE-CHANCERY] : XChanceryStrand (-1) fSlab df.leftSB bot df.rightSB top true sw __ : glyph-proc include : match stroke2 [Just STROKE-STRAIGHT] : HalfXStrand true fSlab df.rightSB bot df.middle midy turn 0.4 tension sw [Just STROKE-CURLY] : HalfXStrand false fSlab df.rightSB bot df.middle midy turn 0.4 tension sw - [Just STROKE-CHANCERY] : XChanceryStrand (+1) df.leftSB top df.rightSB bot true sw + [Just STROKE-CHANCERY] : XChanceryStrand (+1) fSlab df.leftSB top df.rightSB bot true sw [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB swCoEnd -- swCursiveCoEnd swEnd -- swCursiveEnd From 4605906a23075d67e0861939f8cf74c97f9bb172 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Wed, 23 Oct 2024 14:22:15 -0400 Subject: [PATCH 05/15] =?UTF-8?q?Add=20ccmp=20substitutions=20for=20`?= =?UTF-8?q?=C7=B1`/`=C7=B2`/`=C7=B3`=20with=20caron.=20(#2558)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/font-glyphs/src/auto-build/composite.ptl | 11 ++++++++--- .../font-glyphs/src/auto-build/recursive-build.ptl | 2 +- packages/font-otl/src/gsub-ccmp.ptl | 13 ++++++++++++- packages/glyph/src/relation.mjs | 1 + 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/font-glyphs/src/auto-build/composite.ptl b/packages/font-glyphs/src/auto-build/composite.ptl index 327e270322..c7e8c63a8b 100644 --- a/packages/font-glyphs/src/auto-build/composite.ptl +++ b/packages/font-glyphs/src/auto-build/composite.ptl @@ -2,7 +2,7 @@ $$include '../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" -import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv IsCompositeOrLigature NLDAcuteVariant] from "@iosevka/glyph/relation" +import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv IsCompositeOrLigature NLDAcuteVariant HBSCaronVariant] from "@iosevka/glyph/relation" import [hashGeometry] from "@iosevka/geometry" import [Transform] from "@iosevka/geometry/transform" extern Map @@ -836,7 +836,7 @@ glyph-block AutoBuild-Enclosure : begin list 0x2789 {'one/sansSerif.lnum' 'zero.lnum'} WideWidth1 list 0x1F16D {'C' 'C'} WideWidth2 list 0x1F12D {'C' 'D'} WideWidth1 - list 0x1F12E {'W' 'z'} WideWidth1 + list 0x1F12E {'W' 'smcpZ'} WideWidth1 foreach [j : range 10 till 20] : compositions.push : list (0x2460 + j - 1) [digitGlyphNames j] WideWidth1 foreach [j : range 21 till 35] : compositions.push : list (0x3251 + j - 21) [digitGlyphNames j] WideWidth1 foreach [j : range 36 till 50] : compositions.push : list (0x32B1 + j - 36) [digitGlyphNames j] WideWidth1 @@ -1445,7 +1445,7 @@ glyph-block Autobuild-Ligatures : begin list 0xEF11 { 'IAcute' 'JAcute' } list 0xEF12 { 'iAcute' 'jAcute' } - # Link Gr for acuted variants + # Link Gr for acute variants NLDAcuteVariant.set [glyphStore.queryByUnicodeEnsured 0x132] [glyphStore.queryNameByUnicodeEnsured 0xEF11] NLDAcuteVariant.set [glyphStore.queryByUnicodeEnsured 0x133] [glyphStore.queryNameByUnicodeEnsured 0xEF12] @@ -1471,6 +1471,11 @@ glyph-block Autobuild-Ligatures : begin list 0x2116 { 'N' 'numeroRightHalf' } list 0x1F190 { 'D' 'J' } WideWidth1 + # Link Gr for caron variants + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F1] [glyphStore.queryNameByUnicodeEnsured 0x1C4] + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F2] [glyphStore.queryNameByUnicodeEnsured 0x1C5] + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F3] [glyphStore.queryNameByUnicodeEnsured 0x1C6] + createLigatures 'romanNumerals1' 1 1 1 1 0 : list list 0x2160 { 'I' } list 0x2164 { 'V' } diff --git a/packages/font-glyphs/src/auto-build/recursive-build.ptl b/packages/font-glyphs/src/auto-build/recursive-build.ptl index d4797b6612..a54c5d0c2b 100644 --- a/packages/font-glyphs/src/auto-build/recursive-build.ptl +++ b/packages/font-glyphs/src/auto-build/recursive-build.ptl @@ -16,7 +16,7 @@ glyph-block Recursive-Build : begin define [MiniatureParaT] : with-params [pp crowd scale [sbscale (Width / UPM)] [mono false] [mono2 false] [forceUpright false]] : begin local forkedPara : Object.assign {.} pp - forkedPara.stroke = [AdviceStroke crowd : Math.pow [clamp 0 1 (HalfUPM / Width)] 0.5] / scale + forkedPara.stroke = [AdviceStroke crowd : Math.sqrt : clamp 0 1 (HalfUPM / Width)] / scale forkedPara.dotSize = pp.dotSize * forkedPara.stroke / pp.stroke forkedPara.periodSize = pp.periodSize * forkedPara.stroke / pp.stroke forkedPara.sb = SB * sbscale diff --git a/packages/font-otl/src/gsub-ccmp.ptl b/packages/font-otl/src/gsub-ccmp.ptl index c0650ae173..d0facb28ea 100644 --- a/packages/font-otl/src/gsub-ccmp.ptl +++ b/packages/font-otl/src/gsub-ccmp.ptl @@ -1,7 +1,7 @@ $$include './meta/macros.ptl' import [UkMapToLookup UkLigatureToLookup] from "./table-util.mjs" -import [Dotless TieMark TieGlyph OgonekTrY IsSuperscript IsSubscript LeaningMark LeaningMarkSpacer NLDAcuteVariant] from "@iosevka/glyph/relation" +import [Dotless TieMark TieGlyph OgonekTrY IsSuperscript IsSubscript LeaningMark LeaningMarkSpacer NLDAcuteVariant HBSCaronVariant] from "@iosevka/glyph/relation" import as UnicodeKnowledge from "@iosevka/font-glyphs/unicode-knowledge" extern Map @@ -132,6 +132,17 @@ export : define [buildCCMP gsub glyphStore markGlyphs] : begin .type 'gsub_ligature' .substitutions substitutions + Ccmp-Group "DZ-Caron composites" : begin + local substitutions {} + foreach { gn g } [glyphStore.namedEntries] : begin + local hbsVariant : HBSCaronVariant.get g + if hbsVariant : substitutions.push + object [from : list gn 'caronAbove'] [to hbsVariant] + + export-lookup : gsub.createLookup : object + .type 'gsub_ligature' + .substitutions substitutions + Ccmp-Group "Leaning Mark Trasnform" : begin define LeaningAnchorMap : list list 'above' 'leaningAbove' diff --git a/packages/glyph/src/relation.mjs b/packages/glyph/src/relation.mjs index 8e2db1aca1..03f13a2f43 100644 --- a/packages/glyph/src/relation.mjs +++ b/packages/glyph/src/relation.mjs @@ -24,6 +24,7 @@ export const TieMark = LinkedGlyphProp("TieMark"); export const LeaningMark = LinkedGlyphProp("LeaningMark"); export const LeaningMarkSpacer = LinkedGlyphProp("LeaningMarkSpacer"); export const NLDAcuteVariant = LinkedGlyphProp("NLDAcuteVariant"); +export const HBSCaronVariant = LinkedGlyphProp("HBSCaronVariant"); export const LocalizedForm = { SRB: { From 69dadb18107576354ce0ddf0caa9a66aafb895eb Mon Sep 17 00:00:00 2001 From: Logo <21302803+Logo121@users.noreply.github.com> Date: Thu, 24 Oct 2024 10:05:39 +0800 Subject: [PATCH 06/15] Draft: Armenian Letters (again) (#2556) * split * more fixes, 2 new char * reapplying changes * finetune lower keh * Adjust jut sizes * balance lower liun and to (?) * cleanup * move aliases * modify flatside * dash, changelog * changelog fix, lower-q-group fix * fix changelog --------- Co-authored-by: Belleve --- changes/{31.9.2.md => 32.0.0.md} | 4 + changes/{ => archives/31.x}/31.0.0.md | 0 changes/{ => archives/31.x}/31.1.0.md | 0 changes/{ => archives/31.x}/31.2.0.md | 0 changes/{ => archives/31.x}/31.3.0.md | 0 changes/{ => archives/31.x}/31.4.0.md | 0 changes/{ => archives/31.x}/31.5.0.md | 0 changes/{ => archives/31.x}/31.6.0.md | 0 changes/{ => archives/31.x}/31.6.1.md | 0 changes/{ => archives/31.x}/31.7.0.md | 0 changes/{ => archives/31.x}/31.7.1.md | 0 changes/{ => archives/31.x}/31.8.0.md | 0 changes/{ => archives/31.x}/31.9.0.md | 0 changes/{ => archives/31.x}/31.9.1.md | 0 packages/font-glyphs/src/common/shapes.ptl | 148 +++++--- packages/font-glyphs/src/index.ptl | 1 + packages/font-glyphs/src/letter/armenian.ptl | 25 ++ .../src/letter/armenian/aliases.ptl | 23 ++ .../font-glyphs/src/letter/armenian/ca.ptl | 66 ++++ .../src/letter/armenian/eh-liun-hiun.ptl | 79 ++++ .../font-glyphs/src/letter/armenian/feh.ptl | 43 +++ .../src/letter/armenian/hook-group.ptl | 130 +++++++ .../font-glyphs/src/letter/armenian/keh.ptl | 53 +++ .../src/letter/armenian/lower-dza-cheh.ptl | 80 ++++ .../src/letter/armenian/lower-q-group.ptl | 27 ++ .../src/letter/armenian/lower-sha-group.ptl | 80 ++++ .../src/letter/armenian/lower-u-group.ptl | 347 ++++++++++++++++++ .../src/letter/armenian/shared.ptl | 97 +++++ .../font-glyphs/src/letter/armenian/to.ptl | 63 ++++ .../src/letter/armenian/upper-cheh.ptl | 38 ++ .../src/letter/armenian/upper-co.ptl | 37 ++ .../src/letter/armenian/upper-dza-group.ptl | 66 ++++ .../src/letter/armenian/upper-gim-group.ptl | 72 ++++ .../src/letter/armenian/upper-ho.ptl | 43 +++ .../src/letter/armenian/upper-u-group.ptl | 52 +++ .../src/letter/armenian/upper-xeh.ptl | 27 ++ .../src/letter/armenian/upper-yi.ptl | 24 ++ .../src/letter/armenian/upper-za-group.ptl | 63 ++++ .../font-glyphs/src/letter/latin/lower-q.ptl | 5 +- .../font-glyphs/src/letter/latin/upper-q.ptl | 1 + packages/font-glyphs/src/letter/shared.ptl | 71 ++-- packages/font-glyphs/src/meta/macros.ptl | 2 +- .../src/symbol/punctuation/dashes.ptl | 8 + .../src/symbol/punctuation/small.ptl | 1 + params/variants.toml | 22 +- 45 files changed, 1688 insertions(+), 110 deletions(-) rename changes/{31.9.2.md => 32.0.0.md} (57%) rename changes/{ => archives/31.x}/31.0.0.md (100%) rename changes/{ => archives/31.x}/31.1.0.md (100%) rename changes/{ => archives/31.x}/31.2.0.md (100%) rename changes/{ => archives/31.x}/31.3.0.md (100%) rename changes/{ => archives/31.x}/31.4.0.md (100%) rename changes/{ => archives/31.x}/31.5.0.md (100%) rename changes/{ => archives/31.x}/31.6.0.md (100%) rename changes/{ => archives/31.x}/31.6.1.md (100%) rename changes/{ => archives/31.x}/31.7.0.md (100%) rename changes/{ => archives/31.x}/31.7.1.md (100%) rename changes/{ => archives/31.x}/31.8.0.md (100%) rename changes/{ => archives/31.x}/31.9.0.md (100%) rename changes/{ => archives/31.x}/31.9.1.md (100%) create mode 100644 packages/font-glyphs/src/letter/armenian.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/aliases.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/ca.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/feh.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/hook-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/keh.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/lower-q-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/lower-u-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/shared.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/to.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-cheh.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-co.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-ho.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-u-group.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-xeh.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-yi.ptl create mode 100644 packages/font-glyphs/src/letter/armenian/upper-za-group.ptl diff --git a/changes/31.9.2.md b/changes/32.0.0.md similarity index 57% rename from changes/31.9.2.md rename to changes/32.0.0.md index a9877b9338..f7872a0c36 100644 --- a/changes/31.9.2.md +++ b/changes/32.0.0.md @@ -4,4 +4,8 @@ - LONG RIGHT TACK (`U+27DD`). - LONG LEFT TACK (`U+27DE`). - UP ARROW THROUGH CIRCLE (`U+29BD`). +* Add Armenian letters: + - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN CAPITAL LETTER FEH (`U+0556`). + - ARMENIAN SMALL LETTER TURNED AYB (`U+0560`) ... ARMENIAN HYPHEN (`U+058A`). + - ARMENIAN DRAM SIGN (`U+058F`). * Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). diff --git a/changes/31.0.0.md b/changes/archives/31.x/31.0.0.md similarity index 100% rename from changes/31.0.0.md rename to changes/archives/31.x/31.0.0.md diff --git a/changes/31.1.0.md b/changes/archives/31.x/31.1.0.md similarity index 100% rename from changes/31.1.0.md rename to changes/archives/31.x/31.1.0.md diff --git a/changes/31.2.0.md b/changes/archives/31.x/31.2.0.md similarity index 100% rename from changes/31.2.0.md rename to changes/archives/31.x/31.2.0.md diff --git a/changes/31.3.0.md b/changes/archives/31.x/31.3.0.md similarity index 100% rename from changes/31.3.0.md rename to changes/archives/31.x/31.3.0.md diff --git a/changes/31.4.0.md b/changes/archives/31.x/31.4.0.md similarity index 100% rename from changes/31.4.0.md rename to changes/archives/31.x/31.4.0.md diff --git a/changes/31.5.0.md b/changes/archives/31.x/31.5.0.md similarity index 100% rename from changes/31.5.0.md rename to changes/archives/31.x/31.5.0.md diff --git a/changes/31.6.0.md b/changes/archives/31.x/31.6.0.md similarity index 100% rename from changes/31.6.0.md rename to changes/archives/31.x/31.6.0.md diff --git a/changes/31.6.1.md b/changes/archives/31.x/31.6.1.md similarity index 100% rename from changes/31.6.1.md rename to changes/archives/31.x/31.6.1.md diff --git a/changes/31.7.0.md b/changes/archives/31.x/31.7.0.md similarity index 100% rename from changes/31.7.0.md rename to changes/archives/31.x/31.7.0.md diff --git a/changes/31.7.1.md b/changes/archives/31.x/31.7.1.md similarity index 100% rename from changes/31.7.1.md rename to changes/archives/31.x/31.7.1.md diff --git a/changes/31.8.0.md b/changes/archives/31.x/31.8.0.md similarity index 100% rename from changes/31.8.0.md rename to changes/archives/31.x/31.8.0.md diff --git a/changes/31.9.0.md b/changes/archives/31.x/31.9.0.md similarity index 100% rename from changes/31.9.0.md rename to changes/archives/31.x/31.9.0.md diff --git a/changes/31.9.1.md b/changes/archives/31.x/31.9.1.md similarity index 100% rename from changes/31.9.1.md rename to changes/archives/31.x/31.9.1.md diff --git a/packages/font-glyphs/src/common/shapes.ptl b/packages/font-glyphs/src/common/shapes.ptl index 21b4550db6..ba14f4a796 100644 --- a/packages/font-glyphs/src/common/shapes.ptl +++ b/packages/font-glyphs/src/common/shapes.ptl @@ -192,34 +192,17 @@ glyph-block CommonShapes : begin local width : fallback _width Stroke local ada : fallback _ada SmallArchDepthA local adb : fallback _adb SmallArchDepthB - if (u - d > ada + adb) : then : begin - return : sink - widths width 0 - arch.lhs.centerAt.rtl.t middle u (sw -- width) - archv - flat (l + OX) (u - ada) - curl (l + OX) (d + adb) - arcvh - arch.lhs.centerAt.ltr.b middle d (sw -- width) - archv - flat (r - OX) (d + ada) - curl (r - OX) (u - adb) - arcvh - close - : else : begin - local ymiddlea : mix d u (adb / (ada + adb)) - local ymiddleb : mix d u (ada / (ada + adb)) - return : sink - widths width 0 - arch.lhs.centerAt.rtl.t middle u (sw -- width) - archv - g4 (l + OX) ymiddlea - arcvh - arch.lhs.centerAt.ltr.b middle d (sw -- width) - archv - g4 (r - OX) ymiddleb - arcvh - close + return : sink + widths width 0 + arch.lhs.centerAt.rtl.t middle u (sw -- width) + archv + flatside.ld l d u ada adb + arcvh + arch.lhs.centerAt.ltr.b middle d (sw -- width) + archv + flatside.ru r d u ada adb + arcvh + close glyph-block-export OShape define [OShape u d l r _width _ada _adb] : OShapeT dispiro u d l r _width _ada _adb @@ -235,39 +218,20 @@ glyph-block CommonShapes : begin local width : fallback _width Stroke local ada : fallback _ada SmallArchDepthA local adb : fallback _adb SmallArchDepthB - if (u - d > ada + adb) : then : begin - include : dispiro - widths.lhs width - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) - archv - flat (l + OX) (u - ada) - curl (l + OX) (d + adb) - arcvh - arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) - archv - flat (r - OX) (d + ada) - curl (r - OX) (u - adb) - arcvh - arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) - : else : begin - local ymiddlea : mix d u (adb / (ada + adb)) - local ymiddleb : mix d u (ada / (ada + adb)) - include : dispiro - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) - archv - g4 (l + OX) ymiddlea - arcvh - arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) - archv - g4 (r - OX) ymiddleb - arcvh - arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) + include : dispiro + widths.lhs width + arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) + archv + flatside.ld l d u ada adb + arcvh + arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) + archv + flatside.ru r d u ada adb + arcvh + arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) glyph-block-export HSerif define HSerif : namespace @@ -530,6 +494,68 @@ glyph-block CommonShapes : begin local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] return : WithKnotProxy [hookProxy args] : new FunctionInterpolator hookEndBlender args + glyph-block-export flatside + define flatside : namespace + export : define flex-params [ld]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x + overshoot) (u - ada) af + curl (x + overshoot) (d + adb) + g4 (x + overshoot) [mix d u (adb / (ada + adb))] af + + export : define flex-params [lu]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x + overshoot) (d + adb) af + curl (x + overshoot) (u - ada) + g4 (x + overshoot) [mix d u (adb / (ada + adb))] af + + export : define flex-params [rd]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x - overshoot) (u - adb) af + curl (x - overshoot) (d + ada) + g4 (x - overshoot) [mix d u (ada / (ada + adb))] af + + export : define flex-params [ru]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x - overshoot) (d + ada) af + curl (x - overshoot) (u - adb) + g4 (x - overshoot) [mix d u (ada / (ada + adb))] af + glyph-block-export arch define arch : namespace export : define adjust-x : namespace diff --git a/packages/font-glyphs/src/index.ptl b/packages/font-glyphs/src/index.ptl index a52b08bf47..b8ca712283 100644 --- a/packages/font-glyphs/src/index.ptl +++ b/packages/font-glyphs/src/index.ptl @@ -79,6 +79,7 @@ export : define [buildGlyphs para recursive] : begin run-glyph-module "./letter/latin.mjs" run-glyph-module "./letter/greek.mjs" run-glyph-module "./letter/cyrillic.mjs" + run-glyph-module "./letter/armenian.mjs" # Numbers run-glyph-module "./number/index.mjs" diff --git a/packages/font-glyphs/src/letter/armenian.ptl b/packages/font-glyphs/src/letter/armenian.ptl new file mode 100644 index 0000000000..b6e83b6c8b --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian.ptl @@ -0,0 +1,25 @@ +$$include '../meta/macros.ptl' + +export : define [apply] : begin + define $$Capture$$ this + run-glyph-module "./armenian/shared.mjs" + run-glyph-module "./armenian/upper-u-group.mjs" + run-glyph-module "./armenian/lower-u-group.mjs" + run-glyph-module "./armenian/hook-group.mjs" + run-glyph-module "./armenian/upper-gim-group.mjs" + run-glyph-module "./armenian/lower-q-group.mjs" + run-glyph-module "./armenian/upper-za-group.mjs" + run-glyph-module "./armenian/eh-liun-hiun.mjs" + run-glyph-module "./armenian/to.mjs" + run-glyph-module "./armenian/upper-xeh.mjs" + run-glyph-module "./armenian/ca.mjs" + run-glyph-module "./armenian/upper-ho.mjs" + run-glyph-module "./armenian/upper-dza-group.mjs" + run-glyph-module "./armenian/lower-dza-cheh.mjs" + run-glyph-module "./armenian/upper-cheh.mjs" + run-glyph-module "./armenian/upper-yi.mjs" + run-glyph-module "./armenian/lower-sha-group.mjs" + run-glyph-module "./armenian/upper-co.mjs" + run-glyph-module "./armenian/keh.mjs" + run-glyph-module "./armenian/feh.mjs" + run-glyph-module "./armenian/aliases.mjs" diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl new file mode 100644 index 0000000000..c6841ed0a9 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -0,0 +1,23 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" + +glyph-module + +glyph-block Letter-Armenian-Aliases : begin + glyph-block-import Common-Derivatives + + alias 'armn/Seh' 0x54D 'U' + alias 'armn/Tiun' 0x54F 'S/sansSerif' + alias 'armn/Piur' 0x553 'grek/Phi' + alias 'armn/Oh' 0x555 'O' + alias 'armn/aybTurned' 0x560 'm' + alias 'armn/ayb' 0x561 'turnm' + alias 'armn/ho' 0x570 'h' + alias 'armn/yi' 0x575 [if SLAB 'dotlessj.flatHookSerifed' 'dotlessj.flatHookSerifless'] + alias 'armn/vo' 0x578 'n' + alias 'armn/peh' 0x57A 'turnmLeg' + alias 'armn/seh' 0x57D 'u' + alias 'armn/co' 0x581 'cyrl/de.BGR' + alias 'armn/oh' 0x585 'o' + alias 'armn/yiBar' 0x588 [if SLAB 'dotlessjBar.flatHookSerifed' 'dotlessjBar.flatHookSerifless'] diff --git a/packages/font-glyphs/src/letter/armenian/ca.ptl b/packages/font-glyphs/src/letter/armenian/ca.ptl new file mode 100644 index 0000000000..da7c8f3451 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/ca.ptl @@ -0,0 +1,66 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Ca : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Ca" + create-glyph 'armn/Ca' 0x53E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB (CAP - VJut) CAP df.mvs + local yStart : CAP - VJut + df.mvs + include : dispiro + widths.rhs.heading df.mvs Rightward + flat df.leftSB yStart + curl df.middle yStart + archv + flat df.rightSB (yStart - ArchDepthB) + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat df.leftSB (0 + ArchDepthB) + curl df.leftSB (yStart - ArchDepthA) + arcvh + flat df.rightSB CAP + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) CAP + + create-glyph 'armn/ca' 0x56E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + + local x1 : mix df.leftSB df.rightSB 0.45 + local x2 : mix df.leftSB df.rightSB 0.3 + local xOffset : 0.5 * [HSwToV df.mvs] + local y2 : mix Ascender XH 0.5 + include : dispiro + widths.rhs df.mvs + flat (x1 + xOffset) Ascender [heading Downward] + curl (x2 + xOffset) y2 [heading Downward] + + local x3 : mix df.leftSB df.rightSB 0.1 + local x4 : mix df.leftSB df.rightSB 0.6 + + include : intersection [MaskBelowLine (x1 - xOffset) Ascender (x2 - xOffset) y2 100] : dispiro + widths.rhs df.mvs + flat (x3 + xOffset) Ascender + curl (x4 + xOffset) XH + straight.down.end (df.rightSB - OX) (XH - SmallArchDepthB) + curl (df.rightSB - OX) (0 + SmallArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + SmallArchDepthB) + curl (df.leftSB + OX) (XH - SmallArchDepthA) + arcvh + flat df.middle XH + curl df.rightSB XH + diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl new file mode 100644 index 0000000000..37477b0824 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -0,0 +1,79 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Eh-Liun-Hiun : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Eh" + create-glyph 'armn/Eh' 0x537 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.short df 1].base + include : [ArmHBar.normal df 1].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.outer + + create-glyph 'armn/eh' 0x567 : glyph-proc + local df : include : DivFrame para.diversityF + include : df.markSet.b + include : VBar.l df.leftSB 0 Ascender df.mvs + include : [ArmHBar.short df 0].base + include : [ArmHBar.normal df 0].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lt.outer + if [not para.isItalic] : include sf.lb.outer + + do "Liun" + create-glyph 'armn/Liun' 0x53C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.outer + + create-glyph 'armn/liun' 0x56C : glyph-proc + local df : include : DivFrame para.diversityII + include : df.markSet.p + local xMiddle : df.middle - [IBalance2 df] + include : VBar.m xMiddle Descender XH df.mvs + include : HBar.b xMiddle (xMiddle + LongJut * df.div) Descender df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : sf.mt.leftAt xMiddle + + do "Hiun" + create-glyph 'armn/Hiun' 0x552 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.normal df 1].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.full + + create-glyph 'armn/hiun' 0x582 : glyph-proc + local df : include : DivFrame para.diversityF + include : VBar.l df.leftSB 0 XH df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + include sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/feh.ptl b/packages/font-glyphs/src/letter/armenian/feh.ptl new file mode 100644 index 0000000000..24f0ccdc6e --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/feh.ptl @@ -0,0 +1,43 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Feh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + define [FehBody df top bot ada adb] : glyph-proc + local midy : mix bot top HBarPos + include : dispiro + widths.lhs df.mvs + straight.left.start df.middle top + g4 df.leftSB [YSmoothMidR top (midy - 0.5 * df.mvs) ada adb] + straight.right.end df.middle (midy - 0.5 * df.mvs) [heading Rightward] + include : dispiro + widths.rhs df.mvs + straight.right.start df.middle (midy + 0.5 * df.mvs) [heading Rightward] + flatside.rd df.rightSB 0 (midy + 0.5 * df.mvs) SmallArchDepthA SmallArchDepthB + hookend 0 (sw -- df.mvs) + g4 (df.leftSB + OX) Hook + + create-glyph 'armn/Feh' 0x556 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.capital + include : FehBody df CAP 0 ArchDepthA ArchDepthB + include : VBar.m df.middle 0 CAP df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.mt.right + + create-glyph 'armn/feh' 0x586 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : FehBody df Ascender 0 ArchDepthA ArchDepthB + include : VBar.m df.middle Descender Ascender df.mvs + if (SLAB && [not para.Italic]) : begin + local sf : SerifFrame.fromDf df Ascender Descender + include sf.mb.full diff --git a/packages/font-glyphs/src/letter/armenian/hook-group.ptl b/packages/font-glyphs/src/letter/armenian/hook-group.ptl new file mode 100644 index 0000000000..492979417c --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/hook-group.ptl @@ -0,0 +1,130 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Hook-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar LeftHook RightHook + + do "Ben" + create-glyph 'armn/Ben' 0x532 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs SLAB 0 + include : [ArmHBar.normal df 1].mid + + do "Da" + create-glyph 'armn/Da' 0x534 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : [ArmHBar.right df 1].mid + + do "Ech" + create-glyph 'armn/Ech' 0x535 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : FlipAround df.middle (CAP / 2) + include : [ArmHBar.normal df 1].high + + do "Et" + create-glyph 'armn/Et' 0x538 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.outer + + do "Ini" + create-glyph 'armn/Ini' 0x53B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df XH df.mvs + include : VBar.l df.leftSB 0 CAP + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.full + + do "Ken" + create-glyph 'armn/Ken' 0x53F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : XH / 2 - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.leftSB CAP [heading Downward] + curl df.leftSB (midy + ArchDepthB) + arch.lhs midy (sw -- df.mvs) + flat df.rightSB (midy + ArchDepthA) + curl df.rightSB XH [heading Upward] + include : VBar.r df.rightSB 0 XH + + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.full sf2.rt.full sf.rb.full + + do "Ghat" + create-glyph 'armn/Ghat' 0x542 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : [ArmHBar.right df 1 SLAB].base + + do "Nu" + create-glyph 'armn/Nu' 0x546 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB SLAB + include : FlipAround df.middle (CAP / 2) + include : [ArmHBar.left df 1 SLAB].top + + do "Peh" + create-glyph 'armn/Peh' 0x54A : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB + include : VBar.m df.middle (XH / 2) (CAP - 0.5 * df.mvs) df.mvs + + do "Vew" + create-glyph 'armn/Vew' 0x54E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : XH / 2 - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.leftSB XH [heading Downward] + curl df.leftSB (midy + ArchDepthB) + arch.lhs midy (sw -- df.mvs) + flat df.rightSB (midy + ArchDepthA) + curl df.rightSB XH [heading Upward] + include : VBar.r df.rightSB 0 CAP df.mvs + include : [ArmHBar.right df 1 SLAB].base + + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf2.rt.full sf.rb.full + + do "Reh" + create-glyph 'armn/Reh' 0x550 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs SLAB 0 + + do "Dram" + glyph-block-import Letter-Shared-Shapes : LetterBarOverlay + create-glyph 'armn/Dram' 0x58F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : LetterBarOverlay.r df.rightSB (CAP * 0.37) + include : LetterBarOverlay.r df.rightSB (CAP * 0.60 - OverlayStroke * 0.25) diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl new file mode 100644 index 0000000000..6aa7bbeab0 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -0,0 +1,53 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Keh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : OBarRight OBarLeft + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "K'eh" + create-glyph 'armn/Keh' 0x554 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local bot : Math.max (XH - (CAP - XH)) (2.2 * df.mvs) + include : OBarLeft.roundedTop + top -- CAP + bot -- bot + left -- df.leftSB + right -- df.rightSB + yTerminal -- 0 + sw -- df.mvs + include : HBar.m (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) (df.rightSB) [mix [if SLAB df.mvs 0] bot 0.5] df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.full + + create-glyph 'armn/keh' 0x584 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local ostroke : df.adviceStroke 3.75 + local bot : Math.max (0.1 * XH) (1 * ostroke) + include : OBarLeft.shape + left -- df.leftSB + right -- df.rightSB + bot -- bot + sw -- df.mvs + fine -- (df.mvs * ShoulderFine / Stroke) + include : VBar.l df.leftSB Descender XH df.mvs + include : HCrossBar (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) df.rightSB 0 ostroke + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.lt.outer + if [not para.isItalic] : begin + include sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl new file mode 100644 index 0000000000..7168182612 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl @@ -0,0 +1,80 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Dza-Cheh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : OBarRight OBarLeft + glyph-block-import Letter-Shared-Shapes : SerifFrame + + do "Dz'a" + create-glyph 'armn/dza' 0x571 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + local x1 : mix df.leftSB df.rightSB 0.25 + local x2 : mix df.leftSB df.rightSB 0.75 + local xOffset : 0.5 * [HSwToV df.mvs] + local y2 : Math.min [mix Ascender XH 0.5] (XH + 0.5 * SmallArchDepthA) + include : dispiro + widths.center df.mvs + straight.down.start x1 Ascender [heading Downward] + arcvh + flat df.middle y2 + curl x2 y2 [heading Rightward] + + local stemFine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.lhs df.mvs + curl x2 (y2 + 0.5 * df.mvs) + archv.superness 1.5 + straight.down.end df.leftSB (XH - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) + OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB + include : intersection + spiro-outline + curl x2 (y2 + 0.5 * df.mvs) + archv.superness 1.5 + # curl df.middle XH + straight.down.end df.leftSB (XH - SmallArchDepthA) + corner df.leftSB 0 + corner VERY-FAR 0 + corner VERY-FAR Ascender + dispiro + widths.rhs df.mvs + flat df.leftSB XH + curl df.middle XH + archv + flat df.rightSB (XH - SmallArchDepthB) + curl df.rightSB 0 [heading Downward] + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rb.outer + + do "Cheh" + create-glyph 'armn/cheh' 0x573 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + local x1 : mix df.leftSB df.rightSB 0.75 + local stemFine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.lhs df.mvs + flat df.rightSB Ascender + curl x1 Ascender + archv + flat df.leftSB (XH - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) + OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB + include : dispiro + widths.rhs df.mvs + flat df.leftSB XH + curl df.middle XH + archv + flat df.rightSB (XH - SmallArchDepthB) + curl df.rightSB 0 [heading Downward] + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rb.outer diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl new file mode 100644 index 0000000000..57dc1180f5 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -0,0 +1,27 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Q-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Gim" + create-glyph 'armn/gim' 0x563 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : refer-glyph 'q/tailless' + include : [ArmHBar.right df 0].base + + do "Za" + create-glyph 'armn/za' 0x566 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : refer-glyph 'q/tailless' + eject-contour 'serifRB' + include : [ArmHBar.right df 0].desc diff --git a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl new file mode 100644 index 0000000000..b1a7265a90 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl @@ -0,0 +1,80 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Sha-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Sha" + create-glyph 'armn/sha' 0x577 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (XH - SHook) + hookstart XH (sw -- df.mvs) + TwoNeck df XH Descender + include : [ArmHBar.normal df 0].desc + + do "Ch'a" + create-glyph 'armn/cha' 0x579 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local x1 : mix df.leftSB df.rightSB 0.1 + local x2 : mix df.leftSB df.rightSB 0.9 + local y2 : XH / 2 + include : dispiro + widths.center df.mvs + straight.down.start (x1 + [HSwToV : 0.5 * df.mvs]) XH [heading Downward] + arcvh + flat (df.middle + [HSwToV : 0.5 * df.mvs]) y2 + curl x2 y2 [heading Rightward] + include : dispiro + widths.rhs df.mvs + flat x2 (y2 - df.mvs / 2) + curl df.leftSB (Descender + df.mvs) [widths.lhs df.mvs] + include : [ArmHBar.normal df 0].desc + + do "Jheh" + create-glyph 'armn/jheh' 0x57B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local refY : XH - SmallArchDepthB * 1.5 - df.mvs / 2 * (1 - TanSlope) + local x1 : df.middle + [HSwToV : [StrokeWidthBlend 0 0.4] * df.mvs] + local y1 : mix (Descender + df.mvs) refY [StrokeWidthBlend 0.65 0.7] + + include : dispiro + widths.lhs df.mvs + straight.up.start x1 y1 [heading Upward] + g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] + flat df.leftSB (XH - 1.1 * SmallArchDepthA) [widths.rhs df.mvs] + curl df.leftSB (XH - SmallArchDepthA) + arch.rhs XH (sw -- df.mvs) + TwoNeck df XH Descender + + local dx : df.leftSB - df.rightSB + local dy : (Descender + df.mvs) - refY + local hypot : Math.hypot dx dy + local cosAngle : dy / hypot + local sinAngle : (-dx) / hypot + local joinX : mix df.leftSB (df.rightSB + cosAngle * df.mvs) 0.2 + local joinY : mix (Descender + df.mvs) (refY + sinAngle * [HSwToV df.mvs]) 0.2 + local fine : df.mvs * (ShoulderFine / Stroke) + + include : dispiro + widths.lhs df.mvs + straight.down.start (x1 - [HSwToV df.mvs]) y1 [heading Downward] + flat joinX joinY [widths.lhs fine] + curl df.leftSB (Descender + df.mvs) + include : [ArmHBar.normal df 0].desc \ No newline at end of file diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl new file mode 100644 index 0000000000..e4a4b0b22f --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -0,0 +1,347 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-U-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderKnots + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck + glyph-block-import Letter-Latin-U : USerifs + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Ben" + create-glyph 'armn/ben' 0x562 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : VBar.l df.leftSB Descender XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- (XH / 2) + stroke -- df.mvs + include : [ArmHBar.normal df 0].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.lt.outer + if [not para.isItalic] : begin + local sf2 : SerifFrame.fromDf df XH (XH / 2) + include : composite-proc sf.lb.full sf2.rb.full + + do "Da" + create-glyph 'armn/da' 0x564 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : refer-glyph 'latn/eta' + include : [ArmHBar.right df 0].base + + do "Ech" + create-glyph 'armn/ech' 0x565 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 [mix 0 XH 0.6] df.mvs + include : [ArmHBar.normal df 0].high + if SLAB : include : USerifs.Toothed df Ascender df.mvs + eject-contour 'serifRT' + + do "Et" + create-glyph 'armn/et' 0x568 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : VBar.l df.leftSB Descender XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + include : [ArmHBar.normal df 0].desc + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if para.isItalic + include sf2.rb.outer + include : composite-proc sf.lb.full sf2.rb.full + + do "Ini" + create-glyph 'armn/ini' 0x56B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : VBar.l df.leftSB Descender Ascender df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender Descender + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if para.isItalic + include sf2.rb.outer + include : composite-proc sf.lb.full sf2.rb.full + + do "Xeh" + create-glyph 'armn/xeh' 0x56D : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : nShoulder + top -- XH + bottom -- (XH / 2) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- (df.middle + [HSwToV : df.mvs / 2]) + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- (XH / 2) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- (df.middle + [HSwToV : df.mvs / 2]) + stroke -- df.mvs + include : VBar.l df.leftSB Descender Ascender df.mvs + include : VBar.r df.rightSB 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender Descender + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if para.isItalic + include sf2.rb.outer + include : composite-proc sf.lb.full sf2.rt.inner sf2.rb.outer + + do "Ken" + create-glyph 'armn/ken' 0x56F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + local sf2 : SerifFrame.fromDf df XH Descender + include sf.lt.outer + if para.isItalic + include sf2.rb.outer + include : composite-proc sf2.rt.inner sf2.rb.full + + do "Ghat" + create-glyph 'armn/ghat' 0x572 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- Descender + stroke -- df.mvs + include : [ArmHBar.right df 0 (SLAB && [not para.isItalic])].desc + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + local sf2 : SerifFrame.fromDf df XH Descender + include : composite-proc sf.lb.full sf2.rb.full + + do "Men" + create-glyph 'armn/men' 0x574 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 Ascender df.mvs + include : [ArmHBar.right df 0].top + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df Ascender 0 + include : composite-proc sf.lt.outer sf2.rb.outer + + do "Nu" + create-glyph 'armn/nu' 0x576 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 XH df.mvs + include : [ArmHBar.left df 0 SLAB].top + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.rb.outer + if [not para.isItalic] : include sf.rt.inner + + do "Rra" + create-glyph 'armn/rra' 0x57C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : VBar.l df.leftSB 0 XH df.mvs + + # Combination of nShoulderKnots and the straight 2 shape + local fine : df.mvs * (ShoulderFine / Stroke) + local left : Math.max (df.rightSB - [HSwToV df.mvs] - jut) df.middle + include : dispiro + widths.rhs fine + flat (df.leftSB + [HSwToV : df.mvs - fine]) (XH - SmallArchDepthA - TINY) + curl (df.leftSB + [HSwToV : df.mvs - fine]) (XH - SmallArchDepthA) + arch.rhs XH (sw -- df.mvs) (swBefore -- fine) + TwoNeck df XH 0 left + include : HBar.b left (left + [HSwToV df.mvs] + jut) 0 df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + include : composite-proc sf.lb.outer + + # Alternate straight 'n' form + # include : nShoulder + # left -- (df.leftSB + [HSwToV df.mvs]) + # right -- df.rightSB + # top -- XH + # bottom -- 0 + # stroke -- df.mvs + # include : [ArmHBar.right df 0].base + # if SLAB : begin + # local sf : SerifFrame.fromDf df XH 0 + # include sf.lt.outer + # if [not para.isItalic] : begin + # include : composite-proc sf.lb.full + + do "Vew" + create-glyph 'armn/vew' 0x57E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB Descender Ascender df.mvs + include : [ArmHBar.right df 1].desc + + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + local sf2 : SerifFrame.fromDf df Ascender Descender + include sf2.rt.inner + + do "Tiun" + create-glyph 'armn/tiun' 0x57F : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.m df.middle 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.outer sf.rb.outer + if [not para.isItalic] : include : composite-proc sf.mt.left sf.mb.right sf.rb.outer + + do "Reh" + create-glyph 'armn/reh' 0x580 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.l df.leftSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if para.isItalic + include sf2.rb.outer + include : composite-proc sf.lb.full sf2.rb.full + + do "P'iur" + create-glyph 'armn/piur' 0x583 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.m df.middle Descender Ascender df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df Ascender Descender + include sf.lt.outer + if para.isItalic + include sf.rb.outer + include : composite-proc sf2.mt.left sf2.mb.full sf.rb.full + + do "Ew" + create-glyph 'armn/ew' 0x587 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.m df.middle 0 XH df.mvs + include : HBar.b df.middle df.rightSB 0 df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.lt.outer + if [not para.isItalic] : begin + local sf2 : SerifFrame.fromDf df XH 0 + include sf2.mt.left diff --git a/packages/font-glyphs/src/letter/armenian/shared.ptl b/packages/font-glyphs/src/letter/armenian/shared.ptl new file mode 100644 index 0000000000..be6e7a7adf --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/shared.ptl @@ -0,0 +1,97 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Shared-Shapes : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + define JUT-NORMAL 0 + define JUT-SHORT 1 + define JUT-RIGHT 2 + define JUT-LEFT 3 + + glyph-block-export ArmHBar + define [ArmHBar hPos df fCapital fOverslab] : namespace + define left : match hPos + [Just JUT-RIGHT] df.rightSB + [Just JUT-LEFT] (df.leftSB - (jut * [if fOverslab 1.5 1]) + [HSwToV : 0.5 * df.mvs]) + -- df.leftSB + define right : match hPos + [Just JUT-RIGHT] (df.rightSB + (jut * [if fOverslab 1.5 1]) - [HSwToV : 0.5 * df.mvs]) + [Just JUT-SHORT] (df.rightSB - (jut - [HSwToV : 0.5 * df.mvs]) * df.div) + [Just JUT-LEFT] df.leftSB + -- df.rightSB + + export : define [top] : glyph-proc + include : HBar.t left right [if fCapital CAP Ascender] df.mvs + export : define [high] : glyph-proc + include : HBar.t left right highBarPos df.mvs + export : define [mid] : glyph-proc + include : HBar.m left right barPos df.mvs + export : define [base] : glyph-proc + include : HBar.b left right 0 df.mvs + export : define [desc] : glyph-proc + include : HBar.b left right Descender df.mvs + export : define [at y] : glyph-proc + include : HBar.m left right y df.mvs + + set [ArmHBar.normal df fCapital fOverslab] : ArmHBar JUT-NORMAL df fCapital fOverslab + set [ArmHBar.short df fCapital fOverslab] : ArmHBar JUT-SHORT df fCapital fOverslab + set [ArmHBar.right df fCapital fOverslab] : ArmHBar JUT-RIGHT df fCapital fOverslab + set [ArmHBar.left df fCapital fOverslab] : ArmHBar JUT-LEFT df fCapital fOverslab + + glyph-block-export RightHook + define [RightHook df top sw baseSerif hookSerif _base _hookY] : glyph-proc + local base : fallback _base 0 + local hookY : fallback _hookY (top - Hook) + include : dispiro + widths.lhs df.mvs + g4 df.rightSB hookY + hookstart top (sw -- sw) + flat df.leftSB (top - ArchDepthA) + curl df.leftSB base [heading Downward] + if baseSerif : begin + local sf : SerifFrame.fromDf df top base + include sf.lb.full + if hookSerif : begin + local sf : SerifFrame.fromDf df top hookY + include sf.rb.full + + glyph-block-export LeftHook + define [LeftHook df top sw baseSerif hookSerif _base _hookY] : glyph-proc + local base : fallback _base 0 + local hookY : fallback _hookY (top - Hook) + include : dispiro + widths.rhs df.mvs + g4 df.leftSB hookY + hookstart top (sw -- sw) + flat df.rightSB (top - ArchDepthB) + curl df.rightSB base [heading Downward] + if baseSerif : begin + local sf : SerifFrame.fromDf df top base + include sf.rb.full + if hookSerif : begin + local sf : SerifFrame.fromDf df top hookY + include sf.lb.full + + glyph-block-export TwoNeck + define [TwoNeck df top bot _left _right _adb _flatp] : begin + local adb : fallback _adb SmallArchDepthB + local flatp : fallback _flatp 0.75 + local left : fallback _left df.leftSB + local right : fallback _right df.rightSB + local refY : top - adb * 1.5 - df.mvs / 2 * (1 - TanSlope) + return : list + g4.down.mid right (top - adb) + flat [mix left right flatp] [mix (bot + df.mvs) refY flatp] + curl left (bot + df.mvs) [widths.lhs df.mvs] + diff --git a/packages/font-glyphs/src/letter/armenian/to.ptl b/packages/font-glyphs/src/letter/armenian/to.ptl new file mode 100644 index 0000000000..3a6deebeef --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/to.ptl @@ -0,0 +1,63 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-To : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : nShoulderKnots SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "T'o" + create-glyph 'armn/To' 0x539 : glyph-proc + local df : include : DivFrame 1 + local fine : df.adviceStroke2 6 3 CAP + local barPosT : barPos + df.mvs / 2 + include : dispiro + widths.rhs df.mvs + flat df.leftSB 0 [heading Upward] + curl df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) (swAfter -- fine) + g4 (df.middle - [HSwToV : fine / 2]) [mix 0 barPosT 0.5] [widths.rhs fine] + arcvh + flat [mix df.leftSB df.rightSB 0.7] barPosT [widths.rhs df.mvs] + curl df.rightSB barPosT + include : [ArmHBar.right df 1].mid + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.full + + create-glyph 'armn/to' 0x569 : glyph-proc + local df : include : DivFrame 1 + local fine : df.adviceStroke2 6 3 XH + include : df.markSet.p + include : VBar.l df.leftSB Descender XH df.mvs + local barPosT : XH / 2 + df.mvs / 2 + include : dispiro + nShoulderKnots + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- (0 + ArchDepthA) + stroke -- df.mvs + arch.rhs 0 (sw -- df.mvs) (swAfter -- fine) + g4 (df.middle - [HSwToV : fine / 2]) [mix 0 barPosT 0.5] [widths.rhs fine] + arcvh + flat [mix df.leftSB df.rightSB 0.7] barPosT [widths.rhs df.mvs] + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosT + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.lt.outer + if [not para.isItalic] : begin + include sf.lb.full \ No newline at end of file diff --git a/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl b/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl new file mode 100644 index 0000000000..f353fbb0c5 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl @@ -0,0 +1,38 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Cheh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Cheh" + create-glyph 'armn/Cheh' 0x543 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local x1 : mix df.leftSB df.rightSB 0.75 + include : dispiro + widths.lhs df.mvs + flat x1 CAP + curl df.middle CAP + archv + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (0 + ArchDepthB) + arcvh + flat df.middle 0 + curl df.rightSB 0 + include : dispiro + widths.rhs df.mvs + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) XH + curl df.middle XH + archv + flat df.rightSB (XH - ArchDepthA) + curl df.rightSB 0 [heading Downward] diff --git a/packages/font-glyphs/src/letter/armenian/upper-co.ptl b/packages/font-glyphs/src/letter/armenian/upper-co.ptl new file mode 100644 index 0000000000..151388f56e --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-co.ptl @@ -0,0 +1,37 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Co : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "C'o" + create-glyph 'armn/Co' 0x551 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : CAP * HBarPos + local midyTop : midy + 0.5 * df.mvs + local midyBot : midy - 0.5 * df.mvs + include : [ArmHBar.left df 1].at midy + include : dispiro + widths.lhs df.mvs + flat df.leftSB midyBot + curl df.middle midyBot + archv + flatside.ru df.rightSB midyBot CAP ArchDepthA ArchDepthB 0 + arch.lhs CAP (sw -- df.mvs) + flatside.ld df.leftSB midyBot CAP ArchDepthA ArchDepthB 0 + arcvh + straight.right.end df.middle midyBot [heading Rightward] + include : dispiro + widths.rhs df.mvs + straight.right.start df.middle midyTop [heading Rightward] + flatside.rd df.rightSB 0 midyTop SmallArchDepthA SmallArchDepthB + hookend 0 (sw -- df.mvs) + g4 (df.leftSB + OX) Hook diff --git a/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl new file mode 100644 index 0000000000..84c5308a6e --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl @@ -0,0 +1,66 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Dza : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : CurlyTail + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Dz'a" + create-glyph 'armn/Dza' 0x541 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (CAP - Hook) + hookstart CAP (sw -- df.mvs) + flat (df.rightSB - OX) (CAP - ArchDepthB) + curl (df.rightSB - OX) (CAP / 2) + CurlyTail.n df.mvs 0 df.leftSB df.rightSB 0 (yLoopTop -- (CAP - Hook) * 0.5) + + do "Sha" + create-glyph 'armn/Sha' 0x547 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.rhs df.mvs + curl df.leftSB CAP [heading Rightward] + flat df.middle ([mix XH CAP 0.5] + df.mvs - fine) [heading Rightward] + curl df.rightSB (XH + df.mvs) [heading Rightward] + include : dispiro + widths.rhs df.mvs + g4 df.rightSB Hook + hookstart 0 (sw -- df.mvs) + flat df.leftSB ArchDepthB + curl df.leftSB ([mix XH CAP 0.5] - ArchDepthA) + arcvh + flat df.middle [mix XH CAP 0.5] [widths.rhs fine] + + do "Cha" + create-glyph 'armn/Cha' 0x549 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (CAP - Hook) + hookstart CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB ([mix (0.5 * XH) df.mvs 0.5] - fine + ArchDepthA) + arcvh + flat df.middle ([mix (0.5 * XH) df.mvs 0.5] - fine) [widths.rhs fine] + include : dispiro + widths.rhs df.mvs + flat [mix df.leftSB df.rightSB 0.1] (0.5 * XH) [heading Rightward] + curl [mix df.leftSB df.rightSB 0.9] df.mvs [heading Rightward] diff --git a/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl new file mode 100644 index 0000000000..b5f2ec30d8 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl @@ -0,0 +1,72 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Gim-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Gim" + create-glyph 'armn/Gim' 0x533 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local barPosB : barPos - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.rightSB 0 [heading Upward] + curl df.rightSB (CAP - ArchDepthB) + arch.lhs CAP (sw -- df.mvs) + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (barPosB + ArchDepthB) + arcvh + flat df.middle barPosB + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosB + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rb.full + + do "Zhe" + create-glyph 'armn/Zhe' 0x53A : glyph-proc + local df : include : DivFrame 1 + include : dispiro + widths.rhs df.mvs + flat df.rightSB CAP [heading Downward] + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + ArchDepthB) + curl (df.leftSB + OX) (highBarPos - ArchDepthA) + arcvh + flat df.middle highBarPos + curl df.rightSB highBarPos + include : [ArmHBar.right df 1].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rt.full + + create-glyph 'armn/zhe' 0x56A : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : dispiro + widths.rhs df.mvs + flat df.rightSB Ascender [heading Downward] + curl df.rightSB (0 + SmallArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + SmallArchDepthB) + curl (df.leftSB + OX) (highBarPos - SmallArchDepthA) + arcvh + flat df.middle highBarPos + curl df.rightSB highBarPos + include : [ArmHBar.right df 0].high + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rt.inner diff --git a/packages/font-glyphs/src/letter/armenian/upper-ho.ptl b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl new file mode 100644 index 0000000000..1750549249 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl @@ -0,0 +1,43 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Ho : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Ho" + create-glyph 'armn/Ho' 0x540 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + + local x1 : mix df.leftSB df.rightSB 0.1 + local midy : CAP * HBarPos + include : dispiro + widths.rhs df.mvs + flat x1 CAP + curl df.middle CAP + archv + g4 df.rightSB [YSmoothMidR CAP (midy - df.mvs / 2) ArchDepthA ArchDepthB] + flat df.middle (midy - df.mvs / 2) [heading Downward] + + include : dispiro + widths.rhs df.mvs + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) (midy + df.mvs / 2) + curl df.middle (midy + df.mvs / 2) + archv + flat (df.rightSB - O * 2) [YSmoothMidR (midy + df.mvs / 2) 0 ArchDepthA ArchDepthB] + curl (df.rightSB - O * 2) 0 + + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rb.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl new file mode 100644 index 0000000000..0b31c80a9c --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -0,0 +1,52 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-U-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Latin-U : UShape USerifs + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Ayb" + glyph-block-import Letter-Latin-Upper-Q : QCrossing + create-glyph 'armn/Ayb' 0x531 : glyph-proc + local df : include : DivFrame 1 3 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : QCrossing df CAP df.mvs + if SLAB : include : USerifs.Toothless df CAP df.mvs + + do "Men" + create-glyph 'armn/Men' 0x544 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 0 df.mvs + include : [ArmHBar.right df 1 SLAB].top + if SLAB : begin + include : USerifs.Toothless df CAP df.mvs + + do "Vo" + create-glyph 'armn/Vo' 0x548 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : FlipAround Middle (CAP / 2) + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lb.full sf.rb.full + + do "Rra" + create-glyph 'armn/Rra' 0x54C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : FlipAround Middle (CAP / 2) + include : [ArmHBar.right df 1].mid + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lb.full sf.rb.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl new file mode 100644 index 0000000000..28d25f124f --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl @@ -0,0 +1,27 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Xeh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Latin-Lower-AE-OE : SubDfAndShift + glyph-block-import Letter-Latin-U : UShape + + do "Xeh" + create-glyph 'armn/Xeh' 0x53D : glyph-proc + local df : include : DivFrame para.diversityM 3 + local { subDf shift } : SubDfAndShift 1 df + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : HBar.t df.leftSB df.middle XH df.mvs + include : with-transform [ApparentTranslate shift 0] : UShape subDf XH 0 subDf.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.full sf.lb.full sf2.rt.full + if sf2.enoughSpaceForFullSerifs : include sf2.mt.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl new file mode 100644 index 0000000000..da959dc230 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl @@ -0,0 +1,24 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Yi : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe + + do "Yi" + create-glyph 'armn/Yi' 0x545 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local blend : 1 + 2 * O / (df.rightSB - df.leftSB) + local midy : mix 0 CAP OverlayPos + local ze : CyrZe 0 0 CAP 0 df.leftSB df.rightSB blend Hook + include : ze.Shape + if SLAB : begin + local yiJut : Math.min VJut : CAP - 2 * Hook - df.mvs + include : VBar.l (df.leftSB - 2 * O) (midy - 0.5 * yiJut) (midy + 0.5 * yiJut) df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl new file mode 100644 index 0000000000..6f38482eaa --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl @@ -0,0 +1,63 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Za-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Za" + create-glyph 'armn/Za' 0x536 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + local fine2 : df.adviceStroke 4 + include : dispiro + widths.rhs df.mvs + straight.up.start df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : VBar.l df.leftSB 0 VJut fine2 + include : [ArmHBar.normal df 1].base + + do "Jheh" + create-glyph 'armn/Jheh' 0x54B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + local fine2 : df.adviceStroke 4 + local x1 : df.middle + [HSwToV : [StrokeWidthBlend 0 0.5] * fine2] + include : dispiro + widths.rhs df.mvs + straight.up.start df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : intersection + spiro-outline + flat df.rightSB CAP + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + corner df.leftSB (df.mvs - fine) [widths.rhs fine] + corner df.leftSB CAP + dispiro + widths.lhs df.mvs + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (CAP - 1.1 * ArchDepthA) + g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] + flat x1 (0.55 * ArchDepthB) [widths.rhs fine2] + curl x1 (0.5 * ArchDepthB) [widths.rhs fine2] + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : VBar.l df.leftSB 0 VJut fine2 + include : [ArmHBar.normal df 1].base diff --git a/packages/font-glyphs/src/letter/latin/lower-q.ptl b/packages/font-glyphs/src/letter/latin/lower-q.ptl index 5645edc206..9acb7ba242 100644 --- a/packages/font-glyphs/src/letter/latin/lower-q.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-q.ptl @@ -100,8 +100,9 @@ glyph-block Letter-Latin-Lower-Q : begin select-variant 'q' 'q' link-reduced-variant 'q/sansSerif' 'q' MathSansSerif alias 'cyrl/qa' 0x51B 'q' - select-variant 'QRTail' 0x24A (follow -- 'qRTail') - select-variant 'qRTail' 0x24B + select-variant 'QRTail' 0x24A (follow -- "q/tailless") + select-variant 'qRTail' 0x24B (follow -- "q/tailless") + select-variant "q/tailless" (shapeFrom -- 'q') select-variant "q/hookTopBase" (shapeFrom -- 'q') derive-glyphs 'qHookTop' 0x2A0 "q/hookTopBase" : function [src gr] : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/upper-q.ptl b/packages/font-glyphs/src/letter/latin/upper-q.ptl index c0e21cbd09..e1c0c665d3 100644 --- a/packages/font-glyphs/src/letter/latin/upper-q.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-q.ptl @@ -104,6 +104,7 @@ glyph-block Letter-Latin-Upper-Q : begin flat [Math.min (df.middle + HookX - 1) (df.middle - [HSwToV HalfStroke] - TailDepth)] (Stroke + TailDepth) curl (df.middle + HookX) (Stroke + TailDepth) + glyph-block-export QCrossing define [QCrossing df top sw] : begin define k 1.5 define cor : DiagCor (k * (df.rightSB - df.middle)) (df.rightSB - df.middle - OX) diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index 357866c865..5d47aadd41 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -288,74 +288,67 @@ glyph-block Letter-Shared-Shapes : begin curl xend yend export : define [shape] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro widths.lhs fine - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) - curl (left + [HSwToV : sw - fine]) (0 + adb) - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flatside.ld (left + [HSwToV : sw - fine]) bot top ada adb 0 + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) - flat (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (top - ada - TINY) + flatside.ld (left + [HSwToV : sw - fine]) bot top ada adb 0 (af -- [widths.lhs fine]) export : define [toothless] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - g4 left rise [widths.lhs sw] + g4 left (bot + rise) [widths.lhs sw] alsoThru.g2 0.5 mBlend important - arch.lhs.centerAt.ltr.b [mix left right 0.5] 0 (sw -- sw) + arch.lhs.centerAt.ltr.b [mix left right 0.5] bot (sw -- sw) archv - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) flat (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] curl (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] export : define [rounded] : with-params [ - [top XH] [left SB] [right RightSB] [yTerminal CAP] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [yTerminal CAP] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro flat left yTerminal [widths.lhs.heading sw Downward] curl left [Math.min adb (yTerminal - TINY)] - arch.lhs 0 (sw -- sw) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + arch.lhs bot (sw -- sw) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) flat (left + [HSwToV : sw - fine]) (top - ada + TINY) [widths.lhs fine] curl (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] export : define [toothlessTop] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (0 + adb) [widths.lhs fine] - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flat (left + [HSwToV : sw - fine]) (bot + adb + TINY) [widths.lhs fine] + curl (left + [HSwToV : sw - fine]) (bot + adb) [widths.lhs fine] + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arcvh arch.lhs.centerAt.rtl.t [mix left right 0.5] top (sw -- sw) alsoThru.g2 0.5 (1 - mBlend) important g4 left (top - rise) [widths.lhs sw] export : define [roundedTop] : with-params [ - [top XH] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke] + [top XH] [bot 0] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (0 + adb) [widths.lhs fine] - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flat (left + [HSwToV : sw - fine]) (bot + adb + TINY) [widths.lhs fine] + curl (left + [HSwToV : sw - fine]) (bot + adb) [widths.lhs fine] + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) flat left [Math.max (yTerminal + TINY - TanSlope * Stroke) (top - ada)] curl left yTerminal [widths.lhs.heading sw Downward] @@ -386,25 +379,27 @@ glyph-block Letter-Shared-Shapes : begin curl xend yend export : define [shape] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.shape top -- top + bot -- bot left -- left right -- right sw -- sw fine -- fine ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] export : define [toothless] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.toothlessTop top -- top + bot -- bot left -- left right -- right rise -- rise @@ -413,14 +408,15 @@ glyph-block Letter-Shared-Shapes : begin mBlend -- mBlend ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] export : define [rounded] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [yTerminal CAP] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.roundedTop top -- top + bot -- bot left -- left right -- right sw -- sw @@ -428,7 +424,7 @@ glyph-block Letter-Shared-Shapes : begin yTerminal -- (top - yTerminal) ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] glyph-block-export FlatHookDepth define [FlatHookDepth df s] : object @@ -711,6 +707,11 @@ glyph-block Letter-Shared-Shapes : begin [rightAt x] : tagged 'serifMB' : HSerif.mbAsymmetric x bot 0 jutIn swSerif set this.mt : object full : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top jutIn jutIn swSerif + [fullAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top jutIn jutIn swSerif + left : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top jutIn 0 swSerif + [leftAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top jutIn 0 swSerif + right : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top 0 jutIn swSerif + [rightAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top 0 jutIn swSerif public [slice l r] : begin local ink : HSwToV this.swRef diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index fb21c142b4..efca735080 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -201,7 +201,7 @@ define-macro glyph-block-import : syntax-rules CommonShapes `[no-shape tagged Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt Circle Ellipse OShapeT OShape OShapeOutline OShapeFlatTB HSerif VSerif NeedSlab NeedNotItalic HBar HOverlayBar VBar FlatSlashShape hookstart hookend - arch Ungizmo Regizmo FlipAround ScaleAround Realign ForceUpright DiagCor NameUni + flatside arch Ungizmo Regizmo FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo with-transform with-outlined remove-holes radicalize clear-geometry clear-anchors ExtLineCenter ExtLineLhs ExtLineRhs DiagCorDs HCrossBar MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle MaskAboveLine MaskBelowLine diff --git a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl index 0d933a717d..a459fe5961 100644 --- a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl @@ -51,6 +51,14 @@ glyph-block Symbol-Punctuation-Dashes : begin local df : include : DivFrame para.diversityF include : HBar.m df.leftSB df.rightSB SymbolMid + create-glyph 'armn/hyphen' 0x58A : glyph-proc + local df : include : DivFrame para.diversityF + include : dispiro + widths.center + g4 df.leftSB SymbolMid [heading Rightward] + g4 df.middle (0.95 * SymbolMid) + g4 df.rightSB SymbolMid [heading Rightward] + alias 'softhyphen' 0xAD 'hyphen' alias 'gpHyphen' 0x2010 'hyphen' alias 'nbHyphen' 0x2011 'hyphen' diff --git a/packages/font-glyphs/src/symbol/punctuation/small.ptl b/packages/font-glyphs/src/symbol/punctuation/small.ptl index 7b608bb0ef..db55782009 100644 --- a/packages/font-glyphs/src/symbol/punctuation/small.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/small.ptl @@ -295,6 +295,7 @@ glyph-block Symbol-Punctuation-Small : begin select-variant 'dottedCross' 0x205C (follow -- 'punctuationDot') alias 'grek/question' 0x37E 'semicolon' + alias 'armn/fullstop' 0x589 'colon' turned 'turnSemiColon' 0x2E35 'semicolon' [DivFrame para.diversityF].middle (XH / 2) diff --git a/params/variants.toml b/params/variants.toml index 407e7177fc..7832712a4a 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -3953,7 +3953,7 @@ keyAffix = "" selectorAffix.q = "" selectorAffix."q/sansSerif" = "" selectorAffix."q/hookTopBase" = "" -selectorAffix.qRTail = "" +selectorAffix."q/tailless" = "" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-corner] @@ -3962,7 +3962,7 @@ descriptionAffix = "earless (cornered) shape" selectorAffix.q = "earlessCorner" selectorAffix."q/sansSerif" = "earlessCorner" selectorAffix."q/hookTopBase" = "earlessCorner" -selectorAffix.qRTail = "earlessCorner" +selectorAffix."q/tailless" = "earlessCorner" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-rounded] @@ -3971,7 +3971,7 @@ descriptionAffix = "earless (rounded) shape" selectorAffix.q = "earlessRounded" selectorAffix."q/sansSerif" = "earlessRounded" selectorAffix."q/hookTopBase" = "" -selectorAffix.qRTail = "earlessRounded" +selectorAffix."q/tailless" = "earlessRounded" selectorAffix.gha = "" [prime.q.variants-buildup.stages.terminal."*"] @@ -3983,7 +3983,7 @@ descriptionAffix = "straight terminal" selectorAffix.q = "straight" selectorAffix."q/sansSerif" = "straight" selectorAffix."q/hookTopBase" = "straight" -selectorAffix.qRTail = "straight" +selectorAffix."q/tailless" = "straight" selectorAffix.gha = "straight" [prime.q.variants-buildup.stages.terminal.tailed] @@ -3992,7 +3992,7 @@ descriptionAffix = "tailed terminal" selectorAffix.q = "tailed" selectorAffix."q/sansSerif" = "tailed" selectorAffix."q/hookTopBase" = "tailed" -selectorAffix.qRTail = "straight" +selectorAffix."q/tailless" = "straight" selectorAffix.gha = "tailed" [prime.q.variants-buildup.stages.terminal.diagonal-tailed] @@ -4001,7 +4001,7 @@ descriptionAffix = "diagonally tailed terminal" selectorAffix.q = "diagonalTailed" selectorAffix."q/sansSerif" = "diagonalTailed" selectorAffix."q/hookTopBase" = "diagonalTailed" -selectorAffix.qRTail = "straight" +selectorAffix."q/tailless" = "straight" selectorAffix.gha = "diagonalTailed" [prime.q.variants-buildup.stages.serifs.serifless] @@ -4011,7 +4011,7 @@ descriptionJoiner = "without" selectorAffix.q = "serifless" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" -selectorAffix.qRTail = "serifless" +selectorAffix."q/tailless" = "serifless" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.bottom-serifed] @@ -4021,7 +4021,7 @@ descriptionAffix = "serif at bottom" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix.qRTail = "serifless" +selectorAffix."q/tailless" = "serifless" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.motion-serifed] @@ -4031,7 +4031,7 @@ descriptionAffix = "motion serifs" selectorAffix.q = "motionSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" -selectorAffix.qRTail = "motionSerifed" +selectorAffix."q/tailless" = "motionSerifed" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.serifed__eared] @@ -4042,7 +4042,7 @@ descriptionAffix = "serifs" selectorAffix.q = "serifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix.qRTail = "motionSerifed" +selectorAffix."q/tailless" = "motionSerifed" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.serifed__eareless] @@ -4053,7 +4053,7 @@ descriptionAffix = "serifs" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix.qRTail = "serifless" +selectorAffix."q/tailless" = "serifless" selectorAffix.gha = "bottomSerifed" From 75937100110bb39d3a4c6724fcfd88cccc8e5218 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sat, 26 Oct 2024 16:31:08 -0400 Subject: [PATCH 07/15] Initial cleanup of #2556 . (#2560) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial cleanup of #2556 . * Fix serifs of `լ` under Etoile. * Optimize side bearings of `Ա`. * Improve serifs under italics and monospace. --- .../src/letter/armenian/aliases.ptl | 1 - .../src/letter/armenian/eh-liun-hiun.ptl | 4 +- .../font-glyphs/src/letter/armenian/keh.ptl | 4 +- .../src/letter/armenian/lower-q-group.ptl | 26 +++---- .../src/letter/armenian/lower-u-group.ptl | 73 ++++++++++--------- .../font-glyphs/src/letter/armenian/to.ptl | 4 +- .../src/letter/armenian/upper-u-group.ptl | 12 ++- .../src/letter/armenian/upper-xeh.ptl | 6 +- .../font-glyphs/src/letter/latin/lower-g.ptl | 25 +++---- .../font-glyphs/src/letter/latin/lower-q.ptl | 48 ++++++------ packages/font-glyphs/src/letter/shared.ptl | 2 +- params/variants.toml | 27 +++---- 12 files changed, 118 insertions(+), 114 deletions(-) diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index c6841ed0a9..4239461314 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -7,7 +7,6 @@ glyph-module glyph-block Letter-Armenian-Aliases : begin glyph-block-import Common-Derivatives - alias 'armn/Seh' 0x54D 'U' alias 'armn/Tiun' 0x54F 'S/sansSerif' alias 'armn/Piur' 0x553 'grek/Phi' alias 'armn/Oh' 0x555 'O' diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl index 37477b0824..43c3e49199 100644 --- a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -54,9 +54,7 @@ glyph-block Letter-Armenian-Eh-Liun-Hiun : begin local xMiddle : df.middle - [IBalance2 df] include : VBar.m xMiddle Descender XH df.mvs include : HBar.b xMiddle (xMiddle + LongJut * df.div) Descender df.mvs - if SLAB : begin - local sf : SerifFrame.fromDf df XH Descender - include : sf.mt.leftAt xMiddle + if SLAB : include : HSerif.lt xMiddle XH Jut df.mvs do "Hiun" create-glyph 'armn/Hiun' 0x552 : glyph-proc diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl index 6aa7bbeab0..cbdb3e2d28 100644 --- a/packages/font-glyphs/src/letter/armenian/keh.ptl +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -48,6 +48,4 @@ glyph-block Letter-Armenian-Keh : begin include : HCrossBar (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) df.rightSB 0 ostroke if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer - if [not para.isItalic] : begin - include sf.lb.full + include : composite-proc sf.lt.outer sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl index 57dc1180f5..e00f013467 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback] from "@iosevka/util" +import [mix linreg clamp fallback SuffixCfg] from "@iosevka/util" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -10,18 +10,16 @@ glyph-block Letter-Armenian-Lower-Q-Group : begin glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + glyph-block-import Letter-Latin-Lower-Q : QConfig - do "Gim" - create-glyph 'armn/gim' 0x563 : glyph-proc - local df : include : DivFrame 1 - include : df.markSet.p - include : refer-glyph 'q/tailless' - include : [ArmHBar.right df 0].base + foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : if [not fTail] : do + create-glyph "armn/gim.\(suffix)" : glyph-proc + include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS + include : [ArmHBar.right [DivFrame 1] 0].base - do "Za" - create-glyph 'armn/za' 0x566 : glyph-proc - local df : include : DivFrame 1 - include : df.markSet.p - include : refer-glyph 'q/tailless' - eject-contour 'serifRB' - include : [ArmHBar.right df 0].desc + if [not sRB] : create-glyph "armn/za.\(suffix)" : glyph-proc + include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS + include : [ArmHBar.right [DivFrame 1] 0].desc + + select-variant 'armn/gim' 0x563 (follow -- 'q/tailless') + select-variant 'armn/za' 0x566 (follow -- 'qRTail') diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index e4a4b0b22f..adfd40ee71 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -32,17 +32,30 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : [ArmHBar.normal df 0].base if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer + include : composite-proc sf.lt.outer sf.lb.full if [not para.isItalic] : begin local sf2 : SerifFrame.fromDf df XH (XH / 2) - include : composite-proc sf.lb.full sf2.rb.full + include sf2.rb.full do "Da" create-glyph 'armn/da' 0x564 : glyph-proc local df : include : DivFrame 1 include : df.markSet.p - include : refer-glyph 'latn/eta' + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- Descender + stroke -- df.mvs include : [ArmHBar.right df 0].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df XH Descender + if para.isItalic + include sf.lt.outer + include : composite-proc sf.lt.outer sf.lb.full + include sf2.rb.full do "Ech" create-glyph 'armn/ech' 0x565 : glyph-proc @@ -76,9 +89,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin local sf : SerifFrame.fromDf df XH Descender local sf2 : SerifFrame.fromDf df XH 0 include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "Ini" create-glyph 'armn/ini' 0x56B : glyph-proc @@ -94,10 +105,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : composite-proc sf.lt.outer sf.lb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "Xeh" create-glyph 'armn/xeh' 0x56D : glyph-proc @@ -121,10 +130,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic + include : composite-proc sf.lt.outer sf.lb.full + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) + include : composite-proc sf2.rt.inner sf2.rb.outer include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rt.inner sf2.rb.outer do "Ken" create-glyph 'armn/ken' 0x56F : glyph-proc @@ -143,7 +152,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin local sf2 : SerifFrame.fromDf df XH Descender include sf.lt.outer if para.isItalic - include sf2.rb.outer + include sf2.rb.full include : composite-proc sf2.rt.inner sf2.rb.full do "Ghat" @@ -157,13 +166,11 @@ glyph-block Letter-Armenian-Lower-U-Group : begin top -- XH bottom -- Descender stroke -- df.mvs - include : [ArmHBar.right df 0 (SLAB && [not para.isItalic])].desc + include : [ArmHBar.right df 0].desc if SLAB : begin local sf : SerifFrame.fromDf df XH 0 include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df XH Descender - include : composite-proc sf.lb.full sf2.rb.full + if [not para.isItalic] : include sf.lb.full do "Men" create-glyph 'armn/men' 0x574 : glyph-proc @@ -253,10 +260,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df Ascender Descender - include sf2.rt.inner + local sf2 : SerifFrame.fromDf df Ascender Descender + include : composite-proc sf.lt.outer sf2.rt.inner do "Tiun" create-glyph 'armn/tiun' 0x57F : glyph-proc @@ -278,8 +283,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : VBar.m df.middle 0 XH df.mvs if SLAB : begin local sf : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.outer sf.rb.outer - if [not para.isItalic] : include : composite-proc sf.mt.left sf.mb.right sf.rb.outer + include sf.lt.outer + if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + include : composite-proc sf.mt.left sf.mb.right sf.rb.full + include sf.rb.outer do "Reh" create-glyph 'armn/reh' 0x580 : glyph-proc @@ -295,10 +302,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : composite-proc sf.lt.outer sf.lb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "P'iur" create-glyph 'armn/piur' 0x583 : glyph-proc @@ -321,10 +326,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH 0 local sf2 : SerifFrame.fromDf df Ascender Descender - include sf.lt.outer - if para.isItalic - include sf.rb.outer - include : composite-proc sf2.mt.left sf2.mb.full sf.rb.full + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.rb.full + composite-proc sf.lt.outer sf.rb.outer + include : composite-proc sf2.mt.left sf2.mb.full do "Ew" create-glyph 'armn/ew' 0x587 : glyph-proc @@ -341,7 +346,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : HBar.b df.middle df.rightSB 0 df.mvs if SLAB : begin local sf : SerifFrame.fromDf df Ascender 0 + local sf2 : SerifFrame.fromDf df XH 0 include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df XH 0 + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) : begin include sf2.mt.left diff --git a/packages/font-glyphs/src/letter/armenian/to.ptl b/packages/font-glyphs/src/letter/armenian/to.ptl index 3a6deebeef..0000c2de5d 100644 --- a/packages/font-glyphs/src/letter/armenian/to.ptl +++ b/packages/font-glyphs/src/letter/armenian/to.ptl @@ -58,6 +58,4 @@ glyph-block Letter-Armenian-To : begin curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosT if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer - if [not para.isItalic] : begin - include sf.lb.full \ No newline at end of file + include : composite-proc sf.lt.outer sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl index 0b31c80a9c..a72ddabc0f 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -15,10 +15,10 @@ glyph-block Letter-Armenian-Upper-U-Group : begin do "Ayb" glyph-block-import Letter-Latin-Upper-Q : QCrossing create-glyph 'armn/Ayb' 0x531 : glyph-proc - local df : include : DivFrame 1 3 + local df : include : DivFrame 1 include : df.markSet.capital include : UShape df CAP 1 df.mvs - include : QCrossing df CAP df.mvs + include : QCrossing df CAP [AdviceStroke 4] if SLAB : include : USerifs.Toothless df CAP df.mvs do "Men" @@ -50,3 +50,11 @@ glyph-block Letter-Armenian-Upper-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 include : composite-proc sf.lb.full sf.rb.full + + do "Seh" + create-glyph 'armn/Seh' 0x54D : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + if SLAB : begin + include : USerifs.Toothless df CAP df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl index 28d25f124f..f8d1720655 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl @@ -23,5 +23,7 @@ glyph-block Letter-Armenian-Upper-Xeh : begin if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 local sf2 : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.full sf.lb.full sf2.rt.full - if sf2.enoughSpaceForFullSerifs : include sf2.mt.full + include : composite-proc sf.lt.full sf.lb.full + if sf2.enoughSpaceForFullSerifs + include : composite-proc sf2.mt.full sf2.rt.full + include sf2.rt.outer diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index f71a014739..f8d6a561f9 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -116,8 +116,8 @@ glyph-block Letter-Latin-Lower-G : begin include : SeriflessBody df top include : spiro-outline corner df.rightSB top - corner df.rightSB (top - Stroke / 2) - corner (df.rightSB - [HSwToV Stroke]) (top - Stroke / 2) + corner df.rightSB (top - HalfStroke) + corner (df.rightSB - [HSwToV Stroke]) (top - HalfStroke) export : define [SeriflessBody df top] : glyph-proc include : OBarRight.shape (top -- top) (left -- df.leftSB) (right -- df.rightSB) (sw -- df.mvs) @@ -154,13 +154,12 @@ glyph-block Letter-Latin-Lower-G : begin singleStorey SingleStorey.RoundHook singleStoreyFlatHook SingleStorey.FlatHook object # ear/serif - "" { SingleStorey.AutoSerifedBody 0 } serifless { SingleStorey.SeriflessBody 0 } serifed { SingleStorey.SerifedBody 0 } earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise } earlessCornerHTB { SingleStorey.EarlessCornerBody 0 } earlessRounded { SingleStorey.EarlessRoundedBody (XH - SmallArchDepthA) } - scriptCut { SingleStorey.ScriptCutBody (Stroke / 2) } + scriptCut { SingleStorey.ScriptCutBody HalfStroke } foreach { suffix { hookShape {bodyShape hookStart} } } [Object.entries SingleStoreyConfig] : do create-glyph "g.\(suffix)" : glyph-proc @@ -196,33 +195,31 @@ glyph-block Letter-Latin-Lower-G : begin include [refer-glyph "g.\(suffix)"] AS_BASE ALSO_METRICS include : OverlayW [AdviceStroke2 2 4 XH] - create-glyph "gScriptCrossedTail.\(suffix)" : glyph-proc - include : MarkSet.p - set-base-anchor 'overlay' Middle (XH / 2) - define df : DivFrame 1 - include : bodyShape df XH - include : SingleStorey.CrossedHook df (XH - hookStart) - select-variant 'g' 'g' link-reduced-variant 'g/sansSerif' 'g' MathSansSerif CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] select-variant "gBar" 0x1E5 (follow -- 'g') - select-variant 'g/hookTopBase' null (shapeFrom -- 'g') - select-variant 'gScript' 0x261 (shapeFrom -- 'g') (follow -- 'gScript') select-variant 'GScript' 0xA7AC (follow -- 'gScript') select-variant 'gScriptPalatalHook' 0x1D83 (follow -- 'gScript') - select-variant 'gScriptCrossedTail' 0xAB36 select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) alias 'cyrl/de.SRB' null 'cyrl/de.BGR' + select-variant 'g/hookTopBase' (shapeFrom -- 'g') derive-glyphs 'gHookTop' 0x260 "g/hookTopBase" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : TopHook.rBarOuter RightSB 0 XH include : LeaningAnchor.Above.VBar.r RightSB + create-glyph 'gScriptCrossedTail' 0xAB36 : glyph-proc + include : MarkSet.p + set-base-anchor 'overlay' Middle (XH / 2) + define df : DivFrame 1 + include : SingleStorey.ScriptCutBody df XH + include : SingleStorey.CrossedHook df (XH - HalfStroke) + glyph-block-import Letter-Blackboard : BBS BBD BBBarRight create-glyph 'mathbb/g' 0x1D558 : glyph-proc include : MarkSet.p diff --git a/packages/font-glyphs/src/letter/latin/lower-q.ptl b/packages/font-glyphs/src/letter/latin/lower-q.ptl index 9acb7ba242..099e7f4d8e 100644 --- a/packages/font-glyphs/src/letter/latin/lower-q.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-q.ptl @@ -20,7 +20,6 @@ glyph-block Letter-Latin-Lower-Q : begin glyph-block-export RDiagTailedBar define [RDiagTailedBar x0 yb yt _sw] : begin - local df : DivFrame 1 local sw : fallback _sw Stroke local xMid : x0 - [HSwToV : 0.5 * sw] return : dispiro @@ -31,7 +30,7 @@ glyph-block Letter-Latin-Lower-Q : begin set-base-anchor 'trailing' (RightSB - markHalfStroke) Descender include : OBarRight.shape (top -- top) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom top [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom top @@ -40,7 +39,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.toothless (top -- top) (rise -- DToothlessRise) (mBlend -- DMBlend) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - DToothlessRise) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - DToothlessRise) @@ -49,7 +48,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.rounded (top -- top) (yTerminal -- (SmallArchDepthB - O)) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - SmallArchDepthB) @@ -60,22 +59,23 @@ glyph-block Letter-Latin-Lower-Q : begin HSerif.rb (RightSB - [HSwToV HalfStroke]) y Jut define [RbSerifAuto y] : NeedSlab SLAB : RbSerif y + glyph-block-export QConfig define QConfig : SuffixCfg.weave object # body "" EaredBody earlessCorner EarlessCornerBody earlessRounded EarlessRoundedBody object # tail - straight TERMINAL-NORMAL - tailed TERMINAL-TAILED - diagonalTailed TERMINAL-DIAG + straight { TERMINAL-NORMAL false } + tailed { TERMINAL-TAILED true } + diagonalTailed { TERMINAL-DIAG true } object # serifs serifless { nothing nothing } motionSerifed { RtSerif nothing } bottomSerifed { nothing RbSerif } serifed { RtSerif RbSerif } - foreach { suffix { Body terminal {sRT sRB} } } [Object.entries QConfig] : do + foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : do create-glyph "q.\(suffix)" : glyph-proc include : MarkSet.p include : Body terminal XH Descender @@ -83,26 +83,26 @@ glyph-block Letter-Latin-Lower-Q : begin if sRB : include : sRB Descender include : LeaningAnchor.Below.VBar.r RightSB - create-glyph "QRTail.\(suffix)" : glyph-proc - include : MarkSet.capDesc - include : Body terminal CAP 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT CAP - include : LeaningAnchor.Below.VBar.r RightSB - - create-glyph "qRTail.\(suffix)" : glyph-proc - include : MarkSet.p - include : Body terminal XH 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT XH - include : LeaningAnchor.Below.VBar.r RightSB + if (!fTail && !sRB) : begin + create-glyph "QRTail.\(suffix)" : glyph-proc + include : MarkSet.capDesc + include : Body terminal CAP 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT CAP + include : LeaningAnchor.Below.VBar.r RightSB + + create-glyph "qRTail.\(suffix)" : glyph-proc + include : MarkSet.p + include : Body terminal XH 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT XH + include : LeaningAnchor.Below.VBar.r RightSB select-variant 'q' 'q' link-reduced-variant 'q/sansSerif' 'q' MathSansSerif alias 'cyrl/qa' 0x51B 'q' - select-variant 'QRTail' 0x24A (follow -- "q/tailless") - select-variant 'qRTail' 0x24B (follow -- "q/tailless") - select-variant "q/tailless" (shapeFrom -- 'q') + select-variant 'QRTail' 0x24A (follow -- 'qRTail') + select-variant 'qRTail' 0x24B select-variant "q/hookTopBase" (shapeFrom -- 'q') derive-glyphs 'qHookTop' 0x2A0 "q/hookTopBase" : function [src gr] : glyph-proc diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index 5d47aadd41..777b4873f7 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -126,7 +126,7 @@ glyph-block Letter-Blackboard : begin glyph-block Letter-Shared-Metrics : begin glyph-block-export BowlXDepth define [BowlXDepth top bottom left right sw] : begin - local trShrink : Math.pow (((right - left) / (top - bottom))) 0.5 + local trShrink : Math.sqrt : (right - left) / (top - bottom) return : Math.max HSwToV : 1.25 * sw trShrink * [Math.min ((top - bottom) * 0.45) ((right - left + [HSwToV sw]) * 0.875)] diff --git a/params/variants.toml b/params/variants.toml index 7832712a4a..439073d113 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2767,7 +2767,6 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "" selectorAffix."g/single/autoSerifed/sans" = "" @@ -2781,7 +2780,6 @@ selectorAffix.g = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" @@ -2792,7 +2790,6 @@ selectorAffix.g = "openDoubleStorey" selectorAffix."g/sansSerif" = "openDoubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" @@ -2804,7 +2801,6 @@ selectorAffix.g = "singleStorey" selectorAffix."g/sansSerif" = "singleStorey" selectorAffix."g/hookTopBase" = "singleStorey" selectorAffix."gScript" = "singleStorey" -selectorAffix."gScriptCrossedTail" = "singleStorey" selectorAffix."g/single/autoSerifed/slab" = "singleStorey" selectorAffix."g/single/autoSerifed/sans" = "singleStorey" @@ -2818,7 +2814,6 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "" selectorAffix."g/single/autoSerifed/sans" = "" @@ -2829,7 +2824,6 @@ selectorAffix.g = "flatHook" selectorAffix."g/sansSerif" = "flatHook" selectorAffix."g/hookTopBase" = "flatHook" selectorAffix."gScript" = "flatHook" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "flatHook" selectorAffix."g/single/autoSerifed/sans" = "flatHook" @@ -2839,7 +2833,6 @@ selectorAffix.g = "serifless" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "serifless" selectorAffix."g/single/autoSerifed/sans" = "serifless" @@ -2850,7 +2843,6 @@ selectorAffix.g = "serifed" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "serifed" selectorAffix."g/single/autoSerifed/sans" = "serifed" @@ -2861,7 +2853,6 @@ selectorAffix.g = "earlessCorner" selectorAffix."g/sansSerif" = "earlessCorner" selectorAffix."g/hookTopBase" = "earlessCornerHTB" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "earlessCorner" selectorAffix."g/single/autoSerifed/sans" = "earlessCorner" @@ -2872,7 +2863,6 @@ selectorAffix.g = "earlessRounded" selectorAffix."g/sansSerif" = "earlessRounded" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "earlessRounded" selectorAffix."g/single/autoSerifed/sans" = "earlessRounded" @@ -3954,6 +3944,7 @@ selectorAffix.q = "" selectorAffix."q/sansSerif" = "" selectorAffix."q/hookTopBase" = "" selectorAffix."q/tailless" = "" +selectorAffix.qRTail = "" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-corner] @@ -3963,6 +3954,7 @@ selectorAffix.q = "earlessCorner" selectorAffix."q/sansSerif" = "earlessCorner" selectorAffix."q/hookTopBase" = "earlessCorner" selectorAffix."q/tailless" = "earlessCorner" +selectorAffix.qRTail = "earlessCorner" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-rounded] @@ -3972,6 +3964,7 @@ selectorAffix.q = "earlessRounded" selectorAffix."q/sansSerif" = "earlessRounded" selectorAffix."q/hookTopBase" = "" selectorAffix."q/tailless" = "earlessRounded" +selectorAffix.qRTail = "earlessRounded" selectorAffix.gha = "" [prime.q.variants-buildup.stages.terminal."*"] @@ -3984,6 +3977,7 @@ selectorAffix.q = "straight" selectorAffix."q/sansSerif" = "straight" selectorAffix."q/hookTopBase" = "straight" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "straight" [prime.q.variants-buildup.stages.terminal.tailed] @@ -3993,6 +3987,7 @@ selectorAffix.q = "tailed" selectorAffix."q/sansSerif" = "tailed" selectorAffix."q/hookTopBase" = "tailed" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "tailed" [prime.q.variants-buildup.stages.terminal.diagonal-tailed] @@ -4002,6 +3997,7 @@ selectorAffix.q = "diagonalTailed" selectorAffix."q/sansSerif" = "diagonalTailed" selectorAffix."q/hookTopBase" = "diagonalTailed" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "diagonalTailed" [prime.q.variants-buildup.stages.serifs.serifless] @@ -4012,6 +4008,7 @@ selectorAffix.q = "serifless" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" selectorAffix."q/tailless" = "serifless" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.bottom-serifed] @@ -4021,7 +4018,8 @@ descriptionAffix = "serif at bottom" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "serifless" +selectorAffix."q/tailless" = "bottomSerifed" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.motion-serifed] @@ -4032,6 +4030,7 @@ selectorAffix.q = "motionSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" selectorAffix."q/tailless" = "motionSerifed" +selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.serifed__eared] @@ -4042,7 +4041,8 @@ descriptionAffix = "serifs" selectorAffix.q = "serifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "motionSerifed" +selectorAffix."q/tailless" = "serifed" +selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.serifed__eareless] @@ -4053,7 +4053,8 @@ descriptionAffix = "serifs" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "serifless" +selectorAffix."q/tailless" = "bottomSerifed" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed" From bba1f8dbca690fce2fc161f91a28845d5a60c299 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:40:40 -0400 Subject: [PATCH 08/15] Make Dotless J with Stroke and Hook serifed under slab. (#2562) * Make Dotless J with Stroke and Hook auto-serifed. * typo. --- changes/32.0.0.md | 1 + .../src/letter/armenian/aliases.ptl | 4 +- .../font-glyphs/src/letter/latin/lower-j.ptl | 60 +++++++++++++------ .../font-glyphs/src/letter/latin/upper-j.ptl | 12 ++-- params/variants.toml | 36 ++++++----- 5 files changed, 72 insertions(+), 41 deletions(-) diff --git a/changes/32.0.0.md b/changes/32.0.0.md index f7872a0c36..6b8b50908f 100644 --- a/changes/32.0.0.md +++ b/changes/32.0.0.md @@ -9,3 +9,4 @@ - ARMENIAN SMALL LETTER TURNED AYB (`U+0560`) ... ARMENIAN HYPHEN (`U+058A`). - ARMENIAN DRAM SIGN (`U+058F`). * Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). +* Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index 4239461314..f99dfaa8e4 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -13,10 +13,10 @@ glyph-block Letter-Armenian-Aliases : begin alias 'armn/aybTurned' 0x560 'm' alias 'armn/ayb' 0x561 'turnm' alias 'armn/ho' 0x570 'h' - alias 'armn/yi' 0x575 [if SLAB 'dotlessj.flatHookSerifed' 'dotlessj.flatHookSerifless'] + alias 'armn/yi' 0x575 'dotlessj.flatHook' alias 'armn/vo' 0x578 'n' alias 'armn/peh' 0x57A 'turnmLeg' alias 'armn/seh' 0x57D 'u' alias 'armn/co' 0x581 'cyrl/de.BGR' alias 'armn/oh' 0x585 'o' - alias 'armn/yiBar' 0x588 [if SLAB 'dotlessjBar.flatHookSerifed' 'dotlessjBar.flatHookSerifless'] + alias 'armn/yiBar' 0x588 'dotlessjBar.flatHook' diff --git a/packages/font-glyphs/src/letter/latin/lower-j.ptl b/packages/font-glyphs/src/letter/latin/lower-j.ptl index a3500e154d..b3e25c75bd 100644 --- a/packages/font-glyphs/src/letter/latin/lower-j.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-j.ptl @@ -35,14 +35,16 @@ glyph-block Letter-Latin-Lower-J : begin set-base-anchor 'overlay' barCenter (top / 2) define XMiddle : namespace - export : define [Straight df] : begin df.middle - export : define [Hooky df] : df.middle + [IBalance2 df] - export : define [Regular df] : df.middle + JBalance + export : define [StraightSerifless df] : begin df.middle + export : define [StraightSerifed df] : df.middle + [IBalance2 df] + export : define [BentHook df] : df.middle + JBalance export : define [FlatHookSerifless df] : df.middle + 0.25 * JBalance * df.div * [mix 1 df.div 2] export : define [FlatHookSerifed df] : df.middle + JBalance * df.div + export : define [StraightAutoSerifed df] : if SLAB [StraightSerifed df] [StraightSerifless df] + export : define [FlatHookAutoSerifed df] : if SLAB [FlatHookSerifed df] [FlatHookSerifless df] define Body : namespace - export : define [Regular df top xMiddle] : glyph-proc + export : define [BentHook df top xMiddle] : glyph-proc local hookx : Math.min (xMiddle - (Width * 0.5) - [HSwToV HalfStroke] + OXHook) (xMiddle - 1.5 * [HSwToV Stroke] + OXHook) set-base-anchor "below" [mix hookx xMiddle 0.5] Descender include : dispiro @@ -74,28 +76,48 @@ glyph-block Letter-Latin-Lower-J : begin set-base-anchor "trailing" (xMiddle - [HSwToV HalfStroke]) Descender define Serifs : namespace + export : define [None df top xMiddle] : no-shape export : define [Long df top xMiddle] : HSerif.lt xMiddle top (LongJut * df.div) + export : define [Auto df top xMiddle] : if SLAB [Long df top xMiddle] [no-shape] define Marks : namespace + export : define [Serifless df top xMiddle] : glyph-proc + set-base-anchor 'above' xMiddle top + set-base-anchor 'overlay' xMiddle (top / 2) + export : define [Serifed df top xMiddle] : glyph-proc include : Serifless df top xMiddle include : LeaningAnchor.Above.At [mix df.middle xMiddle (7/8)] - export : define [Serifless df top xMiddle] : glyph-proc - set-base-anchor 'above' xMiddle top - set-base-anchor 'overlay' xMiddle (top / 2) + export : define [AutoSerifed df top xMiddle] : glyph-proc + include : if SLAB + Serifed df top xMiddle + Serifless df top xMiddle + + define Div : namespace + export : define BentHook 1 + export : define StraightSerifless para.diversityII + export : define StraightSerifed para.diversityI + export : define FlatHookSerifless para.diversityII + export : define FlatHookSerifed para.diversityI + export : define StraightAutoSerifed : if SLAB para.diversityI para.diversityII + export : define FlatHookAutoSerifed : if SLAB para.diversityI para.diversityII define JConfig : object - 'serifless' { "Regular" null XMiddle.Regular Marks.Serifless 1 } - 'serifed' { "Regular" Serifs.Long XMiddle.Regular Marks.Serifed 1 } - 'straightLine' { "Straight" null XMiddle.Straight Marks.Serifless para.diversityII } - 'hooky' { "Straight" Serifs.Long XMiddle.Hooky Marks.Serifed para.diversityI } - 'flatHookSerifless' { "FlatHook" null XMiddle.FlatHookSerifless Marks.Serifless para.diversityII } - 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed para.diversityI } - 'diagonalTailedSerifless' { "DiagonalTailed" null XMiddle.FlatHookSerifless Marks.Serifless para.diversityII } - 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed para.diversityI } - - foreach {suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do + 'bentHook' { "BentHook" Serifs.Auto XMiddle.BentHook Marks.AutoSerifed Div.BentHook } + 'bentHookSerifless' { "BentHook" Serifs.None XMiddle.BentHook Marks.Serifless Div.BentHook } + 'bentHookSerifed' { "BentHook" Serifs.Long XMiddle.BentHook Marks.Serifed Div.BentHook } + 'straight' { "Straight" Serifs.Auto XMiddle.StraightAutoSerifed Marks.AutoSerifed Div.StraightAutoSerifed } + 'straightSerifless' { "Straight" Serifs.None XMiddle.StraightSerifless Marks.Serifless Div.StraightSerifless } + 'straightSerifed' { "Straight" Serifs.Long XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } + 'flatHook' { "FlatHook" Serifs.Auto XMiddle.FlatHookAutoSerifed Marks.AutoSerifed Div.FlatHookAutoSerifed } + 'flatHookSerifless' { "FlatHook" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'diagonalTailed' { "DiagonalTailed" Serifs.Auto XMiddle.FlatHookAutoSerifed Marks.AutoSerifed Div.FlatHookAutoSerifed } + 'diagonalTailedSerifless' { "DiagonalTailed" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + + foreach { suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do local df : DivFrame div local xMiddle : xMiddleT df @@ -103,7 +125,7 @@ glyph-block Letter-Latin-Lower-J : begin set-width df.width include : df.markSet.p include : Body.(shapeId) df XH xMiddle - if Serif : include : tagged 'serifLT' : Serif df XH xMiddle + include : tagged 'serifLT' : Serif df XH xMiddle include : Marks df XH xMiddle create-glyph "dotlessjBar.\(suffix)" : glyph-proc @@ -122,7 +144,7 @@ glyph-block Letter-Latin-Lower-J : begin link-reduced-variant 'j/sansSerif' 'j' MathSansSerif select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj') - select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessj/sansSerif') + select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessjHookTop') CreateAccentedComposition 'jBar' 0x249 'dotlessjBar' 'tittleAbove' alias 'grek/yot' 0x3F3 'j' diff --git a/packages/font-glyphs/src/letter/latin/upper-j.ptl b/packages/font-glyphs/src/letter/latin/upper-j.ptl index b11a46d05e..7e4f031db1 100644 --- a/packages/font-glyphs/src/letter/latin/upper-j.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-j.ptl @@ -13,7 +13,7 @@ glyph-block Letter-Latin-Upper-J : begin glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Latin-Lower-J : FlatHookDotlessJShape - define [JFullHookBase df dfHook top] : glyph-proc + define [JBentHookBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capital' 'e'] @@ -51,7 +51,7 @@ glyph-block Letter-Latin-Upper-J : begin flat (df.rightSB - JBalance2 - [Math.min (0.625 * (df.rightSB - df.leftSB)) (1.375 * hd.x)]) 0 [widths.rhs Stroke] curl df.leftSB 0 - define [JDescendingBase df dfHook top] : glyph-proc + define [JDescendingBentHookBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capDesc' 'p'] @@ -69,8 +69,8 @@ glyph-block Letter-Latin-Upper-J : begin hookend Descender g4 hookx (Descender + JHook) - set JFullHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' - set JDescendingBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - [HSwToV HalfStroke]) top Descender 'capDesc' + set JBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' + set JDescendingBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - [HSwToV HalfStroke]) top Descender 'capDesc' define [JCurlyTailBaseT df xc xCo top bottom markClass] : glyph-proc set-width df.width include : df.markSet.(markClass) @@ -112,9 +112,9 @@ glyph-block Letter-Latin-Upper-J : begin define JConfig : SuffixCfg.weave object # height and hook - "" { JFullHookBase [DivFrame 1] [DivFrame 1] } + bentHook { JBentHookBase [DivFrame 1] [DivFrame 1] } flatHook { JFlatHookBase [DivFrame 1] [DivFrame 1] } - descending { JDescendingBase [DivFrame 1] [DivFrame 1] } + descendingBentHook { JDescendingBentHookBase [DivFrame 1] [DivFrame 1] } descendingFlatHookSerifless { JDescendingFlatHookBase [DivFrame para.diversityI] [DivFrame para.diversityI] } descendingFlatHookSerifed { JDescendingFlatHookSerifedBase [DivFrame para.diversityI] [DivFrame para.diversityI] } function [body] : if (body == 'descendingFlatHookSerifless' || body == 'descendingFlatHookSerifed') {."" null} : object diff --git a/params/variants.toml b/params/variants.toml index 439073d113..831a15d699 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -1059,13 +1059,13 @@ selectorAffix.JCurlyTail = "descending" [prime.capital-j.variants-buildup.stages.hook."*"] next = "serifs" -[prime.capital-j.variants-buildup.stages.hook.standard] +[prime.capital-j.variants-buildup.stages.hook.bent-hook] rank = 1 keyAffix = "" -selectorAffix.J = "" -selectorAffix."J/noDescend" = "" -selectorAffix."J/sansSerif" = "" -selectorAffix.JCurlyTail = "" +selectorAffix.J = "bentHook" +selectorAffix."J/noDescend" = "bentHook" +selectorAffix."J/sansSerif" = "bentHook" +selectorAffix.JCurlyTail = "bentHook" [prime.capital-j.variants-buildup.stages.hook.flat-hook] rank = 2 @@ -1073,7 +1073,7 @@ descriptionAffix = "flat hook" selectorAffix.J = "flatHook" selectorAffix."J/noDescend" = "flatHook" selectorAffix."J/sansSerif" = "flatHook" -selectorAffix.JCurlyTail = "" +selectorAffix.JCurlyTail = "bentHook" [prime.capital-j.variants-buildup.stages.serifs.serifless] rank = 1 @@ -3082,29 +3082,33 @@ tagKind = "letter" [prime.j.variants.serifless] rank = 1 description = "`j` without serif" -selector.dotlessj = "serifless" -selector."dotlessj/sansSerif" = "serifless" +selector.dotlessj = "bentHookSerifless" +selector."dotlessj/sansSerif" = "bentHookSerifless" +selector.dotlessjHookTop = "bentHook" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.serifed] rank = 2 description = "`j` with top serif" -selector.dotlessj = "serifed" -selector."dotlessj/sansSerif" = "serifless" +selector.dotlessj = "bentHookSerifed" +selector."dotlessj/sansSerif" = "bentHookSerifless" +selector.dotlessjHookTop = "bentHook" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.straight-line] rank = 3 description = "`j` like a straight line" -selector.dotlessj = "straightLine" -selector."dotlessj/sansSerif" = "straightLine" +selector.dotlessj = "straightSerifless" +selector."dotlessj/sansSerif" = "straightSerifless" +selector.dotlessjHookTop = "straight" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.hooky] rank = 4 description = "`j` like a straight line with top serif" -selector.dotlessj = "hooky" -selector."dotlessj/sansSerif" = "straightLine" +selector.dotlessj = "straightSerifed" +selector."dotlessj/sansSerif" = "straightSerifless" +selector.dotlessjHookTop = "straight" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.flat-hook-serifless] @@ -3112,6 +3116,7 @@ rank = 5 description = "`j` with flat terminal hook" selector.dotlessj = "flatHookSerifless" selector."dotlessj/sansSerif" = "flatHookSerifless" +selector.dotlessjHookTop = "flatHook" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.flat-hook-serifed] @@ -3119,6 +3124,7 @@ rank = 6 description = "`j` with flat terminal hook and top serif" selector.dotlessj = "flatHookSerifed" selector."dotlessj/sansSerif" = "flatHookSerifless" +selector.dotlessjHookTop = "flatHook" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.diagonal-tailed-serifless] @@ -3126,6 +3132,7 @@ rank = 7 description = "`j` with diagonal tail" selector.dotlessj = "diagonalTailedSerifless" selector."dotlessj/sansSerif" = "diagonalTailedSerifless" +selector.dotlessjHookTop = "diagonalTailed" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.diagonal-tailed-serifed] @@ -3133,6 +3140,7 @@ rank = 8 description = "`j` with top serif and diagonal tail" selector.dotlessj = "diagonalTailedSerifed" selector."dotlessj/sansSerif" = "diagonalTailedSerifless" +selector.dotlessjHookTop = "diagonalTailed" selector.dotlessjCurlyTail = "serifed" From 7a227717ede2d1d14198b76c6d72bd1260c87041 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:11:39 -0400 Subject: [PATCH 09/15] Further cleanup of #2556 . (#2563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Further cleanup of #2556 . * Optimize arch depth of `Պ`. * Further cleanup of `Ա`. * Cleanup of `Յ`. * EOL fixup. * Cleanup of #2562 . --- .../src/letter/armenian/aliases.ptl | 3 +- .../font-glyphs/src/letter/armenian/ca.ptl | 1 - .../font-glyphs/src/letter/armenian/feh.ptl | 2 +- .../src/letter/armenian/hook-group.ptl | 4 ++- .../font-glyphs/src/letter/armenian/keh.ptl | 2 +- .../src/letter/armenian/lower-sha-group.ptl | 2 +- .../src/letter/armenian/lower-u-group.ptl | 36 +++++++++++++------ .../src/letter/armenian/shared.ptl | 15 +++++--- .../font-glyphs/src/letter/armenian/to.ptl | 2 +- .../src/letter/armenian/upper-u-group.ptl | 4 +-- .../src/letter/armenian/upper-yi.ptl | 13 ++++--- .../font-glyphs/src/letter/latin/lower-j.ptl | 6 ++-- .../font-glyphs/src/letter/latin/lower-m.ptl | 9 +++-- .../font-glyphs/src/letter/latin/upper-j.ptl | 14 ++++---- .../font-glyphs/src/letter/latin/upper-q.ptl | 8 +++-- 15 files changed, 75 insertions(+), 46 deletions(-) diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index f99dfaa8e4..628b55974a 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -7,7 +7,7 @@ glyph-module glyph-block Letter-Armenian-Aliases : begin glyph-block-import Common-Derivatives - alias 'armn/Tiun' 0x54F 'S/sansSerif' + alias 'armn/Tiun' 0x54F 'S.serifless' alias 'armn/Piur' 0x553 'grek/Phi' alias 'armn/Oh' 0x555 'O' alias 'armn/aybTurned' 0x560 'm' @@ -15,7 +15,6 @@ glyph-block Letter-Armenian-Aliases : begin alias 'armn/ho' 0x570 'h' alias 'armn/yi' 0x575 'dotlessj.flatHook' alias 'armn/vo' 0x578 'n' - alias 'armn/peh' 0x57A 'turnmLeg' alias 'armn/seh' 0x57D 'u' alias 'armn/co' 0x581 'cyrl/de.BGR' alias 'armn/oh' 0x585 'o' diff --git a/packages/font-glyphs/src/letter/armenian/ca.ptl b/packages/font-glyphs/src/letter/armenian/ca.ptl index da7c8f3451..5f6aef768c 100644 --- a/packages/font-glyphs/src/letter/armenian/ca.ptl +++ b/packages/font-glyphs/src/letter/armenian/ca.ptl @@ -63,4 +63,3 @@ glyph-block Letter-Armenian-Ca : begin arcvh flat df.middle XH curl df.rightSB XH - diff --git a/packages/font-glyphs/src/letter/armenian/feh.ptl b/packages/font-glyphs/src/letter/armenian/feh.ptl index 24f0ccdc6e..b46cb6d350 100644 --- a/packages/font-glyphs/src/letter/armenian/feh.ptl +++ b/packages/font-glyphs/src/letter/armenian/feh.ptl @@ -38,6 +38,6 @@ glyph-block Letter-Armenian-Feh : begin include : df.markSet.bp include : FehBody df Ascender 0 ArchDepthA ArchDepthB include : VBar.m df.middle Descender Ascender df.mvs - if (SLAB && [not para.Italic]) : begin + if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender include sf.mb.full diff --git a/packages/font-glyphs/src/letter/armenian/hook-group.ptl b/packages/font-glyphs/src/letter/armenian/hook-group.ptl index 492979417c..3994cab1d9 100644 --- a/packages/font-glyphs/src/letter/armenian/hook-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/hook-group.ptl @@ -91,7 +91,9 @@ glyph-block Letter-Armenian-Hook-Group : begin create-glyph 'armn/Peh' 0x54A : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.capital - include : LeftHook df CAP df.mvs SLAB + local ada : df.archDepthA ArchDepth df.mvs + local adb : df.archDepthB ArchDepth df.mvs + include : LeftHook df CAP df.mvs SLAB 0 nothing nothing ada adb include : VBar.m df.middle (XH / 2) (CAP - 0.5 * df.mvs) df.mvs do "Vew" diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl index cbdb3e2d28..68a6137452 100644 --- a/packages/font-glyphs/src/letter/armenian/keh.ptl +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -48,4 +48,4 @@ glyph-block Letter-Armenian-Keh : begin include : HCrossBar (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) df.rightSB 0 ostroke if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide diff --git a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl index b1a7265a90..ae119e091e 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl @@ -77,4 +77,4 @@ glyph-block Letter-Armenian-Lower-Sha-Group : begin straight.down.start (x1 - [HSwToV df.mvs]) y1 [heading Downward] flat joinX joinY [widths.lhs fine] curl df.leftSB (Descender + df.mvs) - include : [ArmHBar.normal df 0].desc \ No newline at end of file + include : [ArmHBar.normal df 0].desc diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index adfd40ee71..03d2839742 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -32,7 +32,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : [ArmHBar.normal df 0].base if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide if [not para.isItalic] : begin local sf2 : SerifFrame.fromDf df XH (XH / 2) include sf2.rb.full @@ -55,7 +55,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if para.isItalic include sf.lt.outer include : composite-proc sf.lt.outer sf.lb.full - include sf2.rb.full + include sf2.rb.fullSide do "Ech" create-glyph 'armn/ech' 0x565 : glyph-proc @@ -105,7 +105,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide include : if para.isItalic sf2.rb.outer sf2.rb.full do "Xeh" @@ -130,7 +130,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) include : composite-proc sf2.rt.inner sf2.rb.outer include sf2.rb.outer @@ -152,8 +152,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin local sf2 : SerifFrame.fromDf df XH Descender include sf.lt.outer if para.isItalic - include sf2.rb.full - include : composite-proc sf2.rt.inner sf2.rb.full + include sf2.rb.fullSide + include : composite-proc sf2.rt.inner sf2.rb.fullSide do "Ghat" create-glyph 'armn/ghat' 0x572 : glyph-proc @@ -208,6 +208,21 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include sf.rb.outer if [not para.isItalic] : include sf.rt.inner + do "Peh" + glyph-block-import Letter-Latin-Lower-M : SmallMArches + + create-glyph 'armn/peh' 0x57A : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.p + include : SmallMArches df XH 0 0 0 + include : FlipAround df.middle (XH / 2) + include : VBar.r df.rightSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.rt.inner sf.rb.fullSide + composite-proc sf.lt.outer sf.rb.fullSide + do "Rra" create-glyph 'armn/rra' 0x57C : glyph-proc local df : include : DivFrame 1 @@ -283,10 +298,9 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : VBar.m df.middle 0 XH df.mvs if SLAB : begin local sf : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) - include : composite-proc sf.mt.left sf.mb.right sf.rb.full - include sf.rb.outer + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.mb.right sf.rb.full + composite-proc sf.lt.outer sf.rb.outer do "Reh" create-glyph 'armn/reh' 0x580 : glyph-proc @@ -302,7 +316,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH Descender local sf2 : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide include : if para.isItalic sf2.rb.outer sf2.rb.full do "P'iur" diff --git a/packages/font-glyphs/src/letter/armenian/shared.ptl b/packages/font-glyphs/src/letter/armenian/shared.ptl index be6e7a7adf..a73967626f 100644 --- a/packages/font-glyphs/src/letter/armenian/shared.ptl +++ b/packages/font-glyphs/src/letter/armenian/shared.ptl @@ -50,14 +50,17 @@ glyph-block Letter-Armenian-Shared-Shapes : begin set [ArmHBar.left df fCapital fOverslab] : ArmHBar JUT-LEFT df fCapital fOverslab glyph-block-export RightHook - define [RightHook df top sw baseSerif hookSerif _base _hookY] : glyph-proc + define [RightHook df top sw baseSerif hookSerif _base _hookY _ada _adb] : glyph-proc local base : fallback _base 0 local hookY : fallback _hookY (top - Hook) + local ada : fallback _ada ArchDepthA + local adb : fallback _adb ArchDepthB + local yMidDepth : if (top > ada + adb) ada (top * (ada / (ada + adb))) include : dispiro widths.lhs df.mvs g4 df.rightSB hookY hookstart top (sw -- sw) - flat df.leftSB (top - ArchDepthA) + flat df.leftSB (top - yMidDepth) curl df.leftSB base [heading Downward] if baseSerif : begin local sf : SerifFrame.fromDf df top base @@ -67,14 +70,17 @@ glyph-block Letter-Armenian-Shared-Shapes : begin include sf.rb.full glyph-block-export LeftHook - define [LeftHook df top sw baseSerif hookSerif _base _hookY] : glyph-proc + define [LeftHook df top sw baseSerif hookSerif _base _hookY _ada _adb] : glyph-proc local base : fallback _base 0 local hookY : fallback _hookY (top - Hook) + local ada : fallback _ada ArchDepthA + local adb : fallback _adb ArchDepthB + local yMidDepth : if (top > ada + adb) adb (top * (adb / (ada + adb))) include : dispiro widths.rhs df.mvs g4 df.leftSB hookY hookstart top (sw -- sw) - flat df.rightSB (top - ArchDepthB) + flat df.rightSB (top - yMidDepth) curl df.rightSB base [heading Downward] if baseSerif : begin local sf : SerifFrame.fromDf df top base @@ -94,4 +100,3 @@ glyph-block Letter-Armenian-Shared-Shapes : begin g4.down.mid right (top - adb) flat [mix left right flatp] [mix (bot + df.mvs) refY flatp] curl left (bot + df.mvs) [widths.lhs df.mvs] - diff --git a/packages/font-glyphs/src/letter/armenian/to.ptl b/packages/font-glyphs/src/letter/armenian/to.ptl index 0000c2de5d..c31c50fcf8 100644 --- a/packages/font-glyphs/src/letter/armenian/to.ptl +++ b/packages/font-glyphs/src/letter/armenian/to.ptl @@ -58,4 +58,4 @@ glyph-block Letter-Armenian-To : begin curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosT if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include : composite-proc sf.lt.outer sf.lb.full + include : composite-proc sf.lt.outer sf.lb.fullSide diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl index a72ddabc0f..0dce05890f 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -13,12 +13,12 @@ glyph-block Letter-Armenian-Upper-U-Group : begin glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar do "Ayb" - glyph-block-import Letter-Latin-Upper-Q : QCrossing + glyph-block-import Letter-Latin-Upper-Q : QCrossing QInnerDiagSw create-glyph 'armn/Ayb' 0x531 : glyph-proc local df : include : DivFrame 1 include : df.markSet.capital include : UShape df CAP 1 df.mvs - include : QCrossing df CAP [AdviceStroke 4] + include : QCrossing df CAP QInnerDiagSw if SLAB : include : USerifs.Toothless df CAP df.mvs do "Men" diff --git a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl index da959dc230..2e92866534 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl @@ -15,10 +15,13 @@ glyph-block Letter-Armenian-Upper-Yi : begin create-glyph 'armn/Yi' 0x545 : glyph-proc local df : include : DivFrame 1 include : df.markSet.capital - local blend : 1 + 2 * O / (df.rightSB - df.leftSB) - local midy : mix 0 CAP OverlayPos - local ze : CyrZe 0 0 CAP 0 df.leftSB df.rightSB blend Hook + local ze : CyrZe 0 0 CAP 0 + left -- df.leftSB + right -- df.rightSB + blend -- (1 + 2 * O / (df.rightSB - df.leftSB)) + hook -- Hook include : ze.Shape if SLAB : begin - local yiJut : Math.min VJut : CAP - 2 * Hook - df.mvs - include : VBar.l (df.leftSB - 2 * O) (midy - 0.5 * yiJut) (midy + 0.5 * yiJut) df.mvs + local midy : mix 0 CAP OverlayPos + local vJut : Math.min VJut : CAP - 2 * Hook - df.mvs + include : VBar.l (df.leftSB - 2 * O) (midy - 0.5 * vJut) (midy + 0.5 * vJut) df.mvs diff --git a/packages/font-glyphs/src/letter/latin/lower-j.ptl b/packages/font-glyphs/src/letter/latin/lower-j.ptl index b3e25c75bd..e324252c4a 100644 --- a/packages/font-glyphs/src/letter/latin/lower-j.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-j.ptl @@ -36,10 +36,10 @@ glyph-block Letter-Latin-Lower-J : begin define XMiddle : namespace export : define [StraightSerifless df] : begin df.middle - export : define [StraightSerifed df] : df.middle + [IBalance2 df] - export : define [BentHook df] : df.middle + JBalance + export : define [StraightSerifed df] : df.middle + [IBalance2 df] + export : define [BentHook df] : df.middle + JBalance export : define [FlatHookSerifless df] : df.middle + 0.25 * JBalance * df.div * [mix 1 df.div 2] - export : define [FlatHookSerifed df] : df.middle + JBalance * df.div + export : define [FlatHookSerifed df] : df.middle + JBalance * df.div export : define [StraightAutoSerifed df] : if SLAB [StraightSerifed df] [StraightSerifless df] export : define [FlatHookAutoSerifed df] : if SLAB [FlatHookSerifed df] [FlatHookSerifless df] diff --git a/packages/font-glyphs/src/letter/latin/lower-m.ptl b/packages/font-glyphs/src/letter/latin/lower-m.ptl index 82132fbf97..6a57ea4f56 100644 --- a/packages/font-glyphs/src/letter/latin/lower-m.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-m.ptl @@ -89,8 +89,12 @@ glyph-block Letter-Latin-Lower-M : begin local sf : SerifFrame.fromDf df top rbot return sf.rb.outer + glyph-block-export dfM + define [dfM] : DivFrame para.diversityM 3 + glyph-block-export MEnoughSpaceForFullSerifs - define [MEnoughSpaceForFullSerifs df _mid] : begin + define [MEnoughSpaceForFullSerifs _df _mid] : begin + local df : fallback _df : dfM local mid : fallback _mid df.middle local ink : HSwToV df.mvs local gap : [Math.min (mid - df.leftSB) (df.rightSB - mid)] - 1.5 * ink @@ -127,8 +131,7 @@ glyph-block Letter-Latin-Lower-M : begin local fFull : MEnoughSpaceForFullSerifs df : fallback _mid df.middle include : SmallMBottomMotionRightSerif df top rbot fFull - glyph-block-export dfM - define [dfM] : DivFrame para.diversityM 3 + glyph-block-export SmallMArches define [SmallMArches df top lbot mbot rbot _mid] : glyph-proc local mid : fallback _mid df.middle include : SmallMShoulderSpiro diff --git a/packages/font-glyphs/src/letter/latin/upper-j.ptl b/packages/font-glyphs/src/letter/latin/upper-j.ptl index 7e4f031db1..f39711bcf1 100644 --- a/packages/font-glyphs/src/letter/latin/upper-j.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-j.ptl @@ -69,7 +69,7 @@ glyph-block Letter-Latin-Upper-J : begin hookend Descender g4 hookx (Descender + JHook) - set JBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' + set JBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' set JDescendingBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - [HSwToV HalfStroke]) top Descender 'capDesc' define [JCurlyTailBaseT df xc xCo top bottom markClass] : glyph-proc set-width df.width @@ -90,7 +90,7 @@ glyph-block Letter-Latin-Upper-J : begin y2 -- bottom + 0.5 * fine yLoopTop -- bottom + 2 * fine + 2 * rinner - define [JDescendingFlatHookBase df dfHook top] : glyph-proc + define [JDescendingFlatHookSeriflessBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capDesc' 'p'] include : FlatHookDotlessJShape df dfHook top @@ -112,11 +112,11 @@ glyph-block Letter-Latin-Upper-J : begin define JConfig : SuffixCfg.weave object # height and hook - bentHook { JBentHookBase [DivFrame 1] [DivFrame 1] } - flatHook { JFlatHookBase [DivFrame 1] [DivFrame 1] } - descendingBentHook { JDescendingBentHookBase [DivFrame 1] [DivFrame 1] } - descendingFlatHookSerifless { JDescendingFlatHookBase [DivFrame para.diversityI] [DivFrame para.diversityI] } - descendingFlatHookSerifed { JDescendingFlatHookSerifedBase [DivFrame para.diversityI] [DivFrame para.diversityI] } + bentHook { JBentHookBase [DivFrame 1] [DivFrame 1] } + flatHook { JFlatHookBase [DivFrame 1] [DivFrame 1] } + descendingBentHook { JDescendingBentHookBase [DivFrame 1] [DivFrame 1] } + descendingFlatHookSerifless { JDescendingFlatHookSeriflessBase [DivFrame para.diversityI] [DivFrame para.diversityI] } + descendingFlatHookSerifed { JDescendingFlatHookSerifedBase [DivFrame para.diversityI] [DivFrame para.diversityI] } function [body] : if (body == 'descendingFlatHookSerifless' || body == 'descendingFlatHookSerifed') {."" null} : object serifless null serifed JLeftwardSerif diff --git a/packages/font-glyphs/src/letter/latin/upper-q.ptl b/packages/font-glyphs/src/letter/latin/upper-q.ptl index e1c0c665d3..10153ca3f5 100644 --- a/packages/font-glyphs/src/letter/latin/upper-q.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-q.ptl @@ -148,13 +148,17 @@ glyph-block Letter-Latin-Upper-Q : begin ################################### + glyph-block-export QInnerDiagSw + define QInnerDiagSw : AdviceStroke 4 + define QInnerVertSw : Math.min [AdviceStroke 3.5] ((RightSB - SB - [HSwToV : 2 * Stroke]) / (2 * HVContrast)) + define QConfig : object straight { QStdBody Stroke QStraightTail 'capDesc' 'p' } curlyTailed { QStdBody Stroke QCurlyTail 'capDesc' 'p' } crossingCurlyTailed { QStdBody QInnerVertSw QCrossingCurlyTail 'capDesc' 'p' } - crossing { QStdBody [AdviceStroke 4] QCrossing 'capital' 'e' } - crossingBaseline { QStdBody [AdviceStroke 4] QCrossingBaseline 'capital' 'e' } + crossing { QStdBody QInnerDiagSw QCrossing 'capital' 'e' } + crossingBaseline { QStdBody QInnerDiagSw QCrossingBaseline 'capital' 'e' } verticalCrossing { QStdBody QInnerVertSw QVerticalCrossing 'capDesc' 'p' } horizontalTailed { QHorizontalTailedBody [AdviceStroke 3] no-shape 'capital' 'e' } detachedTailed { QStdBody Stroke QDetachedTail 'capDesc' 'p' } From 03d5fc5f24d562f4d8ddd880fac5090725380084 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:57:32 -0400 Subject: [PATCH 10/15] Reduce/Eliminate remaning variant behavior of Armenian lookalike letters. (#2565) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Cleanup of #2560 . * Cleanup of #2563 . * Cleanup of `ա`. * cleanup of `հ`. * Cleanup of `ս`. --- .../src/letter/armenian/aliases.ptl | 7 +- .../src/letter/armenian/lower-q-group.ptl | 37 ++++++--- .../src/letter/armenian/lower-u-group.ptl | 80 ++++++++++++++++++- .../src/letter/armenian/shared.ptl | 4 +- .../font-glyphs/src/letter/latin/lower-g.ptl | 3 +- .../font-glyphs/src/letter/latin/lower-q.ptl | 1 - params/variants.toml | 11 --- 7 files changed, 107 insertions(+), 36 deletions(-) diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index 628b55974a..7c4036f556 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -10,12 +10,7 @@ glyph-block Letter-Armenian-Aliases : begin alias 'armn/Tiun' 0x54F 'S.serifless' alias 'armn/Piur' 0x553 'grek/Phi' alias 'armn/Oh' 0x555 'O' - alias 'armn/aybTurned' 0x560 'm' - alias 'armn/ayb' 0x561 'turnm' - alias 'armn/ho' 0x570 'h' alias 'armn/yi' 0x575 'dotlessj.flatHook' - alias 'armn/vo' 0x578 'n' - alias 'armn/seh' 0x57D 'u' - alias 'armn/co' 0x581 'cyrl/de.BGR' + alias 'armn/co' 0x581 'g.singleStorey' alias 'armn/oh' 0x585 'o' alias 'armn/yiBar' 0x588 'dotlessjBar.flatHook' diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl index e00f013467..3bbb0c2de4 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback SuffixCfg] from "@iosevka/util" +import [mix linreg clamp fallback] from "@iosevka/util" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -8,18 +8,29 @@ glyph-module glyph-block Letter-Armenian-Lower-Q-Group : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Shared-Shapes : SerifFrame OBarRight glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar - glyph-block-import Letter-Latin-Lower-Q : QConfig - foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : if [not fTail] : do - create-glyph "armn/gim.\(suffix)" : glyph-proc - include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS - include : [ArmHBar.right [DivFrame 1] 0].base + do "Gim" + create-glyph 'armn/gim' 0x563 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : OBarRight.shape (top -- XH) + include : VBar.r df.rightSB Descender XH + include : [ArmHBar.right df 0].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.rb.fullSide + if [not para.isItalic] : begin + include sf.rt.outer - if [not sRB] : create-glyph "armn/za.\(suffix)" : glyph-proc - include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS - include : [ArmHBar.right [DivFrame 1] 0].desc - - select-variant 'armn/gim' 0x563 (follow -- 'q/tailless') - select-variant 'armn/za' 0x566 (follow -- 'qRTail') + do "Za" + create-glyph 'armn/za' 0x566 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : OBarRight.shape (top -- XH) + include : VBar.r df.rightSB Descender XH + include : [ArmHBar.right df 0].desc + if (SLAB && [not para.isItalic]) : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.rt.outer diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index 03d2839742..fa13f093da 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -12,12 +12,38 @@ glyph-block Letter-Armenian-Lower-U-Group : begin glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck glyph-block-import Letter-Latin-U : USerifs + glyph-block-import Letter-Latin-Lower-M : SmallMArches # Common Params define barPos : XH / 2 define highBarPos XH define jut Jut + do "Turned Ayb" + create-glyph 'armn/aybTurned' 0x560 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : SmallMArches df XH 0 0 0 + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + if sf.enoughSpaceForFullSerifs + composite-proc sf.lt.outer sf.lb.full sf.mb.full sf.rb.full + composite-proc sf.lt.outer sf.lb.outer sf.rb.outer + + do "Ayb" + create-glyph 'armn/ayb' 0x561 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : SmallMArches df XH 0 0 0 + include : FlipAround df.middle (XH / 2) + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.rt.inner sf.rb.outer + composite-proc sf.lt.outer sf.rb.outer + do "Ben" create-glyph 'armn/ben' 0x562 : glyph-proc local df : include : DivFrame 1 @@ -155,6 +181,23 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include sf2.rb.fullSide include : composite-proc sf2.rt.inner sf2.rb.fullSide + do "Ho" + create-glyph 'armn/ho' 0x570 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : VBar.l df.leftSB 0 Ascender df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.lb.full sf.rb.full + do "Ghat" create-glyph 'armn/ghat' 0x572 : glyph-proc local df : include : DivFrame 1 @@ -208,9 +251,24 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include sf.rb.outer if [not para.isItalic] : include sf.rt.inner - do "Peh" - glyph-block-import Letter-Latin-Lower-M : SmallMArches + do "Vo" + create-glyph 'armn/vo' 0x578 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.lb.full sf.rb.full + do "Peh" create-glyph 'armn/peh' 0x57A : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.p @@ -259,6 +317,24 @@ glyph-block Letter-Armenian-Lower-U-Group : begin # if [not para.isItalic] : begin # include : composite-proc sf.lb.full + do "Seh" + create-glyph 'armn/seh' 0x57D : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.rt.inner sf.rb.outer + do "Vew" create-glyph 'armn/vew' 0x57E : glyph-proc local df : include : DivFrame 1 diff --git a/packages/font-glyphs/src/letter/armenian/shared.ptl b/packages/font-glyphs/src/letter/armenian/shared.ptl index a73967626f..ca9c025146 100644 --- a/packages/font-glyphs/src/letter/armenian/shared.ptl +++ b/packages/font-glyphs/src/letter/armenian/shared.ptl @@ -55,7 +55,7 @@ glyph-block Letter-Armenian-Shared-Shapes : begin local hookY : fallback _hookY (top - Hook) local ada : fallback _ada ArchDepthA local adb : fallback _adb ArchDepthB - local yMidDepth : if (top > ada + adb) ada (top * (ada / (ada + adb))) + local yMidDepth : if (top - base > ada + adb) ada ((top - base) * (ada / (ada + adb))) include : dispiro widths.lhs df.mvs g4 df.rightSB hookY @@ -75,7 +75,7 @@ glyph-block Letter-Armenian-Shared-Shapes : begin local hookY : fallback _hookY (top - Hook) local ada : fallback _ada ArchDepthA local adb : fallback _adb ArchDepthB - local yMidDepth : if (top > ada + adb) adb (top * (adb / (ada + adb))) + local yMidDepth : if (top - base > ada + adb) adb ((top - base) * (adb / (ada + adb))) include : dispiro widths.rhs df.mvs g4 df.leftSB hookY diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index f8d6a561f9..e0d003fa90 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -128,7 +128,7 @@ glyph-block Letter-Latin-Lower-G : begin export : define [AutoSerifedBody df top] : glyph-proc include : SeriflessBody df top - if SLAB : include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut + if (SLAB && [not para.isItalic]) : include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut export : define [EarlessCornerBody df top] : glyph-proc include : OBarLeft.toothless @@ -154,6 +154,7 @@ glyph-block Letter-Latin-Lower-G : begin singleStorey SingleStorey.RoundHook singleStoreyFlatHook SingleStorey.FlatHook object # ear/serif + "" { SingleStorey.AutoSerifedBody 0 } serifless { SingleStorey.SeriflessBody 0 } serifed { SingleStorey.SerifedBody 0 } earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise } diff --git a/packages/font-glyphs/src/letter/latin/lower-q.ptl b/packages/font-glyphs/src/letter/latin/lower-q.ptl index 099e7f4d8e..964359830e 100644 --- a/packages/font-glyphs/src/letter/latin/lower-q.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-q.ptl @@ -59,7 +59,6 @@ glyph-block Letter-Latin-Lower-Q : begin HSerif.rb (RightSB - [HSwToV HalfStroke]) y Jut define [RbSerifAuto y] : NeedSlab SLAB : RbSerif y - glyph-block-export QConfig define QConfig : SuffixCfg.weave object # body "" EaredBody diff --git a/params/variants.toml b/params/variants.toml index 831a15d699..976aba1591 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -3951,7 +3951,6 @@ keyAffix = "" selectorAffix.q = "" selectorAffix."q/sansSerif" = "" selectorAffix."q/hookTopBase" = "" -selectorAffix."q/tailless" = "" selectorAffix.qRTail = "" selectorAffix.gha = "" @@ -3961,7 +3960,6 @@ descriptionAffix = "earless (cornered) shape" selectorAffix.q = "earlessCorner" selectorAffix."q/sansSerif" = "earlessCorner" selectorAffix."q/hookTopBase" = "earlessCorner" -selectorAffix."q/tailless" = "earlessCorner" selectorAffix.qRTail = "earlessCorner" selectorAffix.gha = "" @@ -3971,7 +3969,6 @@ descriptionAffix = "earless (rounded) shape" selectorAffix.q = "earlessRounded" selectorAffix."q/sansSerif" = "earlessRounded" selectorAffix."q/hookTopBase" = "" -selectorAffix."q/tailless" = "earlessRounded" selectorAffix.qRTail = "earlessRounded" selectorAffix.gha = "" @@ -3984,7 +3981,6 @@ descriptionAffix = "straight terminal" selectorAffix.q = "straight" selectorAffix."q/sansSerif" = "straight" selectorAffix."q/hookTopBase" = "straight" -selectorAffix."q/tailless" = "straight" selectorAffix.qRTail = "straight" selectorAffix.gha = "straight" @@ -3994,7 +3990,6 @@ descriptionAffix = "tailed terminal" selectorAffix.q = "tailed" selectorAffix."q/sansSerif" = "tailed" selectorAffix."q/hookTopBase" = "tailed" -selectorAffix."q/tailless" = "straight" selectorAffix.qRTail = "straight" selectorAffix.gha = "tailed" @@ -4004,7 +3999,6 @@ descriptionAffix = "diagonally tailed terminal" selectorAffix.q = "diagonalTailed" selectorAffix."q/sansSerif" = "diagonalTailed" selectorAffix."q/hookTopBase" = "diagonalTailed" -selectorAffix."q/tailless" = "straight" selectorAffix.qRTail = "straight" selectorAffix.gha = "diagonalTailed" @@ -4015,7 +4009,6 @@ descriptionJoiner = "without" selectorAffix.q = "serifless" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" -selectorAffix."q/tailless" = "serifless" selectorAffix.qRTail = "serifless" selectorAffix.gha = "serifless" @@ -4026,7 +4019,6 @@ descriptionAffix = "serif at bottom" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "bottomSerifed" selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed" @@ -4037,7 +4029,6 @@ descriptionAffix = "motion serifs" selectorAffix.q = "motionSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" -selectorAffix."q/tailless" = "motionSerifed" selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "serifless" @@ -4049,7 +4040,6 @@ descriptionAffix = "serifs" selectorAffix.q = "serifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "serifed" selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "bottomSerifed" @@ -4061,7 +4051,6 @@ descriptionAffix = "serifs" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "bottomSerifed" selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed" From fc196e1bb4fe25876561cdce881e9c0ccc01358e Mon Sep 17 00:00:00 2001 From: Logo <21302803+Logo121@users.noreply.github.com> Date: Wed, 30 Oct 2024 08:27:21 +0800 Subject: [PATCH 11/15] Some terminal characters + Armenian symbols (#2564) * standing knight * horizontal zigzag * eternity symbol * armenian "half rings" * change log --------- Co-authored-by: Belleve --- changes/32.0.0.md | 5 +- .../src/letter/armenian/lower-sha-group.ptl | 10 +- .../src/symbol/geometric/plain.ptl | 26 ++- .../src/symbol/geometric/stars.ptl | 19 ++ .../font-glyphs/src/symbol/math/geometry.ptl | 2 +- .../src/symbol/mosaic/split-graphic.ptl | 215 +++++++++++++----- .../src/symbol/pictograph/faces.ptl | 66 ++---- .../src/symbol/pictograph/robot-and-human.ptl | 10 +- .../src/symbol/pictograph/schematic.ptl | 15 +- .../src/symbol/pictograph/stick-figure.ptl | 84 ++++++- .../symbol/punctuation/quotes-and-primes.ptl | 3 + packages/util/src/index.mjs | 7 + 12 files changed, 318 insertions(+), 144 deletions(-) diff --git a/changes/32.0.0.md b/changes/32.0.0.md index 6b8b50908f..b4e8f42dde 100644 --- a/changes/32.0.0.md +++ b/changes/32.0.0.md @@ -4,9 +4,12 @@ - LONG RIGHT TACK (`U+27DD`). - LONG LEFT TACK (`U+27DE`). - UP ARROW THROUGH CIRCLE (`U+29BD`). + - UPPER LEFT QUADRANT STANDING KNIGHT (`U+1CCD2`) ... LOWER RIGHT QUADRANT STANDING KNIGHT (`U+1CCD5`). + - HORIZONTAL ZIGZAG LINE (`U+1CEB0`). * Add Armenian letters: - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN CAPITAL LETTER FEH (`U+0556`). + - ARMENIAN MODIFIER LETTER LEFT HALF RING (`U+0559`) ... ARMENIAN APOSTROPHE (`U+055A`). - ARMENIAN SMALL LETTER TURNED AYB (`U+0560`) ... ARMENIAN HYPHEN (`U+058A`). - - ARMENIAN DRAM SIGN (`U+058F`). + - RIGHT-FACING ARMENIAN ETERNITY SIGN (`U+058D`) ... ARMENIAN DRAM SIGN (`U+058F`). * Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). * Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl index ae119e091e..c7a41b5f1c 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback] from "@iosevka/util" +import [mix linreg clamp fallback strokeOffset] from "@iosevka/util" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -65,11 +65,9 @@ glyph-block Letter-Armenian-Lower-Sha-Group : begin local dx : df.leftSB - df.rightSB local dy : (Descender + df.mvs) - refY - local hypot : Math.hypot dx dy - local cosAngle : dy / hypot - local sinAngle : (-dx) / hypot - local joinX : mix df.leftSB (df.rightSB + cosAngle * df.mvs) 0.2 - local joinY : mix (Descender + df.mvs) (refY + sinAngle * [HSwToV df.mvs]) 0.2 + local rhs : strokeOffset df.rightSB refY dx dy df.mvs HVContrast + local joinX : mix df.leftSB rhs.x 0.2 + local joinY : mix (Descender + df.mvs) rhs.y 0.2 local fine : df.mvs * (ShoulderFine / Stroke) include : dispiro diff --git a/packages/font-glyphs/src/symbol/geometric/plain.ptl b/packages/font-glyphs/src/symbol/geometric/plain.ptl index 5a570a20bc..13ebac3500 100644 --- a/packages/font-glyphs/src/symbol/geometric/plain.ptl +++ b/packages/font-glyphs/src/symbol/geometric/plain.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback] from "@iosevka/util" +import [mix linreg clamp fallback strokeOffset] from "@iosevka/util" import [DesignParameters] from "../../meta/aesthetics.mjs" glyph-module @@ -612,7 +612,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 StdWhiteShape RightArrowHeadShape 'whiteArrowHeadRight' null {.sw ([Math.min GeometryStroke : AdviceStroke 4.75 : Math.sqrt Geom.Scalar] * [Math.sqrt 5])} do "Other Polygon" - glyph-block-import Shared-Symbol-Shapes : TriangleShape + glyph-block-import Shared-Symbol-Shapes : TriangleShape HZigzag define fineGeometryStroke : AdviceStroke2 4 4 (Geom.Size * 2) @@ -636,3 +636,25 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 create-glyph [MangleName 'slope'] [MangleUnicode 0x2333] : glyph-proc set-width Geom.Width include : TriangleShape Geom.Left Geom.Bot Geom.Left Geom.MidY Geom.Right Geom.Bot fineGeometryStroke + + create-glyph [MangleName 'horiZigzag'] [MangleUnicode 0x1CEB0] : glyph-proc + set-width Geom.Width + define left : SB * MosaicWidthScalar + define right : RightSB * MosaicWidthScalar + define amp : (OperTop - OperBot) / 8 + define sgmts : 4 * MosaicWidthScalar + 1 + + define dx : (right - left) / sgmts + define rhs : strokeOffset left (Geom.MidY - amp) dx (2 * amp) (GeometryStroke / 2) HVContrast + define bot : linreg rhs.x rhs.y (rhs.x + dx) (rhs.y + 2 * amp) left + define top : Geom.MidY * 2 - bot + include : union + HZigzag Geom.MidY left right amp sgmts 1 GeometryStroke + dispiro + widths.lhs GeometryStroke + flat left bot + curl (left + dx) (bot + 2 * amp) + dispiro + widths.lhs GeometryStroke + flat right top + curl (right - dx) (top - 2 * amp) diff --git a/packages/font-glyphs/src/symbol/geometric/stars.ptl b/packages/font-glyphs/src/symbol/geometric/stars.ptl index 1cbe9d5527..08369abba7 100644 --- a/packages/font-glyphs/src/symbol/geometric/stars.ptl +++ b/packages/font-glyphs/src/symbol/geometric/stars.ptl @@ -172,3 +172,22 @@ glyph-block Symbol-Geometric-Stars : for-width-kinds WideWidth1 size -- (0.625 * Geom.Size + swInner) include : ApparentTranslate Geom.MidX Geom.MidY + +glyph-block Symbol-Other-Stars : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + define [EternitySymbol sign] : glyph-proc + define sw : AdviceStroke 6 + define radius : (RightSB - Middle) / 2 + + foreach [j : range 0 8] : do + local angle : sign * j * Math.PI / 4 + local angle2 : sign * (j + 1) * Math.PI / 4 + include : difference + Circle.Outline.At (Middle + radius * [Math.cos angle ]) (SymbolMid + radius * [Math.sin angle ]) radius sw + Circle.Outline.At (Middle + radius * [Math.cos angle ]) (SymbolMid + radius * [Math.sin angle ]) (radius - sw) sw + Circle.Outline.At (Middle + radius * [Math.cos angle2]) (SymbolMid + radius * [Math.sin angle2]) radius sw + + create-glyph 'armn/eternitySignLeft' 0x58E : EternitySymbol 1 + create-glyph 'armn/eternitySignRight' 0x58D : EternitySymbol (-1) diff --git a/packages/font-glyphs/src/symbol/math/geometry.ptl b/packages/font-glyphs/src/symbol/math/geometry.ptl index 5b1e10607f..2117937a5b 100644 --- a/packages/font-glyphs/src/symbol/math/geometry.ptl +++ b/packages/font-glyphs/src/symbol/math/geometry.ptl @@ -163,7 +163,7 @@ glyph-block Symbol-Math-Geometry : begin straight.right.end right top do 'Zigzags' - create-glyph 'zigzag' 0x299A : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 9 0 GeometryStroke + create-glyph 'vertZigzag' 0x299A : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 9 0 GeometryStroke create-glyph 'wigglyFenceLeft' 0x29D8 : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 10 1 GeometryStroke create-glyph 'wigglyFenceRight' 0x29D9 : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 10 0 GeometryStroke diff --git a/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl b/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl index 382301d7d1..92fe288610 100644 --- a/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl +++ b/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl @@ -1,6 +1,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" +import [Transform] from "@iosevka/geometry/transform" import [Box] from "@iosevka/geometry/box" glyph-module @@ -8,7 +9,7 @@ glyph-module glyph-block Symbol-Mosaic-Split-Graphic : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Symbol-Pictograph-Stick-Figure : StickFigureKit PointingHandShape + glyph-block-import Symbol-Pictograph-Stick-Figure : StickFigureKit glyph-block-import Symbol-Pictograph-Keyboard : KeyGen define boxDrawingStroke : AdviceStroke 3.5 @@ -33,18 +34,24 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin return : new Box t2 b l r2 - export : define [Split t b l r vspan hspan vidx hidx fUpright shapeFunc] : begin + export : define [Split t b l r vspan hspan shapeFunc mappings] : glyph-proc local box : NBox t b l r vspan hspan + local shape : shapeFunc box.top box.bottom box.left box.right + local gizmo currentGlyph.gizmo - return : intersection + foreach { vidx hidx name code } [items-of mappings] : create-forked-glyph name code : glyph-proc + set currentGlyph.gizmo gizmo + include : intersection + Mask + composite-proc shape : Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) + + export : define [Select t b l r vspan hspan shapeFunc vidx hidx] : glyph-proc + local box : NBox t b l r vspan hspan + local shape : shapeFunc box.top box.bottom box.left box.right + + include : intersection Mask - with-transform - Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) - if fUpright - composite-proc - ForceUpright - shapeFunc box.top box.bottom box.left box.right - shapeFunc box.top box.bottom box.left box.right + composite-proc shape : Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) for-width-kinds WideWidth4 define right MosaicWidth @@ -64,28 +71,28 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin archv.superness 2 close - define [BuildSplitCircle name unicode vspan hspan vidx hidx] : begin - create-glyph [MangleName name] [MangleUnicode unicode] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right vspan hspan vidx hidx 1 CircleTouchingBox - - BuildSplitCircle "twelfthCircleLT" 0x1CC30 4 4 3 0 - BuildSplitCircle "twelfthCircleCLT" 0x1CC31 4 4 3 1 - BuildSplitCircle "twelfthCircleCRT" 0x1CC32 4 4 3 2 - BuildSplitCircle "twelfthCircleRT" 0x1CC33 4 4 3 3 - BuildSplitCircle "twelfthCircleLMT" 0x1CC34 4 4 2 0 - BuildSplitCircle "quarterCircleLT" 0x1CC35 2 2 1 0 - BuildSplitCircle "quarterCircleRT" 0x1CC36 2 2 1 1 - BuildSplitCircle "twelfthCircleRMT" 0x1CC37 4 4 2 3 - BuildSplitCircle "twelfthCircleLMB" 0x1CC38 4 4 1 0 - BuildSplitCircle "quarterCircleLB" 0x1CC39 2 2 0 0 - BuildSplitCircle "quarterCircleRB" 0x1CC3A 2 2 0 1 - BuildSplitCircle "twelfthCircleRMB" 0x1CC3B 4 4 1 3 - BuildSplitCircle "twelfthCircleLB" 0x1CC3C 4 4 0 0 - BuildSplitCircle "twelfthCircleCLB" 0x1CC3D 4 4 0 1 - BuildSplitCircle "twelfthCircleCRB" 0x1CC3E 4 4 0 2 - BuildSplitCircle "twelfthCircleRB" 0x1CC3F 4 4 0 3 + create-glyph : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : multicell.Split top bottom left right 2 2 CircleTouchingBox : list + list 1 0 [MangleName 'quarterCircleLT'] [MangleUnicode 0x1CC35] + list 1 1 [MangleName 'quarterCircleRT'] [MangleUnicode 0x1CC36] + list 0 0 [MangleName 'quarterCircleLB'] [MangleUnicode 0x1CC39] + list 0 1 [MangleName 'quarterCircleRB'] [MangleUnicode 0x1CC3A] + + include : multicell.Split top bottom left right 4 4 CircleTouchingBox : list + list 3 0 [MangleName 'twelfthCircleLT' ] [MangleUnicode 0x1CC30] + list 3 1 [MangleName 'twelfthCircleCLT'] [MangleUnicode 0x1CC31] + list 3 2 [MangleName 'twelfthCircleCRT'] [MangleUnicode 0x1CC32] + list 3 3 [MangleName 'twelfthCircleRT' ] [MangleUnicode 0x1CC33] + list 2 0 [MangleName 'twelfthCircleLMT'] [MangleUnicode 0x1CC34] + list 2 3 [MangleName 'twelfthCircleRMT'] [MangleUnicode 0x1CC37] + list 1 0 [MangleName 'twelfthCircleLMB'] [MangleUnicode 0x1CC38] + list 1 3 [MangleName 'twelfthCircleRMB'] [MangleUnicode 0x1CC3B] + list 0 0 [MangleName 'twelfthCircleLB' ] [MangleUnicode 0x1CC3C] + list 0 1 [MangleName 'twelfthCircleCLB'] [MangleUnicode 0x1CC3D] + list 0 2 [MangleName 'twelfthCircleCRB'] [MangleUnicode 0x1CC3E] + list 0 3 [MangleName 'twelfthCircleRB' ] [MangleUnicode 0x1CC3F] do "Television" define scaffold : object @@ -141,22 +148,14 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin include : DotAt dotX (top - graphicSw - scaffold.dotYOffset * 3) scaffold.dotSize include : Screen (top - scaffold.screenInset) (tvBot + scaffold.screenInset) (left + scaffold.screenInset) (dotX - scaffold.dotXOffset) - create-glyph [MangleName 'televisionLT'] [MangleUnicode 0x1CCB2] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 Television - create-glyph [MangleName 'televisionRT'] [MangleUnicode 0x1CCB3] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 Television - create-glyph [MangleName 'televisionLB'] [MangleUnicode 0x1CCB4] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 Television - create-glyph [MangleName 'televisionRB'] [MangleUnicode 0x1CCB5] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 Television + include : multicell.Split top bottom left right 2 2 Television : list + list 1 0 [MangleName 'televisionLT'] [MangleUnicode 0x1CCB2] + list 1 1 [MangleName 'televisionRT'] [MangleUnicode 0x1CCB3] + list 0 0 [MangleName 'televisionLB'] [MangleUnicode 0x1CCB4] + list 0 1 [MangleName 'televisionRB'] [MangleUnicode 0x1CCB5] do "Microcomputer" define scaffold : object @@ -187,7 +186,7 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin # ** ** ** ** ** ** **** # *** ** ** ** ** ** *** # **** ** ** ** ** ****** - # **************** + # **************** include : KeyGen (kbdTop - graphicSw - scaffold.keyInset) (bot + graphicSw + scaffold.keyInset) keyLeft keyRight 28 4 graphicSw : list list 3 0 2 list 3 4 6 @@ -211,21 +210,115 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin list 1 22 28 list 0 6 22 - create-glyph [MangleName 'microcomputerLT'] [MangleUnicode 0x1CCB6] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 Microcomputer - create-glyph [MangleName 'microcomputerRT'] [MangleUnicode 0x1CCB7] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 Microcomputer - create-glyph [MangleName 'microcomputerLB'] [MangleUnicode 0x1CCB8] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 Microcomputer - create-glyph [MangleName 'microcomputerRB'] [MangleUnicode 0x1CCB9] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 Microcomputer + include : multicell.Split top bottom left right 2 2 Microcomputer : list + list 1 0 [MangleName 'microcomputerLT'] [MangleUnicode 0x1CCB6] + list 1 1 [MangleName 'microcomputerRT'] [MangleUnicode 0x1CCB7] + list 0 0 [MangleName 'microcomputerLB'] [MangleUnicode 0x1CCB8] + list 0 1 [MangleName 'microcomputerRB'] [MangleUnicode 0x1CCB9] + + do "Knight" + define [StandingKnight top bot left right] : glyph-proc + local box : new Box top bot left right + + local sw1 : graphicSw * MosaicWidthScalar + local sw2 : graphicSw * 2 * [Math.sqrt MosaicWidthScalar] + local kit1 : StickFigureKit box [Transform.Id] sw1 + local kit2 : StickFigureKit box [Translate (sw2 - sw1) 0] sw2 + local kit3 : StickFigureKit box [Translate (sw1 / 2) 0] sw1 + # Flag + local flagMidX : [box.mixX : 13 / 16] + (sw2 - sw1) + include : union + kit1.RoundSeg 1 0 1 1 0 0 (-1) + intersection [MaskRight flagMidX] + kit2.RoundSeg (16 / 16) 1 (13 / 16) (13 / 16) 0 0 1 + intersection [MaskLeft flagMidX] + kit2.RoundSeg (13 / 16) (13 / 16) (10 / 16) 1 0 0 1 + # Head + local HelmetX1 : box.mixX (6 / 16) + local HelmetMask : union + kit1.Arc 0.75 0.5 (6 / 16) (14 / 16) 0.75 (10 / 16) 0 0 1 1 + MaskLeft HelmetX1 + include : union + difference + union + kit1.RoundSeg ( 4 / 16) (25 / 32) ( 6 / 16) (14 / 16) 0 0 1 + kit1.Arc ( 6 / 16) (14 / 16) (10 / 16) (14 / 16) ( 8 / 16) (31 / 32) 0 0 1 + kit1.RoundSeg (10 / 16) (14 / 16) (12 / 16) (25 / 32) 0 0 1 + kit1.Arc (12 / 16) (25 / 32) (13 / 16) (11 / 16) (13 / 16) (47 / 64) 0 0 1 + kit1.ArcVH (13 / 16) (11 / 16) (11 / 16) ( 8 / 16) 0 0 1 + * HelmetMask + intersection + union + kit1.Arc ( 2 / 16) (5 / 8) ( 6 / 16) (14 / 16) ( 2 / 16) (6 / 8) 0 0 1 1 + MaskRight HelmetX1 + kit1.Arc 0.75 0.5 (6 / 16) (14 / 16) 0.75 (10 / 16) 0 0 (-1) + intersection + * HelmetMask + union + kit1.RoundSeg 0.75 0.5 0.25 0.5 0 0 1 + kit1.ArcHV ( 4 / 16) 0.5 ( 2 / 16) (5 / 8) 0 0 1 + kit1.ArcHV ( 6 / 16) 0.5 ( 4 / 16) (5 / 8) 0 0 1 + kit1.ArcHV ( 8 / 16) 0.5 ( 6 / 16) (5 / 8) 0 0 1 + kit1.ArcHV (10 / 16) 0.5 ( 8 / 16) (5 / 8) 0 0 1 + kit1.ArcHV (12 / 16) 0.5 (10 / 16) (5 / 8) 0 0 1 + kit1.Arc ( 2 / 16) (5 / 8) ( 6 / 16) (14 / 16) ( 2 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 4 / 16) (5 / 8) ( 8 / 16) (14 / 16) ( 4 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 6 / 16) (5 / 8) (10 / 16) (14 / 16) ( 6 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 8 / 16) (5 / 8) (12 / 16) (14 / 16) ( 8 / 16) (6 / 8) 0 0 1 + kit1.Arc (10 / 16) (5 / 8) (14 / 16) (14 / 16) (10 / 16) (6 / 8) 0 0 1 + + # Body + include : union + difference + union + kit1.ArcVH (12 / 16) ( 8 / 16) ( 7 / 16) ( 4 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 4 / 16) ( 3 / 16) ( 6 / 16) 0 0 1 + kit1.Arc ( 3 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) ( 3 / 16) ( 7 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) 0 0 1 1 + intersection [MaskBelow : box.mixY 0.5] + kit1.Arc (12 / 16) ( 8 / 16) ( 7 / 16) ( 6 / 16) ( 9 / 16) ( 6 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) 0 0 1 + + # Limbs + include : difference + union + # Left Arm + kit1.RoundSeg 1 0.5 (5 / 8) 0.5 0 0 (-1) + kit1.RoundSeg 1 0.5 (5 / 8) 0.5 0 0 (-3) + kit1.RoundSeg 1 0.5 1 [Math.min (17 / 32) : 8 / 16 + 2 * sw1 / (top - bot)] 0 1 (-3) + # Right Arm + kit3.RoundSeg (0 / 16) (7 / 16) (4 / 16) ( 7 / 16) 1 0 1 + kit3.RoundSeg (0 / 16) (7 / 16) (4 / 16) ( 7 / 16) 1 0 3 + kit3.RoundSeg (1 / 32) (7 / 16) (1 / 32) [Math.min (15 / 32) : 7 / 16 + 2 * sw1 / (top - bot)] 0 1 1 + # Leg + kit1.RoundSeg (8 / 16) 0 (8 / 16) (5 / 16) 0 0 1 + kit1.RoundSeg (7 / 16) 0 (7 / 16) (5 / 16) 0 0 (-1) + union + kit1.ArcVH (12 / 16) ( 8 / 16) ( 7 / 16) ( 4 / 16) 0 0 1 1 + kit1.ArcHV ( 7 / 16) ( 4 / 16) ( 3 / 16) ( 6 / 16) 0 0 1 1 + kit1.Arc ( 3 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) ( 3 / 16) (7 / 16) 0 0 1 1 + kit1.Box ( 4 / 16) ( 6 / 16) ( 8 / 16) ( 8 / 16) + + # Feet + include : difference + spiro-outline + corner left bot + g4 [box.mixX : 1 / 4] (bot + sw2) + g4 [box.mixX : 2 / 4] (bot + 0.99 * sw2) + g4 [box.mixX : 3 / 4] (bot + sw2) + corner [box.mixX : 7 / 8] bot + intersection [MaskRight : box.mixX : 7 / 16] [MaskLeft : box.mixX : 1 / 2] + + create-glyph : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : multicell.Split top bottom left right 2 2 StandingKnight : list + list 1 0 [MangleName 'standingknightLT'] [MangleUnicode 0x1CCD2] + list 1 1 [MangleName 'standingknightRT'] [MangleUnicode 0x1CCD3] + list 0 0 [MangleName 'standingknightLB'] [MangleUnicode 0x1CCD4] + list 0 1 [MangleName 'standingknightRB'] [MangleUnicode 0x1CCD5] diff --git a/packages/font-glyphs/src/symbol/pictograph/faces.ptl b/packages/font-glyphs/src/symbol/pictograph/faces.ptl index 7d1dc03675..65b247fa56 100644 --- a/packages/font-glyphs/src/symbol/pictograph/faces.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/faces.ptl @@ -180,51 +180,25 @@ glyph-block Symbol-Pictograph-Faces : begin bigFace.Nose bigFace.Mouth k - create-glyph [MangleName 'openEyeBigFaceLeft'] [MangleUnicode 0x1CCA6] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 FaceOpenEyes - create-glyph [MangleName 'openEyeBigFaceRight'] [MangleUnicode 0x1CCA7] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 FaceOpenEyes - create-glyph [MangleName 'closedEyeBigFaceLeft'] [MangleUnicode 0x1CCA8] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 FaceClosedEyes - create-glyph [MangleName 'closedEyeBigFaceRight'] [MangleUnicode 0x1CCA9] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 FaceClosedEyes - create-glyph [MangleName 'smileBigFaceLeft'] [MangleUnicode 0x1CCAA] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth 1 - create-glyph [MangleName 'smileBigFaceRight'] [MangleUnicode 0x1CCAB] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth 1 - create-glyph [MangleName 'neutralBigFaceLeft'] [MangleUnicode 0x1CCAC] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth 0 - create-glyph [MangleName 'neutralBigFaceRight'] [MangleUnicode 0x1CCAD] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth 0 - create-glyph [MangleName 'openMouthBigFaceLeft'] [MangleUnicode 0x1CCAE] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 FaceOpenMouth - create-glyph [MangleName 'openMouthBigFaceRight'] [MangleUnicode 0x1CCAF] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 FaceOpenMouth - create-glyph [MangleName 'frownBigFaceLeft'] [MangleUnicode 0x1CCB0] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth (-1) - create-glyph [MangleName 'frownBigFaceRight'] [MangleUnicode 0x1CCB1] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth (-1) + + include : multicell.Split top bottom left right 2 2 FaceOpenEyes : list + list 1 0 [MangleName 'openEyeBigFaceLeft'] [MangleUnicode 0x1CCA6] + list 1 1 [MangleName 'openEyeBigFaceRight'] [MangleUnicode 0x1CCA7] + include : multicell.Split top bottom left right 2 2 FaceClosedEyes : list + list 1 0 [MangleName 'closedEyeBigFaceLeft'] [MangleUnicode 0x1CCA8] + list 1 1 [MangleName 'closedEyeBigFaceRight'] [MangleUnicode 0x1CCA9] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth 1] : list + list 0 0 [MangleName 'smileBigFaceLeft'] [MangleUnicode 0x1CCAA] + list 0 1 [MangleName 'smileBigFaceRight'] [MangleUnicode 0x1CCAB] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth 0] : list + list 0 0 [MangleName 'neutralBigFaceLeft'] [MangleUnicode 0x1CCAC] + list 0 1 [MangleName 'neutralBigFaceRight'] [MangleUnicode 0x1CCAD] + include : multicell.Split top bottom left right 2 2 FaceOpenMouth : list + list 0 0 [MangleName 'openMouthBigFaceLeft'] [MangleUnicode 0x1CCAE] + list 0 1 [MangleName 'openMouthBigFaceRight'] [MangleUnicode 0x1CCAF] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth : -1] : list + list 0 0 [MangleName 'frownBigFaceLeft'] [MangleUnicode 0x1CCB0] + list 0 1 [MangleName 'frownBigFaceRight'] [MangleUnicode 0x1CCB1] diff --git a/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl b/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl index 1c9b28340a..bae4ab7545 100644 --- a/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl @@ -274,23 +274,23 @@ glyph-block Symbol-Pictograph-Robot-And-Human : begin create-glyph [MangleName 'humanFrontTop'] [MangleUnicode 0x1CDF0] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 1 0 1 : HumanFront 0 + include : multicell.Select top bottom left right 2 1 [HumanFront 0] 1 0 create-glyph [MangleName 'humanFrontBottom1'] [MangleUnicode 0x1CDF1] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 1 + include : multicell.Select top bottom left right 2 1 [HumanFront 1] 0 0 create-glyph [MangleName 'humanFrontBottom2'] [MangleUnicode 0x1CDF2] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 2 + include : multicell.Select top bottom left right 2 1 [HumanFront 2] 0 0 create-glyph [MangleName 'humanFrontBottom3'] [MangleUnicode 0x1CDF3] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 3 + include : multicell.Select top bottom left right 2 1 [HumanFront 3] 0 0 create-glyph [MangleName 'humanFrontBottom4'] [MangleUnicode 0x1CDF4] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 4 + include : multicell.Select top bottom left right 2 1 [HumanFront 4] 0 0 create-glyph [MangleName 'flailRobotBody1'] [MangleUnicode 0x1CDF6] : glyph-proc set-width MosaicWidth include : ForceUpright diff --git a/packages/font-glyphs/src/symbol/pictograph/schematic.ptl b/packages/font-glyphs/src/symbol/pictograph/schematic.ptl index d12c07fc2b..592287c45d 100644 --- a/packages/font-glyphs/src/symbol/pictograph/schematic.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/schematic.ptl @@ -223,18 +223,13 @@ glyph-block Symbol-Pictograph-Schematic : for-width-kinds WideWidth4 : begin g4 [mix right mid2 kX3] [mix yTerm yTop 0.4] straight.right.end right yTerm - create-glyph [MangleName 'inductorLeftThird'] [MangleUnicode 0x1CC0B] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 0 1 CoilImpl - create-glyph [MangleName 'inductorMiddleThird'] [MangleUnicode 0x1CC0C] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 1 1 CoilImpl - create-glyph [MangleName 'inductorRightThird'] [MangleUnicode 0x1CC0D] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 2 1 CoilImpl + include : multicell.Split top bottom left right 1 3 CoilImpl : list + list 0 0 [MangleName 'inductorLeftThird'] [MangleUnicode 0x1CC0B] + list 0 1 [MangleName 'inductorMiddleThird'] [MangleUnicode 0x1CC0C] + list 0 2 [MangleName 'inductorRightThird'] [MangleUnicode 0x1CC0D] do "Diode" define diodeGap : MosaicWidth / 9 diff --git a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl index 23af04a35c..db251305ee 100644 --- a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl @@ -27,24 +27,36 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin glyph-block-export StickFigureKit define [StickFigureKit box tfm sw] : namespace - export : define [RoundSeg h1 v1 h2 v2 cl cr] : glyph-proc + define [StrokeCap z1 zc side] : glyph-proc + local dh1 : zc.x - z1.x + local dv1 : zc.y - z1.y + local mag : Math.hypot dh1 dv1 + include : Circle.Outline.DotAt (z1.x + dv1 * side * sw / mag) (z1.y - dh1 * side * sw / mag) (sw / 2) + + export : define [RoundSeg h1 v1 h2 v2 cl cr _side] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] include : dispiro disable-contrast - widths.center sw + widths ((1 - side) * sw) (side * sw) corner z1.x z1.y corner z2.x z2.y - if cl : include : Circle.Outline.DotAt z1.x z1.y (sw / 2) - if cr : include : Circle.Outline.DotAt z2.x z2.y (sw / 2) + if cl : include : StrokeCap z1 z2 (side - 0.5) + if cr : include : StrokeCap z2 z1 (0.5 - side) + + define [ArcImpl mode h1 v1 h2 v2 cl cr _side _fMask] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local fMask : fallback _fMask false - define [ArcImpl mode h1 v1 h2 v2 cl cr] : glyph-proc local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] local zc : tfm.applyXY [mix box.left box.right : if mode h1 h2] [mix box.bottom box.top : if mode v2 v1] + local zr : tfm.applyXY [mix box.left box.right : if mode h2 h1] [mix box.bottom box.top : if mode v1 v2] local innerKnots {} foreach j [range 1 64] : begin @@ -58,20 +70,68 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin innerKnots.push : g4 zm.x zm.y unimportant - include : dispiro + include : [if fMask spiro-outline dispiro] disable-contrast - widths.center sw + widths ((1 - side) * sw) (side * sw) flat z1.x z1.y curl [mix z1.x zc.x TINY] [mix z1.y zc.y TINY] * innerKnots flat [mix z2.x zc.x TINY] [mix z2.y zc.y TINY] - curl z2.x z2.y + [if fMask corner curl] z2.x z2.y + if fMask [corner zr.x zr.y] [list] + + if cl : include : StrokeCap z1 zc (side - 0.5) + if cr : include : StrokeCap z2 zc (0.5 - side) + + export : define [ArcVH h1 v1 h2 v2 cl cr _side _fMask] : ArcImpl 1 h1 v1 h2 v2 cl cr _side _fMask + export : define [ArcHV h1 v1 h2 v2 cl cr _side _fMask] : ArcImpl 0 h1 v1 h2 v2 cl cr _side _fMask + + export : define [Arc h1 v1 h2 v2 hc vc cl cr _side _fMask] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local fMask : fallback _fMask false + + local fFlat : (h1 == h2) || (v1 == v2) + local fSwap : ((h2 - hc) * (h1 - h2) > 0) || ((v1 - v2) * (vc - v1) > 0) + local zr : tfm.applyXY [mix box.left box.right [if fSwap h1 h2]] [mix box.bottom box.top [if fSwap v2 v1]] + + local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] + local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] + + local zc : tfm.applyXY [mix box.left box.right hc] [mix box.bottom box.top vc] + + local ho : h1 + h2 - hc + local vo : v1 + v2 - vc - if cl : include : Circle.Outline.DotAt z1.x z1.y (sw / 2) - if cr : include : Circle.Outline.DotAt z2.x z2.y (sw / 2) + local dh1 : hc - h1 + local dv1 : vc - v1 + local dh2 : hc - h2 + local dv2 : vc - v2 + + local innerKnots {} + define nKnots 64 + foreach j [range 1 nKnots] : begin + local theta : (Math.PI / 2) * (j / nKnots) + local c : Math.pow [Math.cos theta] (2 / DesignParameters.superness) + local s : Math.pow [Math.sin theta] (2 / DesignParameters.superness) + + local mx : mix box.left box.right (ho + s * dh1 + c * dh2) + local my : mix box.bottom box.top (vo + s * dv1 + c * dv2) + local zm : tfm.applyXY mx my + + innerKnots.push : g4 zm.x zm.y [if (fFlat && (j == [Math.floor : nKnots / 2])) nothing unimportant] + + include : [if fMask spiro-outline dispiro] + disable-contrast + widths ((1 - side) * sw) (side * sw) + flat z1.x z1.y + curl [mix z1.x zc.x TINY] [mix z1.y zc.y TINY] + * innerKnots + flat [mix z2.x zc.x TINY] [mix z2.y zc.y TINY] + [if fMask corner curl] z2.x z2.y + if fMask [corner zr.x zr.y] [list] - export : define [ArcVH h1 v1 h2 v2 cl cr] : ArcImpl 1 h1 v1 h2 v2 cl cr - export : define [ArcHV h1 v1 h2 v2 cl cr] : ArcImpl 0 h1 v1 h2 v2 cl cr + if cl : include : StrokeCap z1 zc (side - 0.5) + if cr : include : StrokeCap z2 zc (0.5 - side) export : define [Box h1 v1 h2 v2] : glyph-proc local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] diff --git a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl index bc4ad289e9..75a51770d1 100644 --- a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl @@ -65,6 +65,9 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin alias 'mdfRevComma' 0x2BD 'revSingleQuote' alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote' + alias 'armn/turnComma' 0x559 'openSingleQuote' + alias 'armn/apostrophe' 0x55A 'closeSingleQuote' + # Primes create-glyph 'prime' 0x2032 : glyph-proc local df : include : DivFrame para.diversityF diff --git a/packages/util/src/index.mjs b/packages/util/src/index.mjs index 87f05ab69d..9aa0ce2a3f 100644 --- a/packages/util/src/index.mjs +++ b/packages/util/src/index.mjs @@ -33,6 +33,13 @@ export function boolePn(b) { if (b) return 1; else return -1; } +export function strokeOffset(x, y, dx, dy, offset, contrast) { + const r = Math.hypot(dx, dy); + return { + x: x + (dy / r) * offset * contrast, + y: y - (dx / r) * offset + }; +} /////////////////////////////////////////////////////////////////////////////////////////////////// From c36bb20b5b8ca2ada4f77b6e520dcb8fde432062 Mon Sep 17 00:00:00 2001 From: OutOfContainment <157166949+OutOfContainment@users.noreply.github.com> Date: Wed, 30 Oct 2024 19:59:04 +0000 Subject: [PATCH 12/15] Fixed lowercase bug (#2566) --- tools/misc/src/make-webfont-css.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/misc/src/make-webfont-css.mjs b/tools/misc/src/make-webfont-css.mjs index 79100e6605..558b867cd6 100644 --- a/tools/misc/src/make-webfont-css.mjs +++ b/tools/misc/src/make-webfont-css.mjs @@ -17,7 +17,7 @@ export default function (output, family, hs, formats, unhinted) { if (!WebfontFormatMap.get(ext)) throw new TypeError("Invalid webfont file format " + ext); } for (const term of hs) { - const dirSuffix = unhinted ? "-unhinted" : ""; + const dirSuffix = unhinted ? "-Unhinted" : ""; const src = formats .map( ext => From 06fd237a237c5ff5986b46795ed5a4ca2ad89b4c Mon Sep 17 00:00:00 2001 From: Belleve Date: Thu, 31 Oct 2024 22:28:25 -1000 Subject: [PATCH 13/15] Complete Armenian letters block (#2567) --- changes/32.0.0.md | 7 ++-- packages/font-glyphs/src/marks/above.ptl | 10 ++++++ .../src/meta/unicode-knowledge.ptl | 5 +++ .../src/symbol/geometric/stars.ptl | 2 +- .../symbol/punctuation/quotes-and-primes.ptl | 32 +++++++++++++++++-- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/changes/32.0.0.md b/changes/32.0.0.md index b4e8f42dde..009af8c7de 100644 --- a/changes/32.0.0.md +++ b/changes/32.0.0.md @@ -1,3 +1,5 @@ +* Add Armenian letters: + - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN DRAM SIGN (`U+058F`). * Add characters: - LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`). - LEFT AND RIGHT TACK (`U+27DB`). @@ -6,10 +8,5 @@ - UP ARROW THROUGH CIRCLE (`U+29BD`). - UPPER LEFT QUADRANT STANDING KNIGHT (`U+1CCD2`) ... LOWER RIGHT QUADRANT STANDING KNIGHT (`U+1CCD5`). - HORIZONTAL ZIGZAG LINE (`U+1CEB0`). -* Add Armenian letters: - - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN CAPITAL LETTER FEH (`U+0556`). - - ARMENIAN MODIFIER LETTER LEFT HALF RING (`U+0559`) ... ARMENIAN APOSTROPHE (`U+055A`). - - ARMENIAN SMALL LETTER TURNED AYB (`U+0560`) ... ARMENIAN HYPHEN (`U+058A`). - - RIGHT-FACING ARMENIAN ETERNITY SIGN (`U+058D`) ... ARMENIAN DRAM SIGN (`U+058F`). * Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). * Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index 254b50ddd8..c96253fd86 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -1290,6 +1290,8 @@ glyph-block Mark-Above : begin derive-composites 'graveAbove/viCenter' null 'graveAbove' [VNSecondaryMark 0.875 0 1.75 0.5] derive-composites 'hookAbove/viCenter' null 'hookAbove' [VNSecondaryMark 0.875 0 1.75 0.5] + # Combining brackets + create-glyph 'leftParenAbove' 0x1AC1 : glyph-proc set-width 0 set-mark-anchor 'aboveBraceL' markMiddle aboveMarkMid (markMiddle - markExtend) aboveMarkMid @@ -1382,3 +1384,11 @@ glyph-block Mark-Above : begin include : refer-glyph 'rightBrackAbove' # No need to setup anchors -- ccmp will help us + create-glyph 'armn/abbreviationMark' 0x55F : glyph-proc + set-width 0 + include : StdAnchors.wide + + local leftEnd : markMiddle - markExtend * 1.5 + local rightEnd : markMiddle + markExtend * 1.5 + include : VBar.m leftEnd aboveMarkBot aboveMarkTop (markFine * 2) + include : HBar.b leftEnd rightEnd aboveMarkBot (markFine * 2) diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index 80436c0cab..fae75c06f0 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -221,6 +221,11 @@ export : define decompOverrides : object 0x1DF0C { 'eshCurlyTail' 'dblBarOver' } 0x1DF1A { 'iRetroflexHook' 'barOver' } + # Aliasing of Armenian marks + 0x559 { 'modifierLetterLeftHalfRing' } + 0x55A { 'modifierLetterRightHalfRing' } + 0x55B { 'prime' } + 0x55D { 'revprime' } # List of canonical and non-canonical combinations but applicable for ccmp feature export : define ccmpCombinations : list diff --git a/packages/font-glyphs/src/symbol/geometric/stars.ptl b/packages/font-glyphs/src/symbol/geometric/stars.ptl index 08369abba7..19626a408e 100644 --- a/packages/font-glyphs/src/symbol/geometric/stars.ptl +++ b/packages/font-glyphs/src/symbol/geometric/stars.ptl @@ -178,7 +178,7 @@ glyph-block Symbol-Other-Stars : begin glyph-block-import Common-Derivatives define [EternitySymbol sign] : glyph-proc - define sw : AdviceStroke 6 + define sw : AdviceStroke 6.5 define radius : (RightSB - Middle) / 2 foreach [j : range 0 8] : do diff --git a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl index 75a51770d1..0401dfe5d6 100644 --- a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl @@ -2,6 +2,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" +import [Box] from "@iosevka/geometry/box" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -65,9 +66,6 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin alias 'mdfRevComma' 0x2BD 'revSingleQuote' alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote' - alias 'armn/turnComma' 0x559 'openSingleQuote' - alias 'armn/apostrophe' 0x55A 'closeSingleQuote' - # Primes create-glyph 'prime' 0x2032 : glyph-proc local df : include : DivFrame para.diversityF @@ -244,3 +242,31 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin derive-composites 'hypodiastole' 0x2E12 'modifierLetterRightHalfRing' ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop) + + # Armenian exclamatory + create-glyph 'armn/exclam' 0x55C : glyph-proc + local df : include : DivFrame para.diversityF + local height : quoteTop - quoteBottom + local xLeft : df.middle - height / 2.5 + local xRight : df.middle + height / 2.5 + local sw : AdviceStroke 3 + include : dispiro + g4.up.start xLeft quoteBottom [widths.rhs.heading sw Upward] + g2 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center sw] + g4.up.end xRight quoteTop [widths.lhs.heading sw Upward] + + create-glyph "armn/questionMark" 0x055E : glyph-proc + local df : include : DivFrame para.diversityF + + local height : quoteTop - quoteBottom + local xLeft : df.middle - height / 2 + local xRight : df.middle + height / 2 + local sw : AdviceStroke 4 + + local frame : new Box quoteTop [mix quoteBottom quoteTop 0.2] xLeft xRight + include : dispiro + g4.up.start frame.left frame.bot [widths.rhs sw] + arch.rhs frame.top 0.55 + g4.down.mid frame.right ([frame.yp 0.55] - 0.5 * sw) [widths.rhs sw] + arcvh + g4.left.end [frame.xp 0.6] frame.bot [heading Leftward] From deace6940db7405053f608bdc611ca60aa9757e2 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Fri, 1 Nov 2024 17:23:40 -0400 Subject: [PATCH 14/15] Optimize jut length of Armenian bars under slab. (#2568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Cleanup Armenian bars under slab. * Optimize glyphs of `ձ` and `ճ`. * Optimize metrics of Armenian hyphen. --- .../src/letter/armenian/eh-liun-hiun.ptl | 2 +- .../src/letter/armenian/hook-group.ptl | 2 +- .../font-glyphs/src/letter/armenian/keh.ptl | 3 +- .../src/letter/armenian/lower-dza-cheh.ptl | 44 ++++++++++--------- .../src/letter/armenian/lower-q-group.ptl | 6 +-- .../src/letter/armenian/lower-u-group.ptl | 15 +++---- .../src/letter/armenian/upper-gim-group.ptl | 9 ++-- .../src/letter/armenian/upper-u-group.ptl | 2 +- .../src/symbol/punctuation/dashes.ptl | 8 ++-- 9 files changed, 44 insertions(+), 47 deletions(-) diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl index 43c3e49199..d4c12c1b9f 100644 --- a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -49,7 +49,7 @@ glyph-block Letter-Armenian-Eh-Liun-Hiun : begin include : composite-proc sf.lt.full sf.lb.outer create-glyph 'armn/liun' 0x56C : glyph-proc - local df : include : DivFrame para.diversityII + local df : include : DivFrame : if SLAB para.diversityI para.diversityII include : df.markSet.p local xMiddle : df.middle - [IBalance2 df] include : VBar.m xMiddle Descender XH df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/hook-group.ptl b/packages/font-glyphs/src/letter/armenian/hook-group.ptl index 3994cab1d9..40dc765ab0 100644 --- a/packages/font-glyphs/src/letter/armenian/hook-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/hook-group.ptl @@ -23,7 +23,7 @@ glyph-block Letter-Armenian-Hook-Group : begin local df : include : DivFrame 1 include : df.markSet.capital include : LeftHook df CAP df.mvs SLAB 0 - include : [ArmHBar.right df 1].mid + include : [ArmHBar.right df 1 SLAB].mid do "Ech" create-glyph 'armn/Ech' 0x535 : glyph-proc diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl index 68a6137452..04bcac24f6 100644 --- a/packages/font-glyphs/src/letter/armenian/keh.ptl +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -8,8 +8,7 @@ glyph-module glyph-block Letter-Armenian-Keh : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Shared-Shapes : OBarRight OBarLeft - glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Shared-Shapes : OBarLeft SerifFrame # Common Params define barPos : XH / 2 diff --git a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl index 7168182612..76cd01d3d7 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl @@ -8,8 +8,12 @@ glyph-module glyph-block Letter-Armenian-Lower-Dza-Cheh : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Shared-Shapes : OBarRight OBarLeft - glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Shared-Shapes : OBarRight SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut do "Dz'a" create-glyph 'armn/dza' 0x571 : glyph-proc @@ -17,7 +21,6 @@ glyph-block Letter-Armenian-Lower-Dza-Cheh : begin include : df.markSet.b local x1 : mix df.leftSB df.rightSB 0.25 local x2 : mix df.leftSB df.rightSB 0.75 - local xOffset : 0.5 * [HSwToV df.mvs] local y2 : Math.min [mix Ascender XH 0.5] (XH + 0.5 * SmallArchDepthA) include : dispiro widths.center df.mvs @@ -26,27 +29,26 @@ glyph-block Letter-Armenian-Lower-Dza-Cheh : begin flat df.middle y2 curl x2 y2 [heading Rightward] - local stemFine : df.mvs * (ShoulderFine / Stroke) + local stemFine : ShoulderFine * (df.mvs / Stroke) + define [knots] : list + straight.left.start x2 (y2 + 0.5 * df.mvs) + archv + flat df.leftSB (XH - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) [heading Downward] include : dispiro widths.lhs df.mvs - curl x2 (y2 + 0.5 * df.mvs) - archv.superness 1.5 - straight.down.end df.leftSB (XH - SmallArchDepthA) - curl df.leftSB (0 + SmallArchDepthB) + knots OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB include : intersection spiro-outline - curl x2 (y2 + 0.5 * df.mvs) - archv.superness 1.5 - # curl df.middle XH - straight.down.end df.leftSB (XH - SmallArchDepthA) + knots corner df.leftSB 0 corner VERY-FAR 0 corner VERY-FAR Ascender dispiro widths.rhs df.mvs flat df.leftSB XH - curl df.middle XH + curl df.middle XH [heading Rightward] archv flat df.rightSB (XH - SmallArchDepthB) curl df.rightSB 0 [heading Downward] @@ -59,21 +61,21 @@ glyph-block Letter-Armenian-Lower-Dza-Cheh : begin local df : include : DivFrame 1 include : df.markSet.b local x1 : mix df.leftSB df.rightSB 0.75 - local stemFine : df.mvs * (ShoulderFine / Stroke) + local stemFine : ShoulderFine * (df.mvs / Stroke) include : dispiro widths.lhs df.mvs - flat df.rightSB Ascender - curl x1 Ascender + flat x1 Ascender + curl df.middle Ascender [heading Leftward] archv - flat df.leftSB (XH - SmallArchDepthA) - curl df.leftSB (0 + SmallArchDepthB) + flat df.leftSB (Ascender - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) [heading Downward] OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB include : dispiro widths.rhs df.mvs - flat df.leftSB XH - curl df.middle XH + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) highBarPos + curl df.middle highBarPos [heading Rightward] archv - flat df.rightSB (XH - SmallArchDepthB) + flat df.rightSB (highBarPos - SmallArchDepthB) curl df.rightSB 0 [heading Downward] if SLAB : begin local sf : SerifFrame.fromDf df Ascender 0 diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl index 3bbb0c2de4..3b7947206b 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -8,7 +8,7 @@ glyph-module glyph-block Letter-Armenian-Lower-Q-Group : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Shared-Shapes : SerifFrame OBarRight + glyph-block-import Letter-Shared-Shapes : OBarRight SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar do "Gim" @@ -17,7 +17,7 @@ glyph-block Letter-Armenian-Lower-Q-Group : begin include : df.markSet.p include : OBarRight.shape (top -- XH) include : VBar.r df.rightSB Descender XH - include : [ArmHBar.right df 0].base + include : [ArmHBar.right df 0 SLAB].base if SLAB : begin local sf : SerifFrame.fromDf df XH Descender include sf.rb.fullSide @@ -30,7 +30,7 @@ glyph-block Letter-Armenian-Lower-Q-Group : begin include : df.markSet.p include : OBarRight.shape (top -- XH) include : VBar.r df.rightSB Descender XH - include : [ArmHBar.right df 0].desc + include : [ArmHBar.right df 0 SLAB].desc if (SLAB && [not para.isItalic]) : begin local sf : SerifFrame.fromDf df XH Descender include sf.rt.outer diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index fa13f093da..b76d3b5aee 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -8,8 +8,7 @@ glyph-module glyph-block Letter-Armenian-Lower-U-Group : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderKnots - glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderKnots SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck glyph-block-import Letter-Latin-U : USerifs glyph-block-import Letter-Latin-Lower-M : SmallMArches @@ -74,7 +73,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin top -- XH bottom -- Descender stroke -- df.mvs - include : [ArmHBar.right df 0].base + include : [ArmHBar.right df 0 SLAB].base if SLAB : begin local sf : SerifFrame.fromDf df XH 0 local sf2 : SerifFrame.fromDf df XH Descender @@ -209,7 +208,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin top -- XH bottom -- Descender stroke -- df.mvs - include : [ArmHBar.right df 0].desc + include : [ArmHBar.right df 0 SLAB].desc if SLAB : begin local sf : SerifFrame.fromDf df XH 0 include sf.lt.outer @@ -227,7 +226,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin stroke -- df.mvs include : FlipAround df.middle 0 include : VBar.r df.rightSB 0 Ascender df.mvs - include : [ArmHBar.right df 0].top + include : [ArmHBar.right df 0 SLAB].top if SLAB : begin local sf : SerifFrame.fromDf df XH 0 local sf2 : SerifFrame.fromDf df Ascender 0 @@ -304,13 +303,13 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : composite-proc sf.lb.outer # Alternate straight 'n' form - # include : nShoulder + # include : nShoulder # left -- (df.leftSB + [HSwToV df.mvs]) # right -- df.rightSB # top -- XH # bottom -- 0 # stroke -- df.mvs - # include : [ArmHBar.right df 0].base + # include : [ArmHBar.right df 0 SLAB].base # if SLAB : begin # local sf : SerifFrame.fromDf df XH 0 # include sf.lt.outer @@ -347,7 +346,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin stroke -- df.mvs include : FlipAround df.middle 0 include : VBar.r df.rightSB Descender Ascender df.mvs - include : [ArmHBar.right df 1].desc + include : [ArmHBar.right df 0 SLAB].desc if SLAB : begin local sf : SerifFrame.fromDf df XH 0 diff --git a/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl index b5f2ec30d8..a1283cf532 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl @@ -9,7 +9,6 @@ glyph-block Letter-Armenian-Upper-Gim-Group : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame - glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar # Common Params define barPos : XH / 2 @@ -30,7 +29,7 @@ glyph-block Letter-Armenian-Upper-Gim-Group : begin curl df.leftSB (barPosB + ArchDepthB) arcvh flat df.middle barPosB - curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosB + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) barPosB if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 include sf.rb.full @@ -47,8 +46,7 @@ glyph-block Letter-Armenian-Upper-Gim-Group : begin curl (df.leftSB + OX) (highBarPos - ArchDepthA) arcvh flat df.middle highBarPos - curl df.rightSB highBarPos - include : [ArmHBar.right df 1].high + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) highBarPos if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 include sf.rt.full @@ -65,8 +63,7 @@ glyph-block Letter-Armenian-Upper-Gim-Group : begin curl (df.leftSB + OX) (highBarPos - SmallArchDepthA) arcvh flat df.middle highBarPos - curl df.rightSB highBarPos - include : [ArmHBar.right df 0].high + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) highBarPos if SLAB : begin local sf : SerifFrame.fromDf df Ascender 0 include sf.rt.inner diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl index 0dce05890f..74768b2382 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -46,7 +46,7 @@ glyph-block Letter-Armenian-Upper-U-Group : begin include : df.markSet.capital include : UShape df CAP 1 df.mvs include : FlipAround Middle (CAP / 2) - include : [ArmHBar.right df 1].mid + include : [ArmHBar.right df 1 SLAB].mid if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 include : composite-proc sf.lb.full sf.rb.full diff --git a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl index a459fe5961..84e897fce7 100644 --- a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl @@ -33,7 +33,7 @@ glyph-block Symbol-Punctuation-Dashes : begin foreach { suffix { yBar } } [Object.entries UnderScoreConfig] : do create-glyph "underscore.\(suffix)" : HBar.b SB RightSB yBar create-glyph "doubleUnderscore.\(suffix)" : composite-proc - HBar.b SB RightSB yBar + HBar.b SB RightSB yBar HBar.b SB RightSB (yBar - openBoxGap) create-glyph "openBox.\(suffix)" : composite-proc HBar.b SB RightSB yBar @@ -55,8 +55,8 @@ glyph-block Symbol-Punctuation-Dashes : begin local df : include : DivFrame para.diversityF include : dispiro widths.center - g4 df.leftSB SymbolMid [heading Rightward] - g4 df.middle (0.95 * SymbolMid) + g4 df.leftSB SymbolMid [heading Rightward] + g4 df.middle (SymbolMid + 2 * O) g4 df.rightSB SymbolMid [heading Rightward] alias 'softhyphen' 0xAD 'hyphen' @@ -67,7 +67,7 @@ glyph-block Symbol-Punctuation-Dashes : begin create-glyph 'figureDash' 0x2012 : HBar.m SB RightSB SymbolMid create-glyph 'overline' 0x203E : HBar.t SB RightSB CAP create-glyph 'mdfUnaspirated' 0x2ED : composite-proc - HBar.t SB RightSB CAP + HBar.t SB RightSB CAP HBar.t SB RightSB (CAP - openBoxGap) create-glyph 'enDash' 0x2013 : glyph-proc From c2c1f674e96ceb48ca341e3740de98239526bb0b Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 2 Nov 2024 05:49:45 -0700 Subject: [PATCH 15/15] Release 32.0.0 --- CHANGELOG.md | 332 +-- README.md | 4 +- doc/PACKAGE-LIST.md | 274 +-- doc/cv-influences.md | 24 +- images/button-release.dark.svg | 8 +- images/button-release.light.svg | 8 +- images/cs-block-armenian.dark.svg | 734 +++++++ images/cs-block-armenian.light.svg | 734 +++++++ ...mathematical-alphanumeric-symbols.dark.svg | 4 +- ...athematical-alphanumeric-symbols.light.svg | 4 +- ...cellaneous-mathematical-symbols-a.dark.svg | 68 +- ...ellaneous-mathematical-symbols-a.light.svg | 68 +- ...cellaneous-mathematical-symbols-b.dark.svg | 153 +- ...ellaneous-mathematical-symbols-b.light.svg | 153 +- ...pplemental-mathematical-operators.dark.svg | 2 +- ...plemental-mathematical-operators.light.svg | 2 +- ...s-for-legacy-computing-supplement.dark.svg | 1922 +++++++++-------- ...-for-legacy-computing-supplement.light.svg | 1922 +++++++++-------- images/cv-lower-chi-chancery.dark.svg | 2 +- images/cv-lower-chi-chancery.light.svg | 2 +- ...r-chi-semi-chancery-curly-serifed.dark.svg | 2 +- ...-chi-semi-chancery-curly-serifed.light.svg | 2 +- ...hi-semi-chancery-straight-serifed.dark.svg | 2 +- ...i-semi-chancery-straight-serifed.light.svg | 2 +- images/cv-x-chancery.dark.svg | 2 +- images/cv-x-chancery.light.svg | 2 +- .../cv-x-semi-chancery-curly-serifed.dark.svg | 2 +- ...cv-x-semi-chancery-curly-serifed.light.svg | 2 +- ...-x-semi-chancery-straight-serifed.dark.svg | 2 +- ...x-semi-chancery-straight-serifed.light.svg | 2 +- images/package-sample-IosevkaAile.dark.svg | 2 +- images/package-sample-IosevkaAile.light.svg | 2 +- images/package-sample-IosevkaEtoile.dark.svg | 2 +- images/package-sample-IosevkaEtoile.light.svg | 2 +- images/ss-i-ss01-1.dark.svg | 2 +- images/ss-i-ss01-1.light.svg | 2 +- images/ss-i-ss03-1.dark.svg | 2 +- images/ss-i-ss03-1.light.svg | 2 +- images/ss-i-ss04-1.dark.svg | 2 +- images/ss-i-ss04-1.light.svg | 2 +- images/ss-i-ss08-1.dark.svg | 2 +- images/ss-i-ss08-1.light.svg | 2 +- images/ss-i-ss15-1.dark.svg | 2 +- images/ss-i-ss15-1.light.svg | 2 +- images/ss-i-ss17-1.dark.svg | 4 +- images/ss-i-ss17-1.light.svg | 4 +- package-lock.json | 80 +- package.json | 2 +- packages/font-glyphs/package.json | 12 +- packages/font-kits/package.json | 8 +- packages/font-otl/package.json | 6 +- packages/font/package.json | 16 +- packages/geometry-cache/package.json | 4 +- packages/geometry/package.json | 4 +- packages/glyph/package.json | 4 +- packages/param/package.json | 4 +- packages/util/package.json | 2 +- tools/amend-readme/package.json | 4 +- tools/data-export/package.json | 4 +- tools/generate-samples/package.json | 4 +- tools/misc/package.json | 4 +- 61 files changed, 3998 insertions(+), 2636 deletions(-) create mode 100644 images/cs-block-armenian.dark.svg create mode 100644 images/cs-block-armenian.light.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 3206040aa8..f9e249bf27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,325 +1,17 @@ ## Modifications since last major version -### 31.9.1 - -* Optimize glyphs for `round-top-serifless` and `round-top-base-serifed` variants for `A` part (`cv11`) of Capital AE (`U+00C6`) under Quasi-Proportional. -* Fix metrics of `U+27D9` and `U+2A05` under Fixed (#2548). - - -### 31.9.0 - -* Add IJ-acute ligatures (#2483). -* Allowed customizing menu WWS value to name map (#2488). -* Optimize glyphs for `rounded-serifless` and `rounded-serifed` variants for Capital Eszett (`ẞ`). -* Optimize glyph for Capital OE (`U+0152`) under Quasi-Proportional. -* Optimize glyphs for closed epsilon shapes (`U+025E`, `U+029A`). -* Optimize glyphs for cursive variants for Greek Lower Beta (`β`) and Cyrillic Lower Ve (`в`). -* Optimize glyphs for Cyrillic Capital/Lower Broad On (`U+047A`, `U+047B`). -* Optimize glyphs for Roman Numeral CD shapes (`U+2180`, `U+2182`, `U+2188`). -* Optimize glyph for Cyrillic Lower Dzze (`U+A689`) under italics. -* Optimize glyphs for Volapük Ae/Oe/Ue (`U+A79A`..`U+A79F`). -* Optimize glyph for Latin Lower Dezh Digraph with Palatal Hook (`U+1DF12`). -* Fix misalignments of square brackets under certain size caused by rounding errors (#2545). -* Add characters: - - WAVY LINE (`U+2307`). - - SYMMETRY (`U+232F`). - - CONICAL TAPER (`U+2332`). - - SLOPE (`U+2333`). - - LARGE UP TACK (`U+27D8`). - - LARGE DOWN TACK (`U+27D9`). - - LOZENGE DIVIDED BY HORIZONTAL RULE (`U+27E0`). - - VERTICAL ZIGZAG LINE (`U+299A`). - - LEFT WIGGLY FENCE (`U+29D8`) ... RIGHT DOUBLE WIGGLY FENCE (`U+29DB`). - - N-ARY SQUARE INTERSECTION OPERATOR (`U+2A05`). - - N-ARY SQUARE UNION OPERATOR (`U+2A06`). - - VERTICAL SIX DOTS (`U+2E3D`). - - WIGGLY VERTICAL LINE (`U+2E3E`). - - -### 31.8.0 - -* Add characters: - - LATIN EPIGRAPHIC LETTER ARCHAIC M (`U+A7FF`) (#2517). - - MUSICAL SYMBOL RINFORZANDO (`U+1D18C`) ... MUSICAL SYMBOL FORTE (`U+1D191`) (#2522). -* Improve glyph for Cyrillic I (`И`/`и`) under slab (#2489). - - Bulgarian locale (`'BGR '`) uses original style for capital. -* Optimize glyph for Tonos Above (`U+0384`) in accented Greek letters. -* Optimize stroke width of bar for split bowl variants of Cyrillic Lower Ef (`ф`). -* Optimize glyph for Cyrillic Capital Ef (`Ф`) under Bulgarian locale (`'BGR '`) under slab. -* Fix seam in glyphs of Cyrillic Capital/Small Letter Zhwe (`U+A684`..`U+A685`). -* Fix broken shape of certain power and playback symbols under quasi-proportional (#2528). -* Fix alignment of the suit part of Playing Cards glyphs under quasi-Proportional (#2529). - - -### 31.7.1 - -* Fix internal seams of variants of outlined letters U+1CCE6 and U+1CCEF (#2509). - - -### 31.7.0 - -* Fix Macedonian Cyrillic Gje under italics (#2493). -* Improve widths of overline marks of Serbian italic lower Ghe/Pe/Te. -* Remove crossbar variants for `Z`/`z` when under Polish locale (`PLK`) to avoid confusion with the handwritten `Ż`/`ż` allograph, `Ƶ`/`ƶ`. -* Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use Latin Schwa (including the IPA) unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal Turned E (`Ǝ`/`ǝ`). -* Make serifs of Latin Letter Small Capital I (`ɪ`) slightly wider under Quasi-Proportional. -* Make Cyrillic Small Letter Komi Dje (`ԃ`) slightly wider under Quasi-Proportional. -* Make serifs of Small Capital and Modifier Letter Reversed N (`ᴎ`/`ᴻ`) more accurately follow the serifs of `N`. -* Make Som Sign (`⃀`) follow variants of capital `C`. -* Make Latin Capital Letter Small Capital I (`Ɪ`) slightly wider under Etoile. -* Add Characters: - - CYRILLIC CAPITAL LETTER TJE (`U+1C89`) ... CYRILLIC SMALL LETTER TJE (`U+1C8A`). - - COMPOSITION SYMBOL (`U+2384`). - - WHITE DIAMOND IN SQUARE (`U+26CB`). - - DRIVE SLOW SIGN (`U+26DA`). - - SQUARED SALTIRE (`U+26DD`) ... FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE (`U+26DE`). - - HEAVY CIRCLED SALTIRE (`U+2B59`). - - TOP HALF LEFT PARENTHESIS (`U+2E59`) ... BOTTOM HALF RIGHT PARENTHESIS (`U+2E5C`). - - LATIN CAPITAL LETTER RAMS HORN (`U+A7CB`) (#2506). - - LATIN CAPITAL LETTER S WITH DIAGONAL STROKE (`U+A7CC`) ... LATIN SMALL LETTER S WITH DIAGONAL STROKE (`U+A7CD`). - - LATIN CAPITAL LETTER LAMBDA (`U+A7DA`) ... LATIN CAPITAL LETTER LAMBDA WITH STROKE (`U+A7DC`). - - COUNTING ROD UNIT DIGIT ONE (`U+1D360`) ... COUNTING ROD TENS DIGIT NINE (`U+1D371`). - - -### 31.6.1 - -- Fix broken accent stacking behavior for partially precomposed characters with leaning anchors (#2492). - - -### 31.6.0 - -* Add Latin localization forms for Polish and Romanian. -* Make Combining Square Below (`U+033B`) slightly narrower. -* Improve glyph visual for Combining Suspension Mark (`U+1DC3`). -* Make Cyrillic Capital/Small Letter Uk (`U+0478`..`U+0479`) slightly narrower under Quasi-Proportional. -* Make Cyrillic Capital/Small Letter Round Omega (`U+047A`..`U+047B`) slightly wider under Quasi-Proportional. - - -### 31.5.0 - -* Add characters: - - KAYAH LI SIGN CWI (`U+A92E`). - - ZERO WIDTH NON-BREAKING SPACE (`U+FEFF`). -* Add APL form (`APLF`) for `U+25E0` and `U+25E1`, for UIUA. -* Add Cyrillic localization forms for Bashkir and Chuvash. - - -### 31.4.0 +### 32.0.0 +* Add Armenian letters: + - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN DRAM SIGN (`U+058F`). * Add characters: - - OCR HOOK (`U+2440`) .. OCR BOW TIE (`U+2445`) (#2465). -* Add slanted dollar and cent sign (#2408). -* Add round-top capital A (#2472). -* Fix `cv41` application to `ss01`, `ss02`, `ss04`, `ss06`, and `ss15`. -* Fix `cv54` application to `ss01`, `ss03`, `ss04`, `ss06`, `ss07`, `ss09`, `ss12`, `ss14`, `ss15`, `ss17`, and `ss18`. -* Fix `cv62` application to `ss01`, `ss02`, `ss04`, `ss07`, `ss09`, `ss13`, `ss15`, `ss16`, and `ss18`. - - -### 31.3.0 - -* Add `diagonal-tailed-cursive` variants for Cyrillic Lower Ef (`cv93`). -* Add `rounded-vertical-sides` variants for Capital/Lower W (`cv32`, `cv57`). -* Make Aile and Etoile use `straight` variants for `brace` and `guillemet`. -* Prevent clipping of texture-extended glyphs in Kitty. - - -### 31.2.0 - -* Add variant selectors for Greek lower Phi/Psi (`VXAG`, `VXAH`). -* Optimize cross position for Cyrillic Lower Straight U (`U+04AF`, `U+04B1`). -* Optimize glyph shape for `lower-gamma`.`straight` and `lower-gamma`.`curly`. -* Optimize glyph shape for `U+1DF15`. - - -### 31.1.0 - -* Add characters: - - BLACK-LETTER CAPITAL H (`U+210C`) (#714). - - BLACK-LETTER CAPITAL I (`U+2111`) (#714). - - BLACK-LETTER CAPITAL R (`U+211C`) (#714). - - BLACK-LETTER CAPITAL Z (`U+2128`) (#714). - - BLACK-LETTER CAPITAL C (`U+212D`) (#714). - - LATIN SMALL LETTER BLACKLETTER E (`U+AB32`) (#2443). - - LATIN SMALL LETTER BLACKLETTER O (`U+AB3D`) (#2443). - - LATIN SMALL LETTER BLACKLETTER O WITH STROKE (`U+AB3E`) (#2443). - - LEFT-POINTING ROCKET SHIP (`U+1CC56`) ... DOWN-POINTING ROCKET SHIP (`U+1CC59`) (Proposed for Unicode 16; L2/21-235). - - LEFT-POINTING ATOMIC BOMB (`U+1CC60`) ... DOWN-POINTING ATOMIC BOMB (`U+1CC63`) (Proposed for Unicode 16; L2/21-235). - - LEFT-POINTING RIFLE (`U+1CC65`) ... DOWN-POINTING RIFLE (`U+1CC68`) (Proposed for Unicode 16; L2/21-235). - - MOON LANDER (`U+1CDF5`) (Proposed for Unicode 16; L2/21-235). - - UP-POINTING FROG (`U+1CDFB`) (Proposed for Unicode 16; L2/21-235). - - DOWN-POINTING FROG (`U+1CDFC`) (Proposed for Unicode 16; L2/21-235). - - MATHEMATICAL FRAKTUR CAPITAL A (`U+1D504`) .. MATHEMATICAL FRAKTUR SMALL Z (`U+1D537`) (#444). - - MATHEMATICAL BOLD FRAKTUR CAPITAL A (`U+1D56C`) .. MATHEMATICAL BOLD FRAKTUR SMALL Z (`U+1D59F`) (#444). -* Add separate variant selectors for Cyrillic Capital En/Er (`VXAA`, `VXAB`). -* Add variant selectors for Greek lower Beta/Gamma/Nu/Upsilon (`VXAC`, `VXAD`, `VXAE`, `VXAF`). -* Optimize glyph for VERTICAL LINE WITH MIDDLE DOT (`U+2327`). -* Improve `k` (`cv46`) and `x` (`cv58`) variants used by `ss03`, `ss08`, `ss09`, `ss10`, `ss12`, `ss14`, and `ss18` under slab italic. - - -### 31.0.0 - -* \[**Breaking**] Changed the mapping between variants and OpenType tags: - - Variants for digits (`1` .. `9`) are assigned to tag `cv01` ... `cv09`. - - Variant for `0` is assigned to tag `cv10`. - - Variants for basic Latin are assigned to tag `cv11` ... `cv60` (50 tags; `O` and `o` do not have variants). - - Variants for extended Latin are assigned to tag `cv61` ... `cv66`. - - Variants for Greek letters are assigned to tag `cv67` ... `cv78`. - - Variants for Cyrillic letters are assigned to tag `cv79` ... `cv99` and `VAAA`. - - Variants for dot shapes are assigned to tag `VDAA` ... `VDAD`. - - Variants for symbol shapes are assigned to tag `VSAA` ... `VSAT`. - - Variants for ligature shapes are assigned to tag `VLAA` ... `VLAG`. - - Correspondence table - -
- - | Selector Name | Tag in v30.x | Tag in v31 | - | ------------- | ------------ | ---------- | - | `one` | `cv86` | `cv01` | - | `two` | `cv87` | `cv02` | - | `three` | `cv88` | `cv03` | - | `four` | `cv89` | `cv04` | - | `five` | `cv90` | `cv05` | - | `six` | `cv91` | `cv06` | - | `seven` | `cv92` | `cv07` | - | `eight` | `cv93` | `cv08` | - | `nine` | `cv94` | `cv09` | - | `zero` | `cv85` | `cv10` | - | `capital-a` | `cv01` | `cv11` | - | `capital-b` | `cv02` | `cv12` | - | `capital-c` | `cv03` | `cv13` | - | `capital-d` | `cv04` | `cv14` | - | `capital-e` | `cv05` | `cv15` | - | `capital-f` | `cv06` | `cv16` | - | `capital-g` | `cv07` | `cv17` | - | `capital-h` | `cv08` | `cv18` | - | `capital-i` | `cv09` | `cv19` | - | `capital-j` | `cv10` | `cv20` | - | `capital-k` | `cv11` | `cv21` | - | `capital-l` | `cv12` | `cv22` | - | `capital-m` | `cv13` | `cv23` | - | `capital-n` | `cv14` | `cv24` | - | `capital-p` | `cv15` | `cv25` | - | `capital-q` | `cv16` | `cv26` | - | `capital-r` | `cv17` | `cv27` | - | `capital-s` | `cv18` | `cv28` | - | `capital-t` | `cv19` | `cv29` | - | `capital-u` | `cv20` | `cv30` | - | `capital-v` | `cv21` | `cv31` | - | `capital-w` | `cv22` | `cv32` | - | `capital-x` | `cv23` | `cv33` | - | `capital-y` | `cv24` | `cv34` | - | `capital-z` | `cv25` | `cv35` | - | `a` | `cv26` | `cv36` | - | `b` | `cv27` | `cv37` | - | `c` | `cv28` | `cv38` | - | `d` | `cv29` | `cv39` | - | `e` | `cv30` | `cv40` | - | `f` | `cv31` | `cv41` | - | `g` | `cv32` | `cv42` | - | `h` | `cv33` | `cv43` | - | `i` | `cv34` | `cv44` | - | `j` | `cv35` | `cv45` | - | `k` | `cv36` | `cv46` | - | `l` | `cv37` | `cv47` | - | `m` | `cv38` | `cv48` | - | `n` | `cv39` | `cv49` | - | `p` | `cv40` | `cv50` | - | `q` | `cv41` | `cv51` | - | `r` | `cv42` | `cv52` | - | `s` | `cv43` | `cv53` | - | `t` | `cv44` | `cv54` | - | `u` | `cv45` | `cv55` | - | `v` | `cv46` | `cv56` | - | `w` | `cv47` | `cv57` | - | `x` | `cv48` | `cv58` | - | `y` | `cv49` | `cv59` | - | `z` | `cv50` | `cv60` | - | `capital-eszet` | `VXAC` | `cv61` | - | `long-s` | `cv51` | `cv62` | - | `eszet` | `cv52` | `cv63` | - | `lower-eth` | `cv53` | `cv64` | - | `capital-thorn` | `VXAD` | `cv65` | - | `lower-thorn` | `cv54` | `cv66` | - | `lower-alpha` | `cv55` | `cv67` | - | `capital-gamma` | `cv56` | `cv68` | - | `capital-delta` | `cv57` | `cv69` | - | `lower-delta` | `cv58` | `cv70` | - | `lower-iota` | `cv59` | `cv71` | - | `capital-lambda` | `cv60` | `cv72` | - | `lower-lambda` | `cv61` | `cv73` | - | `lower-mu` | `cv62` | `cv74` | - | `lower-xi` | `cv63` | `cv75` | - | `lower-pi` | `cv64` | `cv76` | - | `lower-tau` | `cv65` | `cv77` | - | `lower-chi` | `cv66` | `cv78` | - | `cyrl-a` | `——` | `cv79` | - | `cyrl-ve` | `——` | `cv80` | - | `cyrl-capital-zhe` | `cv67` | `cv81` | - | `cyrl-zhe` | `cv68` | `cv82` | - | `cyrl-capital-ze` | `cv69` | `cv83` | - | `cyrl-ze` | `cv70` | `cv84` | - | `cyrl-capital-ka` | `cv71` | `cv85` | - | `cyrl-ka` | `cv72` | `cv86` | - | `cyrl-el` | `cv73` | `cv87` | - | `cyrl-em` | `cv74` | `cv88` | - | `cyrl-en` | `cv75` | `cv89` | - | `cyrl-er` | `cv76` | `cv90` | - | `cyrl-capital-u` | `cv77` | `cv91` | - | `cyrl-u` | `cv78` | `cv92` | - | `cyrl-ef` | `cv79` | `cv93` | - | `cyrl-che` | `cv80` | `cv94` | - | `cyrl-yeri` | `cv81` | `cv95` | - | `cyrl-yery` | `cv82` | `cv96` | - | `cyrl-capital-e` | `VXAA` | `cv97` | - | `cyrl-e` | `VXAB` | `cv98` | - | `cyrl-capital-ya` | `cv83` | `cv99` | - | `cyrl-ya` | `cv84` | `VAAA` | - | `tittle` | `cv95` | `VDAA` | - | `diacritic-dot` | `cv96` | `VDAB` | - | `punctuation-dot` | `cv97` | `VDAC` | - | `braille-dot` | `VXAE` | `VDAD` | - | `tilde` | `cv98` | `VSAA` | - | `asterisk` | `cv99` | `VSAB` | - | `underscore` | `VSAA` | `VSAC` | - | `caret` | `VSAB` | `VSAD` | - | `ascii-grave` | `VSAC` | `VSAE` | - | `ascii-single-quote` | `VSAD` | `VSAF` | - | `paren` | `VSAE` | `VSAG` | - | `brace` | `VSAF` | `VSAH` | - | `guillemet` | `VSAG` | `VSAI` | - | `number-sign` | `VSAH` | `VSAJ` | - | `ampersand` | `VSAI` | `VSAK` | - | `at` | `VSAJ` | `VSAL` | - | `dollar` | `VSAK` | `VSAM` | - | `cent` | `VSAL` | `VSAN` | - | `percent` | `VSAM` | `VSAO` | - | `bar` | `VSAN` | `VSAP` | - | `question` | `VSAO` | `VSAQ` | - | `pilcrow` | `VSAP` | `VSAR` | - | `partial-derivative` | `VSAQ` | `VSAS` | - | `micro-sign` | `VSAR` | `VSAT` | - | `lig-ltgteq` | `VLAA` | `VLAA` | - | `lig-neq` | `VLAB` | `VLAB` | - | `lig-equal-chain` | `VLAC` | `VLAC` | - | `lig-hyphen-chain` | `VLAD` | `VLAD` | - | `lig-plus-chain` | `VLAE` | `VLAE` | - | `lig-double-arrow-bar` | `VLAF` | `VLAF` | - | `lig-single-arrow-bar` | `VLAG` | `VLAG` | - -
-* \[**Breaking**] Reordered variants for Cyrillic Capital/Lower Ze. -* \[**Breaking**] Add `bilateral-motion-serifed` variants for Capital/Lower X. Change of variant names: - - `capital-x`.`straight-motion-serifed` → `capital-x`.`straight-unilateral-motion-serifed` - - `capital-x`.`curly-motion-serifed` → `capital-x`.`curly-unilateral-motion-serifed` - - `x`.`straight-motion-serifed` → `x`.`straight-unilateral-motion-serifed` - - `x`.`curly-motion-serifed` → `x`.`curly-unilateral-motion-serifed` - - `lower-chi`.`straight-motion-serifed` → `lower-chi`.`straight-unilateral-motion-serifed` - - `lower-chi`.`curly-motion-serifed` → `lower-chi`.`curly-unilateral-motion-serifed` -* \[**Breaking**] Add `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for Greek Lower Chi. Change of variant names: - - `lower-chi`.`semi-chancery-straight` → `lower-chi`.`semi-chancery-straight-serifless` - - `lower-chi`.`semi-chancery-curly` → `lower-chi`.`semi-chancery-curly-serifless` - - `lower-chi`.`straight-serifed` → `lower-chi`.`straight-bilateral-motion-serifed` - - `lower-chi`.`curly-serifed` → `lower-chi`.`curly-bilateral-motion-serifed` -* Add separate variant selectors For Cyrillic Lower A/Ve (`cv79`, `cv99`). -* Optimize the shape of rounded `e` (#2424). + - LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`). + - LEFT AND RIGHT TACK (`U+27DB`). + - LONG RIGHT TACK (`U+27DD`). + - LONG LEFT TACK (`U+27DE`). + - UP ARROW THROUGH CIRCLE (`U+29BD`). + - UPPER LEFT QUADRANT STANDING KNIGHT (`U+1CCD2`) ... LOWER RIGHT QUADRANT STANDING KNIGHT (`U+1CCD5`). + - HORIZONTAL ZIGZAG LINE (`U+1CEB0`). +* Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). +* Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/README.md b/README.md index a8755da97e..682de9602d 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ All versions include the same ranges of characters: Latin letters, Greek letters -235 Supported Languages: +236 Supported Languages: -Abkhazian, Afar, Afrikaans, Aghem, Akan, Akoose, Albanian, Anii, Aragonese, Asturian, Asu, Atsam, Azerbaijani, Bafia, Baluchi (bal_latn), Bambara, Basaa, Bashkir, Basque, Belarusian, Bemba, Bena, Betawi, Bosnian, Breton, Bulgarian, Caddo, Catalan, Cebuano, Central Atlas Tamazight, Chechen, Chickasaw, Chiga, Choctaw, Church Slavic, Chuvash, Colognian, Cornish, Corsican, Croatian, Czech, Danish, Duala, Dutch, Embu, English, Erzya, Esperanto, Estonian, Ewe, Ewondo, Faroese, Filipino, Finnish, French, Friulian, Fula, Ga, Galician, Ganda, German, Greek, Guarani, Gusii, Hausa, Hawaiian, Hindi (Latin), Hungarian, Icelandic, Ido, Igbo, Inari Sami, Indonesian, Interlingua, Interlingue, Inuktitut (iu_latn), Irish, Italian, Javanese, Jju, Jola-Fonyi, Kabuverdianu, Kabyle, Kaingang, Kako, Kalaallisut, Kalenjin, Kamba, Kazakh, Kenyang, Kikuyu, Kinyarwanda, Koyra Chiini, Koyraboro Senni, Kpelle, Kurdish, Kuvi, Kwasio, Kyrgyz, Kʼicheʼ, Lakota, Langi, Latin, Latvian, Ligurian, Lingala, Lithuanian, Lojban, Lombard, Low German, Lower Sorbian, Luba-Katanga, Lule Sami, Luo, Luxembourgish, Luyia, Macedonian, Machame, Makhuwa, Makhuwa-Meetto, Makonde, Malagasy, Malay, Maltese, Manx, Mapuche, Masai, Meru, Metaʼ, Mi'kmaw, Mohawk, Moksha, Mongolian, Morisyen, Mundang, Muscogee, Māori, Nama, Navajo, Ngiemboon, Ngomba, Nheengatu, Nigerian Pidgin, North Ndebele, Northern Frisian, Northern Sami, Northern Sotho, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Nuer, Nyanja, Nyankole, Obolo, Occitan, Oromo, Ossetic, Papiamento, Pijin, Polish, Portuguese, Prussian, Quechua, Riffian, Romanian, Romansh, Rombo, Rundi, Russian, Rwa, Saho, Samburu, Sango, Sangu, Sardinian, Scottish Gaelic, Sena, Serbian, Shambala, Shona, Sicilian, Sidamo, Silesian, Skolt Sami, Slovak, Slovenian, Soga, Somali, South Ndebele, Southern Sami, Southern Sotho, Spanish, Sundanese, Swahili, Swati, Swedish, Swiss German, Tachelhit (shi_latn), Taita, Tajik, Taroko, Tasawaq, Tatar, Teso, Tok Pisin, Toki Pona, Tongan, Tsonga, Tswana, Turkish, Turkmen, Tuvinian, Tyap, Ukrainian, Upper Sorbian, Uzbek, Vai (vai_latn), Venda, Venetian, Vietnamese, Volapük, Vunjo, Walloon, Walser, Warlpiri, Welsh, Western Frisian, Wolof, Xhosa, Yakut, Yangben, Yoruba, Zarma, Zhuang, Zulu +Abkhazian, Afar, Afrikaans, Aghem, Akan, Akoose, Albanian, Anii, Aragonese, Armenian, Asturian, Asu, Atsam, Azerbaijani, Bafia, Baluchi (bal_latn), Bambara, Basaa, Bashkir, Basque, Belarusian, Bemba, Bena, Betawi, Bosnian, Breton, Bulgarian, Caddo, Catalan, Cebuano, Central Atlas Tamazight, Chechen, Chickasaw, Chiga, Choctaw, Church Slavic, Chuvash, Colognian, Cornish, Corsican, Croatian, Czech, Danish, Duala, Dutch, Embu, English, Erzya, Esperanto, Estonian, Ewe, Ewondo, Faroese, Filipino, Finnish, French, Friulian, Fula, Ga, Galician, Ganda, German, Greek, Guarani, Gusii, Hausa, Hawaiian, Hindi (Latin), Hungarian, Icelandic, Ido, Igbo, Inari Sami, Indonesian, Interlingua, Interlingue, Inuktitut (iu_latn), Irish, Italian, Javanese, Jju, Jola-Fonyi, Kabuverdianu, Kabyle, Kaingang, Kako, Kalaallisut, Kalenjin, Kamba, Kazakh, Kenyang, Kikuyu, Kinyarwanda, Koyra Chiini, Koyraboro Senni, Kpelle, Kurdish, Kuvi, Kwasio, Kyrgyz, Kʼicheʼ, Lakota, Langi, Latin, Latvian, Ligurian, Lingala, Lithuanian, Lojban, Lombard, Low German, Lower Sorbian, Luba-Katanga, Lule Sami, Luo, Luxembourgish, Luyia, Macedonian, Machame, Makhuwa, Makhuwa-Meetto, Makonde, Malagasy, Malay, Maltese, Manx, Mapuche, Masai, Meru, Metaʼ, Mi'kmaw, Mohawk, Moksha, Mongolian, Morisyen, Mundang, Muscogee, Māori, Nama, Navajo, Ngiemboon, Ngomba, Nheengatu, Nigerian Pidgin, North Ndebele, Northern Frisian, Northern Sami, Northern Sotho, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Nuer, Nyanja, Nyankole, Obolo, Occitan, Oromo, Ossetic, Papiamento, Pijin, Polish, Portuguese, Prussian, Quechua, Riffian, Romanian, Romansh, Rombo, Rundi, Russian, Rwa, Saho, Samburu, Sango, Sangu, Sardinian, Scottish Gaelic, Sena, Serbian, Shambala, Shona, Sicilian, Sidamo, Silesian, Skolt Sami, Slovak, Slovenian, Soga, Somali, South Ndebele, Southern Sami, Southern Sotho, Spanish, Sundanese, Swahili, Swati, Swedish, Swiss German, Tachelhit (shi_latn), Taita, Tajik, Taroko, Tasawaq, Tatar, Teso, Tok Pisin, Toki Pona, Tongan, Tsonga, Tswana, Turkish, Turkmen, Tuvinian, Tyap, Ukrainian, Upper Sorbian, Uzbek, Vai (vai_latn), Venda, Venetian, Vietnamese, Volapük, Vunjo, Walloon, Walser, Warlpiri, Welsh, Western Frisian, Wolof, Xhosa, Yakut, Yangben, Yoruba, Zarma, Zhuang, Zulu diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md index a13a5543ce..c8904ab0d8 100644 --- a/doc/PACKAGE-LIST.md +++ b/doc/PACKAGE-LIST.md @@ -1,7 +1,7 @@ -# Package list of Release 31.9.1 +# Package list of Release 32.0.0 ## Prebuilt Packages Iosevka provides a large variety of variants. Prebuilt variants are listed below. For all Monospace variants' packages, it will contain three _spacing variants_. You can either download the package containing all the spacing variants (recommended), or cherry-pick the variant with specific spacing. @@ -22,146 +22,146 @@ Iosevka provides various packaging formats, here is the list of them: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + +
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka AileQuasi-proportional, Sans-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka EtoileQuasi-proportional, Slab-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
diff --git a/doc/cv-influences.md b/doc/cv-influences.md index a7967f8bb4..85152e3f61 100644 --- a/doc/cv-influences.md +++ b/doc/cv-influences.md @@ -73,7 +73,7 @@ - `cv18`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) - `cv19`: @@ -141,7 +141,7 @@ - `cv35`: - Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) + Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🄮 (`U+1F12E`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) - `cv36`: @@ -169,7 +169,7 @@ - `cv42`: - g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), ꬶ (`U+AB36`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) + g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) - `cv43`: @@ -241,7 +241,7 @@ - `cv60`: - z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`), 🄮 (`U+1F12E`) + z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`) - `cv61`: @@ -273,7 +273,7 @@ - `cv68`: - Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) - `cv69`: @@ -413,7 +413,7 @@ - `VDAC`: - \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ⍿ (`U+237F`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⟓ (`U+27D3`), ⟔ (`U+27D4`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⪽ (`U+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⸽ (`U+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`) + \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ։ (`U+0589`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ⍿ (`U+237F`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⟓ (`U+27D3`), ⟔ (`U+27D4`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⪽ (`U+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⸽ (`U+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`) - `VDAD`: @@ -600,7 +600,7 @@ - `cv18`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) - `cv19`: @@ -668,7 +668,7 @@ - `cv35`: - Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) + Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🄮 (`U+1F12E`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) - `cv36`: @@ -696,7 +696,7 @@ - `cv42`: - g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), ꬶ (`U+AB36`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) + g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) - `cv43`: @@ -768,7 +768,7 @@ - `cv60`: - z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`), 🄮 (`U+1F12E`) + z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`) - `cv61`: @@ -800,7 +800,7 @@ - `cv68`: - Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞁧 (`U+1E067`) - `cv69`: @@ -940,7 +940,7 @@ - `VDAC`: - \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ⍿ (`U+237F`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⟓ (`U+27D3`), ⟔ (`U+27D4`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⪽ (`U+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⸽ (`U+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`) + \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ։ (`U+0589`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ⍿ (`U+237F`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⟓ (`U+27D3`), ⟔ (`U+27D4`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⪽ (`U+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⸽ (`U+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`) - `VDAD`: diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg index 9f9df33eb8..f0ea9a5e57 100644 --- a/images/button-release.dark.svg +++ b/images/button-release.dark.svg @@ -7,9 +7,9 @@ - + - + @@ -21,13 +21,13 @@ - + - + \ No newline at end of file diff --git a/images/button-release.light.svg b/images/button-release.light.svg index 8d43d6a9d9..3b906cd4a8 100644 --- a/images/button-release.light.svg +++ b/images/button-release.light.svg @@ -7,9 +7,9 @@ - + - + @@ -21,13 +21,13 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-armenian.dark.svg b/images/cs-block-armenian.dark.svg new file mode 100644 index 0000000000..59ab3a838a --- /dev/null +++ b/images/cs-block-armenian.dark.svg @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-armenian.light.svg b/images/cs-block-armenian.light.svg new file mode 100644 index 0000000000..194bc9282c --- /dev/null +++ b/images/cs-block-armenian.light.svg @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg index 219e35dba7..10cb98f840 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg @@ -504,7 +504,7 @@ - + @@ -518,7 +518,7 @@ - + diff --git a/images/cs-block-mathematical-alphanumeric-symbols.light.svg b/images/cs-block-mathematical-alphanumeric-symbols.light.svg index cbac03789d..27fdb49ac0 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.light.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.light.svg @@ -504,7 +504,7 @@ - + @@ -518,7 +518,7 @@ - + diff --git a/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg b/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg index 5f1cd36006..7a1fda8b2b 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg @@ -29,18 +29,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -273,33 +277,33 @@ - - + + - - + + - + - - + + - - + + - + @@ -314,12 +318,12 @@ - + - + @@ -344,32 +348,32 @@ - + - + - + - + - + - + @@ -384,12 +388,12 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg b/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg index 3523e592bb..0819714b28 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg @@ -29,18 +29,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -273,33 +277,33 @@ - - + + - - + + - + - - + + - - + + - + @@ -314,12 +318,12 @@ - + - + @@ -344,32 +348,32 @@ - + - + - + - + - + - + @@ -384,12 +388,12 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg b/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg index 8a7ede8850..a589e0ebee 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg @@ -44,43 +44,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,18 +509,18 @@ - - + + - + - + @@ -554,32 +555,32 @@ - + - + - + - + - + - + @@ -629,57 +630,57 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -699,7 +700,7 @@ - + @@ -724,42 +725,42 @@ - + - + - + - + - + - + - + - + @@ -769,7 +770,7 @@ - + @@ -824,42 +825,42 @@ - + - + - + - + - + - + - + - + diff --git a/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg b/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg index 97283f4167..077b10fd4b 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg @@ -44,43 +44,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,18 +509,18 @@ - - + + - + - + @@ -554,32 +555,32 @@ - + - + - + - + - + - + @@ -629,57 +630,57 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -699,7 +700,7 @@ - + @@ -724,42 +725,42 @@ - + - + - + - + - + - + - + - + @@ -769,7 +770,7 @@ - + @@ -824,42 +825,42 @@ - + - + - + - + - + - + - + - + diff --git a/images/cs-block-supplemental-mathematical-operators.dark.svg b/images/cs-block-supplemental-mathematical-operators.dark.svg index 2327f9993b..b408fb9169 100644 --- a/images/cs-block-supplemental-mathematical-operators.dark.svg +++ b/images/cs-block-supplemental-mathematical-operators.dark.svg @@ -144,7 +144,7 @@ - + diff --git a/images/cs-block-supplemental-mathematical-operators.light.svg b/images/cs-block-supplemental-mathematical-operators.light.svg index b2318843d8..7014cc4bc2 100644 --- a/images/cs-block-supplemental-mathematical-operators.light.svg +++ b/images/cs-block-supplemental-mathematical-operators.light.svg @@ -144,7 +144,7 @@ - + diff --git a/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg b/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg index 3a5ffeba08..03bf73a787 100644 --- a/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg +++ b/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg @@ -1,5 +1,5 @@ - + @@ -176,458 +176,463 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1914,73 +1919,73 @@ - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -1996,82 +2001,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2087,52 +2092,52 @@ - + - + - + - + - + - + - + - + - + - + @@ -2178,82 +2183,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2269,82 +2274,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2360,82 +2365,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2451,82 +2456,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2542,82 +2547,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2633,82 +2638,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2724,82 +2729,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2815,82 +2820,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2906,82 +2911,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2997,82 +3002,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3088,82 +3093,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3179,82 +3184,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3270,82 +3275,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3361,82 +3366,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3452,32 +3457,32 @@ - + - + - + - + - + - + @@ -3543,42 +3548,42 @@ - + - + - + - + - + - + - + - + @@ -3598,12 +3603,12 @@ - + - + @@ -3634,82 +3639,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3725,82 +3730,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3816,82 +3821,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3907,82 +3912,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3998,82 +4003,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4089,82 +4094,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4180,82 +4185,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4271,82 +4276,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4362,82 +4367,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4453,82 +4458,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4544,82 +4549,173 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-symbols-for-legacy-computing-supplement.light.svg b/images/cs-block-symbols-for-legacy-computing-supplement.light.svg index b1d43ce6a8..72e3d7812e 100644 --- a/images/cs-block-symbols-for-legacy-computing-supplement.light.svg +++ b/images/cs-block-symbols-for-legacy-computing-supplement.light.svg @@ -1,5 +1,5 @@ - + @@ -176,458 +176,463 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1914,73 +1919,73 @@ - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -1996,82 +2001,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2087,52 +2092,52 @@ - + - + - + - + - + - + - + - + - + - + @@ -2178,82 +2183,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2269,82 +2274,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2360,82 +2365,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2451,82 +2456,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2542,82 +2547,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2633,82 +2638,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2724,82 +2729,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2815,82 +2820,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2906,82 +2911,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2997,82 +3002,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3088,82 +3093,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3179,82 +3184,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3270,82 +3275,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3361,82 +3366,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3452,32 +3457,32 @@ - + - + - + - + - + - + @@ -3543,42 +3548,42 @@ - + - + - + - + - + - + - + - + @@ -3598,12 +3603,12 @@ - + - + @@ -3634,82 +3639,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3725,82 +3730,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3816,82 +3821,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3907,82 +3912,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3998,82 +4003,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4089,82 +4094,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4180,82 +4185,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4271,82 +4276,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4362,82 +4367,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4453,82 +4458,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4544,82 +4549,173 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cv-lower-chi-chancery.dark.svg b/images/cv-lower-chi-chancery.dark.svg index 9a9a49829d..dbe2095f90 100644 --- a/images/cv-lower-chi-chancery.dark.svg +++ b/images/cv-lower-chi-chancery.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-chancery.light.svg b/images/cv-lower-chi-chancery.light.svg index aa2eab06f3..a1422de30c 100644 --- a/images/cv-lower-chi-chancery.light.svg +++ b/images/cv-lower-chi-chancery.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg b/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg index 97c10c7b54..328afe33d1 100644 --- a/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg +++ b/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg b/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg index 244999a116..bc9b9941f8 100644 --- a/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg +++ b/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg b/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg index 5372e9224c..b48cd6a7a8 100644 --- a/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg +++ b/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg b/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg index aaa3b28154..06814f84ce 100644 --- a/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg +++ b/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-chancery.dark.svg b/images/cv-x-chancery.dark.svg index f0de0c0a77..8704641b88 100644 --- a/images/cv-x-chancery.dark.svg +++ b/images/cv-x-chancery.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-chancery.light.svg b/images/cv-x-chancery.light.svg index 1fa4414df0..b7a893cfa4 100644 --- a/images/cv-x-chancery.light.svg +++ b/images/cv-x-chancery.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-curly-serifed.dark.svg b/images/cv-x-semi-chancery-curly-serifed.dark.svg index 310dcfdcc3..7bf82a8617 100644 --- a/images/cv-x-semi-chancery-curly-serifed.dark.svg +++ b/images/cv-x-semi-chancery-curly-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-curly-serifed.light.svg b/images/cv-x-semi-chancery-curly-serifed.light.svg index af105f2bab..a6eb346635 100644 --- a/images/cv-x-semi-chancery-curly-serifed.light.svg +++ b/images/cv-x-semi-chancery-curly-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-straight-serifed.dark.svg b/images/cv-x-semi-chancery-straight-serifed.dark.svg index 5d8a74394f..4d4d6066df 100644 --- a/images/cv-x-semi-chancery-straight-serifed.dark.svg +++ b/images/cv-x-semi-chancery-straight-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-straight-serifed.light.svg b/images/cv-x-semi-chancery-straight-serifed.light.svg index d78f2ab5da..b198e29ec0 100644 --- a/images/cv-x-semi-chancery-straight-serifed.light.svg +++ b/images/cv-x-semi-chancery-straight-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/package-sample-IosevkaAile.dark.svg b/images/package-sample-IosevkaAile.dark.svg index 53a70954c5..8c0a772080 100644 --- a/images/package-sample-IosevkaAile.dark.svg +++ b/images/package-sample-IosevkaAile.dark.svg @@ -145,7 +145,7 @@ - + diff --git a/images/package-sample-IosevkaAile.light.svg b/images/package-sample-IosevkaAile.light.svg index 6eb4b17f67..4ba7b058d1 100644 --- a/images/package-sample-IosevkaAile.light.svg +++ b/images/package-sample-IosevkaAile.light.svg @@ -145,7 +145,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.dark.svg b/images/package-sample-IosevkaEtoile.dark.svg index a0fcf0bbd1..6f5fb68f8a 100644 --- a/images/package-sample-IosevkaEtoile.dark.svg +++ b/images/package-sample-IosevkaEtoile.dark.svg @@ -146,7 +146,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.light.svg b/images/package-sample-IosevkaEtoile.light.svg index f2af2d958e..be1090adde 100644 --- a/images/package-sample-IosevkaEtoile.light.svg +++ b/images/package-sample-IosevkaEtoile.light.svg @@ -146,7 +146,7 @@ - + diff --git a/images/ss-i-ss01-1.dark.svg b/images/ss-i-ss01-1.dark.svg index 03d7435835..ec0ac5ad59 100644 --- a/images/ss-i-ss01-1.dark.svg +++ b/images/ss-i-ss01-1.dark.svg @@ -129,7 +129,7 @@ - + diff --git a/images/ss-i-ss01-1.light.svg b/images/ss-i-ss01-1.light.svg index 558bbc0865..19cb5b0db7 100644 --- a/images/ss-i-ss01-1.light.svg +++ b/images/ss-i-ss01-1.light.svg @@ -129,7 +129,7 @@ - + diff --git a/images/ss-i-ss03-1.dark.svg b/images/ss-i-ss03-1.dark.svg index 52b3b8773b..43b54de395 100644 --- a/images/ss-i-ss03-1.dark.svg +++ b/images/ss-i-ss03-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss03-1.light.svg b/images/ss-i-ss03-1.light.svg index 3bf698f380..d0e99c7f2e 100644 --- a/images/ss-i-ss03-1.light.svg +++ b/images/ss-i-ss03-1.light.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss04-1.dark.svg b/images/ss-i-ss04-1.dark.svg index db4b8e3a60..6059dc7ff9 100644 --- a/images/ss-i-ss04-1.dark.svg +++ b/images/ss-i-ss04-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss04-1.light.svg b/images/ss-i-ss04-1.light.svg index 8e13432d7d..f74eaba5c6 100644 --- a/images/ss-i-ss04-1.light.svg +++ b/images/ss-i-ss04-1.light.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss08-1.dark.svg b/images/ss-i-ss08-1.dark.svg index 742a5f0ef9..bcfe701e45 100644 --- a/images/ss-i-ss08-1.dark.svg +++ b/images/ss-i-ss08-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss08-1.light.svg b/images/ss-i-ss08-1.light.svg index b58515ca8f..93f41a57da 100644 --- a/images/ss-i-ss08-1.light.svg +++ b/images/ss-i-ss08-1.light.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss15-1.dark.svg b/images/ss-i-ss15-1.dark.svg index 3c632d7e4d..18429c7cd3 100644 --- a/images/ss-i-ss15-1.dark.svg +++ b/images/ss-i-ss15-1.dark.svg @@ -131,7 +131,7 @@ - + diff --git a/images/ss-i-ss15-1.light.svg b/images/ss-i-ss15-1.light.svg index d28c30e7e5..9212ebdc8b 100644 --- a/images/ss-i-ss15-1.light.svg +++ b/images/ss-i-ss15-1.light.svg @@ -131,7 +131,7 @@ - + diff --git a/images/ss-i-ss17-1.dark.svg b/images/ss-i-ss17-1.dark.svg index 9d5ea18a86..39a4f29e17 100644 --- a/images/ss-i-ss17-1.dark.svg +++ b/images/ss-i-ss17-1.dark.svg @@ -51,7 +51,7 @@ - + @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss17-1.light.svg b/images/ss-i-ss17-1.light.svg index f2304b0772..0495d26f5f 100644 --- a/images/ss-i-ss17-1.light.svg +++ b/images/ss-i-ss17-1.light.svg @@ -51,7 +51,7 @@ - + @@ -130,7 +130,7 @@ - + diff --git a/package-lock.json b/package-lock.json index b637528644..d99bd8b818 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "workspaces": [ "packages/*", "tools/*" @@ -5049,16 +5049,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/font-otl": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/param": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/font-otl": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/param": "32.0.0", + "@iosevka/util": "32.0.0", "@msgpack/msgpack": "^2.8.0", "harfbuzzjs": "^0.4.0", "ot-builder": "^1.7.4", @@ -5067,86 +5067,86 @@ }, "packages/font-glyphs": { "name": "@iosevka/font-glyphs", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/font-kits": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-kits": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/geometry": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/glyph": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/glyph": "32.0.0", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1", + "@iosevka/geometry": "32.0.0", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1" + "@iosevka/geometry": "32.0.0" } }, "packages/param": { "name": "@iosevka/param", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1" + "@iosevka/util": "32.0.0" } }, "packages/util": { "name": "@iosevka/util", - "version": "31.9.1" + "version": "32.0.0" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@msgpack/msgpack": "^2.8.0", "@unicode/unicode-16.0.0": "^1.6.0", "cldr": "^7.5.0" @@ -5154,16 +5154,16 @@ }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/data-export": "31.9.1" + "@iosevka/data-export": "32.0.0" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3", "wawoff2": "^2.0.1" diff --git a/package.json b/package.json index 06e023b0e4..68a6af01c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index 30adf22371..5b8c49cf50 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./lib/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./lib/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-kits": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } } diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index 7602f26714..f2b4a6503d 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-kits", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { "./derived-coordinates": "./src/derived-coordinates.mjs", @@ -8,9 +8,9 @@ "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/geometry": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index a7fe57a4cc..722d8a25a4 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./lib/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/glyph": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/glyph": "32.0.0", "toposort": "^2.0.2" } } diff --git a/packages/font/package.json b/packages/font/package.json index 8ef1f0ccb6..e993254cb0 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/font-otl": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/param": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/font-otl": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/param": "32.0.0", + "@iosevka/util": "32.0.0", "harfbuzzjs": "^0.4.0", "ot-builder": "^1.7.4", "semver": "^7.6.3", diff --git a/packages/geometry-cache/package.json b/packages/geometry-cache/package.json index 92e2f64665..0f50fdac1c 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1", + "@iosevka/geometry": "32.0.0", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index 8ba30ec1ca..0b62773155 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -15,7 +15,7 @@ "./spiro-pen-expand": "./src/spiro-pen-expand.mjs" }, "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } diff --git a/packages/glyph/package.json b/packages/glyph/package.json index cc389cc9b3..f48030f14d 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1" + "@iosevka/geometry": "32.0.0" } } diff --git a/packages/param/package.json b/packages/param/package.json index 4e85d17189..94e4294a2f 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "31.9.1" + "@iosevka/util": "32.0.0" } } diff --git a/packages/util/package.json b/packages/util/package.json index 123e1c8108..e0667c99b9 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index f387c53156..7332e5ce00 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3" } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index 2b6c661cb9..92b6189f05 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "cldr": "^7.5.0", "@msgpack/msgpack": "^2.8.0" diff --git a/tools/generate-samples/package.json b/tools/generate-samples/package.json index 0b16d2dc21..2cf069e1a1 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "31.9.1" + "@iosevka/data-export": "32.0.0" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index 5ed1153c45..b2754841c7 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/misc", - "version": "31.9.1", + "version": "32.0.0", "private": true, "dependencies": { "semver": "^7.6.3", "wawoff2": "^2.0.1", - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0" } }