diff --git a/installer/innosetup/setup.iss b/installer/innosetup/setup.iss index d85dd60f9..e82377008 100644 --- a/installer/innosetup/setup.iss +++ b/installer/innosetup/setup.iss @@ -38,8 +38,8 @@ Source: {#ReleaseDir}\System.Memory.dll; DestDir: {app}; Components: greenshot; Source: {#ReleaseDir}\System.Numerics.Vectors.dll; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion Source: {#ReleaseDir}\System.Runtime.CompilerServices.Unsafe.dll; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion Source: {#ReleaseDir}\System.Buffers.dll; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion -Source: {#ReleaseDir}\TwemojiMozilla.ttf; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion -Source: {#ReleaseDir}\emoji-test.txt; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion +Source: {#ReleaseDir}\TwemojiMozilla.ttf.gz; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion +Source: {#ReleaseDir}\emoji-test.txt.gz; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion Source: {#GreenshotProjectDir}\log4net.xml; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion Source: {#ReleaseDir}\checksum.SHA256; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion ;Source: ..\greenshot-defaults.ini; DestDir: {app}; Flags: overwritereadonly ignoreversion replacesameversion diff --git a/src/Greenshot.Editor/Drawing/Emoji/EmojiRenderer.cs b/src/Greenshot.Editor/Drawing/Emoji/EmojiRenderer.cs index fcb0f422a..dc215f2c0 100644 --- a/src/Greenshot.Editor/Drawing/Emoji/EmojiRenderer.cs +++ b/src/Greenshot.Editor/Drawing/Emoji/EmojiRenderer.cs @@ -20,6 +20,7 @@ */ using System; +using System.Diagnostics; using System.IO; using System.IO.Compression; using System.Reflection; @@ -41,15 +42,31 @@ namespace Greenshot.Editor.Drawing.Emoji private static readonly Lazy TwemojiFontFamily = new(() => { var exeDirectory = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location); - var twemojiFontFile = Path.Combine(exeDirectory, "TwemojiMozilla.ttf"); + var twemojiFontFile = Path.Combine(exeDirectory, "TwemojiMozilla.ttf.gz"); if (!File.Exists(twemojiFontFile)) { throw new FileNotFoundException($"Can't find {twemojiFontFile}, bad installation?"); } + Stopwatch sw = new(); + sw.Start(); using var fileStream = new FileStream(twemojiFontFile, FileMode.Open, FileAccess.Read); - TwemojiFontCollection.Add(fileStream); + using var gzStream = new GZipStream(fileStream, CompressionMode.Decompress); + using var memoryStream = new MemoryStream(); + gzStream.CopyTo(memoryStream); + memoryStream.Seek(0, SeekOrigin.Begin); + sw.Stop(); + + Console.WriteLine($"Uncompress .ttf: {sw.ElapsedMilliseconds} ms"); + + sw.Reset(); + sw.Start(); + TwemojiFontCollection.Add(memoryStream); TwemojiFontCollection.TryGet("Twemoji Mozilla", out var fontFamily); + sw.Stop(); + + Console.WriteLine($"Parse .ttf: {sw.ElapsedMilliseconds} ms"); + return fontFamily; }); diff --git a/src/Greenshot.Editor/Greenshot.Editor.csproj b/src/Greenshot.Editor/Greenshot.Editor.csproj index affaf81c7..b4c743cb5 100644 --- a/src/Greenshot.Editor/Greenshot.Editor.csproj +++ b/src/Greenshot.Editor/Greenshot.Editor.csproj @@ -20,6 +20,11 @@ OutputFile="Controls\Emoji\emoji-test.txt.gz" /> + + + + Component @@ -98,9 +103,9 @@ PreserveNewest emoji-test.txt.gz - + PreserveNewest - TwemojiMozilla.ttf + TwemojiMozilla.ttf.gz \ No newline at end of file