From acb58469f1ba62e0c7edc28a5312d1fd3a4a75f2 Mon Sep 17 00:00:00 2001 From: be5invis Date: Wed, 19 Apr 2023 17:44:18 -0700 Subject: [PATCH] More optimize --- font-src/glyphs/marks/above.ptl | 37 ++++++++++++++---------- font-src/glyphs/marks/shared-metrics.ptl | 3 +- font-src/meta/unicode-knowledge.ptl | 26 ++++++++--------- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/font-src/glyphs/marks/above.ptl b/font-src/glyphs/marks/above.ptl index 131fff2dc..64168a491 100644 --- a/font-src/glyphs/marks/above.ptl +++ b/font-src/glyphs/marks/above.ptl @@ -15,7 +15,7 @@ glyph-block Mark-Above : begin glyph-block-import Common-Derivatives glyph-block-import Mark-Shared-Metrics : markExtend markStroke markHalfStroke markStress markFine - glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius + glyph-block-import Mark-Shared-Metrics : markMiddle markDotsRadius dialytikaRadius glyph-block-export aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack define aboveMarkTop (XH + AccentClearance + AccentHeight) @@ -67,8 +67,8 @@ glyph-block Mark-Above : begin create-glyph "dialytikaAbove.\(suffix)" : glyph-proc set-width 0 - include : DrawAt (markMiddle - markExtend * 1.25) aboveMarkMid (markDotsRadius * kdr) - include : DrawAt (markMiddle + markExtend * 1.25) aboveMarkMid (markDotsRadius * kdr) + include : DrawAt (markMiddle - markExtend * 1.25) aboveMarkMid (dialytikaRadius * kdr) + include : DrawAt (markMiddle + markExtend * 1.25) aboveMarkMid (dialytikaRadius * kdr) select-variant 'dotAbove' 0x307 (follow -- 'diacriticDot') select-variant 'dieresisAbove' 0x308 (follow -- 'diacriticDot') @@ -105,7 +105,7 @@ glyph-block Mark-Above : begin include : StdAnchors.medium include : dispiro flat (markMiddle + markStress) aboveMarkBot [widths markFine markFine] - curl (markMiddle - markExtend) aboveMarkTop [widths markStress markStress] + curl (markMiddle - 0.875 * markExtend) aboveMarkTop [widths markStress markStress] create-glyph 'asciiGrave/body/straight' : glyph-proc local df : DivFrame para.diversityF @@ -119,7 +119,7 @@ glyph-block Mark-Above : begin include : StdAnchors.medium include : dispiro flat (markMiddle - markStress) aboveMarkBot [widths markFine markFine] - curl (markMiddle + markExtend) aboveMarkTop [widths markStress markStress] + curl (markMiddle + 0.875 * markExtend) aboveMarkTop [widths markStress markStress] create-glyph 'latin1acute' 0xB4 : glyph-proc local df : DivFrame para.diversityF @@ -601,13 +601,11 @@ glyph-block Mark-Above : begin create-glyph 'barAbove' 0x30D : glyph-proc set-width 0 include : StdAnchors.narrow - include : VBar.m markMiddle aboveMarkBot aboveMarkTop markStroke create-glyph 'ascenderBarAbove' : glyph-proc set-width 0 include : StdAnchors.narrow - include : VBar.m markMiddle [mix XH aboveMarkBot 0.5] CAP markStroke create-glyph 'dblBarAbove' 0x30E : glyph-proc @@ -653,13 +651,20 @@ glyph-block Mark-Above : begin include : ApparentTranslate 0 (fine * 0.5) include : StdAnchors.mediumWide - select-variant 'candrabinduAbove' 0x310 (follow -- 'diacriticDot') turned 'turncandrabinduAbove' 0x352 'candrabinduAbove' markMiddle aboveMarkMid + create-glyph 'tonosAbove' : glyph-proc + set-width 0 + include : StdAnchors.narrow + local shift : 0.05 * markExtend + (markStress - markFine) * HVContrast + include : dispiro + flat (markMiddle + shift) (aboveMarkTop + 0.4 * markStress) [widths.center.heading (markStress * 2) Downward] + curl (markMiddle - 0.5 * shift) aboveMarkBot [widths.center.heading (markFine * 2) Downward] + create-glyph 'tonosGrekUpperTonos' : glyph-proc set-width 0 - include : refer-glyph 'barAbove' + include : refer-glyph 'tonosAbove' include : StdAnchors.impl 'grekUpperTonos' 0 0 create-glyph 'variaAbove' 0x340 : glyph-proc @@ -697,20 +702,22 @@ glyph-block Mark-Above : begin create-glyph 'dialytikaTonosAbove' 0x0344 : glyph-proc set-width 0 - include : refer-glyph 'dialytikaAbove' - include : refer-glyph 'barAbove' + include : WithTransform [ApparentTranslate 0 (-1/8 * AccentHeight)] : refer-glyph 'dialytikaAbove' + include : WithTransform [ApparentTranslate 0 0] : refer-glyph 'tonosAbove' include : StdAnchors.wide create-glyph 'dialytikaVariaAbove' : glyph-proc set-width 0 - include : refer-glyph 'dialytikaAbove' - include : refer-glyph 'variaAbove' + local shift : 0.125 * (markExtend * 0.875 - markStress) + include : WithTransform [ApparentTranslate 0 (-1/8 * AccentHeight)] : refer-glyph 'dialytikaAbove' + include : WithTransform [ApparentTranslate shift 0] : refer-glyph 'variaAbove' include : StdAnchors.wide create-glyph 'dialytikaOxiaAbove' : glyph-proc set-width 0 - include : refer-glyph 'dialytikaAbove' - include : refer-glyph 'oxiaAbove' + local shift : 0.125 * (markExtend * 0.875 - markStress) + include : WithTransform [ApparentTranslate 0 (-1/8 * AccentHeight)] : refer-glyph 'dialytikaAbove' + include : WithTransform [ApparentTranslate (-shift) 0] : refer-glyph 'oxiaAbove' include : StdAnchors.wide create-glyph 'crossAbove' 0x33D : glyph-proc diff --git a/font-src/glyphs/marks/shared-metrics.ptl b/font-src/glyphs/marks/shared-metrics.ptl index c8c5faa44..7b882757b 100644 --- a/font-src/glyphs/marks/shared-metrics.ptl +++ b/font-src/glyphs/marks/shared-metrics.ptl @@ -20,6 +20,7 @@ glyph-block Mark-Shared-Metrics : begin define markStress : markHalfStroke * 1.1 define markFine : Math.min (markHalfStroke * 0.9) (0.5 * [AdviceStroke2 3.875 4.25 XH]) - glyph-block-export markMiddle markDotsRadius + glyph-block-export markMiddle markDotsRadius dialytikaRadius define markMiddle (-Middle) define markDotsRadius : DotRadius * [Math.min 1 (markStress / HalfStroke)] + define dialytikaRadius : DotRadius * [Math.min 1 ([AdviceStroke 5] / Stroke)] diff --git a/font-src/meta/unicode-knowledge.ptl b/font-src/meta/unicode-knowledge.ptl index 58844798a..35ab89383 100644 --- a/font-src/meta/unicode-knowledge.ptl +++ b/font-src/meta/unicode-knowledge.ptl @@ -8,7 +8,7 @@ export : define ogonekBelowToTRTf_Y : object 'ogonekBelow' 'ogonekTR_Y' export : define upperGrekMarkToTonosTf : object - 'barAbove' 'tonosGrekUpperTonos' + 'tonosAbove' 'tonosGrekUpperTonos' 'variaAbove' 'variaGrekUpperTonos' 'oxiaAbove' 'oxiaGrekUpperTonos' 'graveAbove' 'variaGrekUpperTonos' @@ -122,22 +122,22 @@ export : define decompOverrides : object 0x24D { 'r' 'barOver' } 0x24F { 'y' 'longBarOver' } - 0x386 { 'grek/Alpha' 'tonosGrekUpperTonos' } + 0x386 { 'grek/Alpha' 'tonosGrekUpperTonos' } 0x388 { 'grek/Epsilon' 'tonosGrekUpperTonos' } - 0x389 { 'grek/Eta' 'tonosGrekUpperTonos' } - 0x38A { 'grek/Iota' 'tonosGrekUpperTonos' } + 0x389 { 'grek/Eta' 'tonosGrekUpperTonos' } + 0x38A { 'grek/Iota' 'tonosGrekUpperTonos' } 0x38C { 'grek/Omicron' 'tonosGrekUpperTonos' } 0x38E { 'grek/Upsilon' 'tonosGrekUpperTonos' } - 0x38F { 'grek/Omega' 'tonosGrekUpperTonos' } - 0x390 { 'grek/iota' 'dialytikaTonosAbove' } - 0x3AC { 'grek/alpha' 'barAbove' } - 0x3AD { 'grek/epsilon' 'barAbove' } - 0x3AE { 'grek/eta' 'barAbove' } - 0x3AF { 'grek/iota' 'barAbove' } + 0x38F { 'grek/Omega' 'tonosGrekUpperTonos' } + 0x390 { 'grek/iota' 'dialytikaTonosAbove' } + 0x3AC { 'grek/alpha' 'tonosAbove' } + 0x3AD { 'grek/epsilon' 'tonosAbove' } + 0x3AE { 'grek/eta' 'tonosAbove' } + 0x3AF { 'grek/iota' 'tonosAbove' } 0x3B0 { 'grek/upsilon' 'dialytikaTonosAbove' } - 0x3CC { 'grek/omicron' 'barAbove' } - 0x3CD { 'grek/upsilon' 'barAbove' } - 0x3CE { 'grek/omega' 'barAbove' } + 0x3CC { 'grek/omicron' 'tonosAbove' } + 0x3CD { 'grek/upsilon' 'tonosAbove' } + 0x3CE { 'grek/omega' 'tonosAbove' } 0x1FD2 { 'grek/iota' 'dialytikaVariaAbove' } 0x1FD3 { 'grek/iota' 'dialytikaOxiaAbove' }