From 9aa651bdb04be5d81a699d6ea54a5a0cb67eb2ca Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 29 Jun 2019 19:56:00 +0900 Subject: [PATCH] =?utf8?q?Twemoji=E3=81=A7=E4=BD=99=E5=88=86=E3=81=AA=20U+?= =?utf8?q?FE0F=20=E3=82=92=E7=B5=B5=E6=96=87=E5=AD=97=E3=81=A8=E3=81=97?= =?utf8?q?=E3=81=A6=E8=A1=A8=E7=A4=BA=E3=81=9B=E3=81=9A=E3=81=AB=E7=84=A1?= =?utf8?q?=E8=A6=96=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes: 16184461 ("Twemoji v11.2.0 に対応") --- OpenTween.Tests/TweetExtractorTest.cs | 18 ++++++++++++++++++ OpenTween.Tests/TweetFormatterTest.cs | 21 ++++++++++++++++++++- OpenTween/Resources/ChangeLog.txt | 1 + OpenTween/TweetExtractor.cs | 25 ++++++++++++++++++++----- OpenTween/TweetFormatter.cs | 3 +++ 5 files changed, 62 insertions(+), 6 deletions(-) diff --git a/OpenTween.Tests/TweetExtractorTest.cs b/OpenTween.Tests/TweetExtractorTest.cs index c8d3f616..be93e4a9 100644 --- a/OpenTween.Tests/TweetExtractorTest.cs +++ b/OpenTween.Tests/TweetExtractorTest.cs @@ -228,6 +228,24 @@ namespace OpenTween } [Fact] + public void ExtractEmojiEntities_VariationSelector_UnnecessaryEmojiStyleTest() + { + // 余分な U+FE0F が付いている場合 + var origText = "🍣\uFE0F"; // U+1F363 + U+FE0F (emoji style) + var entities = TweetExtractor.ExtractEmojiEntities(origText).ToArray(); + + Assert.Equal(2, entities.Length); + + Assert.Equal(new[] { 0, 1 }, entities[0].Indices); + Assert.Equal("🍣", entities[0].Text); + Assert.Equal("https://twemoji.maxcdn.com/2/72x72/1f363.png", entities[0].Url); + + Assert.Equal(new[] { 1, 2 }, entities[1].Indices); + Assert.Equal("", entities[1].Text); + Assert.Equal("", entities[1].Url); + } + + [Fact] public void ExtractEmojiEntities_CombiningCharacterTest() { var origText = "#⃣"; // U+0023 U+20E3 (合字) diff --git a/OpenTween.Tests/TweetFormatterTest.cs b/OpenTween.Tests/TweetFormatterTest.cs index 2b9d3a32..967e92cb 100644 --- a/OpenTween.Tests/TweetFormatterTest.cs +++ b/OpenTween.Tests/TweetFormatterTest.cs @@ -165,7 +165,6 @@ namespace OpenTween Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities)); } - [Fact] public void FormatEmojiEntity_Test() { @@ -183,6 +182,26 @@ namespace OpenTween var expected = "\"🍣\""; Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities)); } + + [Fact] + public void FormatEmojiEntity_EmptyUrlTest() + { + // 余分な U+FE0F があった場合に Url が空の絵文字エンティティが渡される + var text = "\uFE0F"; + var entities = new[] + { + new TwitterEntityEmoji + { + Indices = new[] { 0, 1 }, + Text = "", + Url = "", + }, + }; + + var expected = ""; + Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities)); + } + [Fact] public void AutoLinkHtml_EntityNullTest() { diff --git a/OpenTween/Resources/ChangeLog.txt b/OpenTween/Resources/ChangeLog.txt index 831422d1..b385dabf 100644 --- a/OpenTween/Resources/ChangeLog.txt +++ b/OpenTween/Resources/ChangeLog.txt @@ -2,6 +2,7 @@ ==== Ver 2.3.2-dev(2019/xx/xx) * CHG: htn.to の短縮URLを展開する際に強制的にHTTPSを使用する + * FIX: Twemojiを有効にすると絵文字の後に余分な文字が表示される場合がある不具合を修正 ==== Ver 2.3.1(2019/04/22) * FIX: 2019/5/20に予定されているTwitter APIの仕様変更によりエラーが発生する問題を修正 diff --git a/OpenTween/TweetExtractor.cs b/OpenTween/TweetExtractor.cs index 18504a02..653afdaf 100644 --- a/OpenTween/TweetExtractor.cs +++ b/OpenTween/TweetExtractor.cs @@ -182,12 +182,27 @@ namespace OpenTween var startPos = text.GetCodepointCount(0, match.Index); var endPos = startPos + text.GetCodepointCount(match.Index, match.Index + match.Length); - yield return new TwitterEntityEmoji + TwitterEntityEmoji entity; + if (codepointHex.Count >= 1) { - Indices = new[] { startPos, endPos }, - Text = input, - Url = "https://twemoji.maxcdn.com/2/72x72/" + string.Join("-", codepointHex) + ".png", - }; + entity = new TwitterEntityEmoji + { + Indices = new[] { startPos, endPos }, + Text = input, + Url = "https://twemoji.maxcdn.com/2/72x72/" + string.Join("-", codepointHex) + ".png", + }; + } + else + { + entity = new TwitterEntityEmoji + { + Indices = new[] { startPos, endPos }, + Text = input, + Url = "", + }; + } + + yield return entity; } } } diff --git a/OpenTween/TweetFormatter.cs b/OpenTween/TweetFormatter.cs index 733141d2..9969c3a1 100644 --- a/OpenTween/TweetFormatter.cs +++ b/OpenTween/TweetFormatter.cs @@ -166,6 +166,9 @@ namespace OpenTween if (!SettingManager.Local.UseTwemoji) return t(e(targetText)); + if (string.IsNullOrEmpty(entity.Url)) + return ""; + return "\"""; } -- 2.11.0