Browse Source

Merge branch 'master' into removed-dead-code

Jumar Macato 5 years ago
parent
commit
01409c48af
2 changed files with 22 additions and 27 deletions
  1. 4 1
      src/Avalonia.Input/KeyGesture.cs
  2. 18 26
      src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs

+ 4 - 1
src/Avalonia.Input/KeyGesture.cs

@@ -144,7 +144,10 @@ namespace Avalonia.Input
             return s.ToString();
         }
 
-        public bool Matches(KeyEventArgs keyEvent) => ResolveNumPadOperationKey(keyEvent.Key) == Key && keyEvent.KeyModifiers == KeyModifiers;
+        public bool Matches(KeyEventArgs keyEvent) =>
+            keyEvent != null &&
+            keyEvent.KeyModifiers == KeyModifiers &&
+            ResolveNumPadOperationKey(keyEvent.Key) == ResolveNumPadOperationKey(Key);
 
         // TODO: Move that to external key parser
         private static Key ParseKey(string key)

+ 18 - 26
src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Runtime.InteropServices;
-using Avalonia.Media;
 using Avalonia.Platform;
 using HarfBuzzSharp;
 using SkiaSharp;
@@ -24,40 +23,33 @@ namespace Avalonia.Skia
 
             Font.SetFunctionsOpenType();
 
-            Font.GetScale(out var xScale, out _);
+            DesignEmHeight = (short)Typeface.UnitsPerEm;
 
-            DesignEmHeight = (short)xScale;
+            var metrics = Typeface.ToFont().Metrics;
 
-            if (!Font.TryGetHorizontalFontExtents(out var fontExtents))
-            {
-                Font.TryGetVerticalFontExtents(out fontExtents);
-            }
+            const double defaultFontRenderingEmSize = 12.0;
 
-            Ascent = -fontExtents.Ascender;
+            Ascent = (int)(metrics.Ascent / defaultFontRenderingEmSize * Typeface.UnitsPerEm);
 
-            Descent = -fontExtents.Descender;
+            Descent = (int)(metrics.Descent / defaultFontRenderingEmSize * Typeface.UnitsPerEm);
 
-            LineGap = fontExtents.LineGap;
+            LineGap = (int)(metrics.Leading / defaultFontRenderingEmSize * Typeface.UnitsPerEm);
 
-            if (Font.OpenTypeMetrics.TryGetPosition(OpenTypeMetricsTag.UnderlineOffset, out var underlinePosition))
-            {
-                UnderlinePosition = underlinePosition;
-            }
+            UnderlinePosition = metrics.UnderlinePosition != null ?
+                (int)(metrics.UnderlinePosition / defaultFontRenderingEmSize * Typeface.UnitsPerEm) :
+                0;
 
-            if (Font.OpenTypeMetrics.TryGetPosition(OpenTypeMetricsTag.UnderlineSize, out var underlineThickness))
-            {
-                UnderlineThickness = underlineThickness;
-            }
+            UnderlineThickness = metrics.UnderlineThickness != null ?
+                (int)(metrics.UnderlineThickness / defaultFontRenderingEmSize * Typeface.UnitsPerEm) :
+                0;
 
-            if (Font.OpenTypeMetrics.TryGetPosition(OpenTypeMetricsTag.StrikeoutOffset, out var strikethroughPosition))
-            {
-                StrikethroughPosition = strikethroughPosition;
-            }
+            StrikethroughPosition = metrics.StrikeoutPosition != null ?
+                (int)(metrics.StrikeoutPosition / defaultFontRenderingEmSize * Typeface.UnitsPerEm) :
+                0;
 
-            if (Font.OpenTypeMetrics.TryGetPosition(OpenTypeMetricsTag.StrikeoutSize, out var strikethroughThickness))
-            {
-                StrikethroughThickness = strikethroughThickness;
-            }
+            StrikethroughThickness = metrics.StrikeoutThickness != null ?
+                (int)(metrics.StrikeoutThickness / defaultFontRenderingEmSize * Typeface.UnitsPerEm) :
+                0;
 
             IsFixedPitch = Typeface.IsFixedPitch;
         }