Bug 1498148 - Implement text-transform: full-size-kana. r=xidorn
authorDiego Pino Garcia <dpino@igalia.com>
Sun, 14 Oct 2018 09:42:24 +1100
changeset 489463 410f1ce46d58faaa90983efe0805b798df57c43e
parent 489462 440def3cf2938cf95cb7fe08ab66407727e90b3f
child 489464 1f542a1a1b9892b3b963724e3252c74585107b92
push id247
push userfmarier@mozilla.com
push dateSat, 27 Oct 2018 01:06:44 +0000
reviewersxidorn
bugs1498148
milestone64.0a1
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-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+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>