From f403bbbf2c79db91eb0bffcff66834c6ac1ef3ad Mon Sep 17 00:00:00 2001 From: Mercury13 Date: Thu, 21 Sep 2023 00:47:33 +0300 Subject: [PATCH] #312 More emoji misrenders --- AutoBuilder/library.cpp | 2 ++ AutoBuilder/main.cpp | 3 +++ Lang-src/en.uorig | 10 +++++-- Lang-src/ru.utran | 16 ++++++++--- Lang-src/uk.utran | 14 +++++++--- Unicodia/MyWiki.cpp | 56 ++++++++++++++++++++++----------------- Unicodia/Uc/UcAutoLib.cpp | 4 +-- 7 files changed, 69 insertions(+), 36 deletions(-) diff --git a/AutoBuilder/library.cpp b/AutoBuilder/library.cpp index 277af898c..f49eda5c5 100644 --- a/AutoBuilder/library.cpp +++ b/AutoBuilder/library.cpp @@ -44,6 +44,8 @@ namespace { U"\U0001F1E6\U0001F1EB", // Afghanistan U"\U0001F1F2\U0001F1F6", // Martinique U"\U0001FA85", // piñata + U"\U0001FA92", // razor + U"\U0001FAA4", // mouse trap }; } // anon namespace diff --git a/AutoBuilder/main.cpp b/AutoBuilder/main.cpp index 661d226ea..b9c320e2a 100644 --- a/AutoBuilder/main.cpp +++ b/AutoBuilder/main.cpp @@ -637,6 +637,9 @@ int main() // VS16 if (emoji.vs16.contains(cp)) flags |= uc::Cfg::U_VS16_EMOJI; + // Misrenders + if (emoji.misrenders.contains(cp)) + flags |= uc::Cfg::G_MISRENDER; // SVG emoji if (noto.singleChar.contains(cp)) flags |= uc::m::SVG_EMOJI; diff --git a/Lang-src/en.uorig b/Lang-src/en.uorig index b7a203652..f1db985e1 100644 --- a/Lang-src/en.uorig +++ b/Lang-src/en.uorig @@ -6339,7 +6339,7 @@ Mark/enclosing - Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows 10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. + Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows{{_}}10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. @@ -6524,7 +6524,7 @@ -

In Windows 10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

+

In Windows{{_}}10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

* [[pt:emoji|emoji]] existing in standard font. When the font extended, panel extended too;

* text smilies;

* typography characters;

@@ -8613,6 +8613,12 @@ Google Noto draws star-shaped piñata, and Microsoft does animal-shaped. + + All vendors settled on safety razor relatively recently, in 2019–2021. Windows{{_}}10 emoji depicts straight razor. + + + As of 2023, sample Unicode image depicts spring trap. But as this emoji mostly means “free cheese” and “entrapment”, most vendors draw makeshift trap intended to catch the mouse alive, with cheese inside. +
diff --git a/Lang-src/ru.utran b/Lang-src/ru.utran index ff97ed5ed..0cd691397 100644 --- a/Lang-src/ru.utran +++ b/Lang-src/ru.utran @@ -8992,8 +8992,8 @@ Метка/охватывающая - Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows 10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. - Охватывающие метки используются в древнерусских буквенных цифрах (А҈). Также существуют охватывающие квадрат, круг и другие фигуры. Ни один проверенный типографский движок на Windows 10 20H2 (GDI, Cairo, Skia) не{{_}}поддерживает подобные символы идеально, но на хороших шрифтах вроде DejaVu результат очень неплох. + Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows{{_}}10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. + Охватывающие метки используются в древнерусских буквенных цифрах (А҈). Также существуют охватывающие квадрат, круг и другие фигуры. Ни один проверенный типографский движок на Windows{{_}}10 20H2 (GDI, Cairo, Skia) не{{_}}поддерживает подобные символы идеально, но на хороших шрифтах вроде DejaVu результат очень неплох. @@ -9227,7 +9227,7 @@ -

In Windows 10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

+

In Windows{{_}}10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

* [[pt:emoji|emoji]] existing in standard font. When the font extended, panel extended too;

* text smilies;

* typography characters;

@@ -9238,7 +9238,7 @@

* superscripts, fractions, mathematical operators.

-

В Windows 10/11 нажмите {{kb|Win|;}} или {{kb|Win|.}}, чтобы раскрыть панель эмодзи. Умеет вводить:

+

В Windows{{_}}10/11 нажмите {{kb|Win|;}} или {{kb|Win|.}}, чтобы раскрыть панель эмодзи. Умеет вводить:

* [[pt:emoji|эмодзи]], существующие в стандартном шрифте. С пополнением шрифта пополнялась и панель;

* текстовые смайлики;

* типографские символы;

@@ -12378,6 +12378,14 @@ Google Noto draws star-shaped piñata, and Microsoft does animal-shaped. Google Noto рисует пиньяту в форме звезды, а Microsoft{{-}}в форме животного.
+ + All vendors settled on safety razor relatively recently, in 2019–2021. Windows{{_}}10 emoji depicts straight razor. + Все производители остановились на безопасной бритве относительно недавно, в 2019–21. Эмодзи Windows{{_}}10 изображает опасную бритву. + + + As of 2023, sample Unicode image depicts spring trap. But as this emoji mostly means “free cheese” and “entrapment”, most vendors draw makeshift trap intended to catch the mouse alive, with cheese inside. + На 2023 образцовое изображение Юникода{{-}}пружинная мышеловка. Но поскольку это эмодзи значит «бесплатный сыр» и «ловушка», большинство производителей рисуют самодельную ловушку, которая ловит живой, с сыром внутри. +
diff --git a/Lang-src/uk.utran b/Lang-src/uk.utran index 773afa1d8..062be4bd1 100644 --- a/Lang-src/uk.utran +++ b/Lang-src/uk.utran @@ -8993,7 +8993,7 @@ Мітка/охоплююча - Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows 10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. + Enclosing marks are used in old Cyrillic letter numbers (А҈). Also encosing square, circle and other shapes exist. None of tested typography engines in Windows{{_}}10 20H2 (GDI, Cairo, Skia) supports these characters perfectly, but on good fonts like DejaVu the result is not so bad. Охоплюючі мітки використовуються у давньоруських буквених цифрах (А҈). Також існують охоплюючі квадрат, коло та інші фігури. Жоден перевірений типографський движок на Windows{{_}}10 20H2 (GDI, Cairo, Skia) не{{_}}підтримує подібні символи ідеально, але на гарних шрифтах на кшталт DejaVu результат дуже непоганий. @@ -9228,7 +9228,7 @@ -

In Windows 10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

+

In Windows{{_}}10/11 press {{kb|Win|;}} or {{kb|Win|.}} to open emoji panel. Can enter:

* [[pt:emoji|emoji]] existing in standard font. When the font extended, panel extended too;

* text smilies;

* typography characters;

@@ -9239,7 +9239,7 @@

* superscripts, fractions, mathematical operators.

-

У Windows 10/11 натисніть {{kb|Win|;}} або {{kb|Win|.}}, щоб розкрити панель емодзі. Вміє вводити:

+

У Windows{{_}}10/11 натисніть {{kb|Win|;}} або {{kb|Win|.}}, щоб розкрити панель емодзі. Вміє вводити:

* [[pt:emoji|емодзі]], що існують у стандартному шрифті. З поповненням шрифту поповнювалася і панель;

* текстові смайлики;

* типографські символи;

@@ -12379,6 +12379,14 @@ Google Noto draws star-shaped piñata, and Microsoft does animal-shaped. Google Noto малює піньяту у формі зірки, а Microsoft{{-}}у формі тварини.
+ + All vendors settled on safety razor relatively recently, in 2019–2021. Windows{{_}}10 emoji depicts straight razor. + Усі виробники зупинились на безпечній бритві відносно недавно, у 2019–21. Емодзі Windows{{_}}10 зображує небезпечну бритву. + + + As of 2023, sample Unicode image depicts spring trap. But as this emoji mostly means “free cheese” and “entrapment”, most vendors draw makeshift trap intended to catch the mouse alive, with cheese inside. + На 2023 зразкове зображення Юнікоду{{-}}пружинна мишоловка. Але оскільки цей емодзі значить «безплатний сир» та «пастка», більшість виробників малюють саморобну пастку, що ловить мишу живою, з сиром всередині. + diff --git a/Unicodia/MyWiki.cpp b/Unicodia/MyWiki.cpp index 2459fec72..940b58d12 100644 --- a/Unicodia/MyWiki.cpp +++ b/Unicodia/MyWiki.cpp @@ -1303,6 +1303,31 @@ namespace { } } + void appendMisrender(QString& text, std::u32string_view value) + { + if (value.empty()) + return; + + // Get L10n key + char buf[40]; + auto end = buf + std::size(buf); + static constinit const std::string_view HEAD = "Lib.Misr.U"; + auto p = std::copy(HEAD.begin(), HEAD.end(), buf); + for (auto v : value) { + ptrdiff_t remder = end - p; + if (remder > 1) { + auto nPrinted = snprintf(p, remder, "+%04X", static_cast(v)); + p += nPrinted; + } + } + + auto& desc = loc::get(buf); + auto paragraph = loc::get("Lib.Misr.Head").arg(desc); + + text += "

"; + mywiki::appendNoFont(text, paragraph); + } + void appendCpBullets(QString& text, const uc::Cp& cp, CpSerializations serializations) { str::append(text, "

"); @@ -1517,6 +1542,12 @@ QString mywiki::buildHtml(const uc::Cp& cp) text += ""; } + // Misrender + if (cp.flags.have(uc::Cfg::G_MISRENDER)) { + char32_t s[1] { cp.subj }; + appendMisrender(text, { s, 1 }); + } + appendSgnwVariants(text, sw); { // Info box @@ -1722,31 +1753,6 @@ namespace { } } - void appendMisrender(QString& text, std::u32string_view value) - { - if (value.empty()) - return; - - // Get L10n key - char buf[40]; - auto end = buf + std::size(buf); - static constinit const std::string_view HEAD = "Lib.Misr.U"; - auto p = std::copy(HEAD.begin(), HEAD.end(), buf); - for (auto v : value) { - ptrdiff_t remder = end - p; - if (remder > 1) { - auto nPrinted = snprintf(p, remder, "+%04X", static_cast(v)); - p += nPrinted; - } - } - - auto& desc = loc::get(buf); - auto paragraph = loc::get("Lib.Misr.Head").arg(desc); - - text += "

"; - mywiki::appendNoFont(text, paragraph); - } - } // anon namespace diff --git a/Unicodia/Uc/UcAutoLib.cpp b/Unicodia/Uc/UcAutoLib.cpp index 3b66d0dfb..c6c7d3cf6 100644 --- a/Unicodia/Uc/UcAutoLib.cpp +++ b/Unicodia/Uc/UcAutoLib.cpp @@ -3373,8 +3373,8 @@ constinit const uc::LibNode uc::libNodes[8604] { { U"\U0001FAA0", u8"plunger", 3129, 0, -1, Lfg(1), EcVersion::E13_0 }, // 3367 { U"\U0001F6BF", u8"shower", 3129, 0, -1, Lfg(1), EcVersion::E1_0 }, // 3368 { U"\U0001F6C1", u8"bathtub", 3129, 0, -1, Lfg(1), EcVersion::E1_0 }, // 3369 -{ U"\U0001FAA4", u8"mouse trap", 3129, 0, -1, Lfg(1), EcVersion::E13_0 }, // 3370 -{ U"\U0001FA92", u8"razor", 3129, 0, -1, Lfg(1), EcVersion::E12_0 }, // 3371 +{ U"\U0001FAA4", u8"mouse trap", 3129, 0, -1, Lfg(33), EcVersion::E13_0 }, // 3370 +{ U"\U0001FA92", u8"razor", 3129, 0, -1, Lfg(33), EcVersion::E12_0 }, // 3371 { U"\U0001F9F4", u8"lotion bottle", 3129, 0, -1, Lfg(1), EcVersion::E11_0 }, // 3372 { U"\U0001F9F7", u8"safety pin", 3129, 0, -1, Lfg(1), EcVersion::E11_0 }, // 3373 { U"\U0001F9F9", u8"broom", 3129, 0, -1, Lfg(1), EcVersion::E11_0 }, // 3374