Bug 1498148 - Implement text-transform: full-size-kana. r=xidorn
☠☠ backed out by 8581d3fdf0d2 ☠ ☠
authorDiego Pino Garcia <dpino@igalia.com>
Sat, 13 Oct 2018 05:03:00 +0300
changeset 499575 a00b402fb8e82ca4f1c25923be8095b5dfbcf626
parent 499574 c0a8b3b1f341f355c389b1a331456c8ab42ca472
child 499576 0ee1b8cbc8c835c2ad3debecac916ee2d28c5bba
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersxidorn
bugs1498148
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1498148 - Implement text-transform: full-size-kana. r=xidorn
devtools/shared/css/generated/properties-db.js
layout/generic/nsTextRunTransformations.cpp
layout/style/nsStyleConsts.h
layout/style/test/property_database.js
servo/components/style/properties/longhands/inherited_text.mako.rs
testing/web-platform/tests/css/css-text/text-transform/reference/text-transform-full-size-kana-001-ref.html
testing/web-platform/tests/css/css-text/text-transform/reference/text-transform-full-size-kana-002-ref.html
testing/web-platform/tests/css/css-text/text-transform/text-transform-full-size-kana-001.html
testing/web-platform/tests/css/css-text/text-transform/text-transform-full-size-kana-002.html
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -8846,16 +8846,17 @@ exports.CSS_PROPERTIES = {
   "text-transform": {
     "isInherited": true,
     "subproperties": [
       "text-transform"
     ],
     "supports": [],
     "values": [
       "capitalize",
+      "full-size-kana",
       "full-width",
       "inherit",
       "initial",
       "lowercase",
       "none",
       "unset",
       "uppercase"
     ]
--- a/layout/generic/nsTextRunTransformations.cpp
+++ b/layout/generic/nsTextRunTransformations.cpp
@@ -602,16 +602,58 @@ nsCaseTransformTextRunFactory::Transform
         }
       }
       break;
 
     case NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH:
       ch = mozilla::unicode::GetFullWidth(ch);
       break;
 
+    case NS_STYLE_TEXT_TRANSFORM_FULL_SIZE_KANA: {
+      static const uint16_t kSmallKanas[] = {
+        // ぁ   ぃ      ぅ      ぇ      ぉ      っ      ゃ      ゅ      ょ
+        0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x3063, 0x3083, 0x3085, 0x3087,
+        // ゎ   ゕ      ゖ
+        0x308E, 0x3095, 0x3096,
+        // ァ   ィ      ゥ      ェ      ォ      ッ      ャ      ュ      ョ
+        0x30A1, 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30C3, 0x30E3, 0x30E5, 0x30E7,
+        // ヮ   ヵ      ヶ      ㇰ      ㇱ      ㇲ      ㇳ      ㇴ      ㇵ
+        0x30EE, 0x30F5, 0x30F6, 0x31F0, 0x31F1, 0x31F2, 0x31F3, 0x31F4, 0x31F5,
+        // ㇶ   ㇷ      ㇸ      ㇹ      ㇺ      ㇻ      ㇼ      ㇽ      ㇾ
+        0x31F6, 0x31F7, 0x31F8, 0x31F9, 0x31FA, 0x31FB, 0x31FC, 0x31FD, 0x31FE,
+        // ㇿ
+        0x31FF,
+        // ァ    ィ       ゥ       ェ       ォ       ャ       ュ       ョ       ッ
+        0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F
+      };
+      static const uint16_t kFullSizeKanas[] = {
+        // あ   い      う      え      お      つ      や      ゆ      よ
+        0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x3064, 0x3084, 0x3086, 0x3088,
+        // わ   か      け
+        0x308F, 0x304B, 0x3051,
+        // ア   イ      ウ      エ      オ      ツ      ヤ      ユ      ヨ
+        0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30C4, 0x30E4, 0x30E6, 0x30E8,
+        // ワ   カ      ケ      ク      シ      ス      ト      ヌ      ハ
+        0x30EF, 0x30AB, 0x30B1, 0x30AF, 0x30B7, 0x30B9, 0x30C8, 0x30CC, 0x30CF,
+        // ヒ   フ      ヘ      ホ      ム      ラ      リ      ル      レ
+        0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30E0, 0x30E9, 0x30EA, 0x30EB, 0x30EC,
+        // ロ
+        0x30ED,
+        // ア    イ       ウ       エ       オ       ヤ       ユ       ヨ        ツ
+        0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF94, 0xFF95, 0xFF96, 0xFF82
+      };
+
+      size_t index;
+      const uint16_t len = MOZ_ARRAY_LENGTH(kSmallKanas);
+      if (mozilla::BinarySearch(kSmallKanas, 0, len, ch, &index)) {
+        ch = kFullSizeKanas[index];
+      }
+      break;
+    }
+
     default:
       break;
     }
 
     if (forceNonFullWidth) {
       ch = mozilla::unicode::GetFullWidthInverse(ch);
     }
 
--- a/layout/style/nsStyleConsts.h
+++ b/layout/style/nsStyleConsts.h
@@ -801,16 +801,17 @@ enum class StyleGridTrackBreadth : uint8
 #define NS_STYLE_TEXT_OVERFLOW_STRING   2
 
 // See nsStyleText
 #define NS_STYLE_TEXT_TRANSFORM_NONE            0
 #define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE      1
 #define NS_STYLE_TEXT_TRANSFORM_LOWERCASE       2
 #define NS_STYLE_TEXT_TRANSFORM_UPPERCASE       3
 #define NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH      4
+#define NS_STYLE_TEXT_TRANSFORM_FULL_SIZE_KANA  5
 
 // See nsStyleDisplay
 #define NS_STYLE_TOUCH_ACTION_NONE            (1 << 0)
 #define NS_STYLE_TOUCH_ACTION_AUTO            (1 << 1)
 #define NS_STYLE_TOUCH_ACTION_PAN_X           (1 << 2)
 #define NS_STYLE_TOUCH_ACTION_PAN_Y           (1 << 3)
 #define NS_STYLE_TOUCH_ACTION_MANIPULATION    (1 << 4)
 
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -4580,17 +4580,17 @@ var gCSSProperties = {
   "text-transform": {
     domProp: "textTransform",
     inherited: true,
     type: CSS_TYPE_LONGHAND,
     applies_to_first_letter: true,
     applies_to_first_line: true,
     applies_to_placeholder: true,
     initial_values: [ "none" ],
-    other_values: [ "capitalize", "uppercase", "lowercase", "full-width" ],
+    other_values: [ "capitalize", "uppercase", "lowercase", "full-width", "full-size-kana" ],
     invalid_values: []
   },
   "top": {
     domProp: "top",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     /* FIXME: run tests with multiple prerequisites */
     prerequisites: { "position": "relative" },
--- a/servo/components/style/properties/longhands/inherited_text.mako.rs
+++ b/servo/components/style/properties/longhands/inherited_text.mako.rs
@@ -18,17 +18,17 @@
 )}
 
 // CSS Text Module Level 3
 
 // TODO(pcwalton): `full-width`
 ${helpers.single_keyword(
     "text-transform",
     "none capitalize uppercase lowercase",
-    extra_gecko_values="full-width",
+    extra_gecko_values="full-width full-size-kana",
     animation_value_type="discrete",
     flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER",
     spec="https://drafts.csswg.org/css-text/#propdef-text-transform",
     servo_restyle_damage="rebuild_and_reflow",
 )}
 
 ${helpers.single_keyword(
     "hyphens",
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text/text-transform/reference/text-transform-full-size-kana-001-ref.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<title>CSS3 Text, text transform: full-size-kana, small kanas</title>
+<meta name="assert" content="For small kanas, text-transform: full-size-kana puts all kanas in full-size kanas.">
+<link rel='author' title='Diego Pino Garcia' href='mailto:dpino@igalia.com'>
+<link rel='help' href='https://drafts.csswg.org/css-text-3/#text-transform'>
+<style type='text/css'>
+.test, .ref { font-size: 200%; line-height: 2.5em; }
+.test span, .ref span { margin-right: 1em; white-space: nowrap; }
+/* the CSS above is not part of the test */
+</style>
+</head>
+<body>
+<p class="instructions">Test passes if both characters in each pair match. If you are missing a font glyph for a character, ignore that pair, but report which characters were ignored.</p>
+<div class="test">
+  <span title="U+3041">&#x3042; &#x3042;</span>
+  <span title="U+3043">&#x3044; &#x3044;</span>
+  <span title="U+3045">&#x3046; &#x3046;</span>
+  <span title="U+3047">&#x3048; &#x3048;</span>
+  <span title="U+3049">&#x304A; &#x304A;</span>
+  <span title="U+3095">&#x304B; &#x304B;</span>
+  <span title="U+3096">&#x3051; &#x3051;</span>
+  <span title="U+3063">&#x3064; &#x3064;</span>
+  <span title="U+3083">&#x3084; &#x3084;</span>
+  <span title="U+3085">&#x3086; &#x3086;</span>
+  <span title="U+3087">&#x3088; &#x3088;</span>
+  <span title="U+308E">&#x308F; &#x308F;</span>
+  <span title="U+30A1">&#x30A2; &#x30A2;</span>
+  <span title="U+30A3">&#x30A4; &#x30A4;</span>
+  <span title="U+30A5">&#x30A6; &#x30A6;</span>
+  <span title="U+30A7">&#x30A8; &#x30A8;</span>
+  <span title="U+30A9">&#x30AA; &#x30AA;</span>
+  <span title="U+30F5">&#x30AB; &#x30AB;</span>
+  <span title="U+31F0">&#x30AF; &#x30AF;</span>
+  <span title="U+30F6">&#x30B1; &#x30B1;</span>
+  <span title="U+31F1">&#x30B7; &#x30B7;</span>
+  <span title="U+31F2">&#x30B9; &#x30B9;</span>
+  <span title="U+30C3">&#x30C4; &#x30C4;</span>
+  <span title="U+31F3">&#x30C8; &#x30C8;</span>
+  <span title="U+31F4">&#x30CC; &#x30CC;</span>
+  <span title="U+31F5">&#x30CF; &#x30CF;</span>
+  <span title="U+31F6">&#x30D2; &#x30D2;</span>
+  <span title="U+31F7">&#x30D5; &#x30D5;</span>
+  <span title="U+31F8">&#x30D8; &#x30D8;</span>
+  <span title="U+31F9">&#x30DB; &#x30DB;</span>
+  <span title="U+31FA">&#x30E0; &#x30E0;</span>
+  <span title="U+30E3">&#x30E4; &#x30E4;</span>
+  <span title="U+30E5">&#x30E6; &#x30E6;</span>
+  <span title="U+30E7">&#x30E8; &#x30E8;</span>
+  <span title="U+31FB">&#x30E9; &#x30E9;</span>
+  <span title="U+31FC">&#x30EA; &#x30EA;</span>
+  <span title="U+31FD">&#x30EB; &#x30EB;</span>
+  <span title="U+31FE">&#x30EC; &#x30EC;</span>
+  <span title="U+31FF">&#x30ED; &#x30ED;</span>
+  <span title="U+30EE">&#x30EF; &#x30EF;</span>
+  <span title="U+FF67">&#xFF71; &#xFF71;</span>
+  <span title="U+FF68">&#xFF72; &#xFF72;</span>
+  <span title="U+FF69">&#xFF73; &#xFF73;</span>
+  <span title="U+FF6A">&#xFF74; &#xFF74;</span>
+  <span title="U+FF6B">&#xFF75; &#xFF75;</span>
+  <span title="U+FF6F">&#xFF82; &#xFF82;</span>
+  <span title="U+FF6C">&#xFF94; &#xFF94;</span>
+  <span title="U+FF6D">&#xFF95; &#xFF95;</span>
+  <span title="U+FF6E">&#xFF96; &#xFF96;</span>
+</div>
+<!--Notes:
+Tip: To identify the characters where differences occur, in order to report problem characters, either mouse over to reveal a tooltip, or copy and paste the sequence into a tool such as <a href='http://r12a.github.io/uniview/' target='_blank'>UniView</a> or the <a href='http://r12a.github.io/apps/conversion/' target='_blank'>Unicode Conversion Tool</a>.
+-->
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text/text-transform/reference/text-transform-full-size-kana-002-ref.html
@@ -0,0 +1,228 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<title>CSS3 Text, text transform: full-size-kana, full-size kanas</title>
+<meta name="assert" content="For full-size kanas, text-transform: full-size-kana leaves all kanas unaltered.">
+<link rel='author' title='Diego Pino Garcia' href='mailto:dpino@igalia.com'>
+<link rel='help' href='https://drafts.csswg.org/css-text-3/#text-transform'>
+<style type='text/css'>
+.test, .ref { font-size: 200%; line-height: 2.5em; }
+.test span, .ref span { margin-right: 1em; white-space: nowrap; }
+/* the CSS above is not part of the test */
+</style>
+</head>
+<body>
+<p class="instructions">Test passes if both characters in each pair match. If you are missing a font glyph for a character, ignore that pair, but report which characters were ignored.</p>
+<div class="test">
+  <span title="U+30FC">&#x30FC; &#x30FC;</span>
+  <span title="U+3042">&#x3042; &#x3042;</span>
+  <span title="U+3044">&#x3044; &#x3044;</span>
+  <span title="U+3046">&#x3046; &#x3046;</span>
+  <span title="U+3048">&#x3048; &#x3048;</span>
+  <span title="U+304A">&#x304A; &#x304A;</span>
+  <span title="U+304B">&#x304B; &#x304B;</span>
+  <span title="U+304C">&#x304C; &#x304C;</span>
+  <span title="U+304D">&#x304D; &#x304D;</span>
+  <span title="U+304E">&#x304E; &#x304E;</span>
+  <span title="U+304F">&#x304F; &#x304F;</span>
+  <span title="U+3050">&#x3050; &#x3050;</span>
+  <span title="U+3051">&#x3051; &#x3051;</span>
+  <span title="U+3052">&#x3052; &#x3052;</span>
+  <span title="U+3053">&#x3053; &#x3053;</span>
+  <span title="U+3054">&#x3054; &#x3054;</span>
+  <span title="U+3055">&#x3055; &#x3055;</span>
+  <span title="U+3056">&#x3056; &#x3056;</span>
+  <span title="U+3057">&#x3057; &#x3057;</span>
+  <span title="U+3058">&#x3058; &#x3058;</span>
+  <span title="U+3059">&#x3059; &#x3059;</span>
+  <span title="U+305A">&#x305A; &#x305A;</span>
+  <span title="U+305B">&#x305B; &#x305B;</span>
+  <span title="U+305C">&#x305C; &#x305C;</span>
+  <span title="U+305D">&#x305D; &#x305D;</span>
+  <span title="U+305E">&#x305E; &#x305E;</span>
+  <span title="U+305F">&#x305F; &#x305F;</span>
+  <span title="U+3060">&#x3060; &#x3060;</span>
+  <span title="U+3061">&#x3061; &#x3061;</span>
+  <span title="U+3062">&#x3062; &#x3062;</span>
+  <span title="U+3064">&#x3064; &#x3064;</span>
+  <span title="U+3065">&#x3065; &#x3065;</span>
+  <span title="U+3066">&#x3066; &#x3066;</span>
+  <span title="U+3067">&#x3067; &#x3067;</span>
+  <span title="U+3068">&#x3068; &#x3068;</span>
+  <span title="U+3069">&#x3069; &#x3069;</span>
+  <span title="U+306A">&#x306A; &#x306A;</span>
+  <span title="U+306B">&#x306B; &#x306B;</span>
+  <span title="U+306C">&#x306C; &#x306C;</span>
+  <span title="U+306D">&#x306D; &#x306D;</span>
+  <span title="U+306E">&#x306E; &#x306E;</span>
+  <span title="U+306F">&#x306F; &#x306F;</span>
+  <span title="U+3070">&#x3070; &#x3070;</span>
+  <span title="U+3071">&#x3071; &#x3071;</span>
+  <span title="U+3072">&#x3072; &#x3072;</span>
+  <span title="U+3073">&#x3073; &#x3073;</span>
+  <span title="U+3074">&#x3074; &#x3074;</span>
+  <span title="U+3075">&#x3075; &#x3075;</span>
+  <span title="U+3076">&#x3076; &#x3076;</span>
+  <span title="U+3077">&#x3077; &#x3077;</span>
+  <span title="U+3078">&#x3078; &#x3078;</span>
+  <span title="U+3079">&#x3079; &#x3079;</span>
+  <span title="U+307A">&#x307A; &#x307A;</span>
+  <span title="U+307B">&#x307B; &#x307B;</span>
+  <span title="U+307C">&#x307C; &#x307C;</span>
+  <span title="U+307D">&#x307D; &#x307D;</span>
+  <span title="U+307E">&#x307E; &#x307E;</span>
+  <span title="U+307F">&#x307F; &#x307F;</span>
+  <span title="U+3080">&#x3080; &#x3080;</span>
+  <span title="U+3081">&#x3081; &#x3081;</span>
+  <span title="U+3082">&#x3082; &#x3082;</span>
+  <span title="U+3084">&#x3084; &#x3084;</span>
+  <span title="U+3086">&#x3086; &#x3086;</span>
+  <span title="U+3088">&#x3088; &#x3088;</span>
+  <span title="U+3089">&#x3089; &#x3089;</span>
+  <span title="U+308A">&#x308A; &#x308A;</span>
+  <span title="U+308B">&#x308B; &#x308B;</span>
+  <span title="U+308C">&#x308C; &#x308C;</span>
+  <span title="U+308D">&#x308D; &#x308D;</span>
+  <span title="U+308F">&#x308F; &#x308F;</span>
+  <span title="U+3090">&#x3090; &#x3090;</span>
+  <span title="U+3091">&#x3091; &#x3091;</span>
+  <span title="U+3092">&#x3092; &#x3092;</span>
+  <span title="U+3093">&#x3093; &#x3093;</span>
+  <span title="U+30A2">&#x30A2; &#x30A2;</span>
+  <span title="U+30A4">&#x30A4; &#x30A4;</span>
+  <span title="U+30A6">&#x30A6; &#x30A6;</span>
+  <span title="U+30A8">&#x30A8; &#x30A8;</span>
+  <span title="U+30AA">&#x30AA; &#x30AA;</span>
+  <span title="U+30AB">&#x30AB; &#x30AB;</span>
+  <span title="U+30AC">&#x30AC; &#x30AC;</span>
+  <span title="U+30AD">&#x30AD; &#x30AD;</span>
+  <span title="U+30AE">&#x30AE; &#x30AE;</span>
+  <span title="U+30AF">&#x30AF; &#x30AF;</span>
+  <span title="U+30B0">&#x30B0; &#x30B0;</span>
+  <span title="U+30B1">&#x30B1; &#x30B1;</span>
+  <span title="U+30B2">&#x30B2; &#x30B2;</span>
+  <span title="U+30B3">&#x30B3; &#x30B3;</span>
+  <span title="U+30B4">&#x30B4; &#x30B4;</span>
+  <span title="U+30B5">&#x30B5; &#x30B5;</span>
+  <span title="U+30B6">&#x30B6; &#x30B6;</span>
+  <span title="U+30B7">&#x30B7; &#x30B7;</span>
+  <span title="U+30B8">&#x30B8; &#x30B8;</span>
+  <span title="U+30B9">&#x30B9; &#x30B9;</span>
+  <span title="U+30BA">&#x30BA; &#x30BA;</span>
+  <span title="U+30BB">&#x30BB; &#x30BB;</span>
+  <span title="U+30BC">&#x30BC; &#x30BC;</span>
+  <span title="U+30BD">&#x30BD; &#x30BD;</span>
+  <span title="U+30BE">&#x30BE; &#x30BE;</span>
+  <span title="U+30BF">&#x30BF; &#x30BF;</span>
+  <span title="U+30C0">&#x30C0; &#x30C0;</span>
+  <span title="U+30C1">&#x30C1; &#x30C1;</span>
+  <span title="U+30C2">&#x30C2; &#x30C2;</span>
+  <span title="U+30C4">&#x30C4; &#x30C4;</span>
+  <span title="U+30C5">&#x30C5; &#x30C5;</span>
+  <span title="U+30C6">&#x30C6; &#x30C6;</span>
+  <span title="U+30C7">&#x30C7; &#x30C7;</span>
+  <span title="U+30C8">&#x30C8; &#x30C8;</span>
+  <span title="U+30C9">&#x30C9; &#x30C9;</span>
+  <span title="U+30CA">&#x30CA; &#x30CA;</span>
+  <span title="U+30CB">&#x30CB; &#x30CB;</span>
+  <span title="U+30CC">&#x30CC; &#x30CC;</span>
+  <span title="U+30CD">&#x30CD; &#x30CD;</span>
+  <span title="U+30CE">&#x30CE; &#x30CE;</span>
+  <span title="U+30CF">&#x30CF; &#x30CF;</span>
+  <span title="U+30D0">&#x30D0; &#x30D0;</span>
+  <span title="U+30D1">&#x30D1; &#x30D1;</span>
+  <span title="U+30D2">&#x30D2; &#x30D2;</span>
+  <span title="U+30D3">&#x30D3; &#x30D3;</span>
+  <span title="U+30D4">&#x30D4; &#x30D4;</span>
+  <span title="U+30D5">&#x30D5; &#x30D5;</span>
+  <span title="U+30D6">&#x30D6; &#x30D6;</span>
+  <span title="U+30D7">&#x30D7; &#x30D7;</span>
+  <span title="U+30D8">&#x30D8; &#x30D8;</span>
+  <span title="U+30D9">&#x30D9; &#x30D9;</span>
+  <span title="U+30DA">&#x30DA; &#x30DA;</span>
+  <span title="U+30DB">&#x30DB; &#x30DB;</span>
+  <span title="U+30DC">&#x30DC; &#x30DC;</span>
+  <span title="U+30DD">&#x30DD; &#x30DD;</span>
+  <span title="U+30DE">&#x30DE; &#x30DE;</span>
+  <span title="U+30DF">&#x30DF; &#x30DF;</span>
+  <span title="U+30E0">&#x30E0; &#x30E0;</span>
+  <span title="U+30E1">&#x30E1; &#x30E1;</span>
+  <span title="U+30E2">&#x30E2; &#x30E2;</span>
+  <span title="U+30E4">&#x30E4; &#x30E4;</span>
+  <span title="U+30E6">&#x30E6; &#x30E6;</span>
+  <span title="U+30E8">&#x30E8; &#x30E8;</span>
+  <span title="U+30E9">&#x30E9; &#x30E9;</span>
+  <span title="U+30EA">&#x30EA; &#x30EA;</span>
+  <span title="U+30EB">&#x30EB; &#x30EB;</span>
+  <span title="U+30EC">&#x30EC; &#x30EC;</span>
+  <span title="U+30ED">&#x30ED; &#x30ED;</span>
+  <span title="U+30EF">&#x30EF; &#x30EF;</span>
+  <span title="U+30F0">&#x30F0; &#x30F0;</span>
+  <span title="U+30F1">&#x30F1; &#x30F1;</span>
+  <span title="U+30F2">&#x30F2; &#x30F2;</span>
+  <span title="U+30F3">&#x30F3; &#x30F3;</span>
+  <span title="U+30F4">&#x30F4; &#x30F4;</span>
+  <span title="U+309B">&#x309B; &#x309B;</span>
+  <span title="U+309C">&#x309C; &#x309C;</span>
+  <span title="U+FF60">&#xFF60; &#xFF60;</span>
+  <span title="U+FF61">&#xFF61; &#xFF61;</span>
+  <span title="U+FF62">&#xFF62; &#xFF62;</span>
+  <span title="U+FF63">&#xFF63; &#xFF63;</span>
+  <span title="U+FF64">&#xFF64; &#xFF64;</span>
+  <span title="U+FF65">&#xFF65; &#xFF65;</span>
+  <span title="U+FF66">&#xFF66; &#xFF66;</span>
+  <span title="U+FF70">&#xFF70; &#xFF70;</span>
+  <span title="U+FF71">&#xFF71; &#xFF71;</span>
+  <span title="U+FF72">&#xFF72; &#xFF72;</span>
+  <span title="U+FF73">&#xFF73; &#xFF73;</span>
+  <span title="U+FF74">&#xFF74; &#xFF74;</span>
+  <span title="U+FF75">&#xFF75; &#xFF75;</span>
+  <span title="U+FF76">&#xFF76; &#xFF76;</span>
+  <span title="U+FF77">&#xFF77; &#xFF77;</span>
+  <span title="U+FF78">&#xFF78; &#xFF78;</span>
+  <span title="U+FF79">&#xFF79; &#xFF79;</span>
+  <span title="U+FF7A">&#xFF7A; &#xFF7A;</span>
+  <span title="U+FF7B">&#xFF7B; &#xFF7B;</span>
+  <span title="U+FF7C">&#xFF7C; &#xFF7C;</span>
+  <span title="U+FF7D">&#xFF7D; &#xFF7D;</span>
+  <span title="U+FF7E">&#xFF7E; &#xFF7E;</span>
+  <span title="U+FF7F">&#xFF7F; &#xFF7F;</span>
+  <span title="U+FF80">&#xFF80; &#xFF80;</span>
+  <span title="U+FF81">&#xFF81; &#xFF81;</span>
+  <span title="U+FF82">&#xFF82; &#xFF82;</span>
+  <span title="U+FF83">&#xFF83; &#xFF83;</span>
+  <span title="U+FF84">&#xFF84; &#xFF84;</span>
+  <span title="U+FF85">&#xFF85; &#xFF85;</span>
+  <span title="U+FF86">&#xFF86; &#xFF86;</span>
+  <span title="U+FF87">&#xFF87; &#xFF87;</span>
+  <span title="U+FF88">&#xFF88; &#xFF88;</span>
+  <span title="U+FF89">&#xFF89; &#xFF89;</span>
+  <span title="U+FF8A">&#xFF8A; &#xFF8A;</span>
+  <span title="U+FF8B">&#xFF8B; &#xFF8B;</span>
+  <span title="U+FF8C">&#xFF8C; &#xFF8C;</span>
+  <span title="U+FF8D">&#xFF8D; &#xFF8D;</span>
+  <span title="U+FF8E">&#xFF8E; &#xFF8E;</span>
+  <span title="U+FF8F">&#xFF8F; &#xFF8F;</span>
+  <span title="U+FF90">&#xFF90; &#xFF90;</span>
+  <span title="U+FF91">&#xFF91; &#xFF91;</span>
+  <span title="U+FF92">&#xFF92; &#xFF92;</span>
+  <span title="U+FF93">&#xFF93; &#xFF93;</span>
+  <span title="U+FF94">&#xFF94; &#xFF94;</span>
+  <span title="U+FF95">&#xFF95; &#xFF95;</span>
+  <span title="U+FF96">&#xFF96; &#xFF96;</span>
+  <span title="U+FF97">&#xFF97; &#xFF97;</span>
+  <span title="U+FF98">&#xFF98; &#xFF98;</span>
+  <span title="U+FF99">&#xFF99; &#xFF99;</span>
+  <span title="U+FF9A">&#xFF9A; &#xFF9A;</span>
+  <span title="U+FF9B">&#xFF9B; &#xFF9B;</span>
+  <span title="U+FF9C">&#xFF9C; &#xFF9C;</span>
+  <span title="U+FF9D">&#xFF9D; &#xFF9D;</span>
+  <span title="U+FF9E">&#xFF9E; &#xFF9E;</span>
+  <span title="U+FF9F">&#xFF9F; &#xFF9F;</span>
+</div>
+<!--Notes:
+Tip: To identify the characters where differences occur, in order to report problem characters, either mouse over to reveal a tooltip, or copy and paste the sequence into a tool such as <a href='http://r12a.github.io/uniview/' target='_blank'>UniView</a> or the <a href='http://r12a.github.io/apps/conversion/' target='_blank'>Unicode Conversion Tool</a>.
+-->
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text/text-transform/text-transform-full-size-kana-001.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<title>CSS3 Text, text transform: full-size-kana, small kanas</title>
+<meta name="assert" content="For small kanas, text-transform: full-size-kana puts all kanas in full-size kanas.">
+<link rel='author' title='Diego Pino Garcia' href='mailto:dpino@igalia.com'>
+<link rel='help' href='https://drafts.csswg.org/css-text-3/#text-transform'>
+<link rel="match" href="reference/text-transform-full-size-kana-001-ref.html">
+<style type='text/css'>
+.test, .ref { font-size: 200%; line-height: 2.5em; }
+.test span, .ref span { margin-right: 1em; white-space: nowrap; }
+/* the CSS above is not part of the test */
+.test { text-transform: full-size-kana; }
+</style>
+</head>
+<body>
+<p class="instructions">Test passes if both characters in each pair match. If you are missing a font glyph for a character, ignore that pair, but report which characters were ignored.</p>
+<div class="test">
+  <span title="U+3041">&#x3041; &#x3042;</span>
+  <span title="U+3043">&#x3043; &#x3044;</span>
+  <span title="U+3045">&#x3045; &#x3046;</span>
+  <span title="U+3047">&#x3047; &#x3048;</span>
+  <span title="U+3049">&#x3049; &#x304A;</span>
+  <span title="U+3095">&#x3095; &#x304B;</span>
+  <span title="U+3096">&#x3096; &#x3051;</span>
+  <span title="U+3063">&#x3063; &#x3064;</span>
+  <span title="U+3083">&#x3083; &#x3084;</span>
+  <span title="U+3085">&#x3085; &#x3086;</span>
+  <span title="U+3087">&#x3087; &#x3088;</span>
+  <span title="U+308E">&#x308E; &#x308F;</span>
+  <span title="U+30A1">&#x30A1; &#x30A2;</span>
+  <span title="U+30A3">&#x30A3; &#x30A4;</span>
+  <span title="U+30A5">&#x30A5; &#x30A6;</span>
+  <span title="U+30A7">&#x30A7; &#x30A8;</span>
+  <span title="U+30A9">&#x30A9; &#x30AA;</span>
+  <span title="U+30F5">&#x30F5; &#x30AB;</span>
+  <span title="U+31F0">&#x31F0; &#x30AF;</span>
+  <span title="U+30F6">&#x30F6; &#x30B1;</span>
+  <span title="U+31F1">&#x31F1; &#x30B7;</span>
+  <span title="U+31F2">&#x31F2; &#x30B9;</span>
+  <span title="U+30C3">&#x30C3; &#x30C4;</span>
+  <span title="U+31F3">&#x31F3; &#x30C8;</span>
+  <span title="U+31F4">&#x31F4; &#x30CC;</span>
+  <span title="U+31F5">&#x31F5; &#x30CF;</span>
+  <span title="U+31F6">&#x31F6; &#x30D2;</span>
+  <span title="U+31F7">&#x31F7; &#x30D5;</span>
+  <span title="U+31F8">&#x31F8; &#x30D8;</span>
+  <span title="U+31F9">&#x31F9; &#x30DB;</span>
+  <span title="U+31FA">&#x31FA; &#x30E0;</span>
+  <span title="U+30E3">&#x30E3; &#x30E4;</span>
+  <span title="U+30E5">&#x30E5; &#x30E6;</span>
+  <span title="U+30E7">&#x30E7; &#x30E8;</span>
+  <span title="U+31FB">&#x31FB; &#x30E9;</span>
+  <span title="U+31FC">&#x31FC; &#x30EA;</span>
+  <span title="U+31FD">&#x31FD; &#x30EB;</span>
+  <span title="U+31FE">&#x31FE; &#x30EC;</span>
+  <span title="U+31FF">&#x31FF; &#x30ED;</span>
+  <span title="U+30EE">&#x30EE; &#x30EF;</span>
+  <span title="U+FF67">&#xFF67; &#xFF71;</span>
+  <span title="U+FF68">&#xFF68; &#xFF72;</span>
+  <span title="U+FF69">&#xFF69; &#xFF73;</span>
+  <span title="U+FF6A">&#xFF6A; &#xFF74;</span>
+  <span title="U+FF6B">&#xFF6B; &#xFF75;</span>
+  <span title="U+FF6F">&#xFF6F; &#xFF82;</span>
+  <span title="U+FF6C">&#xFF6C; &#xFF94;</span>
+  <span title="U+FF6D">&#xFF6D; &#xFF95;</span>
+  <span title="U+FF6E">&#xFF6E; &#xFF96;</span>
+</div>
+<!--Notes:
+Tip: To identify the characters where differences occur, in order to report problem characters, either mouse over to reveal a tooltip, or copy and paste the sequence into a tool such as <a href='http://r12a.github.io/uniview/' target='_blank'>UniView</a> or the <a href='http://r12a.github.io/apps/conversion/' target='_blank'>Unicode Conversion Tool</a>.
+-->
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text/text-transform/text-transform-full-size-kana-002.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<title>CSS3 Text, text transform: full-size-kana, full-size kanas</title>
+<meta name="assert" content="For full-size kanas, text-transform: full-size-kana leaves all kanas unaltered.">
+<link rel='author' title='Diego Pino Garcia' href='mailto:dpino@igalia.com'>
+<link rel='help' href='https://drafts.csswg.org/css-text-3/#text-transform'>
+<link rel="match" href="reference/text-transform-full-size-kana-002.html">
+<style type='text/css'>
+.test, .ref { font-size: 200%; line-height: 2.5em; }
+.test span, .ref span { margin-right: 1em; white-space: nowrap; }
+/* the CSS above is not part of the test */
+.test { text-transform: full-size-kana; }
+</style>
+</head>
+<body>
+<p class="instructions">Test passes if both characters in each pair match. If you are missing a font glyph for a character, ignore that pair, but report which characters were ignored.</p>
+<div class="test">
+  <span title="U+30FC">&#x30FC; &#x30FC;</span>
+  <span title="U+3042">&#x3042; &#x3042;</span>
+  <span title="U+3044">&#x3044; &#x3044;</span>
+  <span title="U+3046">&#x3046; &#x3046;</span>
+  <span title="U+3048">&#x3048; &#x3048;</span>
+  <span title="U+304A">&#x304A; &#x304A;</span>
+  <span title="U+304B">&#x304B; &#x304B;</span>
+  <span title="U+304C">&#x304C; &#x304C;</span>
+  <span title="U+304D">&#x304D; &#x304D;</span>
+  <span title="U+304E">&#x304E; &#x304E;</span>
+  <span title="U+304F">&#x304F; &#x304F;</span>
+  <span title="U+3050">&#x3050; &#x3050;</span>
+  <span title="U+3051">&#x3051; &#x3051;</span>
+  <span title="U+3052">&#x3052; &#x3052;</span>
+  <span title="U+3053">&#x3053; &#x3053;</span>
+  <span title="U+3054">&#x3054; &#x3054;</span>
+  <span title="U+3055">&#x3055; &#x3055;</span>
+  <span title="U+3056">&#x3056; &#x3056;</span>
+  <span title="U+3057">&#x3057; &#x3057;</span>
+  <span title="U+3058">&#x3058; &#x3058;</span>
+  <span title="U+3059">&#x3059; &#x3059;</span>
+  <span title="U+305A">&#x305A; &#x305A;</span>
+  <span title="U+305B">&#x305B; &#x305B;</span>
+  <span title="U+305C">&#x305C; &#x305C;</span>
+  <span title="U+305D">&#x305D; &#x305D;</span>
+  <span title="U+305E">&#x305E; &#x305E;</span>
+  <span title="U+305F">&#x305F; &#x305F;</span>
+  <span title="U+3060">&#x3060; &#x3060;</span>
+  <span title="U+3061">&#x3061; &#x3061;</span>
+  <span title="U+3062">&#x3062; &#x3062;</span>
+  <span title="U+3064">&#x3064; &#x3064;</span>
+  <span title="U+3065">&#x3065; &#x3065;</span>
+  <span title="U+3066">&#x3066; &#x3066;</span>
+  <span title="U+3067">&#x3067; &#x3067;</span>
+  <span title="U+3068">&#x3068; &#x3068;</span>
+  <span title="U+3069">&#x3069; &#x3069;</span>
+  <span title="U+306A">&#x306A; &#x306A;</span>
+  <span title="U+306B">&#x306B; &#x306B;</span>
+  <span title="U+306C">&#x306C; &#x306C;</span>
+  <span title="U+306D">&#x306D; &#x306D;</span>
+  <span title="U+306E">&#x306E; &#x306E;</span>
+  <span title="U+306F">&#x306F; &#x306F;</span>
+  <span title="U+3070">&#x3070; &#x3070;</span>
+  <span title="U+3071">&#x3071; &#x3071;</span>
+  <span title="U+3072">&#x3072; &#x3072;</span>
+  <span title="U+3073">&#x3073; &#x3073;</span>
+  <span title="U+3074">&#x3074; &#x3074;</span>
+  <span title="U+3075">&#x3075; &#x3075;</span>
+  <span title="U+3076">&#x3076; &#x3076;</span>
+  <span title="U+3077">&#x3077; &#x3077;</span>
+  <span title="U+3078">&#x3078; &#x3078;</span>
+  <span title="U+3079">&#x3079; &#x3079;</span>
+  <span title="U+307A">&#x307A; &#x307A;</span>
+  <span title="U+307B">&#x307B; &#x307B;</span>
+  <span title="U+307C">&#x307C; &#x307C;</span>
+  <span title="U+307D">&#x307D; &#x307D;</span>
+  <span title="U+307E">&#x307E; &#x307E;</span>
+  <span title="U+307F">&#x307F; &#x307F;</span>
+  <span title="U+3080">&#x3080; &#x3080;</span>
+  <span title="U+3081">&#x3081; &#x3081;</span>
+  <span title="U+3082">&#x3082; &#x3082;</span>
+  <span title="U+3084">&#x3084; &#x3084;</span>
+  <span title="U+3086">&#x3086; &#x3086;</span>
+  <span title="U+3088">&#x3088; &#x3088;</span>
+  <span title="U+3089">&#x3089; &#x3089;</span>
+  <span title="U+308A">&#x308A; &#x308A;</span>
+  <span title="U+308B">&#x308B; &#x308B;</span>
+  <span title="U+308C">&#x308C; &#x308C;</span>
+  <span title="U+308D">&#x308D; &#x308D;</span>
+  <span title="U+308F">&#x308F; &#x308F;</span>
+  <span title="U+3090">&#x3090; &#x3090;</span>
+  <span title="U+3091">&#x3091; &#x3091;</span>
+  <span title="U+3092">&#x3092; &#x3092;</span>
+  <span title="U+3093">&#x3093; &#x3093;</span>
+  <span title="U+30A2">&#x30A2; &#x30A2;</span>
+  <span title="U+30A4">&#x30A4; &#x30A4;</span>
+  <span title="U+30A6">&#x30A6; &#x30A6;</span>
+  <span title="U+30A8">&#x30A8; &#x30A8;</span>
+  <span title="U+30AA">&#x30AA; &#x30AA;</span>
+  <span title="U+30AB">&#x30AB; &#x30AB;</span>
+  <span title="U+30AC">&#x30AC; &#x30AC;</span>
+  <span title="U+30AD">&#x30AD; &#x30AD;</span>
+  <span title="U+30AE">&#x30AE; &#x30AE;</span>
+  <span title="U+30AF">&#x30AF; &#x30AF;</span>
+  <span title="U+30B0">&#x30B0; &#x30B0;</span>
+  <span title="U+30B1">&#x30B1; &#x30B1;</span>
+  <span title="U+30B2">&#x30B2; &#x30B2;</span>
+  <span title="U+30B3">&#x30B3; &#x30B3;</span>
+  <span title="U+30B4">&#x30B4; &#x30B4;</span>
+  <span title="U+30B5">&#x30B5; &#x30B5;</span>
+  <span title="U+30B6">&#x30B6; &#x30B6;</span>
+  <span title="U+30B7">&#x30B7; &#x30B7;</span>
+  <span title="U+30B8">&#x30B8; &#x30B8;</span>
+  <span title="U+30B9">&#x30B9; &#x30B9;</span>
+  <span title="U+30BA">&#x30BA; &#x30BA;</span>
+  <span title="U+30BB">&#x30BB; &#x30BB;</span>
+  <span title="U+30BC">&#x30BC; &#x30BC;</span>
+  <span title="U+30BD">&#x30BD; &#x30BD;</span>
+  <span title="U+30BE">&#x30BE; &#x30BE;</span>
+  <span title="U+30BF">&#x30BF; &#x30BF;</span>
+  <span title="U+30C0">&#x30C0; &#x30C0;</span>
+  <span title="U+30C1">&#x30C1; &#x30C1;</span>
+  <span title="U+30C2">&#x30C2; &#x30C2;</span>
+  <span title="U+30C4">&#x30C4; &#x30C4;</span>
+  <span title="U+30C5">&#x30C5; &#x30C5;</span>
+  <span title="U+30C6">&#x30C6; &#x30C6;</span>
+  <span title="U+30C7">&#x30C7; &#x30C7;</span>
+  <span title="U+30C8">&#x30C8; &#x30C8;</span>
+  <span title="U+30C9">&#x30C9; &#x30C9;</span>
+  <span title="U+30CA">&#x30CA; &#x30CA;</span>
+  <span title="U+30CB">&#x30CB; &#x30CB;</span>
+  <span title="U+30CC">&#x30CC; &#x30CC;</span>
+  <span title="U+30CD">&#x30CD; &#x30CD;</span>
+  <span title="U+30CE">&#x30CE; &#x30CE;</span>
+  <span title="U+30CF">&#x30CF; &#x30CF;</span>
+  <span title="U+30D0">&#x30D0; &#x30D0;</span>
+  <span title="U+30D1">&#x30D1; &#x30D1;</span>
+  <span title="U+30D2">&#x30D2; &#x30D2;</span>
+  <span title="U+30D3">&#x30D3; &#x30D3;</span>
+  <span title="U+30D4">&#x30D4; &#x30D4;</span>
+  <span title="U+30D5">&#x30D5; &#x30D5;</span>
+  <span title="U+30D6">&#x30D6; &#x30D6;</span>
+  <span title="U+30D7">&#x30D7; &#x30D7;</span>
+  <span title="U+30D8">&#x30D8; &#x30D8;</span>
+  <span title="U+30D9">&#x30D9; &#x30D9;</span>
+  <span title="U+30DA">&#x30DA; &#x30DA;</span>
+  <span title="U+30DB">&#x30DB; &#x30DB;</span>
+  <span title="U+30DC">&#x30DC; &#x30DC;</span>
+  <span title="U+30DD">&#x30DD; &#x30DD;</span>
+  <span title="U+30DE">&#x30DE; &#x30DE;</span>
+  <span title="U+30DF">&#x30DF; &#x30DF;</span>
+  <span title="U+30E0">&#x30E0; &#x30E0;</span>
+  <span title="U+30E1">&#x30E1; &#x30E1;</span>
+  <span title="U+30E2">&#x30E2; &#x30E2;</span>
+  <span title="U+30E4">&#x30E4; &#x30E4;</span>
+  <span title="U+30E6">&#x30E6; &#x30E6;</span>
+  <span title="U+30E8">&#x30E8; &#x30E8;</span>
+  <span title="U+30E9">&#x30E9; &#x30E9;</span>
+  <span title="U+30EA">&#x30EA; &#x30EA;</span>
+  <span title="U+30EB">&#x30EB; &#x30EB;</span>
+  <span title="U+30EC">&#x30EC; &#x30EC;</span>
+  <span title="U+30ED">&#x30ED; &#x30ED;</span>
+  <span title="U+30EF">&#x30EF; &#x30EF;</span>
+  <span title="U+30F0">&#x30F0; &#x30F0;</span>
+  <span title="U+30F1">&#x30F1; &#x30F1;</span>
+  <span title="U+30F2">&#x30F2; &#x30F2;</span>
+  <span title="U+30F3">&#x30F3; &#x30F3;</span>
+  <span title="U+30F4">&#x30F4; &#x30F4;</span>
+  <span title="U+309B">&#x309B; &#x309B;</span>
+  <span title="U+309C">&#x309C; &#x309C;</span>
+  <span title="U+FF60">&#xFF60; &#xFF60;</span>
+  <span title="U+FF61">&#xFF61; &#xFF61;</span>
+  <span title="U+FF62">&#xFF62; &#xFF62;</span>
+  <span title="U+FF63">&#xFF63; &#xFF63;</span>
+  <span title="U+FF64">&#xFF64; &#xFF64;</span>
+  <span title="U+FF65">&#xFF65; &#xFF65;</span>
+  <span title="U+FF66">&#xFF66; &#xFF66;</span>
+  <span title="U+FF70">&#xFF70; &#xFF70;</span>
+  <span title="U+FF71">&#xFF71; &#xFF71;</span>
+  <span title="U+FF72">&#xFF72; &#xFF72;</span>
+  <span title="U+FF73">&#xFF73; &#xFF73;</span>
+  <span title="U+FF74">&#xFF74; &#xFF74;</span>
+  <span title="U+FF75">&#xFF75; &#xFF75;</span>
+  <span title="U+FF76">&#xFF76; &#xFF76;</span>
+  <span title="U+FF77">&#xFF77; &#xFF77;</span>
+  <span title="U+FF78">&#xFF78; &#xFF78;</span>
+  <span title="U+FF79">&#xFF79; &#xFF79;</span>
+  <span title="U+FF7A">&#xFF7A; &#xFF7A;</span>
+  <span title="U+FF7B">&#xFF7B; &#xFF7B;</span>
+  <span title="U+FF7C">&#xFF7C; &#xFF7C;</span>
+  <span title="U+FF7D">&#xFF7D; &#xFF7D;</span>
+  <span title="U+FF7E">&#xFF7E; &#xFF7E;</span>
+  <span title="U+FF7F">&#xFF7F; &#xFF7F;</span>
+  <span title="U+FF80">&#xFF80; &#xFF80;</span>
+  <span title="U+FF81">&#xFF81; &#xFF81;</span>
+  <span title="U+FF82">&#xFF82; &#xFF82;</span>
+  <span title="U+FF83">&#xFF83; &#xFF83;</span>
+  <span title="U+FF84">&#xFF84; &#xFF84;</span>
+  <span title="U+FF85">&#xFF85; &#xFF85;</span>
+  <span title="U+FF86">&#xFF86; &#xFF86;</span>
+  <span title="U+FF87">&#xFF87; &#xFF87;</span>
+  <span title="U+FF88">&#xFF88; &#xFF88;</span>
+  <span title="U+FF89">&#xFF89; &#xFF89;</span>
+  <span title="U+FF8A">&#xFF8A; &#xFF8A;</span>
+  <span title="U+FF8B">&#xFF8B; &#xFF8B;</span>
+  <span title="U+FF8C">&#xFF8C; &#xFF8C;</span>
+  <span title="U+FF8D">&#xFF8D; &#xFF8D;</span>
+  <span title="U+FF8E">&#xFF8E; &#xFF8E;</span>
+  <span title="U+FF8F">&#xFF8F; &#xFF8F;</span>
+  <span title="U+FF90">&#xFF90; &#xFF90;</span>
+  <span title="U+FF91">&#xFF91; &#xFF91;</span>
+  <span title="U+FF92">&#xFF92; &#xFF92;</span>
+  <span title="U+FF93">&#xFF93; &#xFF93;</span>
+  <span title="U+FF94">&#xFF94; &#xFF94;</span>
+  <span title="U+FF95">&#xFF95; &#xFF95;</span>
+  <span title="U+FF96">&#xFF96; &#xFF96;</span>
+  <span title="U+FF97">&#xFF97; &#xFF97;</span>
+  <span title="U+FF98">&#xFF98; &#xFF98;</span>
+  <span title="U+FF99">&#xFF99; &#xFF99;</span>
+  <span title="U+FF9A">&#xFF9A; &#xFF9A;</span>
+  <span title="U+FF9B">&#xFF9B; &#xFF9B;</span>
+  <span title="U+FF9C">&#xFF9C; &#xFF9C;</span>
+  <span title="U+FF9D">&#xFF9D; &#xFF9D;</span>
+  <span title="U+FF9E">&#xFF9E; &#xFF9E;</span>
+  <span title="U+FF9F">&#xFF9F; &#xFF9F;</span>
+</div>
+<!--Notes:
+Tip: To identify the characters where differences occur, in order to report problem characters, either mouse over to reveal a tooltip, or copy and paste the sequence into a tool such as <a href='http://r12a.github.io/uniview/' target='_blank'>UniView</a> or the <a href='http://r12a.github.io/apps/conversion/' target='_blank'>Unicode Conversion Tool</a>.
+-->
+</body>
+</html>