* Add characters:

- CYRILLIC CAPITAL LETTER DCHE (`U+052C`) (#1897).
  - CYRILLIC SMALL LETTER DCHE (`U+052D`) (#1897).
This commit is contained in:
be5invis 2023-09-25 00:48:31 -07:00
parent b06363541e
commit 241634c7c3
4 changed files with 60 additions and 20 deletions

View file

@ -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).

View file

@ -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"

View file

@ -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])

View file

@ -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