From ab2535d163bc8483ad2baeb2f5f045f563d206ce Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 26 Dec 2023 23:24:58 -0500 Subject: [PATCH] Add P with Stroke Through Descender. (#2131) --- changes/28.0.3.md | 3 ++ .../src/letter/latin-ext/thorn.ptl | 22 +++-------- .../font-glyphs/src/letter/latin/lower-p.ptl | 39 +++++++++++++++---- .../font-glyphs/src/letter/latin/upper-p.ptl | 15 +++++-- .../src/meta/unicode-knowledge.ptl | 1 - 5 files changed, 53 insertions(+), 27 deletions(-) diff --git a/changes/28.0.3.md b/changes/28.0.3.md index 06708d8f8..ca2d65fe1 100644 --- a/changes/28.0.3.md +++ b/changes/28.0.3.md @@ -1,2 +1,5 @@ +* Add characters: + - LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER (`U+A750`) (#1797). + - LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER (`U+A751`) (#1797). * Remove tailless variants for Latin Iota (`U+0196`, `U+0269`) and Cyrillic Iota (`U+A646`, `U+A647`). * Fix slash ligations when `frac` feature is enabled (#2130). diff --git a/packages/font-glyphs/src/letter/latin-ext/thorn.ptl b/packages/font-glyphs/src/letter/latin-ext/thorn.ptl index 2b1473c0a..9269e4469 100644 --- a/packages/font-glyphs/src/letter/latin-ext/thorn.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/thorn.ptl @@ -61,30 +61,20 @@ glyph-block Letter-Latin-Thorn : begin # include : LeaningAnchor.Above.VBar.l xThornLeftStroke # include : LeaningAnchor.Below.VBar.l xThornLeftStroke - create-glyph 'ThornBarTop/base' : glyph-proc + create-glyph 'ThornStroke/base' : glyph-proc include : MarkSet.capital include : ThornShape CAP (CAP - [yThornBowlTop CAP]) (CAP - [yThornBowlBot CAP]) include : LeaningAnchor.Above.VBar.l xThornLeftStroke include : LeaningAnchor.Below.VBar.l xThornLeftStroke - create-glyph 'ThornBarTop/Overlay' : LetterBarOverlay.l.in + create-glyph 'ThornStroke/Overlay' : LetterBarOverlay.l.in x -- xThornLeftStroke top -- (CAP - [if SLAB Stroke 0]) bot -- (CAP - [yThornBowlBot CAP]) - create-glyph 'thornBarTop/Overlay' : LetterBarOverlay.l.in - x -- SB - top -- (Ascender - [if SLAB Stroke 0]) - bot -- XH - create-glyph 'ThornBarBot/Overlay' : LetterBarOverlay.l.in + derive-composites 'ThornStroke' 0xA764 'ThornStroke/base' 'ThornStroke/Overlay' + + create-glyph 'ThornStrokeBot/Overlay' : LetterBarOverlay.l.in x -- xThornLeftStroke bot -- (0 + [if SLAB Stroke 0]) top -- (0 + [yThornBowlBot CAP]) - create-glyph 'thornBarBot/Overlay' : LetterBarOverlay.l.in - x -- SB - bot -- (Descender + [if SLAB Stroke 0]) - top -- 0 - - derive-composites 'ThornBarTop' 0xA764 'ThornBarTop/base' 'ThornBarTop/Overlay' - derive-composites 'thornBarTop' 0xA765 'thorn' 'thornBarTop/Overlay' - derive-composites 'ThornBarBot' 0xA766 'Thorn' 'ThornBarBot/Overlay' - derive-composites 'thornBarBot' 0xA767 'thorn' 'thornBarBot/Overlay' + derive-composites 'ThornStrokeBot' 0xA766 'Thorn' 'ThornStrokeBot/Overlay' diff --git a/packages/font-glyphs/src/letter/latin/lower-p.ptl b/packages/font-glyphs/src/letter/latin/lower-p.ptl index ec93ea116..485da22cc 100644 --- a/packages/font-glyphs/src/letter/latin/lower-p.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-p.ptl @@ -10,7 +10,8 @@ glyph-block Letter-Latin-Lower-P : begin glyph-block-import Common-Derivatives glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors LeaningAnchor glyph-block-import Letter-Shared : CreateAccentedComposition - glyph-block-import Letter-Shared-Shapes : OBarLeft DToothlessRise DMBlend + glyph-block-import Letter-Shared-Shapes : OBarLeft LetterBarOverlay + glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend glyph-block-import Letter-Shared-Shapes : TopHook PalatalHook SerifFrame @@ -55,12 +56,12 @@ glyph-block Letter-Latin-Lower-P : begin earlessCorner EarlessCornerBody earlessRounded EarlessRoundedBody object # serifs - serifless { no-shape false } - motionSerifed { MotionSerif false } - bottomSerifed { BottomSerif true } - serifed { FullSerifs true } + serifless { no-shape false false } + motionSerifed { MotionSerif true false } + bottomSerifed { BottomSerif false true } + serifed { FullSerifs true true } - foreach { suffix { Body {Serifs doBS} }} [Object.entries PConfig] : do + foreach { suffix { Body {Serifs doTS doBS} }} [Object.entries PConfig] : do local yOverlay : mix 0 (Descender + [if doBS Stroke 0]) 0.5 local df : DivFrame 1 @@ -72,6 +73,13 @@ glyph-block Letter-Latin-Lower-P : begin set-base-anchor 'overlayOnExtension' (SB + [HSwToV : 0.5 * Stroke]) yOverlay set-base-anchor 'strike' Middle (XH / 2) + create-glyph "pStrokeBot.\(suffix)" : glyph-proc + include [refer-glyph "p.\(suffix)"] AS_BASE ALSO_METRICS + include : LetterBarOverlay.l.in + x -- SB + bot -- (Descender + [if doBS Stroke 0]) + top -- 0 + create-glyph "thorn.\(suffix)" : glyph-proc include : MarkSet.bp include : SmallThornEaredBody @@ -81,6 +89,17 @@ glyph-block Letter-Latin-Lower-P : begin set-base-anchor 'overlayOnExtension' (SB + [HSwToV : 0.5 * Stroke]) yOverlay set-base-anchor 'strike' Middle (XH / 2) + create-glyph "thornStroke.\(suffix)" : glyph-proc + include [refer-glyph "thorn.\(suffix)"] AS_BASE ALSO_METRICS + include : LetterBarOverlay.l.in SB XH (Ascender - [if doTS Stroke 0]) + + create-glyph "thornStrokeBot.\(suffix)" : glyph-proc + include [refer-glyph "thorn.\(suffix)"] AS_BASE ALSO_METRICS + include : LetterBarOverlay.l.in + x -- SB + bot -- (Descender + [if doBS Stroke 0]) + top -- 0 + create-glyph "pPalatalHook.\(suffix)" : glyph-proc include [refer-glyph "p.\(suffix)"] AS_BASE ALSO_METRICS @@ -99,11 +118,17 @@ glyph-block Letter-Latin-Lower-P : begin link-reduced-variant 'p/sansSerif' 'p' MathSansSerif link-reduced-variant 'p/hookTopBase' 'p' select-variant 'cyrl/er' 0x440 (shapeFrom -- 'p') - select-variant "pPalatalHook" 0x1D88 (follow -- 'p') + select-variant 'pPalatalHook' 0x1D88 (follow -- 'p') + + CreateAccentedComposition 'pStroke' 0x1D7D 'p' 'hStrike' + select-variant 'pStrokeBot' 0xA751 (follow -- 'p') select-variant 'thorn' 0xFE alias 'grek/sho' 0x3F8 'thorn.earedSerifless' + select-variant 'thornStroke' 0xA765 (follow -- 'thorn') + select-variant 'thornStrokeBot' 0xA767 (follow -- 'thorn') + CreateAccentedComposition 'pTildeOver' 0x1D71 'p' 'tildeOverOnExension' derive-glyphs 'cyrl/erTick' 0x48F 'cyrl/er' : lambda [src gr] : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/upper-p.ptl b/packages/font-glyphs/src/letter/latin/upper-p.ptl index 43e7393dd..2fafe48f9 100644 --- a/packages/font-glyphs/src/letter/latin/upper-p.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-p.ptl @@ -185,6 +185,13 @@ glyph-block Letter-Latin-Upper-P : begin PShape XH (slab -- slabs) if fGap [PShape.OpenGap (top -- XH) (bot -- [if fSlabBot Stroke 0])] [glyph-proc] + create-glyph "PStrokeBot.\(suffix)" : glyph-proc + include [refer-glyph "P.\(suffix)"] AS_BASE ALSO_METRICS + include : LetterBarOverlay.l.in + x -- (SB * PShape.defaultMul) + bot -- [if fSlabBot Stroke 0] + top -- [PBarPosY CAP Stroke PShape.BarPos] + if (!fGap) : create-glyph "currency/rubleSign.\(suffix)" : glyph-proc include [refer-glyph "P.\(suffix)"] AS_BASE ALSO_METRICS define bar1pos : [PBarPosY CAP Stroke PShape.BarPos] + HalfStroke @@ -192,7 +199,7 @@ glyph-block Letter-Latin-Upper-P : begin define xCrossBarLeft : SB - SideJut define xPLeft : SB * PShape.defaultMul + [HSwToV HalfStroke] define xCrossBarRight : mix SB RightSB 0.8 - define yBase : if (slabs === PShape.SlabAsymmetric) Stroke 0 + define yBase : if fSlabBot Stroke 0 define yCrossbar : Math.max mix yBase (bar1pos - HalfStroke) (1 / 2) [mix yBase (bar1pos - HalfStroke) (2 / 3)] - OverlayStroke / 2 @@ -231,12 +238,14 @@ glyph-block Letter-Latin-Upper-P : begin flat [mix SB RightSB 0.5] (yBowl + XH * 0.25) curl [mix SB RightSB 0.875] (yBowl - XH * 0.25) - create-glyph 'PBar/overlay' : LetterBarOverlay.l.in + create-glyph 'PStroke/overlay' : LetterBarOverlay.l.in x -- (SB * PShape.defaultMul) bot -- ([PBarPosY CAP Stroke PShape.BarPos] + Stroke) top -- (CAP - Stroke) space -- { 0 (RightSB - [HSwToV Stroke]) } - derive-composites 'PBar' 0x2C63 'P' 'PBar/overlay' + derive-composites 'PStroke' 0x2C63 'P' 'PStroke/overlay' + + select-variant 'PStrokeBot' 0xA750 (follow -- 'P') define [BBPShape] : with-params [[mul PShape.defaultMul] [overshoot PShape.defaultOvershoot]] : glyph-proc define sb : SB * mul diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index f1dd51801..b23330c70 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -155,7 +155,6 @@ export : define decompOverrides : object 0x1D76 { 'z/reduced' 'tildeStrike2' } 0x1D7C { 'latn/iota' 'barOver' } - 0x1D7D { 'p' 'hStrike' } 0x1D7F { 'latn/upsilon' 'hStrike' } 0x1E9C { 'longs' 'shortSlashOver' }