From 2ac33e41ebd331736befd2c5b3ee126cbf4a5c17 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sun, 2 May 2021 01:33:19 -0700 Subject: [PATCH] Add - Cyrillic combining Dasia (`U+0485`), Psili (`U+0486`), Pokrytie (`U+0478`) - Cyrillic Ornate Omega (`U+047C`, `U+047D`). --- changes/6.2.0.md | 6 +++-- font-src/glyphs/auto-build/accents.ptl | 8 +++++++ font-src/glyphs/marks/index.ptl | 32 ++++++++++++++++++++++++++ font-src/otl/gsub-ccmp.ptl | 2 ++ 4 files changed, 46 insertions(+), 2 deletions(-) diff --git a/changes/6.2.0.md b/changes/6.2.0.md index 3a45dd9ae..fa8ede681 100644 --- a/changes/6.2.0.md +++ b/changes/6.2.0.md @@ -1,5 +1,7 @@ * Add characters: - Cyrillic Iotified E (`U+0464`, `U+0465`). - - Cyrillic Omega (`U+0460`, `U+0461`), Ot (`U+047E`, `U+047F`) and Broad Omega (`U+A64C`, `U+A64D`). + - Cyrillic Omega (`U+0460`, `U+0461`), Ot (`U+047E`, `U+047F`), Broad Omega (`U+A64C`, `U+A64D`). - Cyrillic Psi (`U+0470`, `U+0471`). - - Cyrillic Broad On (`U+047A`, `U+047B`) \ No newline at end of file + - Cyrillic Broad On (`U+047A`, `U+047B`). + - Cyrillic combining Dasia (`U+0485`), Psili (`U+0486`), Pokrytie (`U+0478`). + - Cyrillic Ornate Omega (`U+047C`, `U+047D`). \ No newline at end of file diff --git a/font-src/glyphs/auto-build/accents.ptl b/font-src/glyphs/auto-build/accents.ptl index 7d16fb13d..8fa9a95e1 100644 --- a/font-src/glyphs/auto-build/accents.ptl +++ b/font-src/glyphs/auto-build/accents.ptl @@ -58,6 +58,8 @@ glyph-block AutoBuild-Accents : begin set parts.(j) null; set parts.(j + 1) [query-glyph 'psilioxia'] (parts.(j + 1) === [query-glyph 'perispomeniAbove']) : begin set parts.(j) null; set parts.(j + 1) [query-glyph 'psiliperispomeni'] + (parts.(j + 1) === [query-glyph 'cyrlPokrytieAbove']) : begin + set parts.(j) null; set parts.(j + 1) [query-glyph 'commaCyrlPorkytieAbove'] (parts.(j) === [query-glyph 'revCommaAbove']) : begin piecewise (parts.(j + 1) === [query-glyph 'graveAbove']) : begin @@ -66,6 +68,10 @@ glyph-block AutoBuild-Accents : begin set parts.(j) null; set parts.(j + 1) [query-glyph 'dasiaoxia'] (parts.(j + 1) === [query-glyph 'perispomeniAbove']) : begin set parts.(j) null; set parts.(j + 1) [query-glyph 'dasiaperispomeni'] + (parts.(j) === [query-glyph 'cyrlPsiliAbove']) : begin + piecewise + (parts.(j + 1) === [query-glyph 'cyrlPokrytieAbove']) : begin + set parts.(j) null; set parts.(j + 1) [query-glyph 'cyrlPsiliPokrytieAbove'] return parts define [pad _s n] : begin @@ -239,6 +245,8 @@ define customDecompositions : object ."\u0499" "\u0437\u0327" ."\u04AA" "\u0421\u0327" ."\u04AB" "\u0441\u0327" + ."\u047C" "\uA64C\u0486\u0487" + ."\u047D" "\uA64D\u0486\u0487" # Spacing modifers ."\u02CB" "\uE00D\u0300" diff --git a/font-src/glyphs/marks/index.ptl b/font-src/glyphs/marks/index.ptl index 951a7283f..23c381758 100644 --- a/font-src/glyphs/marks/index.ptl +++ b/font-src/glyphs/marks/index.ptl @@ -729,6 +729,23 @@ glyph-block Marks : begin g4 (right - OX) aboveMarkMid g4 (right - braceDepth) aboveMarkBot + alias 'cyrlDasiaAbove' 0x485 'revCommaAbove' + alias 'cyrlPsiliAbove' 0x486 'commaAbove' + create-glyph 'cyrlPokrytieAbove' 0x487 : glyph-proc + set-width 0 + set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop + set-base-anchor 'aboveBrace' markMiddle aboveMarkMid + + local leftEnd : markMiddle - markExtend * 1.2 + local rightEnd : markMiddle + markExtend * 2 + + include : dispiro + g4.up.start leftEnd aboveMarkBot [widths.heading markHalfStroke markHalfStroke Upward] + arcvh + g2.right.mid markMiddle (aboveMarkTop - markHalfStroke) [heading Rightward] + alsoThru.g2 0.5 0.5 + g2.right.end rightEnd ([mix aboveMarkBot aboveMarkTop 0.5] - markHalfStroke) [heading Rightward] + ### Below marks create-glyph 'blankBelow' : glyph-proc set-width 0 @@ -1358,6 +1375,21 @@ glyph-block Marks : begin set-mark-anchor 'above' markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2) set currentGlyph.autoRefPriority 50 + create-glyph 'cyrlPsiliPokrytieAbove' : glyph-proc + set-width 0 + include : refer-glyph "commaAbove" + local radius : Math.max (markExtend - commaAboveRadius) (commaAboveRadius * 1.25) + local sw : Math.min (markHalfStroke * 2) ([AdviceStroke 6.5] * 1.25) + include : dispiro + widths.lhs sw + g4.up.start (markMiddle - radius) yc [heading Upward] + arcvh + g2.right.mid markMiddle (yc + radius) + alsoThru.g2 0.5 0.5 + g2.right.end (markMiddle + [Math.max radius (markExtend * 2)]) yc [heading Rightward] + set-mark-anchor 'above' markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2) + set currentGlyph.autoRefPriority 50 + create-glyph 'spaced_psiliperispomeni' 0x1FCF : glyph-proc include [refer-glyph 'markBaseSpace'] AS_BASE set-width [query-glyph 'markBaseSpace'].advanceWidth diff --git a/font-src/otl/gsub-ccmp.ptl b/font-src/otl/gsub-ccmp.ptl index 213b022a1..1caae3282 100644 --- a/font-src/otl/gsub-ccmp.ptl +++ b/font-src/otl/gsub-ccmp.ptl @@ -132,9 +132,11 @@ export : define [buildCCMP sink glyphStore markGlyphs] : begin object [from {'commaAbove' 'graveAbove'}] [to 'psilivaria'] object [from {'commaAbove' 'acuteAbove'}] [to 'psilioxia'] object [from {'commaAbove' 'perispomeniAbove'}] [to 'psiliperispomeni'] + object [from {'commaAbove' 'cyrlPokrytieAbove'}] [to 'commaCyrlPorkytieAbove'] object [from {'revCommaAbove' 'graveAbove'}] [to 'dasiavaria'] object [from {'revCommaAbove' 'acuteAbove'}] [to 'dasiaoxia'] object [from {'revCommaAbove' 'perispomeniAbove'}] [to 'dasiaperispomeni'] + object [from {'cyrlPsiliAbove' 'cyrlPokrytieAbove'}] [to 'cyrlPsiliPokrytieAbove'] define gnCgjNwid 'dashed-boxed3{847}{C}{G}{J}.NWID' define gnCgjWwid 'dashed-boxed3{847}{C}{G}{J}.WWID'