Browse Source

Fix TextDecoration width

Fix LineBreak length
pull/8471/head
Benedikt Stebner 4 years ago
parent
commit
9f37910c97
  1. 14
      samples/Sandbox/MainWindow.axaml
  2. 2
      src/Avalonia.Base/Media/GlyphRun.cs
  3. 2
      src/Avalonia.Base/Media/TextDecoration.cs
  4. 3
      src/Avalonia.Controls/Documents/LineBreak.cs

14
samples/Sandbox/MainWindow.axaml

@ -1,17 +1,5 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
x:Class="Sandbox.MainWindow">
<RichTextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="AliceBlue"
Padding="5"
IsTextSelectionEnabled="True"
FontSize="18"
FontWeight="Bold"
SelectionStart="24"
SelectionEnd="23">
<LineBreak/>
<Run>أَبْجَدِيَّة عَرَبِيَّة</Run>
</RichTextBlock>
<TextBlock TextDecorations="Underline" Text="Underline "/>
</Window>

2
src/Avalonia.Base/Media/GlyphRun.cs

@ -445,7 +445,7 @@ namespace Avalonia.Media
/// </returns>
public int FindGlyphIndex(int characterIndex)
{
if (GlyphClusters == null)
if (GlyphClusters == null || GlyphClusters.Count == 0)
{
return characterIndex;
}

2
src/Avalonia.Base/Media/TextDecoration.cs

@ -209,7 +209,7 @@ namespace Avalonia.Media
var pen = new Pen(Stroke ?? defaultBrush, thickness,
new DashStyle(StrokeDashArray, StrokeDashOffset), StrokeLineCap);
drawingContext.DrawLine(pen, origin, origin + new Point(glyphRun.Size.Width, 0));
drawingContext.DrawLine(pen, origin, origin + new Point(glyphRun.Metrics.Width, 0));
}
}
}

3
src/Avalonia.Controls/Documents/LineBreak.cs

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Text;
using Avalonia.LogicalTree;
using Avalonia.Media.TextFormatting;
using Avalonia.Metadata;
@ -22,7 +21,7 @@ namespace Avalonia.Controls.Documents
internal override void BuildTextRun(IList<TextRun> textRuns)
{
textRuns.Add(new TextEndOfLine());
textRuns.Add(new TextEndOfLine(Environment.NewLine.Length));
}
internal override void AppendText(StringBuilder stringBuilder)

Loading…
Cancel
Save