Repository: microsoft/terminal (language: cpp)

Issue:
Support for Unicode 15.0
# Description of the new feature/enhancement

With the new version of Unicode having been released, do we need to regenerate the tables for our width detector class?

See https://home.unicode.org/announcing-the-unicode-standard-version-15-0/

# Proposed technical implementation details (optional)

Not sure how this is done, but I'm assuming it'll be the same basic process as PR #13292.


Discussion / hints:

Fix patch:
diff --git a/src/types/CodepointWidthDetector.cpp b/src/types/CodepointWidthDetector.cpp
index 52d5ce0c6b1..c48b90fb9c2 100644
--- a/src/types/CodepointWidthDetector.cpp
+++ b/src/types/CodepointWidthDetector.cpp
@@ -20,8 +20,8 @@ namespace
     }
 
     // Generated by Generate-CodepointWidthsFromUCD.ps1 -Pack:True -Full:False -NoOverrides:False
-    // on 6/13/2022 8:57:08 PM (UTC) from Unicode 14.0.0.
-    // 321259 (0x4E6EB) codepoints covered.
+    // on 9/14/2022 7:12:26 PM (UTC) from Unicode 15.0.0.
+    // 321281 (0x4E701) codepoints covered.
     // 240 (0xF0) codepoints overridden.
     // Override path: .\src\types\unicode_width_overrides.xml
     static constexpr std::array<UnicodeRange, 300> s_wideAndAmbiguousTable{
@@ -263,7 +263,9 @@ namespace
         UnicodeRange{ 0x1aff5, 0x1affb, CodepointWidth::Wide },
         UnicodeRange{ 0x1affd, 0x1affe, CodepointWidth::Wide },
         UnicodeRange{ 0x1b000, 0x1b122, CodepointWidth::Wide },
+        UnicodeRange{ 0x1b132, 0x1b132, CodepointWidth::Wide },
         UnicodeRange{ 0x1b150, 0x1b152, CodepointWidth::Wide },
+        UnicodeRange{ 0x1b155, 0x1b155, CodepointWidth::Wide },
         UnicodeRange{ 0x1b164, 0x1b167, CodepointWidth::Wide },
         UnicodeRange{ 0x1b170, 0x1b2fb, CodepointWidth::Wide },
         UnicodeRange{ 0x1f004, 0x1f004, CodepointWidth::Wide },
@@ -303,7 +305,7 @@ namespace
         UnicodeRange{ 0x1f6cc, 0x1f6cc, CodepointWidth::Wide },
         UnicodeRange{ 0x1f6d0, 0x1f6d2, CodepointWidth::Wide },
         UnicodeRange{ 0x1f6d5, 0x1f6d7, CodepointWidth::Wide },
-        UnicodeRange{ 0x1f6dd, 0x1f6df, CodepointWidth::Wide },
+        UnicodeRange{ 0x1f6dc, 0x1f6df, CodepointWidth::Wide },
         UnicodeRange{ 0x1f6eb, 0x1f6ec, CodepointWidth::Wide },
         UnicodeRange{ 0x1f6f4, 0x1f6fc, CodepointWidth::Wide },
         UnicodeRange{ 0x1f7e0, 0x1f7eb, CodepointWidth::Wide },
@@ -311,15 +313,13 @@ namespace
         UnicodeRange{ 0x1f90c, 0x1f93a, CodepointWidth::Wide },
         UnicodeRange{ 0x1f93c, 0x1f945, CodepointWidth::Wide },
         UnicodeRange{ 0x1f947, 0x1f9ff, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fa70, 0x1fa74, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fa78, 0x1fa7c, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fa80, 0x1fa86, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fa90, 0x1faac, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fab0, 0x1faba, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fac0, 0x1fac5, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fad0, 0x1fad9, CodepointWidth::Wide },
-        UnicodeRange{ 0x1fae0, 0x1fae7, CodepointWidth::Wide },
-        UnicodeRange{ 0x1faf0, 0x1faf6, CodepointWidth::Wide },
+        UnicodeRange{ 0x1fa70, 0x1fa7c, CodepointWidth::Wide },
+        UnicodeRange{ 0x1fa80, 0x1fa88, CodepointWidth::Wide },
+        UnicodeRange{ 0x1fa90, 0x1fabd, CodepointWidth::Wide },
+        UnicodeRange{ 0x1fabf, 0x1fac5, CodepointWidth::Wide },
+        UnicodeRange{ 0x1face, 0x1fadb, CodepointWidth::Wide },
+        UnicodeRange{ 0x1fae0, 0x1fae8, CodepointWidth::Wide },
+        UnicodeRange{ 0x1faf0, 0x1faf8, CodepointWidth::Wide },
         UnicodeRange{ 0x20000, 0x2fffd, CodepointWidth::Wide },
         UnicodeRange{ 0x30000, 0x3fffd, CodepointWidth::Wide },
         UnicodeRange{ 0xe0100, 0xe01ef, CodepointWidth::Ambiguous },


Test patch: