diff --git a/changes/27.1.0.md b/changes/27.1.0.md index 0fbf29539..14b187995 100644 --- a/changes/27.1.0.md +++ b/changes/27.1.0.md @@ -1 +1,4 @@ +* Add characters: + - CYRILLIC CAPITAL LETTER DCHE (`U+052C`) (#1897). + - CYRILLIC SMALL LETTER DCHE (`U+052D`) (#1897). * Add separate variant selector `VXAA` for Cyrillic Lower U (`у`) (#2006). diff --git a/font-src/glyphs/letter/cyrillic.ptl b/font-src/glyphs/letter/cyrillic.ptl index ab1961260..4982bcb1e 100644 --- a/font-src/glyphs/letter/cyrillic.ptl +++ b/font-src/glyphs/letter/cyrillic.ptl @@ -4,8 +4,8 @@ export : define [apply] : begin define $$Capture$$ this run-glyph-module "./cyrillic/abk-ha.mjs" run-glyph-module "./cyrillic/big-yus.mjs" - run-glyph-module "./cyrillic/che.mjs" run-glyph-module "./cyrillic/de.mjs" + run-glyph-module "./cyrillic/che.mjs" run-glyph-module "./cyrillic/dje.mjs" run-glyph-module "./cyrillic/djerv.mjs" run-glyph-module "./cyrillic/dzhe.mjs" diff --git a/font-src/glyphs/letter/cyrillic/che.ptl b/font-src/glyphs/letter/cyrillic/che.ptl index c0969f94f..a8a90425d 100644 --- a/font-src/glyphs/letter/cyrillic/che.ptl +++ b/font-src/glyphs/letter/cyrillic/che.ptl @@ -7,9 +7,10 @@ glyph-module glyph-block Letter-Cyrillic-Che : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Mark-Adjustment : LeaningAnchor + glyph-block-import Mark-Adjustment : LeaningAnchor ExtendBelowBaseAnchors glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar DToothlessRise - glyph-block-import Letter-Shared-Shapes : CyrDescender + glyph-block-import Letter-Shared-Shapes : CyrDescender BottomExtension + glyph-block-import Letter-Cyrillic-De : CyrDeBottom define BODY-STRAIGHT 0 define BODY-TAILED 1 @@ -17,13 +18,12 @@ glyph-block Letter-Cyrillic-Che : begin define SLAB-NONE 0 define SLAB-ALL 1 define SLAB-LOWER 2 - define SLAB-TAILED-U 3 + define SLAB-TOP 3 define SLAB-TAILED-I 4 define SLAB-ALL-BGR 5 define SLAB-TAILED-BGR 6 define [CyrCheShape top pyBar bodyType slabType] : glyph-proc - include : LeaningAnchor.Below.VBar.r RightSB local bar : top * [fallback pyBar 0.5] include : match bodyType [Just BODY-TAILED] : RightwardTailedBar RightSB 0 top @@ -38,7 +38,7 @@ glyph-block Letter-Cyrillic-Che : begin local sf : SerifFrame.fromDf [DivFrame 1] top 0 include : tagged 'serifLT' : match slabType [Just SLAB-ALL] sf.lt.full - [Just SLAB-TAILED-U] sf.lt.full + [Just SLAB-TOP] sf.lt.full [Just SLAB-ALL-BGR] sf.lt.outer [Just SLAB-TAILED-BGR] sf.lt.outer [Just SLAB-LOWER] sf.lt.outer @@ -46,7 +46,7 @@ glyph-block Letter-Cyrillic-Che : begin __ : glyph-proc include : tagged 'SerifRT' : match slabType [Just SLAB-ALL] sf.rt.full - [Just SLAB-TAILED-U] sf.rt.full + [Just SLAB-TOP] sf.rt.full [Just SLAB-ALL-BGR] sf.rt.inner [Just SLAB-TAILED-BGR] sf.rt.inner __ : glyph-proc @@ -58,6 +58,7 @@ glyph-block Letter-Cyrillic-Che : begin create-glyph 'cyrl/Che' 0x427 : glyph-proc include : MarkSet.capital + include : LeaningAnchor.Below.VBar.r RightSB include : CyrCheShape CAP [if SLAB 0.45 0.35] BODY-STRAIGHT : if SLAB SLAB-ALL SLAB-NONE create-glyph 0x4B6 : composite-proc @@ -69,21 +70,25 @@ glyph-block Letter-Cyrillic-Che : begin create-glyph 'cyrl/che.standard' : glyph-proc include : MarkSet.e + include : LeaningAnchor.Below.VBar.r RightSB include : CyrCheShape XH [if SLAB 0.45 0.4] BODY-STRAIGHT if SLAB [if para.isItalic SLAB-LOWER SLAB-ALL] SLAB-NONE create-glyph 'cyrl/che.tailed' : glyph-proc include : MarkSet.e + include : LeaningAnchor.Below.VBar.r RightSB include : CyrCheShape XH [if SLAB 0.45 0.4] BODY-TAILED - if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TAILED-U] SLAB-NONE + if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TOP] SLAB-NONE create-glyph 'cyrl/che.BGR.standard' : glyph-proc include : MarkSet.e + include : LeaningAnchor.Below.VBar.r RightSB include : CyrCheShape XH [if SLAB 0.45 0.4] BODY-STRAIGHT if SLAB [if para.isItalic SLAB-LOWER SLAB-ALL-BGR] SLAB-NONE create-glyph 'cyrl/che.BGR.tailed' : glyph-proc include : MarkSet.e + include : LeaningAnchor.Below.VBar.r RightSB include : CyrCheShape XH [if SLAB 0.45 0.4] BODY-TAILED if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TAILED-BGR] SLAB-NONE @@ -107,3 +112,25 @@ glyph-block Letter-Cyrillic-Che : begin derive-composites 'cyrl/CheVBar' 0x4B8 'cyrl/Che' [ChrVBar CAP] derive-composites 'cyrl/cheVBar' 0x4B9 'cyrl/che' [ChrVBar XH] + + create-glyph 'cyrl/Dche' 0x52C : glyph-proc + include : MarkSet.capital + include : ExtendBelowBaseAnchors BottomExtension + include : CyrCheShape CAP [if SLAB 0.5 0.4] BODY-STRAIGHT : if SLAB SLAB-TOP SLAB-NONE + include : CyrDeBottom SB RightSB + + local fine : AdviceStroke 3.5 + include : dispiro + flat SB Stroke [widths.rhs fine] + curl (RightSB - [HSwToV Stroke]) (CAP - [if SLAB Stroke 0]) + + create-glyph 'cyrl/dche' 0x52D : glyph-proc + include : MarkSet.capital + include : ExtendBelowBaseAnchors BottomExtension + include : CyrCheShape XH [if SLAB 0.5 0.4] BODY-STRAIGHT : if SLAB SLAB-TOP SLAB-NONE + include : CyrDeBottom SB RightSB + + local fine : AdviceStroke 3.5 + include : dispiro + flat SB Stroke [widths.rhs fine] + curl (RightSB - [HSwToV Stroke]) (XH - [if SLAB Stroke 0]) diff --git a/font-src/glyphs/letter/cyrillic/de.ptl b/font-src/glyphs/letter/cyrillic/de.ptl index 90df0ff65..04302934d 100644 --- a/font-src/glyphs/letter/cyrillic/de.ptl +++ b/font-src/glyphs/letter/cyrillic/de.ptl @@ -10,32 +10,42 @@ glyph-block Letter-Cyrillic-De : begin glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe EpsilonConfig + glyph-block-export BottomExtension local BottomExtension : 0.25 * Stroke - LongJut + glyph-block-export CyrDeBottom + define [CyrDeBottom left right _sw _desc] : glyph-proc + local descenderOverflow : if SLAB SideJut ((right - left) * 0.075) + local xTopLeft : mix left right : StrokeWidthBlend 0.15 0.1 + local xTopRight : mix left right : StrokeWidthBlend 0.95 0.96 + local swOuter : fallback _sw Stroke + local desc : fallback _desc BottomExtension + + include : HBar.b xTopLeft xTopRight 0 swOuter + include : tagged 'footL' : union + HBar.b (left - descenderOverflow) xTopLeft 0 swOuter + VBar.l (left - descenderOverflow) desc 0.1 swOuter + include : tagged 'footR' : union + HBar.b xTopRight (right + descenderOverflow) 0 swOuter + VBar.r (right + descenderOverflow) desc 0.1 swOuter + glyph-block-export CyrDeShape CyrDeItalicShapeT define [CyrDeShape top left right _sw _desc] : glyph-proc local descenderOverflow : if SLAB SideJut ((right - left) * 0.075) - local xCutLeft left - local xCutRight right - local xTopLeft : mix xCutLeft xCutRight : StrokeWidthBlend 0.15 0.1 - local xTopRight : mix xCutLeft xCutRight : StrokeWidthBlend 0.95 0.96 + local xTopLeft : mix left right : StrokeWidthBlend 0.15 0.1 + local xTopRight : mix left right : StrokeWidthBlend 0.95 0.96 local swOuter : fallback _sw Stroke local swInner : swOuter * [AdviceStroke 2.75] / Stroke local desc : fallback _desc BottomExtension - include : HBar.b xTopLeft xTopRight 0 swOuter + include : CyrDeBottom left right _sw _desc + include : VBar.r xTopRight 0 top swInner include : dispiro widths.lhs swInner flat xTopLeft top curl xTopLeft [mix 0 top 0.625] - g4 xCutLeft swOuter - include : tagged 'footL' : union - HBar.b (xCutLeft - descenderOverflow) xTopLeft 0 swOuter - VBar.l (xCutLeft - descenderOverflow) desc 0.1 swOuter - include : tagged 'footR' : union - HBar.b xTopRight (xCutRight + descenderOverflow) 0 swOuter - VBar.r (xCutRight + descenderOverflow) desc 0.1 swOuter + g4 left swOuter include : if SLAB then : dispiro