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 496868 410f1ce46d58faaa90983efe0805b798df57c43e
parent 496867 440def3cf2938cf95cb7fe08ab66407727e90b3f
child 496869 1f542a1a1b9892b3b963724e3252c74585107b92
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [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-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>