summaryrefslogtreecommitdiffstats
path: root/layout/reftests/text-transform
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/text-transform')
-rw-r--r--layout/reftests/text-transform/all-lower-ref.html1448
-rw-r--r--layout/reftests/text-transform/all-lower.html1448
-rw-r--r--layout/reftests/text-transform/all-title-ref.html1517
-rw-r--r--layout/reftests/text-transform/all-title.html1517
-rw-r--r--layout/reftests/text-transform/all-upper-ref.html1540
-rw-r--r--layout/reftests/text-transform/all-upper.html1540
-rw-r--r--layout/reftests/text-transform/capitalize-1.html11
-rw-r--r--layout/reftests/text-transform/capitalize-2.html11
-rw-r--r--layout/reftests/text-transform/capitalize-3-ref.html11
-rw-r--r--layout/reftests/text-transform/capitalize-3.html16
-rw-r--r--layout/reftests/text-transform/capitalize-4-ref.html12
-rw-r--r--layout/reftests/text-transform/capitalize-4.html12
-rw-r--r--layout/reftests/text-transform/capitalize-5-ref.html12
-rw-r--r--layout/reftests/text-transform/capitalize-5.html12
-rw-r--r--layout/reftests/text-transform/capitalize-6-ref.html11
-rw-r--r--layout/reftests/text-transform/capitalize-6.html11
-rw-r--r--layout/reftests/text-transform/capitalize-7-ref.html6
-rw-r--r--layout/reftests/text-transform/capitalize-7.html10
-rw-r--r--layout/reftests/text-transform/capitalize-7a.html11
-rw-r--r--layout/reftests/text-transform/capitalize-8-ref.html11
-rw-r--r--layout/reftests/text-transform/capitalize-8.html12
-rw-r--r--layout/reftests/text-transform/capitalize-9-ref.html12
-rw-r--r--layout/reftests/text-transform/capitalize-9.html12
-rw-r--r--layout/reftests/text-transform/capitalize-ref.html6
-rw-r--r--layout/reftests/text-transform/fake-small-caps-1-ref.html22
-rw-r--r--layout/reftests/text-transform/fake-small-caps-1.html19
-rw-r--r--layout/reftests/text-transform/fullwidth-1-ref.html9
-rw-r--r--layout/reftests/text-transform/fullwidth-1.html9
-rw-r--r--layout/reftests/text-transform/fullwidth-2-ref.html9
-rw-r--r--layout/reftests/text-transform/fullwidth-2.html9
-rw-r--r--layout/reftests/text-transform/fullwidth-all-ref.html34
-rw-r--r--layout/reftests/text-transform/fullwidth-all.html34
-rw-r--r--layout/reftests/text-transform/graphite-small-caps-1-notref.html22
-rw-r--r--layout/reftests/text-transform/graphite-small-caps-1-ref.html22
-rw-r--r--layout/reftests/text-transform/graphite-small-caps-1.html19
-rw-r--r--layout/reftests/text-transform/greek-small-caps-1-ref.html25
-rw-r--r--layout/reftests/text-transform/greek-small-caps-1.html23
-rw-r--r--layout/reftests/text-transform/greek-uppercase-1-ref.html17
-rw-r--r--layout/reftests/text-transform/greek-uppercase-1a.html22
-rw-r--r--layout/reftests/text-transform/greek-uppercase-1b.html22
-rw-r--r--layout/reftests/text-transform/greek-uppercase-2-ref.html17
-rw-r--r--layout/reftests/text-transform/greek-uppercase-2.html18
-rw-r--r--layout/reftests/text-transform/greek-uppercase-3-ref.html17
-rw-r--r--layout/reftests/text-transform/greek-uppercase-3.html18
-rw-r--r--layout/reftests/text-transform/irish-lowercase-1-ref.html227
-rw-r--r--layout/reftests/text-transform/irish-lowercase-1a.html227
-rw-r--r--layout/reftests/text-transform/irish-lowercase-1b.html227
-rw-r--r--layout/reftests/text-transform/irish-uppercase-1-ref.html120
-rw-r--r--layout/reftests/text-transform/irish-uppercase-1.html120
-rw-r--r--layout/reftests/text-transform/lowercase-1.html11
-rw-r--r--layout/reftests/text-transform/lowercase-ref.html6
-rw-r--r--layout/reftests/text-transform/lowercase-sigma-1-ref.html11
-rw-r--r--layout/reftests/text-transform/lowercase-sigma-1.html11
-rw-r--r--layout/reftests/text-transform/opentype-small-caps-1-notref.html22
-rw-r--r--layout/reftests/text-transform/opentype-small-caps-1-ref.html22
-rw-r--r--layout/reftests/text-transform/opentype-small-caps-1.html19
-rw-r--r--layout/reftests/text-transform/reftest.list49
-rw-r--r--layout/reftests/text-transform/small-caps-1-ref.html4
-rw-r--r--layout/reftests/text-transform/small-caps-1.html9
-rw-r--r--layout/reftests/text-transform/small-caps-turkish-1-notref.html24
-rw-r--r--layout/reftests/text-transform/small-caps-turkish-1.html24
-rw-r--r--layout/reftests/text-transform/smtp-lower-ref.html50
-rw-r--r--layout/reftests/text-transform/smtp-lower.html53
-rw-r--r--layout/reftests/text-transform/smtp-title-ref.html50
-rw-r--r--layout/reftests/text-transform/smtp-title.html53
-rw-r--r--layout/reftests/text-transform/smtp-upper-ref.html50
-rw-r--r--layout/reftests/text-transform/smtp-upper.html53
-rw-r--r--layout/reftests/text-transform/turkish-casing-1-ref.html27
-rw-r--r--layout/reftests/text-transform/turkish-casing-1.html27
-rw-r--r--layout/reftests/text-transform/uppercase-1.html11
-rw-r--r--layout/reftests/text-transform/uppercase-eszett-1.html5
-rw-r--r--layout/reftests/text-transform/uppercase-eszett-1a-ref.html5
-rw-r--r--layout/reftests/text-transform/uppercase-eszett-1b-ref.html5
-rw-r--r--layout/reftests/text-transform/uppercase-ref.html6
-rw-r--r--layout/reftests/text-transform/uppercase-szlig-1.html11
-rw-r--r--layout/reftests/text-transform/uppercase-szlig-ref.html6
76 files changed, 11141 insertions, 0 deletions
diff --git a/layout/reftests/text-transform/all-lower-ref.html b/layout/reftests/text-transform/all-lower-ref.html
new file mode 100644
index 0000000000..10f07b56fe
--- /dev/null
+++ b/layout/reftests/text-transform/all-lower-ref.html
@@ -0,0 +1,1448 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; font-size: 12px; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0061;
+&#x0062;
+&#x0063;
+&#x0064;
+&#x0065;
+&#x0066;
+&#x0067;
+&#x0068;
+&#x0069;
+&#x006A;
+&#x006B;
+&#x006C;
+&#x006D;
+&#x006E;
+&#x006F;
+&#x0070;
+&#x0071;
+&#x0072;
+&#x0073;
+&#x0074;
+&#x0075;
+&#x0076;
+&#x0077;
+&#x0078;
+&#x0079;
+&#x007A;
+&#x00E0;
+&#x00E1;
+&#x00E2;
+&#x00E3;
+&#x00E4;
+&#x00E5;
+&#x00E6;
+&#x00E7;
+&#x00E8;
+&#x00E9;
+&#x00EA;
+&#x00EB;
+&#x00EC;
+&#x00ED;
+&#x00EE;
+&#x00EF;
+&#x00F0;
+&#x00F1;
+&#x00F2;
+&#x00F3;
+&#x00F4;
+&#x00F5;
+&#x00F6;
+&#x00F8;
+&#x00F9;
+&#x00FA;
+&#x00FB;
+&#x00FC;
+&#x00FD;
+&#x00FE;
+&#x0101;
+&#x0103;
+&#x0105;
+&#x0107;
+&#x0109;
+&#x010B;
+&#x010D;
+&#x010F;
+&#x0111;
+&#x0113;
+&#x0115;
+&#x0117;
+&#x0119;
+&#x011B;
+&#x011D;
+&#x011F;
+&#x0121;
+&#x0123;
+&#x0125;
+&#x0127;
+&#x0129;
+&#x012B;
+&#x012D;
+&#x012F;
+&#x0069;&#x0307; <!-- LATIN CAPITAL LETTER I WITH DOT ABOVE -->
+&#x0133;
+&#x0135;
+&#x0137;
+&#x013A;
+&#x013C;
+&#x013E;
+&#x0140;
+&#x0142;
+&#x0144;
+&#x0146;
+&#x0148;
+&#x014B;
+&#x014D;
+&#x014F;
+&#x0151;
+&#x0153;
+&#x0155;
+&#x0157;
+&#x0159;
+&#x015B;
+&#x015D;
+&#x015F;
+&#x0161;
+&#x0163;
+&#x0165;
+&#x0167;
+&#x0169;
+&#x016B;
+&#x016D;
+&#x016F;
+&#x0171;
+&#x0173;
+&#x0175;
+&#x0177;
+&#x00FF;
+&#x017A;
+&#x017C;
+&#x017E;
+&#x0253;
+&#x0183;
+&#x0185;
+&#x0254;
+&#x0188;
+&#x0256;
+&#x0257;
+&#x018C;
+&#x01DD;
+&#x0259;
+&#x025B;
+&#x0192;
+&#x0260;
+&#x0263;
+&#x0269;
+&#x0268;
+&#x0199;
+&#x026F;
+&#x0272;
+&#x0275;
+&#x01A1;
+&#x01A3;
+&#x01A5;
+&#x0280;
+&#x01A8;
+&#x0283;
+&#x01AD;
+&#x0288;
+&#x01B0;
+&#x028A;
+&#x028B;
+&#x01B4;
+&#x01B6;
+&#x0292;
+&#x01B9;
+&#x01BD;
+&#x01C6;
+&#x01C6;
+&#x01C9;
+&#x01C9;
+&#x01CC;
+&#x01CC;
+&#x01CE;
+&#x01D0;
+&#x01D2;
+&#x01D4;
+&#x01D6;
+&#x01D8;
+&#x01DA;
+&#x01DC;
+&#x01DF;
+&#x01E1;
+&#x01E3;
+&#x01E5;
+&#x01E7;
+&#x01E9;
+&#x01EB;
+&#x01ED;
+&#x01EF;
+&#x01F3;
+&#x01F3;
+&#x01F5;
+&#x0195;
+&#x01BF;
+&#x01F9;
+&#x01FB;
+&#x01FD;
+&#x01FF;
+&#x0201;
+&#x0203;
+&#x0205;
+&#x0207;
+&#x0209;
+&#x020B;
+&#x020D;
+&#x020F;
+&#x0211;
+&#x0213;
+&#x0215;
+&#x0217;
+&#x0219;
+&#x021B;
+&#x021D;
+&#x021F;
+&#x019E;
+&#x0223;
+&#x0225;
+&#x0227;
+&#x0229;
+&#x022B;
+&#x022D;
+&#x022F;
+&#x0231;
+&#x0233;
+&#x2C65;
+&#x023C;
+&#x019A;
+&#x2C66;
+&#x0242;
+&#x0180;
+&#x0289;
+&#x028C;
+&#x0247;
+&#x0249;
+&#x024B;
+&#x024D;
+&#x024F;
+&#x0371;
+&#x0373;
+&#x0377;
+&#x03F3;
+&#x03AC;
+&#x03AD;
+&#x03AE;
+&#x03AF;
+&#x03CC;
+&#x03CD;
+&#x03CE;
+&#x03B1;
+&#x03B2;
+&#x03B3;
+&#x03B4;
+&#x03B5;
+&#x03B6;
+&#x03B7;
+&#x03B8;
+&#x03B9;
+&#x03BA;
+&#x03BB;
+&#x03BC;
+&#x03BD;
+&#x03BE;
+&#x03BF;
+&#x03C0;
+&#x03C1;
+&#x03C3;
+&#x03C4;
+&#x03C5;
+&#x03C6;
+&#x03C7;
+&#x03C8;
+&#x03C9;
+&#x03CA;
+&#x03CB;
+&#x03D7;
+&#x03D9;
+&#x03DB;
+&#x03DD;
+&#x03DF;
+&#x03E1;
+&#x03E3;
+&#x03E5;
+&#x03E7;
+&#x03E9;
+&#x03EB;
+&#x03ED;
+&#x03EF;
+&#x03B8;
+&#x03F8;
+&#x03F2;
+&#x03FB;
+&#x037B;
+&#x037C;
+&#x037D;
+&#x0450;
+&#x0451;
+&#x0452;
+&#x0453;
+&#x0454;
+&#x0455;
+&#x0456;
+&#x0457;
+&#x0458;
+&#x0459;
+&#x045A;
+&#x045B;
+&#x045C;
+&#x045D;
+&#x045E;
+&#x045F;
+&#x0430;
+&#x0431;
+&#x0432;
+&#x0433;
+&#x0434;
+&#x0435;
+&#x0436;
+&#x0437;
+&#x0438;
+&#x0439;
+&#x043A;
+&#x043B;
+&#x043C;
+&#x043D;
+&#x043E;
+&#x043F;
+&#x0440;
+&#x0441;
+&#x0442;
+&#x0443;
+&#x0444;
+&#x0445;
+&#x0446;
+&#x0447;
+&#x0448;
+&#x0449;
+&#x044A;
+&#x044B;
+&#x044C;
+&#x044D;
+&#x044E;
+&#x044F;
+&#x0461;
+&#x0463;
+&#x0465;
+&#x0467;
+&#x0469;
+&#x046B;
+&#x046D;
+&#x046F;
+&#x0471;
+&#x0473;
+&#x0475;
+&#x0477;
+&#x0479;
+&#x047B;
+&#x047D;
+&#x047F;
+&#x0481;
+&#x048B;
+&#x048D;
+&#x048F;
+&#x0491;
+&#x0493;
+&#x0495;
+&#x0497;
+&#x0499;
+&#x049B;
+&#x049D;
+&#x049F;
+&#x04A1;
+&#x04A3;
+&#x04A5;
+&#x04A7;
+&#x04A9;
+&#x04AB;
+&#x04AD;
+&#x04AF;
+&#x04B1;
+&#x04B3;
+&#x04B5;
+&#x04B7;
+&#x04B9;
+&#x04BB;
+&#x04BD;
+&#x04BF;
+&#x04CF;
+&#x04C2;
+&#x04C4;
+&#x04C6;
+&#x04C8;
+&#x04CA;
+&#x04CC;
+&#x04CE;
+&#x04D1;
+&#x04D3;
+&#x04D5;
+&#x04D7;
+&#x04D9;
+&#x04DB;
+&#x04DD;
+&#x04DF;
+&#x04E1;
+&#x04E3;
+&#x04E5;
+&#x04E7;
+&#x04E9;
+&#x04EB;
+&#x04ED;
+&#x04EF;
+&#x04F1;
+&#x04F3;
+&#x04F5;
+&#x04F7;
+&#x04F9;
+&#x04FB;
+&#x04FD;
+&#x04FF;
+&#x0501;
+&#x0503;
+&#x0505;
+&#x0507;
+&#x0509;
+&#x050B;
+&#x050D;
+&#x050F;
+&#x0511;
+&#x0513;
+&#x0515;
+&#x0517;
+&#x0519;
+&#x051B;
+&#x051D;
+&#x051F;
+&#x0521;
+&#x0523;
+&#x0525;
+&#x0527;
+&#x0529;
+&#x052B;
+&#x052D;
+&#x052F;
+&#x0561;
+&#x0562;
+&#x0563;
+&#x0564;
+&#x0565;
+&#x0566;
+&#x0567;
+&#x0568;
+&#x0569;
+&#x056A;
+&#x056B;
+&#x056C;
+&#x056D;
+&#x056E;
+&#x056F;
+&#x0570;
+&#x0571;
+&#x0572;
+&#x0573;
+&#x0574;
+&#x0575;
+&#x0576;
+&#x0577;
+&#x0578;
+&#x0579;
+&#x057A;
+&#x057B;
+&#x057C;
+&#x057D;
+&#x057E;
+&#x057F;
+&#x0580;
+&#x0581;
+&#x0582;
+&#x0583;
+&#x0584;
+&#x0585;
+&#x0586;
+&#x2D00;
+&#x2D01;
+&#x2D02;
+&#x2D03;
+&#x2D04;
+&#x2D05;
+&#x2D06;
+&#x2D07;
+&#x2D08;
+&#x2D09;
+&#x2D0A;
+&#x2D0B;
+&#x2D0C;
+&#x2D0D;
+&#x2D0E;
+&#x2D0F;
+&#x2D10;
+&#x2D11;
+&#x2D12;
+&#x2D13;
+&#x2D14;
+&#x2D15;
+&#x2D16;
+&#x2D17;
+&#x2D18;
+&#x2D19;
+&#x2D1A;
+&#x2D1B;
+&#x2D1C;
+&#x2D1D;
+&#x2D1E;
+&#x2D1F;
+&#x2D20;
+&#x2D21;
+&#x2D22;
+&#x2D23;
+&#x2D24;
+&#x2D25;
+&#x2D27;
+&#x2D2D;
+&#xAB70;
+&#xAB71;
+&#xAB72;
+&#xAB73;
+&#xAB74;
+&#xAB75;
+&#xAB76;
+&#xAB77;
+&#xAB78;
+&#xAB79;
+&#xAB7A;
+&#xAB7B;
+&#xAB7C;
+&#xAB7D;
+&#xAB7E;
+&#xAB7F;
+&#xAB80;
+&#xAB81;
+&#xAB82;
+&#xAB83;
+&#xAB84;
+&#xAB85;
+&#xAB86;
+&#xAB87;
+&#xAB88;
+&#xAB89;
+&#xAB8A;
+&#xAB8B;
+&#xAB8C;
+&#xAB8D;
+&#xAB8E;
+&#xAB8F;
+&#xAB90;
+&#xAB91;
+&#xAB92;
+&#xAB93;
+&#xAB94;
+&#xAB95;
+&#xAB96;
+&#xAB97;
+&#xAB98;
+&#xAB99;
+&#xAB9A;
+&#xAB9B;
+&#xAB9C;
+&#xAB9D;
+&#xAB9E;
+&#xAB9F;
+&#xABA0;
+&#xABA1;
+&#xABA2;
+&#xABA3;
+&#xABA4;
+&#xABA5;
+&#xABA6;
+&#xABA7;
+&#xABA8;
+&#xABA9;
+&#xABAA;
+&#xABAB;
+&#xABAC;
+&#xABAD;
+&#xABAE;
+&#xABAF;
+&#xABB0;
+&#xABB1;
+&#xABB2;
+&#xABB3;
+&#xABB4;
+&#xABB5;
+&#xABB6;
+&#xABB7;
+&#xABB8;
+&#xABB9;
+&#xABBA;
+&#xABBB;
+&#xABBC;
+&#xABBD;
+&#xABBE;
+&#xABBF;
+&#x13F8;
+&#x13F9;
+&#x13FA;
+&#x13FB;
+&#x13FC;
+&#x13FD;
+&#x10D0;
+&#x10D1;
+&#x10D2;
+&#x10D3;
+&#x10D4;
+&#x10D5;
+&#x10D6;
+&#x10D7;
+&#x10D8;
+&#x10D9;
+&#x10DA;
+&#x10DB;
+&#x10DC;
+&#x10DD;
+&#x10DE;
+&#x10DF;
+&#x10E0;
+&#x10E1;
+&#x10E2;
+&#x10E3;
+&#x10E4;
+&#x10E5;
+&#x10E6;
+&#x10E7;
+&#x10E8;
+&#x10E9;
+&#x10EA;
+&#x10EB;
+&#x10EC;
+&#x10ED;
+&#x10EE;
+&#x10EF;
+&#x10F0;
+&#x10F1;
+&#x10F2;
+&#x10F3;
+&#x10F4;
+&#x10F5;
+&#x10F6;
+&#x10F7;
+&#x10F8;
+&#x10F9;
+&#x10FA;
+&#x10FD;
+&#x10FE;
+&#x10FF;
+&#x1E01;
+&#x1E03;
+&#x1E05;
+&#x1E07;
+&#x1E09;
+&#x1E0B;
+&#x1E0D;
+&#x1E0F;
+&#x1E11;
+&#x1E13;
+&#x1E15;
+&#x1E17;
+&#x1E19;
+&#x1E1B;
+&#x1E1D;
+&#x1E1F;
+&#x1E21;
+&#x1E23;
+&#x1E25;
+&#x1E27;
+&#x1E29;
+&#x1E2B;
+&#x1E2D;
+&#x1E2F;
+&#x1E31;
+&#x1E33;
+&#x1E35;
+&#x1E37;
+&#x1E39;
+&#x1E3B;
+&#x1E3D;
+&#x1E3F;
+&#x1E41;
+&#x1E43;
+&#x1E45;
+&#x1E47;
+&#x1E49;
+&#x1E4B;
+&#x1E4D;
+&#x1E4F;
+&#x1E51;
+&#x1E53;
+&#x1E55;
+&#x1E57;
+&#x1E59;
+&#x1E5B;
+&#x1E5D;
+&#x1E5F;
+&#x1E61;
+&#x1E63;
+&#x1E65;
+&#x1E67;
+&#x1E69;
+&#x1E6B;
+&#x1E6D;
+&#x1E6F;
+&#x1E71;
+&#x1E73;
+&#x1E75;
+&#x1E77;
+&#x1E79;
+&#x1E7B;
+&#x1E7D;
+&#x1E7F;
+&#x1E81;
+&#x1E83;
+&#x1E85;
+&#x1E87;
+&#x1E89;
+&#x1E8B;
+&#x1E8D;
+&#x1E8F;
+&#x1E91;
+&#x1E93;
+&#x1E95;
+&#x00DF;
+&#x1EA1;
+&#x1EA3;
+&#x1EA5;
+&#x1EA7;
+&#x1EA9;
+&#x1EAB;
+&#x1EAD;
+&#x1EAF;
+&#x1EB1;
+&#x1EB3;
+&#x1EB5;
+&#x1EB7;
+&#x1EB9;
+&#x1EBB;
+&#x1EBD;
+&#x1EBF;
+&#x1EC1;
+&#x1EC3;
+&#x1EC5;
+&#x1EC7;
+&#x1EC9;
+&#x1ECB;
+&#x1ECD;
+&#x1ECF;
+&#x1ED1;
+&#x1ED3;
+&#x1ED5;
+&#x1ED7;
+&#x1ED9;
+&#x1EDB;
+&#x1EDD;
+&#x1EDF;
+&#x1EE1;
+&#x1EE3;
+&#x1EE5;
+&#x1EE7;
+&#x1EE9;
+&#x1EEB;
+&#x1EED;
+&#x1EEF;
+&#x1EF1;
+&#x1EF3;
+&#x1EF5;
+&#x1EF7;
+&#x1EF9;
+&#x1EFB;
+&#x1EFD;
+&#x1EFF;
+&#x1F00;
+&#x1F01;
+&#x1F02;
+&#x1F03;
+&#x1F04;
+&#x1F05;
+&#x1F06;
+&#x1F07;
+&#x1F10;
+&#x1F11;
+&#x1F12;
+&#x1F13;
+&#x1F14;
+&#x1F15;
+&#x1F20;
+&#x1F21;
+&#x1F22;
+&#x1F23;
+&#x1F24;
+&#x1F25;
+&#x1F26;
+&#x1F27;
+&#x1F30;
+&#x1F31;
+&#x1F32;
+&#x1F33;
+&#x1F34;
+&#x1F35;
+&#x1F36;
+&#x1F37;
+&#x1F40;
+&#x1F41;
+&#x1F42;
+&#x1F43;
+&#x1F44;
+&#x1F45;
+&#x1F51;
+&#x1F53;
+&#x1F55;
+&#x1F57;
+&#x1F60;
+&#x1F61;
+&#x1F62;
+&#x1F63;
+&#x1F64;
+&#x1F65;
+&#x1F66;
+&#x1F67;
+&#x1F80; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F81; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F82; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F83; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F84; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F85; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F86; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F87; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F90; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F91; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F92; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F93; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F94; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F95; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F96; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F97; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FA0; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1FA1; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1FA2; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1FA3; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1FA4; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1FA5; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1FA6; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FA7; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FB0;
+&#x1FB1;
+&#x1F70;
+&#x1F71;
+&#x1FB3; <!-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -->
+&#x1F72;
+&#x1F73;
+&#x1F74;
+&#x1F75;
+&#x1FC3; <!-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -->
+&#x1FD0;
+&#x1FD1;
+&#x1F76;
+&#x1F77;
+&#x1FE0;
+&#x1FE1;
+&#x1F7A;
+&#x1F7B;
+&#x1FE5;
+&#x1F78;
+&#x1F79;
+&#x1F7C;
+&#x1F7D;
+&#x1FF3; <!-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -->
+&#x03C9;
+&#x006B;
+&#x00E5;
+&#x214E;
+&#x2170;
+&#x2171;
+&#x2172;
+&#x2173;
+&#x2174;
+&#x2175;
+&#x2176;
+&#x2177;
+&#x2178;
+&#x2179;
+&#x217A;
+&#x217B;
+&#x217C;
+&#x217D;
+&#x217E;
+&#x217F;
+&#x2184;
+&#x24D0;
+&#x24D1;
+&#x24D2;
+&#x24D3;
+&#x24D4;
+&#x24D5;
+&#x24D6;
+&#x24D7;
+&#x24D8;
+&#x24D9;
+&#x24DA;
+&#x24DB;
+&#x24DC;
+&#x24DD;
+&#x24DE;
+&#x24DF;
+&#x24E0;
+&#x24E1;
+&#x24E2;
+&#x24E3;
+&#x24E4;
+&#x24E5;
+&#x24E6;
+&#x24E7;
+&#x24E8;
+&#x24E9;
+&#x2C30;
+&#x2C31;
+&#x2C32;
+&#x2C33;
+&#x2C34;
+&#x2C35;
+&#x2C36;
+&#x2C37;
+&#x2C38;
+&#x2C39;
+&#x2C3A;
+&#x2C3B;
+&#x2C3C;
+&#x2C3D;
+&#x2C3E;
+&#x2C3F;
+&#x2C40;
+&#x2C41;
+&#x2C42;
+&#x2C43;
+&#x2C44;
+&#x2C45;
+&#x2C46;
+&#x2C47;
+&#x2C48;
+&#x2C49;
+&#x2C4A;
+&#x2C4B;
+&#x2C4C;
+&#x2C4D;
+&#x2C4E;
+&#x2C4F;
+&#x2C50;
+&#x2C51;
+&#x2C52;
+&#x2C53;
+&#x2C54;
+&#x2C55;
+&#x2C56;
+&#x2C57;
+&#x2C58;
+&#x2C59;
+&#x2C5A;
+&#x2C5B;
+&#x2C5C;
+&#x2C5D;
+&#x2C5E;
+&#x2C5F;
+&#x2C61;
+&#x026B;
+&#x1D7D;
+&#x027D;
+&#x2C68;
+&#x2C6A;
+&#x2C6C;
+&#x0251;
+&#x0271;
+&#x0250;
+&#x0252;
+&#x2C73;
+&#x2C76;
+&#x023F;
+&#x0240;
+&#x2C81;
+&#x2C83;
+&#x2C85;
+&#x2C87;
+&#x2C89;
+&#x2C8B;
+&#x2C8D;
+&#x2C8F;
+&#x2C91;
+&#x2C93;
+&#x2C95;
+&#x2C97;
+&#x2C99;
+&#x2C9B;
+&#x2C9D;
+&#x2C9F;
+&#x2CA1;
+&#x2CA3;
+&#x2CA5;
+&#x2CA7;
+&#x2CA9;
+&#x2CAB;
+&#x2CAD;
+&#x2CAF;
+&#x2CB1;
+&#x2CB3;
+&#x2CB5;
+&#x2CB7;
+&#x2CB9;
+&#x2CBB;
+&#x2CBD;
+&#x2CBF;
+&#x2CC1;
+&#x2CC3;
+&#x2CC5;
+&#x2CC7;
+&#x2CC9;
+&#x2CCB;
+&#x2CCD;
+&#x2CCF;
+&#x2CD1;
+&#x2CD3;
+&#x2CD5;
+&#x2CD7;
+&#x2CD9;
+&#x2CDB;
+&#x2CDD;
+&#x2CDF;
+&#x2CE1;
+&#x2CE3;
+&#x2CEC;
+&#x2CEE;
+&#x2CF3;
+&#xA641;
+&#xA643;
+&#xA645;
+&#xA647;
+&#xA649;
+&#xA64B;
+&#xA64D;
+&#xA64F;
+&#xA651;
+&#xA653;
+&#xA655;
+&#xA657;
+&#xA659;
+&#xA65B;
+&#xA65D;
+&#xA65F;
+&#xA661;
+&#xA663;
+&#xA665;
+&#xA667;
+&#xA669;
+&#xA66B;
+&#xA66D;
+&#xA681;
+&#xA683;
+&#xA685;
+&#xA687;
+&#xA689;
+&#xA68B;
+&#xA68D;
+&#xA68F;
+&#xA691;
+&#xA693;
+&#xA695;
+&#xA697;
+&#xA699;
+&#xA69B;
+&#xA723;
+&#xA725;
+&#xA727;
+&#xA729;
+&#xA72B;
+&#xA72D;
+&#xA72F;
+&#xA733;
+&#xA735;
+&#xA737;
+&#xA739;
+&#xA73B;
+&#xA73D;
+&#xA73F;
+&#xA741;
+&#xA743;
+&#xA745;
+&#xA747;
+&#xA749;
+&#xA74B;
+&#xA74D;
+&#xA74F;
+&#xA751;
+&#xA753;
+&#xA755;
+&#xA757;
+&#xA759;
+&#xA75B;
+&#xA75D;
+&#xA75F;
+&#xA761;
+&#xA763;
+&#xA765;
+&#xA767;
+&#xA769;
+&#xA76B;
+&#xA76D;
+&#xA76F;
+&#xA77A;
+&#xA77C;
+&#x1D79;
+&#xA77F;
+&#xA781;
+&#xA783;
+&#xA785;
+&#xA787;
+&#xA78C;
+&#x0265;
+&#xA791;
+&#xA793;
+&#xA797;
+&#xA799;
+&#xA79B;
+&#xA79D;
+&#xA79F;
+&#xA7A1;
+&#xA7A3;
+&#xA7A5;
+&#xA7A7;
+&#xA7A9;
+&#x0266;
+&#x025C;
+&#x0261;
+&#x026C;
+&#x026A;
+&#x029E;
+&#x0287;
+&#x029D;
+&#xAB53;
+&#xA7B5;
+&#xA7B7;
+&#xA7B9;
+&#xA7BB;
+&#xA7BD;
+&#xA7BF;
+&#xA7C1;
+&#xA7C3;
+&#xA794;
+&#x0282;
+&#x1D8E;
+&#xA7C8;
+&#xA7CA;
+&#xA7D1;
+&#xA7D7;
+&#xA7D9;
+&#xA7F6;
+&#xFF41;
+&#xFF42;
+&#xFF43;
+&#xFF44;
+&#xFF45;
+&#xFF46;
+&#xFF47;
+&#xFF48;
+&#xFF49;
+&#xFF4A;
+&#xFF4B;
+&#xFF4C;
+&#xFF4D;
+&#xFF4E;
+&#xFF4F;
+&#xFF50;
+&#xFF51;
+&#xFF52;
+&#xFF53;
+&#xFF54;
+&#xFF55;
+&#xFF56;
+&#xFF57;
+&#xFF58;
+&#xFF59;
+&#xFF5A;
+&#x10428;
+&#x10429;
+&#x1042A;
+&#x1042B;
+&#x1042C;
+&#x1042D;
+&#x1042E;
+&#x1042F;
+&#x10430;
+&#x10431;
+&#x10432;
+&#x10433;
+&#x10434;
+&#x10435;
+&#x10436;
+&#x10437;
+&#x10438;
+&#x10439;
+&#x1043A;
+&#x1043B;
+&#x1043C;
+&#x1043D;
+&#x1043E;
+&#x1043F;
+&#x10440;
+&#x10441;
+&#x10442;
+&#x10443;
+&#x10444;
+&#x10445;
+&#x10446;
+&#x10447;
+&#x10448;
+&#x10449;
+&#x1044A;
+&#x1044B;
+&#x1044C;
+&#x1044D;
+&#x1044E;
+&#x1044F;
+&#x104D8;
+&#x104D9;
+&#x104DA;
+&#x104DB;
+&#x104DC;
+&#x104DD;
+&#x104DE;
+&#x104DF;
+&#x104E0;
+&#x104E1;
+&#x104E2;
+&#x104E3;
+&#x104E4;
+&#x104E5;
+&#x104E6;
+&#x104E7;
+&#x104E8;
+&#x104E9;
+&#x104EA;
+&#x104EB;
+&#x104EC;
+&#x104ED;
+&#x104EE;
+&#x104EF;
+&#x104F0;
+&#x104F1;
+&#x104F2;
+&#x104F3;
+&#x104F4;
+&#x104F5;
+&#x104F6;
+&#x104F7;
+&#x104F8;
+&#x104F9;
+&#x104FA;
+&#x104FB;
+&#x10597;
+&#x10598;
+&#x10599;
+&#x1059A;
+&#x1059B;
+&#x1059C;
+&#x1059D;
+&#x1059E;
+&#x1059F;
+&#x105A0;
+&#x105A1;
+&#x105A3;
+&#x105A4;
+&#x105A5;
+&#x105A6;
+&#x105A7;
+&#x105A8;
+&#x105A9;
+&#x105AA;
+&#x105AB;
+&#x105AC;
+&#x105AD;
+&#x105AE;
+&#x105AF;
+&#x105B0;
+&#x105B1;
+&#x105B3;
+&#x105B4;
+&#x105B5;
+&#x105B6;
+&#x105B7;
+&#x105B8;
+&#x105B9;
+&#x105BB;
+&#x105BC;
+&#x10CC0;
+&#x10CC1;
+&#x10CC2;
+&#x10CC3;
+&#x10CC4;
+&#x10CC5;
+&#x10CC6;
+&#x10CC7;
+&#x10CC8;
+&#x10CC9;
+&#x10CCA;
+&#x10CCB;
+&#x10CCC;
+&#x10CCD;
+&#x10CCE;
+&#x10CCF;
+&#x10CD0;
+&#x10CD1;
+&#x10CD2;
+&#x10CD3;
+&#x10CD4;
+&#x10CD5;
+&#x10CD6;
+&#x10CD7;
+&#x10CD8;
+&#x10CD9;
+&#x10CDA;
+&#x10CDB;
+&#x10CDC;
+&#x10CDD;
+&#x10CDE;
+&#x10CDF;
+&#x10CE0;
+&#x10CE1;
+&#x10CE2;
+&#x10CE3;
+&#x10CE4;
+&#x10CE5;
+&#x10CE6;
+&#x10CE7;
+&#x10CE8;
+&#x10CE9;
+&#x10CEA;
+&#x10CEB;
+&#x10CEC;
+&#x10CED;
+&#x10CEE;
+&#x10CEF;
+&#x10CF0;
+&#x10CF1;
+&#x10CF2;
+&#x118C0;
+&#x118C1;
+&#x118C2;
+&#x118C3;
+&#x118C4;
+&#x118C5;
+&#x118C6;
+&#x118C7;
+&#x118C8;
+&#x118C9;
+&#x118CA;
+&#x118CB;
+&#x118CC;
+&#x118CD;
+&#x118CE;
+&#x118CF;
+&#x118D0;
+&#x118D1;
+&#x118D2;
+&#x118D3;
+&#x118D4;
+&#x118D5;
+&#x118D6;
+&#x118D7;
+&#x118D8;
+&#x118D9;
+&#x118DA;
+&#x118DB;
+&#x118DC;
+&#x118DD;
+&#x118DE;
+&#x118DF;
+&#x16E60;
+&#x16E61;
+&#x16E62;
+&#x16E63;
+&#x16E64;
+&#x16E65;
+&#x16E66;
+&#x16E67;
+&#x16E68;
+&#x16E69;
+&#x16E6A;
+&#x16E6B;
+&#x16E6C;
+&#x16E6D;
+&#x16E6E;
+&#x16E6F;
+&#x16E70;
+&#x16E71;
+&#x16E72;
+&#x16E73;
+&#x16E74;
+&#x16E75;
+&#x16E76;
+&#x16E77;
+&#x16E78;
+&#x16E79;
+&#x16E7A;
+&#x16E7B;
+&#x16E7C;
+&#x16E7D;
+&#x16E7E;
+&#x16E7F;
+&#x1E922;
+&#x1E923;
+&#x1E924;
+&#x1E925;
+&#x1E926;
+&#x1E927;
+&#x1E928;
+&#x1E929;
+&#x1E92A;
+&#x1E92B;
+&#x1E92C;
+&#x1E92D;
+&#x1E92E;
+&#x1E92F;
+&#x1E930;
+&#x1E931;
+&#x1E932;
+&#x1E933;
+&#x1E934;
+&#x1E935;
+&#x1E936;
+&#x1E937;
+&#x1E938;
+&#x1E939;
+&#x1E93A;
+&#x1E93B;
+&#x1E93C;
+&#x1E93D;
+&#x1E93E;
+&#x1E93F;
+&#x1E940;
+&#x1E941;
+&#x1E942;
+&#x1E943;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/all-lower.html b/layout/reftests/text-transform/all-lower.html
new file mode 100644
index 0000000000..7fd1eec18e
--- /dev/null
+++ b/layout/reftests/text-transform/all-lower.html
@@ -0,0 +1,1448 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; font-size: 12px; text-transform: lowercase; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0041;
+&#x0042;
+&#x0043;
+&#x0044;
+&#x0045;
+&#x0046;
+&#x0047;
+&#x0048;
+&#x0049;
+&#x004A;
+&#x004B;
+&#x004C;
+&#x004D;
+&#x004E;
+&#x004F;
+&#x0050;
+&#x0051;
+&#x0052;
+&#x0053;
+&#x0054;
+&#x0055;
+&#x0056;
+&#x0057;
+&#x0058;
+&#x0059;
+&#x005A;
+&#x00C0;
+&#x00C1;
+&#x00C2;
+&#x00C3;
+&#x00C4;
+&#x00C5;
+&#x00C6;
+&#x00C7;
+&#x00C8;
+&#x00C9;
+&#x00CA;
+&#x00CB;
+&#x00CC;
+&#x00CD;
+&#x00CE;
+&#x00CF;
+&#x00D0;
+&#x00D1;
+&#x00D2;
+&#x00D3;
+&#x00D4;
+&#x00D5;
+&#x00D6;
+&#x00D8;
+&#x00D9;
+&#x00DA;
+&#x00DB;
+&#x00DC;
+&#x00DD;
+&#x00DE;
+&#x0100;
+&#x0102;
+&#x0104;
+&#x0106;
+&#x0108;
+&#x010A;
+&#x010C;
+&#x010E;
+&#x0110;
+&#x0112;
+&#x0114;
+&#x0116;
+&#x0118;
+&#x011A;
+&#x011C;
+&#x011E;
+&#x0120;
+&#x0122;
+&#x0124;
+&#x0126;
+&#x0128;
+&#x012A;
+&#x012C;
+&#x012E;
+&#x0130; <!-- LATIN CAPITAL LETTER I WITH DOT ABOVE -->
+&#x0132;
+&#x0134;
+&#x0136;
+&#x0139;
+&#x013B;
+&#x013D;
+&#x013F;
+&#x0141;
+&#x0143;
+&#x0145;
+&#x0147;
+&#x014A;
+&#x014C;
+&#x014E;
+&#x0150;
+&#x0152;
+&#x0154;
+&#x0156;
+&#x0158;
+&#x015A;
+&#x015C;
+&#x015E;
+&#x0160;
+&#x0162;
+&#x0164;
+&#x0166;
+&#x0168;
+&#x016A;
+&#x016C;
+&#x016E;
+&#x0170;
+&#x0172;
+&#x0174;
+&#x0176;
+&#x0178;
+&#x0179;
+&#x017B;
+&#x017D;
+&#x0181;
+&#x0182;
+&#x0184;
+&#x0186;
+&#x0187;
+&#x0189;
+&#x018A;
+&#x018B;
+&#x018E;
+&#x018F;
+&#x0190;
+&#x0191;
+&#x0193;
+&#x0194;
+&#x0196;
+&#x0197;
+&#x0198;
+&#x019C;
+&#x019D;
+&#x019F;
+&#x01A0;
+&#x01A2;
+&#x01A4;
+&#x01A6;
+&#x01A7;
+&#x01A9;
+&#x01AC;
+&#x01AE;
+&#x01AF;
+&#x01B1;
+&#x01B2;
+&#x01B3;
+&#x01B5;
+&#x01B7;
+&#x01B8;
+&#x01BC;
+&#x01C4;
+&#x01C5;
+&#x01C7;
+&#x01C8;
+&#x01CA;
+&#x01CB;
+&#x01CD;
+&#x01CF;
+&#x01D1;
+&#x01D3;
+&#x01D5;
+&#x01D7;
+&#x01D9;
+&#x01DB;
+&#x01DE;
+&#x01E0;
+&#x01E2;
+&#x01E4;
+&#x01E6;
+&#x01E8;
+&#x01EA;
+&#x01EC;
+&#x01EE;
+&#x01F1;
+&#x01F2;
+&#x01F4;
+&#x01F6;
+&#x01F7;
+&#x01F8;
+&#x01FA;
+&#x01FC;
+&#x01FE;
+&#x0200;
+&#x0202;
+&#x0204;
+&#x0206;
+&#x0208;
+&#x020A;
+&#x020C;
+&#x020E;
+&#x0210;
+&#x0212;
+&#x0214;
+&#x0216;
+&#x0218;
+&#x021A;
+&#x021C;
+&#x021E;
+&#x0220;
+&#x0222;
+&#x0224;
+&#x0226;
+&#x0228;
+&#x022A;
+&#x022C;
+&#x022E;
+&#x0230;
+&#x0232;
+&#x023A;
+&#x023B;
+&#x023D;
+&#x023E;
+&#x0241;
+&#x0243;
+&#x0244;
+&#x0245;
+&#x0246;
+&#x0248;
+&#x024A;
+&#x024C;
+&#x024E;
+&#x0370;
+&#x0372;
+&#x0376;
+&#x037F;
+&#x0386;
+&#x0388;
+&#x0389;
+&#x038A;
+&#x038C;
+&#x038E;
+&#x038F;
+&#x0391;
+&#x0392;
+&#x0393;
+&#x0394;
+&#x0395;
+&#x0396;
+&#x0397;
+&#x0398;
+&#x0399;
+&#x039A;
+&#x039B;
+&#x039C;
+&#x039D;
+&#x039E;
+&#x039F;
+&#x03A0;
+&#x03A1;
+&#x03A3;
+&#x03A4;
+&#x03A5;
+&#x03A6;
+&#x03A7;
+&#x03A8;
+&#x03A9;
+&#x03AA;
+&#x03AB;
+&#x03CF;
+&#x03D8;
+&#x03DA;
+&#x03DC;
+&#x03DE;
+&#x03E0;
+&#x03E2;
+&#x03E4;
+&#x03E6;
+&#x03E8;
+&#x03EA;
+&#x03EC;
+&#x03EE;
+&#x03F4;
+&#x03F7;
+&#x03F9;
+&#x03FA;
+&#x03FD;
+&#x03FE;
+&#x03FF;
+&#x0400;
+&#x0401;
+&#x0402;
+&#x0403;
+&#x0404;
+&#x0405;
+&#x0406;
+&#x0407;
+&#x0408;
+&#x0409;
+&#x040A;
+&#x040B;
+&#x040C;
+&#x040D;
+&#x040E;
+&#x040F;
+&#x0410;
+&#x0411;
+&#x0412;
+&#x0413;
+&#x0414;
+&#x0415;
+&#x0416;
+&#x0417;
+&#x0418;
+&#x0419;
+&#x041A;
+&#x041B;
+&#x041C;
+&#x041D;
+&#x041E;
+&#x041F;
+&#x0420;
+&#x0421;
+&#x0422;
+&#x0423;
+&#x0424;
+&#x0425;
+&#x0426;
+&#x0427;
+&#x0428;
+&#x0429;
+&#x042A;
+&#x042B;
+&#x042C;
+&#x042D;
+&#x042E;
+&#x042F;
+&#x0460;
+&#x0462;
+&#x0464;
+&#x0466;
+&#x0468;
+&#x046A;
+&#x046C;
+&#x046E;
+&#x0470;
+&#x0472;
+&#x0474;
+&#x0476;
+&#x0478;
+&#x047A;
+&#x047C;
+&#x047E;
+&#x0480;
+&#x048A;
+&#x048C;
+&#x048E;
+&#x0490;
+&#x0492;
+&#x0494;
+&#x0496;
+&#x0498;
+&#x049A;
+&#x049C;
+&#x049E;
+&#x04A0;
+&#x04A2;
+&#x04A4;
+&#x04A6;
+&#x04A8;
+&#x04AA;
+&#x04AC;
+&#x04AE;
+&#x04B0;
+&#x04B2;
+&#x04B4;
+&#x04B6;
+&#x04B8;
+&#x04BA;
+&#x04BC;
+&#x04BE;
+&#x04C0;
+&#x04C1;
+&#x04C3;
+&#x04C5;
+&#x04C7;
+&#x04C9;
+&#x04CB;
+&#x04CD;
+&#x04D0;
+&#x04D2;
+&#x04D4;
+&#x04D6;
+&#x04D8;
+&#x04DA;
+&#x04DC;
+&#x04DE;
+&#x04E0;
+&#x04E2;
+&#x04E4;
+&#x04E6;
+&#x04E8;
+&#x04EA;
+&#x04EC;
+&#x04EE;
+&#x04F0;
+&#x04F2;
+&#x04F4;
+&#x04F6;
+&#x04F8;
+&#x04FA;
+&#x04FC;
+&#x04FE;
+&#x0500;
+&#x0502;
+&#x0504;
+&#x0506;
+&#x0508;
+&#x050A;
+&#x050C;
+&#x050E;
+&#x0510;
+&#x0512;
+&#x0514;
+&#x0516;
+&#x0518;
+&#x051A;
+&#x051C;
+&#x051E;
+&#x0520;
+&#x0522;
+&#x0524;
+&#x0526;
+&#x0528;
+&#x052A;
+&#x052C;
+&#x052E;
+&#x0531;
+&#x0532;
+&#x0533;
+&#x0534;
+&#x0535;
+&#x0536;
+&#x0537;
+&#x0538;
+&#x0539;
+&#x053A;
+&#x053B;
+&#x053C;
+&#x053D;
+&#x053E;
+&#x053F;
+&#x0540;
+&#x0541;
+&#x0542;
+&#x0543;
+&#x0544;
+&#x0545;
+&#x0546;
+&#x0547;
+&#x0548;
+&#x0549;
+&#x054A;
+&#x054B;
+&#x054C;
+&#x054D;
+&#x054E;
+&#x054F;
+&#x0550;
+&#x0551;
+&#x0552;
+&#x0553;
+&#x0554;
+&#x0555;
+&#x0556;
+&#x10A0;
+&#x10A1;
+&#x10A2;
+&#x10A3;
+&#x10A4;
+&#x10A5;
+&#x10A6;
+&#x10A7;
+&#x10A8;
+&#x10A9;
+&#x10AA;
+&#x10AB;
+&#x10AC;
+&#x10AD;
+&#x10AE;
+&#x10AF;
+&#x10B0;
+&#x10B1;
+&#x10B2;
+&#x10B3;
+&#x10B4;
+&#x10B5;
+&#x10B6;
+&#x10B7;
+&#x10B8;
+&#x10B9;
+&#x10BA;
+&#x10BB;
+&#x10BC;
+&#x10BD;
+&#x10BE;
+&#x10BF;
+&#x10C0;
+&#x10C1;
+&#x10C2;
+&#x10C3;
+&#x10C4;
+&#x10C5;
+&#x10C7;
+&#x10CD;
+&#x13A0;
+&#x13A1;
+&#x13A2;
+&#x13A3;
+&#x13A4;
+&#x13A5;
+&#x13A6;
+&#x13A7;
+&#x13A8;
+&#x13A9;
+&#x13AA;
+&#x13AB;
+&#x13AC;
+&#x13AD;
+&#x13AE;
+&#x13AF;
+&#x13B0;
+&#x13B1;
+&#x13B2;
+&#x13B3;
+&#x13B4;
+&#x13B5;
+&#x13B6;
+&#x13B7;
+&#x13B8;
+&#x13B9;
+&#x13BA;
+&#x13BB;
+&#x13BC;
+&#x13BD;
+&#x13BE;
+&#x13BF;
+&#x13C0;
+&#x13C1;
+&#x13C2;
+&#x13C3;
+&#x13C4;
+&#x13C5;
+&#x13C6;
+&#x13C7;
+&#x13C8;
+&#x13C9;
+&#x13CA;
+&#x13CB;
+&#x13CC;
+&#x13CD;
+&#x13CE;
+&#x13CF;
+&#x13D0;
+&#x13D1;
+&#x13D2;
+&#x13D3;
+&#x13D4;
+&#x13D5;
+&#x13D6;
+&#x13D7;
+&#x13D8;
+&#x13D9;
+&#x13DA;
+&#x13DB;
+&#x13DC;
+&#x13DD;
+&#x13DE;
+&#x13DF;
+&#x13E0;
+&#x13E1;
+&#x13E2;
+&#x13E3;
+&#x13E4;
+&#x13E5;
+&#x13E6;
+&#x13E7;
+&#x13E8;
+&#x13E9;
+&#x13EA;
+&#x13EB;
+&#x13EC;
+&#x13ED;
+&#x13EE;
+&#x13EF;
+&#x13F0;
+&#x13F1;
+&#x13F2;
+&#x13F3;
+&#x13F4;
+&#x13F5;
+&#x1C90;
+&#x1C91;
+&#x1C92;
+&#x1C93;
+&#x1C94;
+&#x1C95;
+&#x1C96;
+&#x1C97;
+&#x1C98;
+&#x1C99;
+&#x1C9A;
+&#x1C9B;
+&#x1C9C;
+&#x1C9D;
+&#x1C9E;
+&#x1C9F;
+&#x1CA0;
+&#x1CA1;
+&#x1CA2;
+&#x1CA3;
+&#x1CA4;
+&#x1CA5;
+&#x1CA6;
+&#x1CA7;
+&#x1CA8;
+&#x1CA9;
+&#x1CAA;
+&#x1CAB;
+&#x1CAC;
+&#x1CAD;
+&#x1CAE;
+&#x1CAF;
+&#x1CB0;
+&#x1CB1;
+&#x1CB2;
+&#x1CB3;
+&#x1CB4;
+&#x1CB5;
+&#x1CB6;
+&#x1CB7;
+&#x1CB8;
+&#x1CB9;
+&#x1CBA;
+&#x1CBD;
+&#x1CBE;
+&#x1CBF;
+&#x1E00;
+&#x1E02;
+&#x1E04;
+&#x1E06;
+&#x1E08;
+&#x1E0A;
+&#x1E0C;
+&#x1E0E;
+&#x1E10;
+&#x1E12;
+&#x1E14;
+&#x1E16;
+&#x1E18;
+&#x1E1A;
+&#x1E1C;
+&#x1E1E;
+&#x1E20;
+&#x1E22;
+&#x1E24;
+&#x1E26;
+&#x1E28;
+&#x1E2A;
+&#x1E2C;
+&#x1E2E;
+&#x1E30;
+&#x1E32;
+&#x1E34;
+&#x1E36;
+&#x1E38;
+&#x1E3A;
+&#x1E3C;
+&#x1E3E;
+&#x1E40;
+&#x1E42;
+&#x1E44;
+&#x1E46;
+&#x1E48;
+&#x1E4A;
+&#x1E4C;
+&#x1E4E;
+&#x1E50;
+&#x1E52;
+&#x1E54;
+&#x1E56;
+&#x1E58;
+&#x1E5A;
+&#x1E5C;
+&#x1E5E;
+&#x1E60;
+&#x1E62;
+&#x1E64;
+&#x1E66;
+&#x1E68;
+&#x1E6A;
+&#x1E6C;
+&#x1E6E;
+&#x1E70;
+&#x1E72;
+&#x1E74;
+&#x1E76;
+&#x1E78;
+&#x1E7A;
+&#x1E7C;
+&#x1E7E;
+&#x1E80;
+&#x1E82;
+&#x1E84;
+&#x1E86;
+&#x1E88;
+&#x1E8A;
+&#x1E8C;
+&#x1E8E;
+&#x1E90;
+&#x1E92;
+&#x1E94;
+&#x1E9E;
+&#x1EA0;
+&#x1EA2;
+&#x1EA4;
+&#x1EA6;
+&#x1EA8;
+&#x1EAA;
+&#x1EAC;
+&#x1EAE;
+&#x1EB0;
+&#x1EB2;
+&#x1EB4;
+&#x1EB6;
+&#x1EB8;
+&#x1EBA;
+&#x1EBC;
+&#x1EBE;
+&#x1EC0;
+&#x1EC2;
+&#x1EC4;
+&#x1EC6;
+&#x1EC8;
+&#x1ECA;
+&#x1ECC;
+&#x1ECE;
+&#x1ED0;
+&#x1ED2;
+&#x1ED4;
+&#x1ED6;
+&#x1ED8;
+&#x1EDA;
+&#x1EDC;
+&#x1EDE;
+&#x1EE0;
+&#x1EE2;
+&#x1EE4;
+&#x1EE6;
+&#x1EE8;
+&#x1EEA;
+&#x1EEC;
+&#x1EEE;
+&#x1EF0;
+&#x1EF2;
+&#x1EF4;
+&#x1EF6;
+&#x1EF8;
+&#x1EFA;
+&#x1EFC;
+&#x1EFE;
+&#x1F08;
+&#x1F09;
+&#x1F0A;
+&#x1F0B;
+&#x1F0C;
+&#x1F0D;
+&#x1F0E;
+&#x1F0F;
+&#x1F18;
+&#x1F19;
+&#x1F1A;
+&#x1F1B;
+&#x1F1C;
+&#x1F1D;
+&#x1F28;
+&#x1F29;
+&#x1F2A;
+&#x1F2B;
+&#x1F2C;
+&#x1F2D;
+&#x1F2E;
+&#x1F2F;
+&#x1F38;
+&#x1F39;
+&#x1F3A;
+&#x1F3B;
+&#x1F3C;
+&#x1F3D;
+&#x1F3E;
+&#x1F3F;
+&#x1F48;
+&#x1F49;
+&#x1F4A;
+&#x1F4B;
+&#x1F4C;
+&#x1F4D;
+&#x1F59;
+&#x1F5B;
+&#x1F5D;
+&#x1F5F;
+&#x1F68;
+&#x1F69;
+&#x1F6A;
+&#x1F6B;
+&#x1F6C;
+&#x1F6D;
+&#x1F6E;
+&#x1F6F;
+&#x1F88; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F89; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F8A; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F8B; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F8C; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F8D; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F8E; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F8F; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F98; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F99; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F9A; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F9B; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F9C; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F9D; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F9E; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F9F; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FA8; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1FA9; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1FAA; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1FAB; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1FAC; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1FAD; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1FAE; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FAF; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FB8;
+&#x1FB9;
+&#x1FBA;
+&#x1FBB;
+&#x1FBC; <!-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -->
+&#x1FC8;
+&#x1FC9;
+&#x1FCA;
+&#x1FCB;
+&#x1FCC; <!-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -->
+&#x1FD8;
+&#x1FD9;
+&#x1FDA;
+&#x1FDB;
+&#x1FE8;
+&#x1FE9;
+&#x1FEA;
+&#x1FEB;
+&#x1FEC;
+&#x1FF8;
+&#x1FF9;
+&#x1FFA;
+&#x1FFB;
+&#x1FFC; <!-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -->
+&#x2126;
+&#x212A;
+&#x212B;
+&#x2132;
+&#x2160;
+&#x2161;
+&#x2162;
+&#x2163;
+&#x2164;
+&#x2165;
+&#x2166;
+&#x2167;
+&#x2168;
+&#x2169;
+&#x216A;
+&#x216B;
+&#x216C;
+&#x216D;
+&#x216E;
+&#x216F;
+&#x2183;
+&#x24B6;
+&#x24B7;
+&#x24B8;
+&#x24B9;
+&#x24BA;
+&#x24BB;
+&#x24BC;
+&#x24BD;
+&#x24BE;
+&#x24BF;
+&#x24C0;
+&#x24C1;
+&#x24C2;
+&#x24C3;
+&#x24C4;
+&#x24C5;
+&#x24C6;
+&#x24C7;
+&#x24C8;
+&#x24C9;
+&#x24CA;
+&#x24CB;
+&#x24CC;
+&#x24CD;
+&#x24CE;
+&#x24CF;
+&#x2C00;
+&#x2C01;
+&#x2C02;
+&#x2C03;
+&#x2C04;
+&#x2C05;
+&#x2C06;
+&#x2C07;
+&#x2C08;
+&#x2C09;
+&#x2C0A;
+&#x2C0B;
+&#x2C0C;
+&#x2C0D;
+&#x2C0E;
+&#x2C0F;
+&#x2C10;
+&#x2C11;
+&#x2C12;
+&#x2C13;
+&#x2C14;
+&#x2C15;
+&#x2C16;
+&#x2C17;
+&#x2C18;
+&#x2C19;
+&#x2C1A;
+&#x2C1B;
+&#x2C1C;
+&#x2C1D;
+&#x2C1E;
+&#x2C1F;
+&#x2C20;
+&#x2C21;
+&#x2C22;
+&#x2C23;
+&#x2C24;
+&#x2C25;
+&#x2C26;
+&#x2C27;
+&#x2C28;
+&#x2C29;
+&#x2C2A;
+&#x2C2B;
+&#x2C2C;
+&#x2C2D;
+&#x2C2E;
+&#x2C2F;
+&#x2C60;
+&#x2C62;
+&#x2C63;
+&#x2C64;
+&#x2C67;
+&#x2C69;
+&#x2C6B;
+&#x2C6D;
+&#x2C6E;
+&#x2C6F;
+&#x2C70;
+&#x2C72;
+&#x2C75;
+&#x2C7E;
+&#x2C7F;
+&#x2C80;
+&#x2C82;
+&#x2C84;
+&#x2C86;
+&#x2C88;
+&#x2C8A;
+&#x2C8C;
+&#x2C8E;
+&#x2C90;
+&#x2C92;
+&#x2C94;
+&#x2C96;
+&#x2C98;
+&#x2C9A;
+&#x2C9C;
+&#x2C9E;
+&#x2CA0;
+&#x2CA2;
+&#x2CA4;
+&#x2CA6;
+&#x2CA8;
+&#x2CAA;
+&#x2CAC;
+&#x2CAE;
+&#x2CB0;
+&#x2CB2;
+&#x2CB4;
+&#x2CB6;
+&#x2CB8;
+&#x2CBA;
+&#x2CBC;
+&#x2CBE;
+&#x2CC0;
+&#x2CC2;
+&#x2CC4;
+&#x2CC6;
+&#x2CC8;
+&#x2CCA;
+&#x2CCC;
+&#x2CCE;
+&#x2CD0;
+&#x2CD2;
+&#x2CD4;
+&#x2CD6;
+&#x2CD8;
+&#x2CDA;
+&#x2CDC;
+&#x2CDE;
+&#x2CE0;
+&#x2CE2;
+&#x2CEB;
+&#x2CED;
+&#x2CF2;
+&#xA640;
+&#xA642;
+&#xA644;
+&#xA646;
+&#xA648;
+&#xA64A;
+&#xA64C;
+&#xA64E;
+&#xA650;
+&#xA652;
+&#xA654;
+&#xA656;
+&#xA658;
+&#xA65A;
+&#xA65C;
+&#xA65E;
+&#xA660;
+&#xA662;
+&#xA664;
+&#xA666;
+&#xA668;
+&#xA66A;
+&#xA66C;
+&#xA680;
+&#xA682;
+&#xA684;
+&#xA686;
+&#xA688;
+&#xA68A;
+&#xA68C;
+&#xA68E;
+&#xA690;
+&#xA692;
+&#xA694;
+&#xA696;
+&#xA698;
+&#xA69A;
+&#xA722;
+&#xA724;
+&#xA726;
+&#xA728;
+&#xA72A;
+&#xA72C;
+&#xA72E;
+&#xA732;
+&#xA734;
+&#xA736;
+&#xA738;
+&#xA73A;
+&#xA73C;
+&#xA73E;
+&#xA740;
+&#xA742;
+&#xA744;
+&#xA746;
+&#xA748;
+&#xA74A;
+&#xA74C;
+&#xA74E;
+&#xA750;
+&#xA752;
+&#xA754;
+&#xA756;
+&#xA758;
+&#xA75A;
+&#xA75C;
+&#xA75E;
+&#xA760;
+&#xA762;
+&#xA764;
+&#xA766;
+&#xA768;
+&#xA76A;
+&#xA76C;
+&#xA76E;
+&#xA779;
+&#xA77B;
+&#xA77D;
+&#xA77E;
+&#xA780;
+&#xA782;
+&#xA784;
+&#xA786;
+&#xA78B;
+&#xA78D;
+&#xA790;
+&#xA792;
+&#xA796;
+&#xA798;
+&#xA79A;
+&#xA79C;
+&#xA79E;
+&#xA7A0;
+&#xA7A2;
+&#xA7A4;
+&#xA7A6;
+&#xA7A8;
+&#xA7AA;
+&#xA7AB;
+&#xA7AC;
+&#xA7AD;
+&#xA7AE;
+&#xA7B0;
+&#xA7B1;
+&#xA7B2;
+&#xA7B3;
+&#xA7B4;
+&#xA7B6;
+&#xA7B8;
+&#xA7BA;
+&#xA7BC;
+&#xA7BE;
+&#xA7C0;
+&#xA7C2;
+&#xA7C4;
+&#xA7C5;
+&#xA7C6;
+&#xA7C7;
+&#xA7C9;
+&#xA7D0;
+&#xA7D6;
+&#xA7D8;
+&#xA7F5;
+&#xFF21;
+&#xFF22;
+&#xFF23;
+&#xFF24;
+&#xFF25;
+&#xFF26;
+&#xFF27;
+&#xFF28;
+&#xFF29;
+&#xFF2A;
+&#xFF2B;
+&#xFF2C;
+&#xFF2D;
+&#xFF2E;
+&#xFF2F;
+&#xFF30;
+&#xFF31;
+&#xFF32;
+&#xFF33;
+&#xFF34;
+&#xFF35;
+&#xFF36;
+&#xFF37;
+&#xFF38;
+&#xFF39;
+&#xFF3A;
+&#x10400;
+&#x10401;
+&#x10402;
+&#x10403;
+&#x10404;
+&#x10405;
+&#x10406;
+&#x10407;
+&#x10408;
+&#x10409;
+&#x1040A;
+&#x1040B;
+&#x1040C;
+&#x1040D;
+&#x1040E;
+&#x1040F;
+&#x10410;
+&#x10411;
+&#x10412;
+&#x10413;
+&#x10414;
+&#x10415;
+&#x10416;
+&#x10417;
+&#x10418;
+&#x10419;
+&#x1041A;
+&#x1041B;
+&#x1041C;
+&#x1041D;
+&#x1041E;
+&#x1041F;
+&#x10420;
+&#x10421;
+&#x10422;
+&#x10423;
+&#x10424;
+&#x10425;
+&#x10426;
+&#x10427;
+&#x104B0;
+&#x104B1;
+&#x104B2;
+&#x104B3;
+&#x104B4;
+&#x104B5;
+&#x104B6;
+&#x104B7;
+&#x104B8;
+&#x104B9;
+&#x104BA;
+&#x104BB;
+&#x104BC;
+&#x104BD;
+&#x104BE;
+&#x104BF;
+&#x104C0;
+&#x104C1;
+&#x104C2;
+&#x104C3;
+&#x104C4;
+&#x104C5;
+&#x104C6;
+&#x104C7;
+&#x104C8;
+&#x104C9;
+&#x104CA;
+&#x104CB;
+&#x104CC;
+&#x104CD;
+&#x104CE;
+&#x104CF;
+&#x104D0;
+&#x104D1;
+&#x104D2;
+&#x104D3;
+&#x10570;
+&#x10571;
+&#x10572;
+&#x10573;
+&#x10574;
+&#x10575;
+&#x10576;
+&#x10577;
+&#x10578;
+&#x10579;
+&#x1057A;
+&#x1057C;
+&#x1057D;
+&#x1057E;
+&#x1057F;
+&#x10580;
+&#x10581;
+&#x10582;
+&#x10583;
+&#x10584;
+&#x10585;
+&#x10586;
+&#x10587;
+&#x10588;
+&#x10589;
+&#x1058A;
+&#x1058C;
+&#x1058D;
+&#x1058E;
+&#x1058F;
+&#x10590;
+&#x10591;
+&#x10592;
+&#x10594;
+&#x10595;
+&#x10C80;
+&#x10C81;
+&#x10C82;
+&#x10C83;
+&#x10C84;
+&#x10C85;
+&#x10C86;
+&#x10C87;
+&#x10C88;
+&#x10C89;
+&#x10C8A;
+&#x10C8B;
+&#x10C8C;
+&#x10C8D;
+&#x10C8E;
+&#x10C8F;
+&#x10C90;
+&#x10C91;
+&#x10C92;
+&#x10C93;
+&#x10C94;
+&#x10C95;
+&#x10C96;
+&#x10C97;
+&#x10C98;
+&#x10C99;
+&#x10C9A;
+&#x10C9B;
+&#x10C9C;
+&#x10C9D;
+&#x10C9E;
+&#x10C9F;
+&#x10CA0;
+&#x10CA1;
+&#x10CA2;
+&#x10CA3;
+&#x10CA4;
+&#x10CA5;
+&#x10CA6;
+&#x10CA7;
+&#x10CA8;
+&#x10CA9;
+&#x10CAA;
+&#x10CAB;
+&#x10CAC;
+&#x10CAD;
+&#x10CAE;
+&#x10CAF;
+&#x10CB0;
+&#x10CB1;
+&#x10CB2;
+&#x118A0;
+&#x118A1;
+&#x118A2;
+&#x118A3;
+&#x118A4;
+&#x118A5;
+&#x118A6;
+&#x118A7;
+&#x118A8;
+&#x118A9;
+&#x118AA;
+&#x118AB;
+&#x118AC;
+&#x118AD;
+&#x118AE;
+&#x118AF;
+&#x118B0;
+&#x118B1;
+&#x118B2;
+&#x118B3;
+&#x118B4;
+&#x118B5;
+&#x118B6;
+&#x118B7;
+&#x118B8;
+&#x118B9;
+&#x118BA;
+&#x118BB;
+&#x118BC;
+&#x118BD;
+&#x118BE;
+&#x118BF;
+&#x16E40;
+&#x16E41;
+&#x16E42;
+&#x16E43;
+&#x16E44;
+&#x16E45;
+&#x16E46;
+&#x16E47;
+&#x16E48;
+&#x16E49;
+&#x16E4A;
+&#x16E4B;
+&#x16E4C;
+&#x16E4D;
+&#x16E4E;
+&#x16E4F;
+&#x16E50;
+&#x16E51;
+&#x16E52;
+&#x16E53;
+&#x16E54;
+&#x16E55;
+&#x16E56;
+&#x16E57;
+&#x16E58;
+&#x16E59;
+&#x16E5A;
+&#x16E5B;
+&#x16E5C;
+&#x16E5D;
+&#x16E5E;
+&#x16E5F;
+&#x1E900;
+&#x1E901;
+&#x1E902;
+&#x1E903;
+&#x1E904;
+&#x1E905;
+&#x1E906;
+&#x1E907;
+&#x1E908;
+&#x1E909;
+&#x1E90A;
+&#x1E90B;
+&#x1E90C;
+&#x1E90D;
+&#x1E90E;
+&#x1E90F;
+&#x1E910;
+&#x1E911;
+&#x1E912;
+&#x1E913;
+&#x1E914;
+&#x1E915;
+&#x1E916;
+&#x1E917;
+&#x1E918;
+&#x1E919;
+&#x1E91A;
+&#x1E91B;
+&#x1E91C;
+&#x1E91D;
+&#x1E91E;
+&#x1E91F;
+&#x1E920;
+&#x1E921;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/all-title-ref.html b/layout/reftests/text-transform/all-title-ref.html
new file mode 100644
index 0000000000..ed9ab70691
--- /dev/null
+++ b/layout/reftests/text-transform/all-title-ref.html
@@ -0,0 +1,1517 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0041;x
+&#x0042;x
+&#x0043;x
+&#x0044;x
+&#x0045;x
+&#x0046;x
+&#x0047;x
+&#x0048;x
+&#x0049;x
+&#x004A;x
+&#x004B;x
+&#x004C;x
+&#x004D;x
+&#x004E;x
+&#x004F;x
+&#x0050;x
+&#x0051;x
+&#x0052;x
+&#x0053;x
+&#x0054;x
+&#x0055;x
+&#x0056;x
+&#x0057;x
+&#x0058;x
+&#x0059;x
+&#x005A;x
+&#x039C;x
+&#x0053;&#x0073;x <!-- LATIN SMALL LETTER SHARP S -->
+&#x00C0;x
+&#x00C1;x
+&#x00C2;x
+&#x00C3;x
+&#x00C4;x
+&#x00C5;x
+&#x00C6;x
+&#x00C7;x
+&#x00C8;x
+&#x00C9;x
+&#x00CA;x
+&#x00CB;x
+&#x00CC;x
+&#x00CD;x
+&#x00CE;x
+&#x00CF;x
+&#x00D0;x
+&#x00D1;x
+&#x00D2;x
+&#x00D3;x
+&#x00D4;x
+&#x00D5;x
+&#x00D6;x
+&#x00D8;x
+&#x00D9;x
+&#x00DA;x
+&#x00DB;x
+&#x00DC;x
+&#x00DD;x
+&#x00DE;x
+&#x0178;x
+&#x0100;x
+&#x0102;x
+&#x0104;x
+&#x0106;x
+&#x0108;x
+&#x010A;x
+&#x010C;x
+&#x010E;x
+&#x0110;x
+&#x0112;x
+&#x0114;x
+&#x0116;x
+&#x0118;x
+&#x011A;x
+&#x011C;x
+&#x011E;x
+&#x0120;x
+&#x0122;x
+&#x0124;x
+&#x0126;x
+&#x0128;x
+&#x012A;x
+&#x012C;x
+&#x012E;x
+&#x0049;x
+&#x0132;x
+&#x0134;x
+&#x0136;x
+&#x0139;x
+&#x013B;x
+&#x013D;x
+&#x013F;x
+&#x0141;x
+&#x0143;x
+&#x0145;x
+&#x0147;x
+&#x02BC;&#x004E;x <!-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+&#x014A;x
+&#x014C;x
+&#x014E;x
+&#x0150;x
+&#x0152;x
+&#x0154;x
+&#x0156;x
+&#x0158;x
+&#x015A;x
+&#x015C;x
+&#x015E;x
+&#x0160;x
+&#x0162;x
+&#x0164;x
+&#x0166;x
+&#x0168;x
+&#x016A;x
+&#x016C;x
+&#x016E;x
+&#x0170;x
+&#x0172;x
+&#x0174;x
+&#x0176;x
+&#x0179;x
+&#x017B;x
+&#x017D;x
+&#x0053;x
+&#x0243;x
+&#x0182;x
+&#x0184;x
+&#x0187;x
+&#x018B;x
+&#x0191;x
+&#x01F6;x
+&#x0198;x
+&#x023D;x
+&#x0220;x
+&#x01A0;x
+&#x01A2;x
+&#x01A4;x
+&#x01A7;x
+&#x01AC;x
+&#x01AF;x
+&#x01B3;x
+&#x01B5;x
+&#x01B8;x
+&#x01BC;x
+&#x01F7;x
+&#x01C4;x
+&#x01C5;x
+&#x01C5;x
+&#x01C7;x
+&#x01C8;x
+&#x01C8;x
+&#x01CA;x
+&#x01CB;x
+&#x01CB;x
+&#x01CD;x
+&#x01CF;x
+&#x01D1;x
+&#x01D3;x
+&#x01D5;x
+&#x01D7;x
+&#x01D9;x
+&#x01DB;x
+&#x018E;x
+&#x01DE;x
+&#x01E0;x
+&#x01E2;x
+&#x01E4;x
+&#x01E6;x
+&#x01E8;x
+&#x01EA;x
+&#x01EC;x
+&#x01EE;x
+&#x004A;&#x030C;x <!-- LATIN SMALL LETTER J WITH CARON -->
+&#x01F1;x
+&#x01F2;x
+&#x01F2;x
+&#x01F4;x
+&#x01F8;x
+&#x01FA;x
+&#x01FC;x
+&#x01FE;x
+&#x0200;x
+&#x0202;x
+&#x0204;x
+&#x0206;x
+&#x0208;x
+&#x020A;x
+&#x020C;x
+&#x020E;x
+&#x0210;x
+&#x0212;x
+&#x0214;x
+&#x0216;x
+&#x0218;x
+&#x021A;x
+&#x021C;x
+&#x021E;x
+&#x0222;x
+&#x0224;x
+&#x0226;x
+&#x0228;x
+&#x022A;x
+&#x022C;x
+&#x022E;x
+&#x0230;x
+&#x0232;x
+&#x023B;x
+&#x2C7E;x
+&#x2C7F;x
+&#x0241;x
+&#x0246;x
+&#x0248;x
+&#x024A;x
+&#x024C;x
+&#x024E;x
+&#x2C6F;x
+&#x2C6D;x
+&#x2C70;x
+&#x0181;x
+&#x0186;x
+&#x0189;x
+&#x018A;x
+&#x018F;x
+&#x0190;x
+&#xA7AB;x
+&#x0193;x
+&#xA7AC;x
+&#x0194;x
+&#xA78D;x
+&#xA7AA;x
+&#x0197;x
+&#x0196;x
+&#xA7AE;x
+&#x2C62;x
+&#xA7AD;x
+&#x019C;x
+&#x2C6E;x
+&#x019D;x
+&#x019F;x
+&#x2C64;x
+&#x01A6;x
+&#xA7C5;x
+&#x01A9;x
+&#xA7B1;x
+&#x01AE;x
+&#x0244;x
+&#x01B1;x
+&#x01B2;x
+&#x0245;x
+&#x01B7;x
+&#xA7B2;x
+&#xA7B0;x
+&#x0345;X
+&#x0370;x
+&#x0372;x
+&#x0376;x
+&#x03FD;x
+&#x03FE;x
+&#x03FF;x
+&#x03AA;&#x0301;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
+&#x0386;x
+&#x0388;x
+&#x0389;x
+&#x038A;x
+&#x03AB;&#x0301;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
+&#x0391;x
+&#x0392;x
+&#x0393;x
+&#x0394;x
+&#x0395;x
+&#x0396;x
+&#x0397;x
+&#x0398;x
+&#x0399;x
+&#x039A;x
+&#x039B;x
+&#x039C;x
+&#x039D;x
+&#x039E;x
+&#x039F;x
+&#x03A0;x
+&#x03A1;x
+&#x03A3;x
+&#x03A3;x
+&#x03A4;x
+&#x03A5;x
+&#x03A6;x
+&#x03A7;x
+&#x03A8;x
+&#x03A9;x
+&#x03AA;x
+&#x03AB;x
+&#x038C;x
+&#x038E;x
+&#x038F;x
+&#x0392;x
+&#x0398;x
+&#x03A6;x
+&#x03A0;x
+&#x03CF;x
+&#x03D8;x
+&#x03DA;x
+&#x03DC;x
+&#x03DE;x
+&#x03E0;x
+&#x03E2;x
+&#x03E4;x
+&#x03E6;x
+&#x03E8;x
+&#x03EA;x
+&#x03EC;x
+&#x03EE;x
+&#x039A;x
+&#x03A1;x
+&#x03F9;x
+&#x037F;x
+&#x0395;x
+&#x03F7;x
+&#x03FA;x
+&#x0410;x
+&#x0411;x
+&#x0412;x
+&#x0413;x
+&#x0414;x
+&#x0415;x
+&#x0416;x
+&#x0417;x
+&#x0418;x
+&#x0419;x
+&#x041A;x
+&#x041B;x
+&#x041C;x
+&#x041D;x
+&#x041E;x
+&#x041F;x
+&#x0420;x
+&#x0421;x
+&#x0422;x
+&#x0423;x
+&#x0424;x
+&#x0425;x
+&#x0426;x
+&#x0427;x
+&#x0428;x
+&#x0429;x
+&#x042A;x
+&#x042B;x
+&#x042C;x
+&#x042D;x
+&#x042E;x
+&#x042F;x
+&#x0400;x
+&#x0401;x
+&#x0402;x
+&#x0403;x
+&#x0404;x
+&#x0405;x
+&#x0406;x
+&#x0407;x
+&#x0408;x
+&#x0409;x
+&#x040A;x
+&#x040B;x
+&#x040C;x
+&#x040D;x
+&#x040E;x
+&#x040F;x
+&#x0460;x
+&#x0462;x
+&#x0464;x
+&#x0466;x
+&#x0468;x
+&#x046A;x
+&#x046C;x
+&#x046E;x
+&#x0470;x
+&#x0472;x
+&#x0474;x
+&#x0476;x
+&#x0478;x
+&#x047A;x
+&#x047C;x
+&#x047E;x
+&#x0480;x
+&#x048A;x
+&#x048C;x
+&#x048E;x
+&#x0490;x
+&#x0492;x
+&#x0494;x
+&#x0496;x
+&#x0498;x
+&#x049A;x
+&#x049C;x
+&#x049E;x
+&#x04A0;x
+&#x04A2;x
+&#x04A4;x
+&#x04A6;x
+&#x04A8;x
+&#x04AA;x
+&#x04AC;x
+&#x04AE;x
+&#x04B0;x
+&#x04B2;x
+&#x04B4;x
+&#x04B6;x
+&#x04B8;x
+&#x04BA;x
+&#x04BC;x
+&#x04BE;x
+&#x04C1;x
+&#x04C3;x
+&#x04C5;x
+&#x04C7;x
+&#x04C9;x
+&#x04CB;x
+&#x04CD;x
+&#x04C0;x
+&#x04D0;x
+&#x04D2;x
+&#x04D4;x
+&#x04D6;x
+&#x04D8;x
+&#x04DA;x
+&#x04DC;x
+&#x04DE;x
+&#x04E0;x
+&#x04E2;x
+&#x04E4;x
+&#x04E6;x
+&#x04E8;x
+&#x04EA;x
+&#x04EC;x
+&#x04EE;x
+&#x04F0;x
+&#x04F2;x
+&#x04F4;x
+&#x04F6;x
+&#x04F8;x
+&#x04FA;x
+&#x04FC;x
+&#x04FE;x
+&#x0500;x
+&#x0502;x
+&#x0504;x
+&#x0506;x
+&#x0508;x
+&#x050A;x
+&#x050C;x
+&#x050E;x
+&#x0510;x
+&#x0512;x
+&#x0514;x
+&#x0516;x
+&#x0518;x
+&#x051A;x
+&#x051C;x
+&#x051E;x
+&#x0520;x
+&#x0522;x
+&#x0524;x
+&#x0526;x
+&#x0528;x
+&#x052A;x
+&#x052C;x
+&#x052E;x
+&#x0531;x
+&#x0532;x
+&#x0533;x
+&#x0534;x
+&#x0535;x
+&#x0536;x
+&#x0537;x
+&#x0538;x
+&#x0539;x
+&#x053A;x
+&#x053B;x
+&#x053C;x
+&#x053D;x
+&#x053E;x
+&#x053F;x
+&#x0540;x
+&#x0541;x
+&#x0542;x
+&#x0543;x
+&#x0544;x
+&#x0545;x
+&#x0546;x
+&#x0547;x
+&#x0548;x
+&#x0549;x
+&#x054A;x
+&#x054B;x
+&#x054C;x
+&#x054D;x
+&#x054E;x
+&#x054F;x
+&#x0550;x
+&#x0551;x
+&#x0552;x
+&#x0553;x
+&#x0554;x
+&#x0555;x
+&#x0556;x
+&#x0535;&#x0582;x <!-- ARMENIAN SMALL LIGATURE ECH YIWN -->
+&#x10D0;x
+&#x10D1;x
+&#x10D2;x
+&#x10D3;x
+&#x10D4;x
+&#x10D5;x
+&#x10D6;x
+&#x10D7;x
+&#x10D8;x
+&#x10D9;x
+&#x10DA;x
+&#x10DB;x
+&#x10DC;x
+&#x10DD;x
+&#x10DE;x
+&#x10DF;x
+&#x10E0;x
+&#x10E1;x
+&#x10E2;x
+&#x10E3;x
+&#x10E4;x
+&#x10E5;x
+&#x10E6;x
+&#x10E7;x
+&#x10E8;x
+&#x10E9;x
+&#x10EA;x
+&#x10EB;x
+&#x10EC;x
+&#x10ED;x
+&#x10EE;x
+&#x10EF;x
+&#x10F0;x
+&#x10F1;x
+&#x10F2;x
+&#x10F3;x
+&#x10F4;x
+&#x10F5;x
+&#x10F6;x
+&#x10F7;x
+&#x10F8;x
+&#x10F9;x
+&#x10FA;x
+&#x10FD;x
+&#x10FE;x
+&#x10FF;x
+&#x13F0;x
+&#x13F1;x
+&#x13F2;x
+&#x13F3;x
+&#x13F4;x
+&#x13F5;x
+&#x0412;x
+&#x0414;x
+&#x041E;x
+&#x0421;x
+&#x0422;x
+&#x0422;x
+&#x042A;x
+&#x0462;x
+&#xA64A;x
+&#xA77D;x
+&#x2C63;x
+&#xA7C6;x
+&#x1E00;x
+&#x1E02;x
+&#x1E04;x
+&#x1E06;x
+&#x1E08;x
+&#x1E0A;x
+&#x1E0C;x
+&#x1E0E;x
+&#x1E10;x
+&#x1E12;x
+&#x1E14;x
+&#x1E16;x
+&#x1E18;x
+&#x1E1A;x
+&#x1E1C;x
+&#x1E1E;x
+&#x1E20;x
+&#x1E22;x
+&#x1E24;x
+&#x1E26;x
+&#x1E28;x
+&#x1E2A;x
+&#x1E2C;x
+&#x1E2E;x
+&#x1E30;x
+&#x1E32;x
+&#x1E34;x
+&#x1E36;x
+&#x1E38;x
+&#x1E3A;x
+&#x1E3C;x
+&#x1E3E;x
+&#x1E40;x
+&#x1E42;x
+&#x1E44;x
+&#x1E46;x
+&#x1E48;x
+&#x1E4A;x
+&#x1E4C;x
+&#x1E4E;x
+&#x1E50;x
+&#x1E52;x
+&#x1E54;x
+&#x1E56;x
+&#x1E58;x
+&#x1E5A;x
+&#x1E5C;x
+&#x1E5E;x
+&#x1E60;x
+&#x1E62;x
+&#x1E64;x
+&#x1E66;x
+&#x1E68;x
+&#x1E6A;x
+&#x1E6C;x
+&#x1E6E;x
+&#x1E70;x
+&#x1E72;x
+&#x1E74;x
+&#x1E76;x
+&#x1E78;x
+&#x1E7A;x
+&#x1E7C;x
+&#x1E7E;x
+&#x1E80;x
+&#x1E82;x
+&#x1E84;x
+&#x1E86;x
+&#x1E88;x
+&#x1E8A;x
+&#x1E8C;x
+&#x1E8E;x
+&#x1E90;x
+&#x1E92;x
+&#x1E94;x
+&#x0048;&#x0331;x <!-- LATIN SMALL LETTER H WITH LINE BELOW -->
+&#x0054;&#x0308;x <!-- LATIN SMALL LETTER T WITH DIAERESIS -->
+&#x0057;&#x030A;x <!-- LATIN SMALL LETTER W WITH RING ABOVE -->
+&#x0059;&#x030A;x <!-- LATIN SMALL LETTER Y WITH RING ABOVE -->
+&#x0041;&#x02BE;x <!-- LATIN SMALL LETTER A WITH RIGHT HALF RING -->
+&#x1E60;x
+&#x1EA0;x
+&#x1EA2;x
+&#x1EA4;x
+&#x1EA6;x
+&#x1EA8;x
+&#x1EAA;x
+&#x1EAC;x
+&#x1EAE;x
+&#x1EB0;x
+&#x1EB2;x
+&#x1EB4;x
+&#x1EB6;x
+&#x1EB8;x
+&#x1EBA;x
+&#x1EBC;x
+&#x1EBE;x
+&#x1EC0;x
+&#x1EC2;x
+&#x1EC4;x
+&#x1EC6;x
+&#x1EC8;x
+&#x1ECA;x
+&#x1ECC;x
+&#x1ECE;x
+&#x1ED0;x
+&#x1ED2;x
+&#x1ED4;x
+&#x1ED6;x
+&#x1ED8;x
+&#x1EDA;x
+&#x1EDC;x
+&#x1EDE;x
+&#x1EE0;x
+&#x1EE2;x
+&#x1EE4;x
+&#x1EE6;x
+&#x1EE8;x
+&#x1EEA;x
+&#x1EEC;x
+&#x1EEE;x
+&#x1EF0;x
+&#x1EF2;x
+&#x1EF4;x
+&#x1EF6;x
+&#x1EF8;x
+&#x1EFA;x
+&#x1EFC;x
+&#x1EFE;x
+&#x1F08;x
+&#x1F09;x
+&#x1F0A;x
+&#x1F0B;x
+&#x1F0C;x
+&#x1F0D;x
+&#x1F0E;x
+&#x1F0F;x
+&#x1F18;x
+&#x1F19;x
+&#x1F1A;x
+&#x1F1B;x
+&#x1F1C;x
+&#x1F1D;x
+&#x1F28;x
+&#x1F29;x
+&#x1F2A;x
+&#x1F2B;x
+&#x1F2C;x
+&#x1F2D;x
+&#x1F2E;x
+&#x1F2F;x
+&#x1F38;x
+&#x1F39;x
+&#x1F3A;x
+&#x1F3B;x
+&#x1F3C;x
+&#x1F3D;x
+&#x1F3E;x
+&#x1F3F;x
+&#x1F48;x
+&#x1F49;x
+&#x1F4A;x
+&#x1F4B;x
+&#x1F4C;x
+&#x1F4D;x
+&#x03A5;&#x0313;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI -->
+&#x1F59;x
+&#x03A5;&#x0313;&#x0300;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -->
+&#x1F5B;x
+&#x03A5;&#x0313;&#x0301;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -->
+&#x1F5D;x
+&#x03A5;&#x0313;&#x0342;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -->
+&#x1F5F;x
+&#x1F68;x
+&#x1F69;x
+&#x1F6A;x
+&#x1F6B;x
+&#x1F6C;x
+&#x1F6D;x
+&#x1F6E;x
+&#x1F6F;x
+&#x1FBA;x
+&#x1FBB;x
+&#x1FC8;x
+&#x1FC9;x
+&#x1FCA;x
+&#x1FCB;x
+&#x1FDA;x
+&#x1FDB;x
+&#x1FF8;x
+&#x1FF9;x
+&#x1FEA;x
+&#x1FEB;x
+&#x1FFA;x
+&#x1FFB;x
+&#x1F88;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F89;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F8A;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F8B;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F8C;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F8D;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F8E;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F8F;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F98;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F99;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F9A;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F9B;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F9C;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F9D;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F9E;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F9F;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FA8;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1FA9;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1FAA;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1FAB;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1FAC;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1FAD;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1FAE;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FAF;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FB8;x
+&#x1FB9;x
+&#x1FBA;&#x0345;x <!-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FBC;x <!-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -->
+&#x0386;&#x0345;x <!-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -->
+&#x0391;&#x0342;x <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI -->
+&#x0391;&#x0342;&#x0345;x <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x0399;x
+&#x1FCA;&#x0345;x <!-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FCC;x <!-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -->
+&#x0389;&#x0345;x <!-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -->
+&#x0397;&#x0342;x <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI -->
+&#x0397;&#x0342;&#x0345;x <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FD8;x
+&#x1FD9;x
+&#x03AA;&#x0300;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -->
+&#x03AA;&#x0301;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -->
+&#x0399;&#x0342;x <!-- GREEK SMALL LETTER IOTA WITH PERISPOMENI -->
+&#x03AA;&#x0342;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FE8;x
+&#x1FE9;x
+&#x03AB;&#x0300;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -->
+&#x03AB;&#x0301;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -->
+&#x03A1;&#x0313;x <!-- GREEK SMALL LETTER RHO WITH PSILI -->
+&#x1FEC;x
+&#x03A5;&#x0342;x <!-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI -->
+&#x03AB;&#x0342;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FFA;&#x0345;x <!-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FFC;x <!-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -->
+&#x038F;&#x0345;x <!-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -->
+&#x03A9;&#x0342;x <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI -->
+&#x03A9;&#x0342;&#x0345;x <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x2132;x
+&#x2160;x
+&#x2161;x
+&#x2162;x
+&#x2163;x
+&#x2164;x
+&#x2165;x
+&#x2166;x
+&#x2167;x
+&#x2168;x
+&#x2169;x
+&#x216A;x
+&#x216B;x
+&#x216C;x
+&#x216D;x
+&#x216E;x
+&#x216F;x
+&#x2183;x
+&#x24D0;X
+&#x24D1;X
+&#x24D2;X
+&#x24D3;X
+&#x24D4;X
+&#x24D5;X
+&#x24D6;X
+&#x24D7;X
+&#x24D8;X
+&#x24D9;X
+&#x24DA;X
+&#x24DB;X
+&#x24DC;X
+&#x24DD;X
+&#x24DE;X
+&#x24DF;X
+&#x24E0;X
+&#x24E1;X
+&#x24E2;X
+&#x24E3;X
+&#x24E4;X
+&#x24E5;X
+&#x24E6;X
+&#x24E7;X
+&#x24E8;X
+&#x24E9;X
+&#x2C00;x
+&#x2C01;x
+&#x2C02;x
+&#x2C03;x
+&#x2C04;x
+&#x2C05;x
+&#x2C06;x
+&#x2C07;x
+&#x2C08;x
+&#x2C09;x
+&#x2C0A;x
+&#x2C0B;x
+&#x2C0C;x
+&#x2C0D;x
+&#x2C0E;x
+&#x2C0F;x
+&#x2C10;x
+&#x2C11;x
+&#x2C12;x
+&#x2C13;x
+&#x2C14;x
+&#x2C15;x
+&#x2C16;x
+&#x2C17;x
+&#x2C18;x
+&#x2C19;x
+&#x2C1A;x
+&#x2C1B;x
+&#x2C1C;x
+&#x2C1D;x
+&#x2C1E;x
+&#x2C1F;x
+&#x2C20;x
+&#x2C21;x
+&#x2C22;x
+&#x2C23;x
+&#x2C24;x
+&#x2C25;x
+&#x2C26;x
+&#x2C27;x
+&#x2C28;x
+&#x2C29;x
+&#x2C2A;x
+&#x2C2B;x
+&#x2C2C;x
+&#x2C2D;x
+&#x2C2E;x
+&#x2C2F;x
+&#x2C60;x
+&#x023A;x
+&#x023E;x
+&#x2C67;x
+&#x2C69;x
+&#x2C6B;x
+&#x2C72;x
+&#x2C75;x
+&#x2C80;x
+&#x2C82;x
+&#x2C84;x
+&#x2C86;x
+&#x2C88;x
+&#x2C8A;x
+&#x2C8C;x
+&#x2C8E;x
+&#x2C90;x
+&#x2C92;x
+&#x2C94;x
+&#x2C96;x
+&#x2C98;x
+&#x2C9A;x
+&#x2C9C;x
+&#x2C9E;x
+&#x2CA0;x
+&#x2CA2;x
+&#x2CA4;x
+&#x2CA6;x
+&#x2CA8;x
+&#x2CAA;x
+&#x2CAC;x
+&#x2CAE;x
+&#x2CB0;x
+&#x2CB2;x
+&#x2CB4;x
+&#x2CB6;x
+&#x2CB8;x
+&#x2CBA;x
+&#x2CBC;x
+&#x2CBE;x
+&#x2CC0;x
+&#x2CC2;x
+&#x2CC4;x
+&#x2CC6;x
+&#x2CC8;x
+&#x2CCA;x
+&#x2CCC;x
+&#x2CCE;x
+&#x2CD0;x
+&#x2CD2;x
+&#x2CD4;x
+&#x2CD6;x
+&#x2CD8;x
+&#x2CDA;x
+&#x2CDC;x
+&#x2CDE;x
+&#x2CE0;x
+&#x2CE2;x
+&#x2CEB;x
+&#x2CED;x
+&#x2CF2;x
+&#x10A0;x
+&#x10A1;x
+&#x10A2;x
+&#x10A3;x
+&#x10A4;x
+&#x10A5;x
+&#x10A6;x
+&#x10A7;x
+&#x10A8;x
+&#x10A9;x
+&#x10AA;x
+&#x10AB;x
+&#x10AC;x
+&#x10AD;x
+&#x10AE;x
+&#x10AF;x
+&#x10B0;x
+&#x10B1;x
+&#x10B2;x
+&#x10B3;x
+&#x10B4;x
+&#x10B5;x
+&#x10B6;x
+&#x10B7;x
+&#x10B8;x
+&#x10B9;x
+&#x10BA;x
+&#x10BB;x
+&#x10BC;x
+&#x10BD;x
+&#x10BE;x
+&#x10BF;x
+&#x10C0;x
+&#x10C1;x
+&#x10C2;x
+&#x10C3;x
+&#x10C4;x
+&#x10C5;x
+&#x10C7;x
+&#x10CD;x
+&#xA640;x
+&#xA642;x
+&#xA644;x
+&#xA646;x
+&#xA648;x
+&#xA64A;x
+&#xA64C;x
+&#xA64E;x
+&#xA650;x
+&#xA652;x
+&#xA654;x
+&#xA656;x
+&#xA658;x
+&#xA65A;x
+&#xA65C;x
+&#xA65E;x
+&#xA660;x
+&#xA662;x
+&#xA664;x
+&#xA666;x
+&#xA668;x
+&#xA66A;x
+&#xA66C;x
+&#xA680;x
+&#xA682;x
+&#xA684;x
+&#xA686;x
+&#xA688;x
+&#xA68A;x
+&#xA68C;x
+&#xA68E;x
+&#xA690;x
+&#xA692;x
+&#xA694;x
+&#xA696;x
+&#xA698;x
+&#xA69A;x
+&#xA722;x
+&#xA724;x
+&#xA726;x
+&#xA728;x
+&#xA72A;x
+&#xA72C;x
+&#xA72E;x
+&#xA732;x
+&#xA734;x
+&#xA736;x
+&#xA738;x
+&#xA73A;x
+&#xA73C;x
+&#xA73E;x
+&#xA740;x
+&#xA742;x
+&#xA744;x
+&#xA746;x
+&#xA748;x
+&#xA74A;x
+&#xA74C;x
+&#xA74E;x
+&#xA750;x
+&#xA752;x
+&#xA754;x
+&#xA756;x
+&#xA758;x
+&#xA75A;x
+&#xA75C;x
+&#xA75E;x
+&#xA760;x
+&#xA762;x
+&#xA764;x
+&#xA766;x
+&#xA768;x
+&#xA76A;x
+&#xA76C;x
+&#xA76E;x
+&#xA779;x
+&#xA77B;x
+&#xA77E;x
+&#xA780;x
+&#xA782;x
+&#xA784;x
+&#xA786;x
+&#xA78B;x
+&#xA790;x
+&#xA792;x
+&#xA7C4;x
+&#xA796;x
+&#xA798;x
+&#xA79A;x
+&#xA79C;x
+&#xA79E;x
+&#xA7A0;x
+&#xA7A2;x
+&#xA7A4;x
+&#xA7A6;x
+&#xA7A8;x
+&#xA7B4;x
+&#xA7B6;x
+&#xA7B8;x
+&#xA7BA;x
+&#xA7BC;x
+&#xA7BE;x
+&#xA7C0;x
+&#xA7C2;x
+&#xA7C7;x
+&#xA7C9;x
+&#xA7D0;x
+&#xA7D6;x
+&#xA7D8;x
+&#xA7F5;x
+&#xA7B3;x
+&#x13A0;x
+&#x13A1;x
+&#x13A2;x
+&#x13A3;x
+&#x13A4;x
+&#x13A5;x
+&#x13A6;x
+&#x13A7;x
+&#x13A8;x
+&#x13A9;x
+&#x13AA;x
+&#x13AB;x
+&#x13AC;x
+&#x13AD;x
+&#x13AE;x
+&#x13AF;x
+&#x13B0;x
+&#x13B1;x
+&#x13B2;x
+&#x13B3;x
+&#x13B4;x
+&#x13B5;x
+&#x13B6;x
+&#x13B7;x
+&#x13B8;x
+&#x13B9;x
+&#x13BA;x
+&#x13BB;x
+&#x13BC;x
+&#x13BD;x
+&#x13BE;x
+&#x13BF;x
+&#x13C0;x
+&#x13C1;x
+&#x13C2;x
+&#x13C3;x
+&#x13C4;x
+&#x13C5;x
+&#x13C6;x
+&#x13C7;x
+&#x13C8;x
+&#x13C9;x
+&#x13CA;x
+&#x13CB;x
+&#x13CC;x
+&#x13CD;x
+&#x13CE;x
+&#x13CF;x
+&#x13D0;x
+&#x13D1;x
+&#x13D2;x
+&#x13D3;x
+&#x13D4;x
+&#x13D5;x
+&#x13D6;x
+&#x13D7;x
+&#x13D8;x
+&#x13D9;x
+&#x13DA;x
+&#x13DB;x
+&#x13DC;x
+&#x13DD;x
+&#x13DE;x
+&#x13DF;x
+&#x13E0;x
+&#x13E1;x
+&#x13E2;x
+&#x13E3;x
+&#x13E4;x
+&#x13E5;x
+&#x13E6;x
+&#x13E7;x
+&#x13E8;x
+&#x13E9;x
+&#x13EA;x
+&#x13EB;x
+&#x13EC;x
+&#x13ED;x
+&#x13EE;x
+&#x13EF;x
+&#x0046;&#x0066;x <!-- LATIN SMALL LIGATURE FF -->
+&#x0046;&#x0069;x <!-- LATIN SMALL LIGATURE FI -->
+&#x0046;&#x006C;x <!-- LATIN SMALL LIGATURE FL -->
+&#x0046;&#x0066;&#x0069;x <!-- LATIN SMALL LIGATURE FFI -->
+&#x0046;&#x0066;&#x006C;x <!-- LATIN SMALL LIGATURE FFL -->
+&#x0053;&#x0074;x <!-- LATIN SMALL LIGATURE LONG S T -->
+&#x0053;&#x0074;x <!-- LATIN SMALL LIGATURE ST -->
+&#x0544;&#x0576;x <!-- ARMENIAN SMALL LIGATURE MEN NOW -->
+&#x0544;&#x0565;x <!-- ARMENIAN SMALL LIGATURE MEN ECH -->
+&#x0544;&#x056B;x <!-- ARMENIAN SMALL LIGATURE MEN INI -->
+&#x054E;&#x0576;x <!-- ARMENIAN SMALL LIGATURE VEW NOW -->
+&#x0544;&#x056D;x <!-- ARMENIAN SMALL LIGATURE MEN XEH -->
+&#xFF21;x
+&#xFF22;x
+&#xFF23;x
+&#xFF24;x
+&#xFF25;x
+&#xFF26;x
+&#xFF27;x
+&#xFF28;x
+&#xFF29;x
+&#xFF2A;x
+&#xFF2B;x
+&#xFF2C;x
+&#xFF2D;x
+&#xFF2E;x
+&#xFF2F;x
+&#xFF30;x
+&#xFF31;x
+&#xFF32;x
+&#xFF33;x
+&#xFF34;x
+&#xFF35;x
+&#xFF36;x
+&#xFF37;x
+&#xFF38;x
+&#xFF39;x
+&#xFF3A;x
+&#x10400;x
+&#x10401;x
+&#x10402;x
+&#x10403;x
+&#x10404;x
+&#x10405;x
+&#x10406;x
+&#x10407;x
+&#x10408;x
+&#x10409;x
+&#x1040A;x
+&#x1040B;x
+&#x1040C;x
+&#x1040D;x
+&#x1040E;x
+&#x1040F;x
+&#x10410;x
+&#x10411;x
+&#x10412;x
+&#x10413;x
+&#x10414;x
+&#x10415;x
+&#x10416;x
+&#x10417;x
+&#x10418;x
+&#x10419;x
+&#x1041A;x
+&#x1041B;x
+&#x1041C;x
+&#x1041D;x
+&#x1041E;x
+&#x1041F;x
+&#x10420;x
+&#x10421;x
+&#x10422;x
+&#x10423;x
+&#x10424;x
+&#x10425;x
+&#x10426;x
+&#x10427;x
+&#x104B0;x
+&#x104B1;x
+&#x104B2;x
+&#x104B3;x
+&#x104B4;x
+&#x104B5;x
+&#x104B6;x
+&#x104B7;x
+&#x104B8;x
+&#x104B9;x
+&#x104BA;x
+&#x104BB;x
+&#x104BC;x
+&#x104BD;x
+&#x104BE;x
+&#x104BF;x
+&#x104C0;x
+&#x104C1;x
+&#x104C2;x
+&#x104C3;x
+&#x104C4;x
+&#x104C5;x
+&#x104C6;x
+&#x104C7;x
+&#x104C8;x
+&#x104C9;x
+&#x104CA;x
+&#x104CB;x
+&#x104CC;x
+&#x104CD;x
+&#x104CE;x
+&#x104CF;x
+&#x104D0;x
+&#x104D1;x
+&#x104D2;x
+&#x104D3;x
+&#x10570;x
+&#x10571;x
+&#x10572;x
+&#x10573;x
+&#x10574;x
+&#x10575;x
+&#x10576;x
+&#x10577;x
+&#x10578;x
+&#x10579;x
+&#x1057A;x
+&#x1057C;x
+&#x1057D;x
+&#x1057E;x
+&#x1057F;x
+&#x10580;x
+&#x10581;x
+&#x10582;x
+&#x10583;x
+&#x10584;x
+&#x10585;x
+&#x10586;x
+&#x10587;x
+&#x10588;x
+&#x10589;x
+&#x1058A;x
+&#x1058C;x
+&#x1058D;x
+&#x1058E;x
+&#x1058F;x
+&#x10590;x
+&#x10591;x
+&#x10592;x
+&#x10594;x
+&#x10595;x
+&#x10C80;x
+&#x10C81;x
+&#x10C82;x
+&#x10C83;x
+&#x10C84;x
+&#x10C85;x
+&#x10C86;x
+&#x10C87;x
+&#x10C88;x
+&#x10C89;x
+&#x10C8A;x
+&#x10C8B;x
+&#x10C8C;x
+&#x10C8D;x
+&#x10C8E;x
+&#x10C8F;x
+&#x10C90;x
+&#x10C91;x
+&#x10C92;x
+&#x10C93;x
+&#x10C94;x
+&#x10C95;x
+&#x10C96;x
+&#x10C97;x
+&#x10C98;x
+&#x10C99;x
+&#x10C9A;x
+&#x10C9B;x
+&#x10C9C;x
+&#x10C9D;x
+&#x10C9E;x
+&#x10C9F;x
+&#x10CA0;x
+&#x10CA1;x
+&#x10CA2;x
+&#x10CA3;x
+&#x10CA4;x
+&#x10CA5;x
+&#x10CA6;x
+&#x10CA7;x
+&#x10CA8;x
+&#x10CA9;x
+&#x10CAA;x
+&#x10CAB;x
+&#x10CAC;x
+&#x10CAD;x
+&#x10CAE;x
+&#x10CAF;x
+&#x10CB0;x
+&#x10CB1;x
+&#x10CB2;x
+&#x118A0;x
+&#x118A1;x
+&#x118A2;x
+&#x118A3;x
+&#x118A4;x
+&#x118A5;x
+&#x118A6;x
+&#x118A7;x
+&#x118A8;x
+&#x118A9;x
+&#x118AA;x
+&#x118AB;x
+&#x118AC;x
+&#x118AD;x
+&#x118AE;x
+&#x118AF;x
+&#x118B0;x
+&#x118B1;x
+&#x118B2;x
+&#x118B3;x
+&#x118B4;x
+&#x118B5;x
+&#x118B6;x
+&#x118B7;x
+&#x118B8;x
+&#x118B9;x
+&#x118BA;x
+&#x118BB;x
+&#x118BC;x
+&#x118BD;x
+&#x118BE;x
+&#x118BF;x
+&#x16E40;x
+&#x16E41;x
+&#x16E42;x
+&#x16E43;x
+&#x16E44;x
+&#x16E45;x
+&#x16E46;x
+&#x16E47;x
+&#x16E48;x
+&#x16E49;x
+&#x16E4A;x
+&#x16E4B;x
+&#x16E4C;x
+&#x16E4D;x
+&#x16E4E;x
+&#x16E4F;x
+&#x16E50;x
+&#x16E51;x
+&#x16E52;x
+&#x16E53;x
+&#x16E54;x
+&#x16E55;x
+&#x16E56;x
+&#x16E57;x
+&#x16E58;x
+&#x16E59;x
+&#x16E5A;x
+&#x16E5B;x
+&#x16E5C;x
+&#x16E5D;x
+&#x16E5E;x
+&#x16E5F;x
+&#x1E900;x
+&#x1E901;x
+&#x1E902;x
+&#x1E903;x
+&#x1E904;x
+&#x1E905;x
+&#x1E906;x
+&#x1E907;x
+&#x1E908;x
+&#x1E909;x
+&#x1E90A;x
+&#x1E90B;x
+&#x1E90C;x
+&#x1E90D;x
+&#x1E90E;x
+&#x1E90F;x
+&#x1E910;x
+&#x1E911;x
+&#x1E912;x
+&#x1E913;x
+&#x1E914;x
+&#x1E915;x
+&#x1E916;x
+&#x1E917;x
+&#x1E918;x
+&#x1E919;x
+&#x1E91A;x
+&#x1E91B;x
+&#x1E91C;x
+&#x1E91D;x
+&#x1E91E;x
+&#x1E91F;x
+&#x1E920;x
+&#x1E921;x
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/all-title.html b/layout/reftests/text-transform/all-title.html
new file mode 100644
index 0000000000..29b5a45f1a
--- /dev/null
+++ b/layout/reftests/text-transform/all-title.html
@@ -0,0 +1,1517 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; text-transform: capitalize; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0061;x
+&#x0062;x
+&#x0063;x
+&#x0064;x
+&#x0065;x
+&#x0066;x
+&#x0067;x
+&#x0068;x
+&#x0069;x
+&#x006A;x
+&#x006B;x
+&#x006C;x
+&#x006D;x
+&#x006E;x
+&#x006F;x
+&#x0070;x
+&#x0071;x
+&#x0072;x
+&#x0073;x
+&#x0074;x
+&#x0075;x
+&#x0076;x
+&#x0077;x
+&#x0078;x
+&#x0079;x
+&#x007A;x
+&#x00B5;x
+&#x00DF;x <!-- LATIN SMALL LETTER SHARP S -->
+&#x00E0;x
+&#x00E1;x
+&#x00E2;x
+&#x00E3;x
+&#x00E4;x
+&#x00E5;x
+&#x00E6;x
+&#x00E7;x
+&#x00E8;x
+&#x00E9;x
+&#x00EA;x
+&#x00EB;x
+&#x00EC;x
+&#x00ED;x
+&#x00EE;x
+&#x00EF;x
+&#x00F0;x
+&#x00F1;x
+&#x00F2;x
+&#x00F3;x
+&#x00F4;x
+&#x00F5;x
+&#x00F6;x
+&#x00F8;x
+&#x00F9;x
+&#x00FA;x
+&#x00FB;x
+&#x00FC;x
+&#x00FD;x
+&#x00FE;x
+&#x00FF;x
+&#x0101;x
+&#x0103;x
+&#x0105;x
+&#x0107;x
+&#x0109;x
+&#x010B;x
+&#x010D;x
+&#x010F;x
+&#x0111;x
+&#x0113;x
+&#x0115;x
+&#x0117;x
+&#x0119;x
+&#x011B;x
+&#x011D;x
+&#x011F;x
+&#x0121;x
+&#x0123;x
+&#x0125;x
+&#x0127;x
+&#x0129;x
+&#x012B;x
+&#x012D;x
+&#x012F;x
+&#x0131;x
+&#x0133;x
+&#x0135;x
+&#x0137;x
+&#x013A;x
+&#x013C;x
+&#x013E;x
+&#x0140;x
+&#x0142;x
+&#x0144;x
+&#x0146;x
+&#x0148;x
+&#x0149;x <!-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+&#x014B;x
+&#x014D;x
+&#x014F;x
+&#x0151;x
+&#x0153;x
+&#x0155;x
+&#x0157;x
+&#x0159;x
+&#x015B;x
+&#x015D;x
+&#x015F;x
+&#x0161;x
+&#x0163;x
+&#x0165;x
+&#x0167;x
+&#x0169;x
+&#x016B;x
+&#x016D;x
+&#x016F;x
+&#x0171;x
+&#x0173;x
+&#x0175;x
+&#x0177;x
+&#x017A;x
+&#x017C;x
+&#x017E;x
+&#x017F;x
+&#x0180;x
+&#x0183;x
+&#x0185;x
+&#x0188;x
+&#x018C;x
+&#x0192;x
+&#x0195;x
+&#x0199;x
+&#x019A;x
+&#x019E;x
+&#x01A1;x
+&#x01A3;x
+&#x01A5;x
+&#x01A8;x
+&#x01AD;x
+&#x01B0;x
+&#x01B4;x
+&#x01B6;x
+&#x01B9;x
+&#x01BD;x
+&#x01BF;x
+&#x01C4;x
+&#x01C5;x
+&#x01C6;x
+&#x01C7;x
+&#x01C8;x
+&#x01C9;x
+&#x01CA;x
+&#x01CB;x
+&#x01CC;x
+&#x01CE;x
+&#x01D0;x
+&#x01D2;x
+&#x01D4;x
+&#x01D6;x
+&#x01D8;x
+&#x01DA;x
+&#x01DC;x
+&#x01DD;x
+&#x01DF;x
+&#x01E1;x
+&#x01E3;x
+&#x01E5;x
+&#x01E7;x
+&#x01E9;x
+&#x01EB;x
+&#x01ED;x
+&#x01EF;x
+&#x01F0;x <!-- LATIN SMALL LETTER J WITH CARON -->
+&#x01F1;x
+&#x01F2;x
+&#x01F3;x
+&#x01F5;x
+&#x01F9;x
+&#x01FB;x
+&#x01FD;x
+&#x01FF;x
+&#x0201;x
+&#x0203;x
+&#x0205;x
+&#x0207;x
+&#x0209;x
+&#x020B;x
+&#x020D;x
+&#x020F;x
+&#x0211;x
+&#x0213;x
+&#x0215;x
+&#x0217;x
+&#x0219;x
+&#x021B;x
+&#x021D;x
+&#x021F;x
+&#x0223;x
+&#x0225;x
+&#x0227;x
+&#x0229;x
+&#x022B;x
+&#x022D;x
+&#x022F;x
+&#x0231;x
+&#x0233;x
+&#x023C;x
+&#x023F;x
+&#x0240;x
+&#x0242;x
+&#x0247;x
+&#x0249;x
+&#x024B;x
+&#x024D;x
+&#x024F;x
+&#x0250;x
+&#x0251;x
+&#x0252;x
+&#x0253;x
+&#x0254;x
+&#x0256;x
+&#x0257;x
+&#x0259;x
+&#x025B;x
+&#x025C;x
+&#x0260;x
+&#x0261;x
+&#x0263;x
+&#x0265;x
+&#x0266;x
+&#x0268;x
+&#x0269;x
+&#x026A;x
+&#x026B;x
+&#x026C;x
+&#x026F;x
+&#x0271;x
+&#x0272;x
+&#x0275;x
+&#x027D;x
+&#x0280;x
+&#x0282;x
+&#x0283;x
+&#x0287;x
+&#x0288;x
+&#x0289;x
+&#x028A;x
+&#x028B;x
+&#x028C;x
+&#x0292;x
+&#x029D;x
+&#x029E;x
+&#x0345;x
+&#x0371;x
+&#x0373;x
+&#x0377;x
+&#x037B;x
+&#x037C;x
+&#x037D;x
+&#x0390;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
+&#x03AC;x
+&#x03AD;x
+&#x03AE;x
+&#x03AF;x
+&#x03B0;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
+&#x03B1;x
+&#x03B2;x
+&#x03B3;x
+&#x03B4;x
+&#x03B5;x
+&#x03B6;x
+&#x03B7;x
+&#x03B8;x
+&#x03B9;x
+&#x03BA;x
+&#x03BB;x
+&#x03BC;x
+&#x03BD;x
+&#x03BE;x
+&#x03BF;x
+&#x03C0;x
+&#x03C1;x
+&#x03C2;x
+&#x03C3;x
+&#x03C4;x
+&#x03C5;x
+&#x03C6;x
+&#x03C7;x
+&#x03C8;x
+&#x03C9;x
+&#x03CA;x
+&#x03CB;x
+&#x03CC;x
+&#x03CD;x
+&#x03CE;x
+&#x03D0;x
+&#x03D1;x
+&#x03D5;x
+&#x03D6;x
+&#x03D7;x
+&#x03D9;x
+&#x03DB;x
+&#x03DD;x
+&#x03DF;x
+&#x03E1;x
+&#x03E3;x
+&#x03E5;x
+&#x03E7;x
+&#x03E9;x
+&#x03EB;x
+&#x03ED;x
+&#x03EF;x
+&#x03F0;x
+&#x03F1;x
+&#x03F2;x
+&#x03F3;x
+&#x03F5;x
+&#x03F8;x
+&#x03FB;x
+&#x0430;x
+&#x0431;x
+&#x0432;x
+&#x0433;x
+&#x0434;x
+&#x0435;x
+&#x0436;x
+&#x0437;x
+&#x0438;x
+&#x0439;x
+&#x043A;x
+&#x043B;x
+&#x043C;x
+&#x043D;x
+&#x043E;x
+&#x043F;x
+&#x0440;x
+&#x0441;x
+&#x0442;x
+&#x0443;x
+&#x0444;x
+&#x0445;x
+&#x0446;x
+&#x0447;x
+&#x0448;x
+&#x0449;x
+&#x044A;x
+&#x044B;x
+&#x044C;x
+&#x044D;x
+&#x044E;x
+&#x044F;x
+&#x0450;x
+&#x0451;x
+&#x0452;x
+&#x0453;x
+&#x0454;x
+&#x0455;x
+&#x0456;x
+&#x0457;x
+&#x0458;x
+&#x0459;x
+&#x045A;x
+&#x045B;x
+&#x045C;x
+&#x045D;x
+&#x045E;x
+&#x045F;x
+&#x0461;x
+&#x0463;x
+&#x0465;x
+&#x0467;x
+&#x0469;x
+&#x046B;x
+&#x046D;x
+&#x046F;x
+&#x0471;x
+&#x0473;x
+&#x0475;x
+&#x0477;x
+&#x0479;x
+&#x047B;x
+&#x047D;x
+&#x047F;x
+&#x0481;x
+&#x048B;x
+&#x048D;x
+&#x048F;x
+&#x0491;x
+&#x0493;x
+&#x0495;x
+&#x0497;x
+&#x0499;x
+&#x049B;x
+&#x049D;x
+&#x049F;x
+&#x04A1;x
+&#x04A3;x
+&#x04A5;x
+&#x04A7;x
+&#x04A9;x
+&#x04AB;x
+&#x04AD;x
+&#x04AF;x
+&#x04B1;x
+&#x04B3;x
+&#x04B5;x
+&#x04B7;x
+&#x04B9;x
+&#x04BB;x
+&#x04BD;x
+&#x04BF;x
+&#x04C2;x
+&#x04C4;x
+&#x04C6;x
+&#x04C8;x
+&#x04CA;x
+&#x04CC;x
+&#x04CE;x
+&#x04CF;x
+&#x04D1;x
+&#x04D3;x
+&#x04D5;x
+&#x04D7;x
+&#x04D9;x
+&#x04DB;x
+&#x04DD;x
+&#x04DF;x
+&#x04E1;x
+&#x04E3;x
+&#x04E5;x
+&#x04E7;x
+&#x04E9;x
+&#x04EB;x
+&#x04ED;x
+&#x04EF;x
+&#x04F1;x
+&#x04F3;x
+&#x04F5;x
+&#x04F7;x
+&#x04F9;x
+&#x04FB;x
+&#x04FD;x
+&#x04FF;x
+&#x0501;x
+&#x0503;x
+&#x0505;x
+&#x0507;x
+&#x0509;x
+&#x050B;x
+&#x050D;x
+&#x050F;x
+&#x0511;x
+&#x0513;x
+&#x0515;x
+&#x0517;x
+&#x0519;x
+&#x051B;x
+&#x051D;x
+&#x051F;x
+&#x0521;x
+&#x0523;x
+&#x0525;x
+&#x0527;x
+&#x0529;x
+&#x052B;x
+&#x052D;x
+&#x052F;x
+&#x0561;x
+&#x0562;x
+&#x0563;x
+&#x0564;x
+&#x0565;x
+&#x0566;x
+&#x0567;x
+&#x0568;x
+&#x0569;x
+&#x056A;x
+&#x056B;x
+&#x056C;x
+&#x056D;x
+&#x056E;x
+&#x056F;x
+&#x0570;x
+&#x0571;x
+&#x0572;x
+&#x0573;x
+&#x0574;x
+&#x0575;x
+&#x0576;x
+&#x0577;x
+&#x0578;x
+&#x0579;x
+&#x057A;x
+&#x057B;x
+&#x057C;x
+&#x057D;x
+&#x057E;x
+&#x057F;x
+&#x0580;x
+&#x0581;x
+&#x0582;x
+&#x0583;x
+&#x0584;x
+&#x0585;x
+&#x0586;x
+&#x0587;x <!-- ARMENIAN SMALL LIGATURE ECH YIWN -->
+&#x10D0;x
+&#x10D1;x
+&#x10D2;x
+&#x10D3;x
+&#x10D4;x
+&#x10D5;x
+&#x10D6;x
+&#x10D7;x
+&#x10D8;x
+&#x10D9;x
+&#x10DA;x
+&#x10DB;x
+&#x10DC;x
+&#x10DD;x
+&#x10DE;x
+&#x10DF;x
+&#x10E0;x
+&#x10E1;x
+&#x10E2;x
+&#x10E3;x
+&#x10E4;x
+&#x10E5;x
+&#x10E6;x
+&#x10E7;x
+&#x10E8;x
+&#x10E9;x
+&#x10EA;x
+&#x10EB;x
+&#x10EC;x
+&#x10ED;x
+&#x10EE;x
+&#x10EF;x
+&#x10F0;x
+&#x10F1;x
+&#x10F2;x
+&#x10F3;x
+&#x10F4;x
+&#x10F5;x
+&#x10F6;x
+&#x10F7;x
+&#x10F8;x
+&#x10F9;x
+&#x10FA;x
+&#x10FD;x
+&#x10FE;x
+&#x10FF;x
+&#x13F8;x
+&#x13F9;x
+&#x13FA;x
+&#x13FB;x
+&#x13FC;x
+&#x13FD;x
+&#x1C80;x
+&#x1C81;x
+&#x1C82;x
+&#x1C83;x
+&#x1C84;x
+&#x1C85;x
+&#x1C86;x
+&#x1C87;x
+&#x1C88;x
+&#x1D79;x
+&#x1D7D;x
+&#x1D8E;x
+&#x1E01;x
+&#x1E03;x
+&#x1E05;x
+&#x1E07;x
+&#x1E09;x
+&#x1E0B;x
+&#x1E0D;x
+&#x1E0F;x
+&#x1E11;x
+&#x1E13;x
+&#x1E15;x
+&#x1E17;x
+&#x1E19;x
+&#x1E1B;x
+&#x1E1D;x
+&#x1E1F;x
+&#x1E21;x
+&#x1E23;x
+&#x1E25;x
+&#x1E27;x
+&#x1E29;x
+&#x1E2B;x
+&#x1E2D;x
+&#x1E2F;x
+&#x1E31;x
+&#x1E33;x
+&#x1E35;x
+&#x1E37;x
+&#x1E39;x
+&#x1E3B;x
+&#x1E3D;x
+&#x1E3F;x
+&#x1E41;x
+&#x1E43;x
+&#x1E45;x
+&#x1E47;x
+&#x1E49;x
+&#x1E4B;x
+&#x1E4D;x
+&#x1E4F;x
+&#x1E51;x
+&#x1E53;x
+&#x1E55;x
+&#x1E57;x
+&#x1E59;x
+&#x1E5B;x
+&#x1E5D;x
+&#x1E5F;x
+&#x1E61;x
+&#x1E63;x
+&#x1E65;x
+&#x1E67;x
+&#x1E69;x
+&#x1E6B;x
+&#x1E6D;x
+&#x1E6F;x
+&#x1E71;x
+&#x1E73;x
+&#x1E75;x
+&#x1E77;x
+&#x1E79;x
+&#x1E7B;x
+&#x1E7D;x
+&#x1E7F;x
+&#x1E81;x
+&#x1E83;x
+&#x1E85;x
+&#x1E87;x
+&#x1E89;x
+&#x1E8B;x
+&#x1E8D;x
+&#x1E8F;x
+&#x1E91;x
+&#x1E93;x
+&#x1E95;x
+&#x1E96;x <!-- LATIN SMALL LETTER H WITH LINE BELOW -->
+&#x1E97;x <!-- LATIN SMALL LETTER T WITH DIAERESIS -->
+&#x1E98;x <!-- LATIN SMALL LETTER W WITH RING ABOVE -->
+&#x1E99;x <!-- LATIN SMALL LETTER Y WITH RING ABOVE -->
+&#x1E9A;x <!-- LATIN SMALL LETTER A WITH RIGHT HALF RING -->
+&#x1E9B;x
+&#x1EA1;x
+&#x1EA3;x
+&#x1EA5;x
+&#x1EA7;x
+&#x1EA9;x
+&#x1EAB;x
+&#x1EAD;x
+&#x1EAF;x
+&#x1EB1;x
+&#x1EB3;x
+&#x1EB5;x
+&#x1EB7;x
+&#x1EB9;x
+&#x1EBB;x
+&#x1EBD;x
+&#x1EBF;x
+&#x1EC1;x
+&#x1EC3;x
+&#x1EC5;x
+&#x1EC7;x
+&#x1EC9;x
+&#x1ECB;x
+&#x1ECD;x
+&#x1ECF;x
+&#x1ED1;x
+&#x1ED3;x
+&#x1ED5;x
+&#x1ED7;x
+&#x1ED9;x
+&#x1EDB;x
+&#x1EDD;x
+&#x1EDF;x
+&#x1EE1;x
+&#x1EE3;x
+&#x1EE5;x
+&#x1EE7;x
+&#x1EE9;x
+&#x1EEB;x
+&#x1EED;x
+&#x1EEF;x
+&#x1EF1;x
+&#x1EF3;x
+&#x1EF5;x
+&#x1EF7;x
+&#x1EF9;x
+&#x1EFB;x
+&#x1EFD;x
+&#x1EFF;x
+&#x1F00;x
+&#x1F01;x
+&#x1F02;x
+&#x1F03;x
+&#x1F04;x
+&#x1F05;x
+&#x1F06;x
+&#x1F07;x
+&#x1F10;x
+&#x1F11;x
+&#x1F12;x
+&#x1F13;x
+&#x1F14;x
+&#x1F15;x
+&#x1F20;x
+&#x1F21;x
+&#x1F22;x
+&#x1F23;x
+&#x1F24;x
+&#x1F25;x
+&#x1F26;x
+&#x1F27;x
+&#x1F30;x
+&#x1F31;x
+&#x1F32;x
+&#x1F33;x
+&#x1F34;x
+&#x1F35;x
+&#x1F36;x
+&#x1F37;x
+&#x1F40;x
+&#x1F41;x
+&#x1F42;x
+&#x1F43;x
+&#x1F44;x
+&#x1F45;x
+&#x1F50;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI -->
+&#x1F51;x
+&#x1F52;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -->
+&#x1F53;x
+&#x1F54;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -->
+&#x1F55;x
+&#x1F56;x <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -->
+&#x1F57;x
+&#x1F60;x
+&#x1F61;x
+&#x1F62;x
+&#x1F63;x
+&#x1F64;x
+&#x1F65;x
+&#x1F66;x
+&#x1F67;x
+&#x1F70;x
+&#x1F71;x
+&#x1F72;x
+&#x1F73;x
+&#x1F74;x
+&#x1F75;x
+&#x1F76;x
+&#x1F77;x
+&#x1F78;x
+&#x1F79;x
+&#x1F7A;x
+&#x1F7B;x
+&#x1F7C;x
+&#x1F7D;x
+&#x1F80;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F81;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F82;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F83;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F84;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F85;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F86;x <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F87;x <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F90;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F91;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F92;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F93;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F94;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F95;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F96;x <!-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F97;x <!-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FA0;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1FA1;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1FA2;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1FA3;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1FA4;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1FA5;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1FA6;x <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FA7;x <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FB0;x
+&#x1FB1;x
+&#x1FB2;x <!-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FB3;x <!-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -->
+&#x1FB4;x <!-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FB6;x <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI -->
+&#x1FB7;x <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FBE;x
+&#x1FC2;x <!-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FC3;x <!-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -->
+&#x1FC4;x <!-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FC6;x <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI -->
+&#x1FC7;x <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FD0;x
+&#x1FD1;x
+&#x1FD2;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -->
+&#x1FD3;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -->
+&#x1FD6;x <!-- GREEK SMALL LETTER IOTA WITH PERISPOMENI -->
+&#x1FD7;x <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FE0;x
+&#x1FE1;x
+&#x1FE2;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -->
+&#x1FE3;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -->
+&#x1FE4;x <!-- GREEK SMALL LETTER RHO WITH PSILI -->
+&#x1FE5;x
+&#x1FE6;x <!-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI -->
+&#x1FE7;x <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FF2;x <!-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FF3;x <!-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -->
+&#x1FF4;x <!-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FF6;x <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI -->
+&#x1FF7;x <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x214E;x
+&#x2170;x
+&#x2171;x
+&#x2172;x
+&#x2173;x
+&#x2174;x
+&#x2175;x
+&#x2176;x
+&#x2177;x
+&#x2178;x
+&#x2179;x
+&#x217A;x
+&#x217B;x
+&#x217C;x
+&#x217D;x
+&#x217E;x
+&#x217F;x
+&#x2184;x
+&#x24D0;x
+&#x24D1;x
+&#x24D2;x
+&#x24D3;x
+&#x24D4;x
+&#x24D5;x
+&#x24D6;x
+&#x24D7;x
+&#x24D8;x
+&#x24D9;x
+&#x24DA;x
+&#x24DB;x
+&#x24DC;x
+&#x24DD;x
+&#x24DE;x
+&#x24DF;x
+&#x24E0;x
+&#x24E1;x
+&#x24E2;x
+&#x24E3;x
+&#x24E4;x
+&#x24E5;x
+&#x24E6;x
+&#x24E7;x
+&#x24E8;x
+&#x24E9;x
+&#x2C30;x
+&#x2C31;x
+&#x2C32;x
+&#x2C33;x
+&#x2C34;x
+&#x2C35;x
+&#x2C36;x
+&#x2C37;x
+&#x2C38;x
+&#x2C39;x
+&#x2C3A;x
+&#x2C3B;x
+&#x2C3C;x
+&#x2C3D;x
+&#x2C3E;x
+&#x2C3F;x
+&#x2C40;x
+&#x2C41;x
+&#x2C42;x
+&#x2C43;x
+&#x2C44;x
+&#x2C45;x
+&#x2C46;x
+&#x2C47;x
+&#x2C48;x
+&#x2C49;x
+&#x2C4A;x
+&#x2C4B;x
+&#x2C4C;x
+&#x2C4D;x
+&#x2C4E;x
+&#x2C4F;x
+&#x2C50;x
+&#x2C51;x
+&#x2C52;x
+&#x2C53;x
+&#x2C54;x
+&#x2C55;x
+&#x2C56;x
+&#x2C57;x
+&#x2C58;x
+&#x2C59;x
+&#x2C5A;x
+&#x2C5B;x
+&#x2C5C;x
+&#x2C5D;x
+&#x2C5E;x
+&#x2C5F;x
+&#x2C61;x
+&#x2C65;x
+&#x2C66;x
+&#x2C68;x
+&#x2C6A;x
+&#x2C6C;x
+&#x2C73;x
+&#x2C76;x
+&#x2C81;x
+&#x2C83;x
+&#x2C85;x
+&#x2C87;x
+&#x2C89;x
+&#x2C8B;x
+&#x2C8D;x
+&#x2C8F;x
+&#x2C91;x
+&#x2C93;x
+&#x2C95;x
+&#x2C97;x
+&#x2C99;x
+&#x2C9B;x
+&#x2C9D;x
+&#x2C9F;x
+&#x2CA1;x
+&#x2CA3;x
+&#x2CA5;x
+&#x2CA7;x
+&#x2CA9;x
+&#x2CAB;x
+&#x2CAD;x
+&#x2CAF;x
+&#x2CB1;x
+&#x2CB3;x
+&#x2CB5;x
+&#x2CB7;x
+&#x2CB9;x
+&#x2CBB;x
+&#x2CBD;x
+&#x2CBF;x
+&#x2CC1;x
+&#x2CC3;x
+&#x2CC5;x
+&#x2CC7;x
+&#x2CC9;x
+&#x2CCB;x
+&#x2CCD;x
+&#x2CCF;x
+&#x2CD1;x
+&#x2CD3;x
+&#x2CD5;x
+&#x2CD7;x
+&#x2CD9;x
+&#x2CDB;x
+&#x2CDD;x
+&#x2CDF;x
+&#x2CE1;x
+&#x2CE3;x
+&#x2CEC;x
+&#x2CEE;x
+&#x2CF3;x
+&#x2D00;x
+&#x2D01;x
+&#x2D02;x
+&#x2D03;x
+&#x2D04;x
+&#x2D05;x
+&#x2D06;x
+&#x2D07;x
+&#x2D08;x
+&#x2D09;x
+&#x2D0A;x
+&#x2D0B;x
+&#x2D0C;x
+&#x2D0D;x
+&#x2D0E;x
+&#x2D0F;x
+&#x2D10;x
+&#x2D11;x
+&#x2D12;x
+&#x2D13;x
+&#x2D14;x
+&#x2D15;x
+&#x2D16;x
+&#x2D17;x
+&#x2D18;x
+&#x2D19;x
+&#x2D1A;x
+&#x2D1B;x
+&#x2D1C;x
+&#x2D1D;x
+&#x2D1E;x
+&#x2D1F;x
+&#x2D20;x
+&#x2D21;x
+&#x2D22;x
+&#x2D23;x
+&#x2D24;x
+&#x2D25;x
+&#x2D27;x
+&#x2D2D;x
+&#xA641;x
+&#xA643;x
+&#xA645;x
+&#xA647;x
+&#xA649;x
+&#xA64B;x
+&#xA64D;x
+&#xA64F;x
+&#xA651;x
+&#xA653;x
+&#xA655;x
+&#xA657;x
+&#xA659;x
+&#xA65B;x
+&#xA65D;x
+&#xA65F;x
+&#xA661;x
+&#xA663;x
+&#xA665;x
+&#xA667;x
+&#xA669;x
+&#xA66B;x
+&#xA66D;x
+&#xA681;x
+&#xA683;x
+&#xA685;x
+&#xA687;x
+&#xA689;x
+&#xA68B;x
+&#xA68D;x
+&#xA68F;x
+&#xA691;x
+&#xA693;x
+&#xA695;x
+&#xA697;x
+&#xA699;x
+&#xA69B;x
+&#xA723;x
+&#xA725;x
+&#xA727;x
+&#xA729;x
+&#xA72B;x
+&#xA72D;x
+&#xA72F;x
+&#xA733;x
+&#xA735;x
+&#xA737;x
+&#xA739;x
+&#xA73B;x
+&#xA73D;x
+&#xA73F;x
+&#xA741;x
+&#xA743;x
+&#xA745;x
+&#xA747;x
+&#xA749;x
+&#xA74B;x
+&#xA74D;x
+&#xA74F;x
+&#xA751;x
+&#xA753;x
+&#xA755;x
+&#xA757;x
+&#xA759;x
+&#xA75B;x
+&#xA75D;x
+&#xA75F;x
+&#xA761;x
+&#xA763;x
+&#xA765;x
+&#xA767;x
+&#xA769;x
+&#xA76B;x
+&#xA76D;x
+&#xA76F;x
+&#xA77A;x
+&#xA77C;x
+&#xA77F;x
+&#xA781;x
+&#xA783;x
+&#xA785;x
+&#xA787;x
+&#xA78C;x
+&#xA791;x
+&#xA793;x
+&#xA794;x
+&#xA797;x
+&#xA799;x
+&#xA79B;x
+&#xA79D;x
+&#xA79F;x
+&#xA7A1;x
+&#xA7A3;x
+&#xA7A5;x
+&#xA7A7;x
+&#xA7A9;x
+&#xA7B5;x
+&#xA7B7;x
+&#xA7B9;x
+&#xA7BB;x
+&#xA7BD;x
+&#xA7BF;x
+&#xA7C1;x
+&#xA7C3;x
+&#xA7C8;x
+&#xA7CA;x
+&#xA7D1;x
+&#xA7D7;x
+&#xA7D9;x
+&#xA7F6;x
+&#xAB53;x
+&#xAB70;x
+&#xAB71;x
+&#xAB72;x
+&#xAB73;x
+&#xAB74;x
+&#xAB75;x
+&#xAB76;x
+&#xAB77;x
+&#xAB78;x
+&#xAB79;x
+&#xAB7A;x
+&#xAB7B;x
+&#xAB7C;x
+&#xAB7D;x
+&#xAB7E;x
+&#xAB7F;x
+&#xAB80;x
+&#xAB81;x
+&#xAB82;x
+&#xAB83;x
+&#xAB84;x
+&#xAB85;x
+&#xAB86;x
+&#xAB87;x
+&#xAB88;x
+&#xAB89;x
+&#xAB8A;x
+&#xAB8B;x
+&#xAB8C;x
+&#xAB8D;x
+&#xAB8E;x
+&#xAB8F;x
+&#xAB90;x
+&#xAB91;x
+&#xAB92;x
+&#xAB93;x
+&#xAB94;x
+&#xAB95;x
+&#xAB96;x
+&#xAB97;x
+&#xAB98;x
+&#xAB99;x
+&#xAB9A;x
+&#xAB9B;x
+&#xAB9C;x
+&#xAB9D;x
+&#xAB9E;x
+&#xAB9F;x
+&#xABA0;x
+&#xABA1;x
+&#xABA2;x
+&#xABA3;x
+&#xABA4;x
+&#xABA5;x
+&#xABA6;x
+&#xABA7;x
+&#xABA8;x
+&#xABA9;x
+&#xABAA;x
+&#xABAB;x
+&#xABAC;x
+&#xABAD;x
+&#xABAE;x
+&#xABAF;x
+&#xABB0;x
+&#xABB1;x
+&#xABB2;x
+&#xABB3;x
+&#xABB4;x
+&#xABB5;x
+&#xABB6;x
+&#xABB7;x
+&#xABB8;x
+&#xABB9;x
+&#xABBA;x
+&#xABBB;x
+&#xABBC;x
+&#xABBD;x
+&#xABBE;x
+&#xABBF;x
+&#xFB00;x <!-- LATIN SMALL LIGATURE FF -->
+&#xFB01;x <!-- LATIN SMALL LIGATURE FI -->
+&#xFB02;x <!-- LATIN SMALL LIGATURE FL -->
+&#xFB03;x <!-- LATIN SMALL LIGATURE FFI -->
+&#xFB04;x <!-- LATIN SMALL LIGATURE FFL -->
+&#xFB05;x <!-- LATIN SMALL LIGATURE LONG S T -->
+&#xFB06;x <!-- LATIN SMALL LIGATURE ST -->
+&#xFB13;x <!-- ARMENIAN SMALL LIGATURE MEN NOW -->
+&#xFB14;x <!-- ARMENIAN SMALL LIGATURE MEN ECH -->
+&#xFB15;x <!-- ARMENIAN SMALL LIGATURE MEN INI -->
+&#xFB16;x <!-- ARMENIAN SMALL LIGATURE VEW NOW -->
+&#xFB17;x <!-- ARMENIAN SMALL LIGATURE MEN XEH -->
+&#xFF41;x
+&#xFF42;x
+&#xFF43;x
+&#xFF44;x
+&#xFF45;x
+&#xFF46;x
+&#xFF47;x
+&#xFF48;x
+&#xFF49;x
+&#xFF4A;x
+&#xFF4B;x
+&#xFF4C;x
+&#xFF4D;x
+&#xFF4E;x
+&#xFF4F;x
+&#xFF50;x
+&#xFF51;x
+&#xFF52;x
+&#xFF53;x
+&#xFF54;x
+&#xFF55;x
+&#xFF56;x
+&#xFF57;x
+&#xFF58;x
+&#xFF59;x
+&#xFF5A;x
+&#x10428;x
+&#x10429;x
+&#x1042A;x
+&#x1042B;x
+&#x1042C;x
+&#x1042D;x
+&#x1042E;x
+&#x1042F;x
+&#x10430;x
+&#x10431;x
+&#x10432;x
+&#x10433;x
+&#x10434;x
+&#x10435;x
+&#x10436;x
+&#x10437;x
+&#x10438;x
+&#x10439;x
+&#x1043A;x
+&#x1043B;x
+&#x1043C;x
+&#x1043D;x
+&#x1043E;x
+&#x1043F;x
+&#x10440;x
+&#x10441;x
+&#x10442;x
+&#x10443;x
+&#x10444;x
+&#x10445;x
+&#x10446;x
+&#x10447;x
+&#x10448;x
+&#x10449;x
+&#x1044A;x
+&#x1044B;x
+&#x1044C;x
+&#x1044D;x
+&#x1044E;x
+&#x1044F;x
+&#x104D8;x
+&#x104D9;x
+&#x104DA;x
+&#x104DB;x
+&#x104DC;x
+&#x104DD;x
+&#x104DE;x
+&#x104DF;x
+&#x104E0;x
+&#x104E1;x
+&#x104E2;x
+&#x104E3;x
+&#x104E4;x
+&#x104E5;x
+&#x104E6;x
+&#x104E7;x
+&#x104E8;x
+&#x104E9;x
+&#x104EA;x
+&#x104EB;x
+&#x104EC;x
+&#x104ED;x
+&#x104EE;x
+&#x104EF;x
+&#x104F0;x
+&#x104F1;x
+&#x104F2;x
+&#x104F3;x
+&#x104F4;x
+&#x104F5;x
+&#x104F6;x
+&#x104F7;x
+&#x104F8;x
+&#x104F9;x
+&#x104FA;x
+&#x104FB;x
+&#x10597;x
+&#x10598;x
+&#x10599;x
+&#x1059A;x
+&#x1059B;x
+&#x1059C;x
+&#x1059D;x
+&#x1059E;x
+&#x1059F;x
+&#x105A0;x
+&#x105A1;x
+&#x105A3;x
+&#x105A4;x
+&#x105A5;x
+&#x105A6;x
+&#x105A7;x
+&#x105A8;x
+&#x105A9;x
+&#x105AA;x
+&#x105AB;x
+&#x105AC;x
+&#x105AD;x
+&#x105AE;x
+&#x105AF;x
+&#x105B0;x
+&#x105B1;x
+&#x105B3;x
+&#x105B4;x
+&#x105B5;x
+&#x105B6;x
+&#x105B7;x
+&#x105B8;x
+&#x105B9;x
+&#x105BB;x
+&#x105BC;x
+&#x10CC0;x
+&#x10CC1;x
+&#x10CC2;x
+&#x10CC3;x
+&#x10CC4;x
+&#x10CC5;x
+&#x10CC6;x
+&#x10CC7;x
+&#x10CC8;x
+&#x10CC9;x
+&#x10CCA;x
+&#x10CCB;x
+&#x10CCC;x
+&#x10CCD;x
+&#x10CCE;x
+&#x10CCF;x
+&#x10CD0;x
+&#x10CD1;x
+&#x10CD2;x
+&#x10CD3;x
+&#x10CD4;x
+&#x10CD5;x
+&#x10CD6;x
+&#x10CD7;x
+&#x10CD8;x
+&#x10CD9;x
+&#x10CDA;x
+&#x10CDB;x
+&#x10CDC;x
+&#x10CDD;x
+&#x10CDE;x
+&#x10CDF;x
+&#x10CE0;x
+&#x10CE1;x
+&#x10CE2;x
+&#x10CE3;x
+&#x10CE4;x
+&#x10CE5;x
+&#x10CE6;x
+&#x10CE7;x
+&#x10CE8;x
+&#x10CE9;x
+&#x10CEA;x
+&#x10CEB;x
+&#x10CEC;x
+&#x10CED;x
+&#x10CEE;x
+&#x10CEF;x
+&#x10CF0;x
+&#x10CF1;x
+&#x10CF2;x
+&#x118C0;x
+&#x118C1;x
+&#x118C2;x
+&#x118C3;x
+&#x118C4;x
+&#x118C5;x
+&#x118C6;x
+&#x118C7;x
+&#x118C8;x
+&#x118C9;x
+&#x118CA;x
+&#x118CB;x
+&#x118CC;x
+&#x118CD;x
+&#x118CE;x
+&#x118CF;x
+&#x118D0;x
+&#x118D1;x
+&#x118D2;x
+&#x118D3;x
+&#x118D4;x
+&#x118D5;x
+&#x118D6;x
+&#x118D7;x
+&#x118D8;x
+&#x118D9;x
+&#x118DA;x
+&#x118DB;x
+&#x118DC;x
+&#x118DD;x
+&#x118DE;x
+&#x118DF;x
+&#x16E60;x
+&#x16E61;x
+&#x16E62;x
+&#x16E63;x
+&#x16E64;x
+&#x16E65;x
+&#x16E66;x
+&#x16E67;x
+&#x16E68;x
+&#x16E69;x
+&#x16E6A;x
+&#x16E6B;x
+&#x16E6C;x
+&#x16E6D;x
+&#x16E6E;x
+&#x16E6F;x
+&#x16E70;x
+&#x16E71;x
+&#x16E72;x
+&#x16E73;x
+&#x16E74;x
+&#x16E75;x
+&#x16E76;x
+&#x16E77;x
+&#x16E78;x
+&#x16E79;x
+&#x16E7A;x
+&#x16E7B;x
+&#x16E7C;x
+&#x16E7D;x
+&#x16E7E;x
+&#x16E7F;x
+&#x1E922;x
+&#x1E923;x
+&#x1E924;x
+&#x1E925;x
+&#x1E926;x
+&#x1E927;x
+&#x1E928;x
+&#x1E929;x
+&#x1E92A;x
+&#x1E92B;x
+&#x1E92C;x
+&#x1E92D;x
+&#x1E92E;x
+&#x1E92F;x
+&#x1E930;x
+&#x1E931;x
+&#x1E932;x
+&#x1E933;x
+&#x1E934;x
+&#x1E935;x
+&#x1E936;x
+&#x1E937;x
+&#x1E938;x
+&#x1E939;x
+&#x1E93A;x
+&#x1E93B;x
+&#x1E93C;x
+&#x1E93D;x
+&#x1E93E;x
+&#x1E93F;x
+&#x1E940;x
+&#x1E941;x
+&#x1E942;x
+&#x1E943;x
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/all-upper-ref.html b/layout/reftests/text-transform/all-upper-ref.html
new file mode 100644
index 0000000000..c7158cf88b
--- /dev/null
+++ b/layout/reftests/text-transform/all-upper-ref.html
@@ -0,0 +1,1540 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; font-size: 12px; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0041;
+&#x0042;
+&#x0043;
+&#x0044;
+&#x0045;
+&#x0046;
+&#x0047;
+&#x0048;
+&#x0049;
+&#x004A;
+&#x004B;
+&#x004C;
+&#x004D;
+&#x004E;
+&#x004F;
+&#x0050;
+&#x0051;
+&#x0052;
+&#x0053;
+&#x0054;
+&#x0055;
+&#x0056;
+&#x0057;
+&#x0058;
+&#x0059;
+&#x005A;
+&#x039C;
+&#x0053;&#x0053; <!-- LATIN SMALL LETTER SHARP S -->
+&#x00C0;
+&#x00C1;
+&#x00C2;
+&#x00C3;
+&#x00C4;
+&#x00C5;
+&#x00C6;
+&#x00C7;
+&#x00C8;
+&#x00C9;
+&#x00CA;
+&#x00CB;
+&#x00CC;
+&#x00CD;
+&#x00CE;
+&#x00CF;
+&#x00D0;
+&#x00D1;
+&#x00D2;
+&#x00D3;
+&#x00D4;
+&#x00D5;
+&#x00D6;
+&#x00D8;
+&#x00D9;
+&#x00DA;
+&#x00DB;
+&#x00DC;
+&#x00DD;
+&#x00DE;
+&#x0178;
+&#x0100;
+&#x0102;
+&#x0104;
+&#x0106;
+&#x0108;
+&#x010A;
+&#x010C;
+&#x010E;
+&#x0110;
+&#x0112;
+&#x0114;
+&#x0116;
+&#x0118;
+&#x011A;
+&#x011C;
+&#x011E;
+&#x0120;
+&#x0122;
+&#x0124;
+&#x0126;
+&#x0128;
+&#x012A;
+&#x012C;
+&#x012E;
+&#x0049;
+&#x0132;
+&#x0134;
+&#x0136;
+&#x0139;
+&#x013B;
+&#x013D;
+&#x013F;
+&#x0141;
+&#x0143;
+&#x0145;
+&#x0147;
+&#x02BC;&#x004E; <!-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+&#x014A;
+&#x014C;
+&#x014E;
+&#x0150;
+&#x0152;
+&#x0154;
+&#x0156;
+&#x0158;
+&#x015A;
+&#x015C;
+&#x015E;
+&#x0160;
+&#x0162;
+&#x0164;
+&#x0166;
+&#x0168;
+&#x016A;
+&#x016C;
+&#x016E;
+&#x0170;
+&#x0172;
+&#x0174;
+&#x0176;
+&#x0179;
+&#x017B;
+&#x017D;
+&#x0053;
+&#x0243;
+&#x0182;
+&#x0184;
+&#x0187;
+&#x018B;
+&#x0191;
+&#x01F6;
+&#x0198;
+&#x023D;
+&#x0220;
+&#x01A0;
+&#x01A2;
+&#x01A4;
+&#x01A7;
+&#x01AC;
+&#x01AF;
+&#x01B3;
+&#x01B5;
+&#x01B8;
+&#x01BC;
+&#x01F7;
+&#x01C4;
+&#x01C4;
+&#x01C7;
+&#x01C7;
+&#x01CA;
+&#x01CA;
+&#x01CD;
+&#x01CF;
+&#x01D1;
+&#x01D3;
+&#x01D5;
+&#x01D7;
+&#x01D9;
+&#x01DB;
+&#x018E;
+&#x01DE;
+&#x01E0;
+&#x01E2;
+&#x01E4;
+&#x01E6;
+&#x01E8;
+&#x01EA;
+&#x01EC;
+&#x01EE;
+&#x004A;&#x030C; <!-- LATIN SMALL LETTER J WITH CARON -->
+&#x01F1;
+&#x01F1;
+&#x01F4;
+&#x01F8;
+&#x01FA;
+&#x01FC;
+&#x01FE;
+&#x0200;
+&#x0202;
+&#x0204;
+&#x0206;
+&#x0208;
+&#x020A;
+&#x020C;
+&#x020E;
+&#x0210;
+&#x0212;
+&#x0214;
+&#x0216;
+&#x0218;
+&#x021A;
+&#x021C;
+&#x021E;
+&#x0222;
+&#x0224;
+&#x0226;
+&#x0228;
+&#x022A;
+&#x022C;
+&#x022E;
+&#x0230;
+&#x0232;
+&#x023B;
+&#x2C7E;
+&#x2C7F;
+&#x0241;
+&#x0246;
+&#x0248;
+&#x024A;
+&#x024C;
+&#x024E;
+&#x2C6F;
+&#x2C6D;
+&#x2C70;
+&#x0181;
+&#x0186;
+&#x0189;
+&#x018A;
+&#x018F;
+&#x0190;
+&#xA7AB;
+&#x0193;
+&#xA7AC;
+&#x0194;
+&#xA78D;
+&#xA7AA;
+&#x0197;
+&#x0196;
+&#xA7AE;
+&#x2C62;
+&#xA7AD;
+&#x019C;
+&#x2C6E;
+&#x019D;
+&#x019F;
+&#x2C64;
+&#x01A6;
+&#xA7C5;
+&#x01A9;
+&#xA7B1;
+&#x01AE;
+&#x0244;
+&#x01B1;
+&#x01B2;
+&#x0245;
+&#x01B7;
+&#xA7B2;
+&#xA7B0;
+&#x0399;
+&#x0370;
+&#x0372;
+&#x0376;
+&#x03FD;
+&#x03FE;
+&#x03FF;
+&#x03AA;&#x0301; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
+&#x0386;
+&#x0388;
+&#x0389;
+&#x038A;
+&#x03AB;&#x0301; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
+&#x0391;
+&#x0392;
+&#x0393;
+&#x0394;
+&#x0395;
+&#x0396;
+&#x0397;
+&#x0398;
+&#x0399;
+&#x039A;
+&#x039B;
+&#x039C;
+&#x039D;
+&#x039E;
+&#x039F;
+&#x03A0;
+&#x03A1;
+&#x03A3;
+&#x03A3;
+&#x03A4;
+&#x03A5;
+&#x03A6;
+&#x03A7;
+&#x03A8;
+&#x03A9;
+&#x03AA;
+&#x03AB;
+&#x038C;
+&#x038E;
+&#x038F;
+&#x0392;
+&#x0398;
+&#x03A6;
+&#x03A0;
+&#x03CF;
+&#x03D8;
+&#x03DA;
+&#x03DC;
+&#x03DE;
+&#x03E0;
+&#x03E2;
+&#x03E4;
+&#x03E6;
+&#x03E8;
+&#x03EA;
+&#x03EC;
+&#x03EE;
+&#x039A;
+&#x03A1;
+&#x03F9;
+&#x037F;
+&#x0395;
+&#x03F7;
+&#x03FA;
+&#x0410;
+&#x0411;
+&#x0412;
+&#x0413;
+&#x0414;
+&#x0415;
+&#x0416;
+&#x0417;
+&#x0418;
+&#x0419;
+&#x041A;
+&#x041B;
+&#x041C;
+&#x041D;
+&#x041E;
+&#x041F;
+&#x0420;
+&#x0421;
+&#x0422;
+&#x0423;
+&#x0424;
+&#x0425;
+&#x0426;
+&#x0427;
+&#x0428;
+&#x0429;
+&#x042A;
+&#x042B;
+&#x042C;
+&#x042D;
+&#x042E;
+&#x042F;
+&#x0400;
+&#x0401;
+&#x0402;
+&#x0403;
+&#x0404;
+&#x0405;
+&#x0406;
+&#x0407;
+&#x0408;
+&#x0409;
+&#x040A;
+&#x040B;
+&#x040C;
+&#x040D;
+&#x040E;
+&#x040F;
+&#x0460;
+&#x0462;
+&#x0464;
+&#x0466;
+&#x0468;
+&#x046A;
+&#x046C;
+&#x046E;
+&#x0470;
+&#x0472;
+&#x0474;
+&#x0476;
+&#x0478;
+&#x047A;
+&#x047C;
+&#x047E;
+&#x0480;
+&#x048A;
+&#x048C;
+&#x048E;
+&#x0490;
+&#x0492;
+&#x0494;
+&#x0496;
+&#x0498;
+&#x049A;
+&#x049C;
+&#x049E;
+&#x04A0;
+&#x04A2;
+&#x04A4;
+&#x04A6;
+&#x04A8;
+&#x04AA;
+&#x04AC;
+&#x04AE;
+&#x04B0;
+&#x04B2;
+&#x04B4;
+&#x04B6;
+&#x04B8;
+&#x04BA;
+&#x04BC;
+&#x04BE;
+&#x04C1;
+&#x04C3;
+&#x04C5;
+&#x04C7;
+&#x04C9;
+&#x04CB;
+&#x04CD;
+&#x04C0;
+&#x04D0;
+&#x04D2;
+&#x04D4;
+&#x04D6;
+&#x04D8;
+&#x04DA;
+&#x04DC;
+&#x04DE;
+&#x04E0;
+&#x04E2;
+&#x04E4;
+&#x04E6;
+&#x04E8;
+&#x04EA;
+&#x04EC;
+&#x04EE;
+&#x04F0;
+&#x04F2;
+&#x04F4;
+&#x04F6;
+&#x04F8;
+&#x04FA;
+&#x04FC;
+&#x04FE;
+&#x0500;
+&#x0502;
+&#x0504;
+&#x0506;
+&#x0508;
+&#x050A;
+&#x050C;
+&#x050E;
+&#x0510;
+&#x0512;
+&#x0514;
+&#x0516;
+&#x0518;
+&#x051A;
+&#x051C;
+&#x051E;
+&#x0520;
+&#x0522;
+&#x0524;
+&#x0526;
+&#x0528;
+&#x052A;
+&#x052C;
+&#x052E;
+&#x0531;
+&#x0532;
+&#x0533;
+&#x0534;
+&#x0535;
+&#x0536;
+&#x0537;
+&#x0538;
+&#x0539;
+&#x053A;
+&#x053B;
+&#x053C;
+&#x053D;
+&#x053E;
+&#x053F;
+&#x0540;
+&#x0541;
+&#x0542;
+&#x0543;
+&#x0544;
+&#x0545;
+&#x0546;
+&#x0547;
+&#x0548;
+&#x0549;
+&#x054A;
+&#x054B;
+&#x054C;
+&#x054D;
+&#x054E;
+&#x054F;
+&#x0550;
+&#x0551;
+&#x0552;
+&#x0553;
+&#x0554;
+&#x0555;
+&#x0556;
+&#x0535;&#x0552; <!-- ARMENIAN SMALL LIGATURE ECH YIWN -->
+<!-- &#x1C90; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C91; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C92; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C93; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C94; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C95; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C96; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C97; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C98; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C99; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9A; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9B; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9C; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9D; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9E; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1C9F; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA0; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA1; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA2; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA3; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA4; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA5; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA6; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA7; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA8; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CA9; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAA; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAB; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAC; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAD; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAE; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CAF; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB0; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB1; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB2; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB3; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB4; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB5; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB6; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB7; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB8; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CB9; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CBA; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CBD; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CBE; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x1CBF; --> <!-- Temporarily skipped, see bug 1476304. -->
+&#x13F0;
+&#x13F1;
+&#x13F2;
+&#x13F3;
+&#x13F4;
+&#x13F5;
+&#x0412;
+&#x0414;
+&#x041E;
+&#x0421;
+&#x0422;
+&#x0422;
+&#x042A;
+&#x0462;
+&#xA64A;
+&#xA77D;
+&#x2C63;
+&#xA7C6;
+&#x1E00;
+&#x1E02;
+&#x1E04;
+&#x1E06;
+&#x1E08;
+&#x1E0A;
+&#x1E0C;
+&#x1E0E;
+&#x1E10;
+&#x1E12;
+&#x1E14;
+&#x1E16;
+&#x1E18;
+&#x1E1A;
+&#x1E1C;
+&#x1E1E;
+&#x1E20;
+&#x1E22;
+&#x1E24;
+&#x1E26;
+&#x1E28;
+&#x1E2A;
+&#x1E2C;
+&#x1E2E;
+&#x1E30;
+&#x1E32;
+&#x1E34;
+&#x1E36;
+&#x1E38;
+&#x1E3A;
+&#x1E3C;
+&#x1E3E;
+&#x1E40;
+&#x1E42;
+&#x1E44;
+&#x1E46;
+&#x1E48;
+&#x1E4A;
+&#x1E4C;
+&#x1E4E;
+&#x1E50;
+&#x1E52;
+&#x1E54;
+&#x1E56;
+&#x1E58;
+&#x1E5A;
+&#x1E5C;
+&#x1E5E;
+&#x1E60;
+&#x1E62;
+&#x1E64;
+&#x1E66;
+&#x1E68;
+&#x1E6A;
+&#x1E6C;
+&#x1E6E;
+&#x1E70;
+&#x1E72;
+&#x1E74;
+&#x1E76;
+&#x1E78;
+&#x1E7A;
+&#x1E7C;
+&#x1E7E;
+&#x1E80;
+&#x1E82;
+&#x1E84;
+&#x1E86;
+&#x1E88;
+&#x1E8A;
+&#x1E8C;
+&#x1E8E;
+&#x1E90;
+&#x1E92;
+&#x1E94;
+&#x0048;&#x0331; <!-- LATIN SMALL LETTER H WITH LINE BELOW -->
+&#x0054;&#x0308; <!-- LATIN SMALL LETTER T WITH DIAERESIS -->
+&#x0057;&#x030A; <!-- LATIN SMALL LETTER W WITH RING ABOVE -->
+&#x0059;&#x030A; <!-- LATIN SMALL LETTER Y WITH RING ABOVE -->
+&#x0041;&#x02BE; <!-- LATIN SMALL LETTER A WITH RIGHT HALF RING -->
+&#x1E60;
+&#x1EA0;
+&#x1EA2;
+&#x1EA4;
+&#x1EA6;
+&#x1EA8;
+&#x1EAA;
+&#x1EAC;
+&#x1EAE;
+&#x1EB0;
+&#x1EB2;
+&#x1EB4;
+&#x1EB6;
+&#x1EB8;
+&#x1EBA;
+&#x1EBC;
+&#x1EBE;
+&#x1EC0;
+&#x1EC2;
+&#x1EC4;
+&#x1EC6;
+&#x1EC8;
+&#x1ECA;
+&#x1ECC;
+&#x1ECE;
+&#x1ED0;
+&#x1ED2;
+&#x1ED4;
+&#x1ED6;
+&#x1ED8;
+&#x1EDA;
+&#x1EDC;
+&#x1EDE;
+&#x1EE0;
+&#x1EE2;
+&#x1EE4;
+&#x1EE6;
+&#x1EE8;
+&#x1EEA;
+&#x1EEC;
+&#x1EEE;
+&#x1EF0;
+&#x1EF2;
+&#x1EF4;
+&#x1EF6;
+&#x1EF8;
+&#x1EFA;
+&#x1EFC;
+&#x1EFE;
+&#x1F08;
+&#x1F09;
+&#x1F0A;
+&#x1F0B;
+&#x1F0C;
+&#x1F0D;
+&#x1F0E;
+&#x1F0F;
+&#x1F18;
+&#x1F19;
+&#x1F1A;
+&#x1F1B;
+&#x1F1C;
+&#x1F1D;
+&#x1F28;
+&#x1F29;
+&#x1F2A;
+&#x1F2B;
+&#x1F2C;
+&#x1F2D;
+&#x1F2E;
+&#x1F2F;
+&#x1F38;
+&#x1F39;
+&#x1F3A;
+&#x1F3B;
+&#x1F3C;
+&#x1F3D;
+&#x1F3E;
+&#x1F3F;
+&#x1F48;
+&#x1F49;
+&#x1F4A;
+&#x1F4B;
+&#x1F4C;
+&#x1F4D;
+&#x03A5;&#x0313; <!-- GREEK SMALL LETTER UPSILON WITH PSILI -->
+&#x1F59;
+&#x03A5;&#x0313;&#x0300; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -->
+&#x1F5B;
+&#x03A5;&#x0313;&#x0301; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -->
+&#x1F5D;
+&#x03A5;&#x0313;&#x0342; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -->
+&#x1F5F;
+&#x1F68;
+&#x1F69;
+&#x1F6A;
+&#x1F6B;
+&#x1F6C;
+&#x1F6D;
+&#x1F6E;
+&#x1F6F;
+&#x1FBA;
+&#x1FBB;
+&#x1FC8;
+&#x1FC9;
+&#x1FCA;
+&#x1FCB;
+&#x1FDA;
+&#x1FDB;
+&#x1FF8;
+&#x1FF9;
+&#x1FEA;
+&#x1FEB;
+&#x1FFA;
+&#x1FFB;
+&#x1F08;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F09;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F0A;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F0B;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F0C;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F0D;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F0E;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F0F;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F08;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F09;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F0A;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F0B;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F0C;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F0D;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F0E;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F0F;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F28;&#x0399; <!-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F29;&#x0399; <!-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F2A;&#x0399; <!-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F2B;&#x0399; <!-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F2C;&#x0399; <!-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F2D;&#x0399; <!-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F2E;&#x0399; <!-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F2F;&#x0399; <!-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F28;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F29;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F2A;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F2B;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F2C;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F2D;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F2E;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F2F;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F68;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F69;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F6A;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F6B;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F6C;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F6D;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F6E;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F6F;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F68;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F69;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F6A;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F6B;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F6C;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F6D;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F6E;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F6F;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FB8;
+&#x1FB9;
+&#x1FBA;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -->
+&#x0391;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -->
+&#x0386;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -->
+&#x0391;&#x0342; <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI -->
+&#x0391;&#x0342;&#x0399; <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x0391;&#x0399; <!-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -->
+&#x0399;
+&#x1FCA;&#x0399; <!-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -->
+&#x0397;&#x0399; <!-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -->
+&#x0389;&#x0399; <!-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -->
+&#x0397;&#x0342; <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI -->
+&#x0397;&#x0342;&#x0399; <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x0397;&#x0399; <!-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -->
+&#x1FD8;
+&#x1FD9;
+&#x03AA;&#x0300; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -->
+&#x03AA;&#x0301; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -->
+&#x0399;&#x0342; <!-- GREEK SMALL LETTER IOTA WITH PERISPOMENI -->
+&#x03AA;&#x0342; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FE8;
+&#x1FE9;
+&#x03AB;&#x0300; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -->
+&#x03AB;&#x0301; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -->
+&#x03A1;&#x0313; <!-- GREEK SMALL LETTER RHO WITH PSILI -->
+&#x1FEC;
+&#x03A5;&#x0342; <!-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI -->
+&#x03AB;&#x0342; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FFA;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -->
+&#x03A9;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -->
+&#x038F;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -->
+&#x03A9;&#x0342; <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI -->
+&#x03A9;&#x0342;&#x0399; <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x03A9;&#x0399; <!-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -->
+&#x2132;
+&#x2160;
+&#x2161;
+&#x2162;
+&#x2163;
+&#x2164;
+&#x2165;
+&#x2166;
+&#x2167;
+&#x2168;
+&#x2169;
+&#x216A;
+&#x216B;
+&#x216C;
+&#x216D;
+&#x216E;
+&#x216F;
+&#x2183;
+&#x24B6;
+&#x24B7;
+&#x24B8;
+&#x24B9;
+&#x24BA;
+&#x24BB;
+&#x24BC;
+&#x24BD;
+&#x24BE;
+&#x24BF;
+&#x24C0;
+&#x24C1;
+&#x24C2;
+&#x24C3;
+&#x24C4;
+&#x24C5;
+&#x24C6;
+&#x24C7;
+&#x24C8;
+&#x24C9;
+&#x24CA;
+&#x24CB;
+&#x24CC;
+&#x24CD;
+&#x24CE;
+&#x24CF;
+&#x2C00;
+&#x2C01;
+&#x2C02;
+&#x2C03;
+&#x2C04;
+&#x2C05;
+&#x2C06;
+&#x2C07;
+&#x2C08;
+&#x2C09;
+&#x2C0A;
+&#x2C0B;
+&#x2C0C;
+&#x2C0D;
+&#x2C0E;
+&#x2C0F;
+&#x2C10;
+&#x2C11;
+&#x2C12;
+&#x2C13;
+&#x2C14;
+&#x2C15;
+&#x2C16;
+&#x2C17;
+&#x2C18;
+&#x2C19;
+&#x2C1A;
+&#x2C1B;
+&#x2C1C;
+&#x2C1D;
+&#x2C1E;
+&#x2C1F;
+&#x2C20;
+&#x2C21;
+&#x2C22;
+&#x2C23;
+&#x2C24;
+&#x2C25;
+&#x2C26;
+&#x2C27;
+&#x2C28;
+&#x2C29;
+&#x2C2A;
+&#x2C2B;
+&#x2C2C;
+&#x2C2D;
+&#x2C2E;
+&#x2C2F;
+&#x2C60;
+&#x023A;
+&#x023E;
+&#x2C67;
+&#x2C69;
+&#x2C6B;
+&#x2C72;
+&#x2C75;
+&#x2C80;
+&#x2C82;
+&#x2C84;
+&#x2C86;
+&#x2C88;
+&#x2C8A;
+&#x2C8C;
+&#x2C8E;
+&#x2C90;
+&#x2C92;
+&#x2C94;
+&#x2C96;
+&#x2C98;
+&#x2C9A;
+&#x2C9C;
+&#x2C9E;
+&#x2CA0;
+&#x2CA2;
+&#x2CA4;
+&#x2CA6;
+&#x2CA8;
+&#x2CAA;
+&#x2CAC;
+&#x2CAE;
+&#x2CB0;
+&#x2CB2;
+&#x2CB4;
+&#x2CB6;
+&#x2CB8;
+&#x2CBA;
+&#x2CBC;
+&#x2CBE;
+&#x2CC0;
+&#x2CC2;
+&#x2CC4;
+&#x2CC6;
+&#x2CC8;
+&#x2CCA;
+&#x2CCC;
+&#x2CCE;
+&#x2CD0;
+&#x2CD2;
+&#x2CD4;
+&#x2CD6;
+&#x2CD8;
+&#x2CDA;
+&#x2CDC;
+&#x2CDE;
+&#x2CE0;
+&#x2CE2;
+&#x2CEB;
+&#x2CED;
+&#x2CF2;
+&#x10A0;
+&#x10A1;
+&#x10A2;
+&#x10A3;
+&#x10A4;
+&#x10A5;
+&#x10A6;
+&#x10A7;
+&#x10A8;
+&#x10A9;
+&#x10AA;
+&#x10AB;
+&#x10AC;
+&#x10AD;
+&#x10AE;
+&#x10AF;
+&#x10B0;
+&#x10B1;
+&#x10B2;
+&#x10B3;
+&#x10B4;
+&#x10B5;
+&#x10B6;
+&#x10B7;
+&#x10B8;
+&#x10B9;
+&#x10BA;
+&#x10BB;
+&#x10BC;
+&#x10BD;
+&#x10BE;
+&#x10BF;
+&#x10C0;
+&#x10C1;
+&#x10C2;
+&#x10C3;
+&#x10C4;
+&#x10C5;
+&#x10C7;
+&#x10CD;
+&#xA640;
+&#xA642;
+&#xA644;
+&#xA646;
+&#xA648;
+&#xA64A;
+&#xA64C;
+&#xA64E;
+&#xA650;
+&#xA652;
+&#xA654;
+&#xA656;
+&#xA658;
+&#xA65A;
+&#xA65C;
+&#xA65E;
+&#xA660;
+&#xA662;
+&#xA664;
+&#xA666;
+&#xA668;
+&#xA66A;
+&#xA66C;
+&#xA680;
+&#xA682;
+&#xA684;
+&#xA686;
+&#xA688;
+&#xA68A;
+&#xA68C;
+&#xA68E;
+&#xA690;
+&#xA692;
+&#xA694;
+&#xA696;
+&#xA698;
+&#xA69A;
+&#xA722;
+&#xA724;
+&#xA726;
+&#xA728;
+&#xA72A;
+&#xA72C;
+&#xA72E;
+&#xA732;
+&#xA734;
+&#xA736;
+&#xA738;
+&#xA73A;
+&#xA73C;
+&#xA73E;
+&#xA740;
+&#xA742;
+&#xA744;
+&#xA746;
+&#xA748;
+&#xA74A;
+&#xA74C;
+&#xA74E;
+&#xA750;
+&#xA752;
+&#xA754;
+&#xA756;
+&#xA758;
+&#xA75A;
+&#xA75C;
+&#xA75E;
+&#xA760;
+&#xA762;
+&#xA764;
+&#xA766;
+&#xA768;
+&#xA76A;
+&#xA76C;
+&#xA76E;
+&#xA779;
+&#xA77B;
+&#xA77E;
+&#xA780;
+&#xA782;
+&#xA784;
+&#xA786;
+&#xA78B;
+&#xA790;
+&#xA792;
+&#xA7C4;
+&#xA796;
+&#xA798;
+&#xA79A;
+&#xA79C;
+&#xA79E;
+&#xA7A0;
+&#xA7A2;
+&#xA7A4;
+&#xA7A6;
+&#xA7A8;
+&#xA7B4;
+&#xA7B6;
+&#xA7B8;
+&#xA7BA;
+&#xA7BC;
+&#xA7BE;
+&#xA7C0;
+&#xA7C2;
+&#xA7C7;
+&#xA7C9;
+&#xA7D0;
+&#xA7D6;
+&#xA7D8;
+&#xA7F5;
+&#xA7B3;
+&#x13A0;
+&#x13A1;
+&#x13A2;
+&#x13A3;
+&#x13A4;
+&#x13A5;
+&#x13A6;
+&#x13A7;
+&#x13A8;
+&#x13A9;
+&#x13AA;
+&#x13AB;
+&#x13AC;
+&#x13AD;
+&#x13AE;
+&#x13AF;
+&#x13B0;
+&#x13B1;
+&#x13B2;
+&#x13B3;
+&#x13B4;
+&#x13B5;
+&#x13B6;
+&#x13B7;
+&#x13B8;
+&#x13B9;
+&#x13BA;
+&#x13BB;
+&#x13BC;
+&#x13BD;
+&#x13BE;
+&#x13BF;
+&#x13C0;
+&#x13C1;
+&#x13C2;
+&#x13C3;
+&#x13C4;
+&#x13C5;
+&#x13C6;
+&#x13C7;
+&#x13C8;
+&#x13C9;
+&#x13CA;
+&#x13CB;
+&#x13CC;
+&#x13CD;
+&#x13CE;
+&#x13CF;
+&#x13D0;
+&#x13D1;
+&#x13D2;
+&#x13D3;
+&#x13D4;
+&#x13D5;
+&#x13D6;
+&#x13D7;
+&#x13D8;
+&#x13D9;
+&#x13DA;
+&#x13DB;
+&#x13DC;
+&#x13DD;
+&#x13DE;
+&#x13DF;
+&#x13E0;
+&#x13E1;
+&#x13E2;
+&#x13E3;
+&#x13E4;
+&#x13E5;
+&#x13E6;
+&#x13E7;
+&#x13E8;
+&#x13E9;
+&#x13EA;
+&#x13EB;
+&#x13EC;
+&#x13ED;
+&#x13EE;
+&#x13EF;
+&#x0046;&#x0046; <!-- LATIN SMALL LIGATURE FF -->
+&#x0046;&#x0049; <!-- LATIN SMALL LIGATURE FI -->
+&#x0046;&#x004C; <!-- LATIN SMALL LIGATURE FL -->
+&#x0046;&#x0046;&#x0049; <!-- LATIN SMALL LIGATURE FFI -->
+&#x0046;&#x0046;&#x004C; <!-- LATIN SMALL LIGATURE FFL -->
+&#x0053;&#x0054; <!-- LATIN SMALL LIGATURE LONG S T -->
+&#x0053;&#x0054; <!-- LATIN SMALL LIGATURE ST -->
+&#x0544;&#x0546; <!-- ARMENIAN SMALL LIGATURE MEN NOW -->
+&#x0544;&#x0535; <!-- ARMENIAN SMALL LIGATURE MEN ECH -->
+&#x0544;&#x053B; <!-- ARMENIAN SMALL LIGATURE MEN INI -->
+&#x054E;&#x0546; <!-- ARMENIAN SMALL LIGATURE VEW NOW -->
+&#x0544;&#x053D; <!-- ARMENIAN SMALL LIGATURE MEN XEH -->
+&#xFF21;
+&#xFF22;
+&#xFF23;
+&#xFF24;
+&#xFF25;
+&#xFF26;
+&#xFF27;
+&#xFF28;
+&#xFF29;
+&#xFF2A;
+&#xFF2B;
+&#xFF2C;
+&#xFF2D;
+&#xFF2E;
+&#xFF2F;
+&#xFF30;
+&#xFF31;
+&#xFF32;
+&#xFF33;
+&#xFF34;
+&#xFF35;
+&#xFF36;
+&#xFF37;
+&#xFF38;
+&#xFF39;
+&#xFF3A;
+&#x10400;
+&#x10401;
+&#x10402;
+&#x10403;
+&#x10404;
+&#x10405;
+&#x10406;
+&#x10407;
+&#x10408;
+&#x10409;
+&#x1040A;
+&#x1040B;
+&#x1040C;
+&#x1040D;
+&#x1040E;
+&#x1040F;
+&#x10410;
+&#x10411;
+&#x10412;
+&#x10413;
+&#x10414;
+&#x10415;
+&#x10416;
+&#x10417;
+&#x10418;
+&#x10419;
+&#x1041A;
+&#x1041B;
+&#x1041C;
+&#x1041D;
+&#x1041E;
+&#x1041F;
+&#x10420;
+&#x10421;
+&#x10422;
+&#x10423;
+&#x10424;
+&#x10425;
+&#x10426;
+&#x10427;
+&#x104B0;
+&#x104B1;
+&#x104B2;
+&#x104B3;
+&#x104B4;
+&#x104B5;
+&#x104B6;
+&#x104B7;
+&#x104B8;
+&#x104B9;
+&#x104BA;
+&#x104BB;
+&#x104BC;
+&#x104BD;
+&#x104BE;
+&#x104BF;
+&#x104C0;
+&#x104C1;
+&#x104C2;
+&#x104C3;
+&#x104C4;
+&#x104C5;
+&#x104C6;
+&#x104C7;
+&#x104C8;
+&#x104C9;
+&#x104CA;
+&#x104CB;
+&#x104CC;
+&#x104CD;
+&#x104CE;
+&#x104CF;
+&#x104D0;
+&#x104D1;
+&#x104D2;
+&#x104D3;
+&#x10570;
+&#x10571;
+&#x10572;
+&#x10573;
+&#x10574;
+&#x10575;
+&#x10576;
+&#x10577;
+&#x10578;
+&#x10579;
+&#x1057A;
+&#x1057C;
+&#x1057D;
+&#x1057E;
+&#x1057F;
+&#x10580;
+&#x10581;
+&#x10582;
+&#x10583;
+&#x10584;
+&#x10585;
+&#x10586;
+&#x10587;
+&#x10588;
+&#x10589;
+&#x1058A;
+&#x1058C;
+&#x1058D;
+&#x1058E;
+&#x1058F;
+&#x10590;
+&#x10591;
+&#x10592;
+&#x10594;
+&#x10595;
+&#x10C80;
+&#x10C81;
+&#x10C82;
+&#x10C83;
+&#x10C84;
+&#x10C85;
+&#x10C86;
+&#x10C87;
+&#x10C88;
+&#x10C89;
+&#x10C8A;
+&#x10C8B;
+&#x10C8C;
+&#x10C8D;
+&#x10C8E;
+&#x10C8F;
+&#x10C90;
+&#x10C91;
+&#x10C92;
+&#x10C93;
+&#x10C94;
+&#x10C95;
+&#x10C96;
+&#x10C97;
+&#x10C98;
+&#x10C99;
+&#x10C9A;
+&#x10C9B;
+&#x10C9C;
+&#x10C9D;
+&#x10C9E;
+&#x10C9F;
+&#x10CA0;
+&#x10CA1;
+&#x10CA2;
+&#x10CA3;
+&#x10CA4;
+&#x10CA5;
+&#x10CA6;
+&#x10CA7;
+&#x10CA8;
+&#x10CA9;
+&#x10CAA;
+&#x10CAB;
+&#x10CAC;
+&#x10CAD;
+&#x10CAE;
+&#x10CAF;
+&#x10CB0;
+&#x10CB1;
+&#x10CB2;
+&#x118A0;
+&#x118A1;
+&#x118A2;
+&#x118A3;
+&#x118A4;
+&#x118A5;
+&#x118A6;
+&#x118A7;
+&#x118A8;
+&#x118A9;
+&#x118AA;
+&#x118AB;
+&#x118AC;
+&#x118AD;
+&#x118AE;
+&#x118AF;
+&#x118B0;
+&#x118B1;
+&#x118B2;
+&#x118B3;
+&#x118B4;
+&#x118B5;
+&#x118B6;
+&#x118B7;
+&#x118B8;
+&#x118B9;
+&#x118BA;
+&#x118BB;
+&#x118BC;
+&#x118BD;
+&#x118BE;
+&#x118BF;
+&#x16E40;
+&#x16E41;
+&#x16E42;
+&#x16E43;
+&#x16E44;
+&#x16E45;
+&#x16E46;
+&#x16E47;
+&#x16E48;
+&#x16E49;
+&#x16E4A;
+&#x16E4B;
+&#x16E4C;
+&#x16E4D;
+&#x16E4E;
+&#x16E4F;
+&#x16E50;
+&#x16E51;
+&#x16E52;
+&#x16E53;
+&#x16E54;
+&#x16E55;
+&#x16E56;
+&#x16E57;
+&#x16E58;
+&#x16E59;
+&#x16E5A;
+&#x16E5B;
+&#x16E5C;
+&#x16E5D;
+&#x16E5E;
+&#x16E5F;
+&#x1E900;
+&#x1E901;
+&#x1E902;
+&#x1E903;
+&#x1E904;
+&#x1E905;
+&#x1E906;
+&#x1E907;
+&#x1E908;
+&#x1E909;
+&#x1E90A;
+&#x1E90B;
+&#x1E90C;
+&#x1E90D;
+&#x1E90E;
+&#x1E90F;
+&#x1E910;
+&#x1E911;
+&#x1E912;
+&#x1E913;
+&#x1E914;
+&#x1E915;
+&#x1E916;
+&#x1E917;
+&#x1E918;
+&#x1E919;
+&#x1E91A;
+&#x1E91B;
+&#x1E91C;
+&#x1E91D;
+&#x1E91E;
+&#x1E91F;
+&#x1E920;
+&#x1E921;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/all-upper.html b/layout/reftests/text-transform/all-upper.html
new file mode 100644
index 0000000000..51e8b88b02
--- /dev/null
+++ b/layout/reftests/text-transform/all-upper.html
@@ -0,0 +1,1540 @@
+<!DOCTYPE html>
+<!-- GENERATED FILE, DO NOT EDIT -->
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ @font-face { font-family: foo; src: url(../fonts/dejavu-sans/DejaVuSans.ttf); }
+ p { font-family: foo; font-size: 12px; text-transform: uppercase; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x0061;
+&#x0062;
+&#x0063;
+&#x0064;
+&#x0065;
+&#x0066;
+&#x0067;
+&#x0068;
+&#x0069;
+&#x006A;
+&#x006B;
+&#x006C;
+&#x006D;
+&#x006E;
+&#x006F;
+&#x0070;
+&#x0071;
+&#x0072;
+&#x0073;
+&#x0074;
+&#x0075;
+&#x0076;
+&#x0077;
+&#x0078;
+&#x0079;
+&#x007A;
+&#x00B5;
+&#x00DF; <!-- LATIN SMALL LETTER SHARP S -->
+&#x00E0;
+&#x00E1;
+&#x00E2;
+&#x00E3;
+&#x00E4;
+&#x00E5;
+&#x00E6;
+&#x00E7;
+&#x00E8;
+&#x00E9;
+&#x00EA;
+&#x00EB;
+&#x00EC;
+&#x00ED;
+&#x00EE;
+&#x00EF;
+&#x00F0;
+&#x00F1;
+&#x00F2;
+&#x00F3;
+&#x00F4;
+&#x00F5;
+&#x00F6;
+&#x00F8;
+&#x00F9;
+&#x00FA;
+&#x00FB;
+&#x00FC;
+&#x00FD;
+&#x00FE;
+&#x00FF;
+&#x0101;
+&#x0103;
+&#x0105;
+&#x0107;
+&#x0109;
+&#x010B;
+&#x010D;
+&#x010F;
+&#x0111;
+&#x0113;
+&#x0115;
+&#x0117;
+&#x0119;
+&#x011B;
+&#x011D;
+&#x011F;
+&#x0121;
+&#x0123;
+&#x0125;
+&#x0127;
+&#x0129;
+&#x012B;
+&#x012D;
+&#x012F;
+&#x0131;
+&#x0133;
+&#x0135;
+&#x0137;
+&#x013A;
+&#x013C;
+&#x013E;
+&#x0140;
+&#x0142;
+&#x0144;
+&#x0146;
+&#x0148;
+&#x0149; <!-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+&#x014B;
+&#x014D;
+&#x014F;
+&#x0151;
+&#x0153;
+&#x0155;
+&#x0157;
+&#x0159;
+&#x015B;
+&#x015D;
+&#x015F;
+&#x0161;
+&#x0163;
+&#x0165;
+&#x0167;
+&#x0169;
+&#x016B;
+&#x016D;
+&#x016F;
+&#x0171;
+&#x0173;
+&#x0175;
+&#x0177;
+&#x017A;
+&#x017C;
+&#x017E;
+&#x017F;
+&#x0180;
+&#x0183;
+&#x0185;
+&#x0188;
+&#x018C;
+&#x0192;
+&#x0195;
+&#x0199;
+&#x019A;
+&#x019E;
+&#x01A1;
+&#x01A3;
+&#x01A5;
+&#x01A8;
+&#x01AD;
+&#x01B0;
+&#x01B4;
+&#x01B6;
+&#x01B9;
+&#x01BD;
+&#x01BF;
+&#x01C5;
+&#x01C6;
+&#x01C8;
+&#x01C9;
+&#x01CB;
+&#x01CC;
+&#x01CE;
+&#x01D0;
+&#x01D2;
+&#x01D4;
+&#x01D6;
+&#x01D8;
+&#x01DA;
+&#x01DC;
+&#x01DD;
+&#x01DF;
+&#x01E1;
+&#x01E3;
+&#x01E5;
+&#x01E7;
+&#x01E9;
+&#x01EB;
+&#x01ED;
+&#x01EF;
+&#x01F0; <!-- LATIN SMALL LETTER J WITH CARON -->
+&#x01F2;
+&#x01F3;
+&#x01F5;
+&#x01F9;
+&#x01FB;
+&#x01FD;
+&#x01FF;
+&#x0201;
+&#x0203;
+&#x0205;
+&#x0207;
+&#x0209;
+&#x020B;
+&#x020D;
+&#x020F;
+&#x0211;
+&#x0213;
+&#x0215;
+&#x0217;
+&#x0219;
+&#x021B;
+&#x021D;
+&#x021F;
+&#x0223;
+&#x0225;
+&#x0227;
+&#x0229;
+&#x022B;
+&#x022D;
+&#x022F;
+&#x0231;
+&#x0233;
+&#x023C;
+&#x023F;
+&#x0240;
+&#x0242;
+&#x0247;
+&#x0249;
+&#x024B;
+&#x024D;
+&#x024F;
+&#x0250;
+&#x0251;
+&#x0252;
+&#x0253;
+&#x0254;
+&#x0256;
+&#x0257;
+&#x0259;
+&#x025B;
+&#x025C;
+&#x0260;
+&#x0261;
+&#x0263;
+&#x0265;
+&#x0266;
+&#x0268;
+&#x0269;
+&#x026A;
+&#x026B;
+&#x026C;
+&#x026F;
+&#x0271;
+&#x0272;
+&#x0275;
+&#x027D;
+&#x0280;
+&#x0282;
+&#x0283;
+&#x0287;
+&#x0288;
+&#x0289;
+&#x028A;
+&#x028B;
+&#x028C;
+&#x0292;
+&#x029D;
+&#x029E;
+&#x0345;
+&#x0371;
+&#x0373;
+&#x0377;
+&#x037B;
+&#x037C;
+&#x037D;
+&#x0390; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
+&#x03AC;
+&#x03AD;
+&#x03AE;
+&#x03AF;
+&#x03B0; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
+&#x03B1;
+&#x03B2;
+&#x03B3;
+&#x03B4;
+&#x03B5;
+&#x03B6;
+&#x03B7;
+&#x03B8;
+&#x03B9;
+&#x03BA;
+&#x03BB;
+&#x03BC;
+&#x03BD;
+&#x03BE;
+&#x03BF;
+&#x03C0;
+&#x03C1;
+&#x03C2;
+&#x03C3;
+&#x03C4;
+&#x03C5;
+&#x03C6;
+&#x03C7;
+&#x03C8;
+&#x03C9;
+&#x03CA;
+&#x03CB;
+&#x03CC;
+&#x03CD;
+&#x03CE;
+&#x03D0;
+&#x03D1;
+&#x03D5;
+&#x03D6;
+&#x03D7;
+&#x03D9;
+&#x03DB;
+&#x03DD;
+&#x03DF;
+&#x03E1;
+&#x03E3;
+&#x03E5;
+&#x03E7;
+&#x03E9;
+&#x03EB;
+&#x03ED;
+&#x03EF;
+&#x03F0;
+&#x03F1;
+&#x03F2;
+&#x03F3;
+&#x03F5;
+&#x03F8;
+&#x03FB;
+&#x0430;
+&#x0431;
+&#x0432;
+&#x0433;
+&#x0434;
+&#x0435;
+&#x0436;
+&#x0437;
+&#x0438;
+&#x0439;
+&#x043A;
+&#x043B;
+&#x043C;
+&#x043D;
+&#x043E;
+&#x043F;
+&#x0440;
+&#x0441;
+&#x0442;
+&#x0443;
+&#x0444;
+&#x0445;
+&#x0446;
+&#x0447;
+&#x0448;
+&#x0449;
+&#x044A;
+&#x044B;
+&#x044C;
+&#x044D;
+&#x044E;
+&#x044F;
+&#x0450;
+&#x0451;
+&#x0452;
+&#x0453;
+&#x0454;
+&#x0455;
+&#x0456;
+&#x0457;
+&#x0458;
+&#x0459;
+&#x045A;
+&#x045B;
+&#x045C;
+&#x045D;
+&#x045E;
+&#x045F;
+&#x0461;
+&#x0463;
+&#x0465;
+&#x0467;
+&#x0469;
+&#x046B;
+&#x046D;
+&#x046F;
+&#x0471;
+&#x0473;
+&#x0475;
+&#x0477;
+&#x0479;
+&#x047B;
+&#x047D;
+&#x047F;
+&#x0481;
+&#x048B;
+&#x048D;
+&#x048F;
+&#x0491;
+&#x0493;
+&#x0495;
+&#x0497;
+&#x0499;
+&#x049B;
+&#x049D;
+&#x049F;
+&#x04A1;
+&#x04A3;
+&#x04A5;
+&#x04A7;
+&#x04A9;
+&#x04AB;
+&#x04AD;
+&#x04AF;
+&#x04B1;
+&#x04B3;
+&#x04B5;
+&#x04B7;
+&#x04B9;
+&#x04BB;
+&#x04BD;
+&#x04BF;
+&#x04C2;
+&#x04C4;
+&#x04C6;
+&#x04C8;
+&#x04CA;
+&#x04CC;
+&#x04CE;
+&#x04CF;
+&#x04D1;
+&#x04D3;
+&#x04D5;
+&#x04D7;
+&#x04D9;
+&#x04DB;
+&#x04DD;
+&#x04DF;
+&#x04E1;
+&#x04E3;
+&#x04E5;
+&#x04E7;
+&#x04E9;
+&#x04EB;
+&#x04ED;
+&#x04EF;
+&#x04F1;
+&#x04F3;
+&#x04F5;
+&#x04F7;
+&#x04F9;
+&#x04FB;
+&#x04FD;
+&#x04FF;
+&#x0501;
+&#x0503;
+&#x0505;
+&#x0507;
+&#x0509;
+&#x050B;
+&#x050D;
+&#x050F;
+&#x0511;
+&#x0513;
+&#x0515;
+&#x0517;
+&#x0519;
+&#x051B;
+&#x051D;
+&#x051F;
+&#x0521;
+&#x0523;
+&#x0525;
+&#x0527;
+&#x0529;
+&#x052B;
+&#x052D;
+&#x052F;
+&#x0561;
+&#x0562;
+&#x0563;
+&#x0564;
+&#x0565;
+&#x0566;
+&#x0567;
+&#x0568;
+&#x0569;
+&#x056A;
+&#x056B;
+&#x056C;
+&#x056D;
+&#x056E;
+&#x056F;
+&#x0570;
+&#x0571;
+&#x0572;
+&#x0573;
+&#x0574;
+&#x0575;
+&#x0576;
+&#x0577;
+&#x0578;
+&#x0579;
+&#x057A;
+&#x057B;
+&#x057C;
+&#x057D;
+&#x057E;
+&#x057F;
+&#x0580;
+&#x0581;
+&#x0582;
+&#x0583;
+&#x0584;
+&#x0585;
+&#x0586;
+&#x0587; <!-- ARMENIAN SMALL LIGATURE ECH YIWN -->
+<!-- &#x10D0; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D1; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D2; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D3; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D4; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D5; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D6; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D7; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D8; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10D9; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DA; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DB; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DC; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DD; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DE; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10DF; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E0; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E1; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E2; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E3; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E4; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E5; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E6; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E7; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E8; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10E9; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10EA; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10EB; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10EC; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10ED; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10EE; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10EF; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F0; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F1; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F2; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F3; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F4; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F5; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F6; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F7; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F8; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10F9; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10FA; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10FD; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10FE; --> <!-- Temporarily skipped, see bug 1476304. -->
+<!-- &#x10FF; --> <!-- Temporarily skipped, see bug 1476304. -->
+&#x13F8;
+&#x13F9;
+&#x13FA;
+&#x13FB;
+&#x13FC;
+&#x13FD;
+&#x1C80;
+&#x1C81;
+&#x1C82;
+&#x1C83;
+&#x1C84;
+&#x1C85;
+&#x1C86;
+&#x1C87;
+&#x1C88;
+&#x1D79;
+&#x1D7D;
+&#x1D8E;
+&#x1E01;
+&#x1E03;
+&#x1E05;
+&#x1E07;
+&#x1E09;
+&#x1E0B;
+&#x1E0D;
+&#x1E0F;
+&#x1E11;
+&#x1E13;
+&#x1E15;
+&#x1E17;
+&#x1E19;
+&#x1E1B;
+&#x1E1D;
+&#x1E1F;
+&#x1E21;
+&#x1E23;
+&#x1E25;
+&#x1E27;
+&#x1E29;
+&#x1E2B;
+&#x1E2D;
+&#x1E2F;
+&#x1E31;
+&#x1E33;
+&#x1E35;
+&#x1E37;
+&#x1E39;
+&#x1E3B;
+&#x1E3D;
+&#x1E3F;
+&#x1E41;
+&#x1E43;
+&#x1E45;
+&#x1E47;
+&#x1E49;
+&#x1E4B;
+&#x1E4D;
+&#x1E4F;
+&#x1E51;
+&#x1E53;
+&#x1E55;
+&#x1E57;
+&#x1E59;
+&#x1E5B;
+&#x1E5D;
+&#x1E5F;
+&#x1E61;
+&#x1E63;
+&#x1E65;
+&#x1E67;
+&#x1E69;
+&#x1E6B;
+&#x1E6D;
+&#x1E6F;
+&#x1E71;
+&#x1E73;
+&#x1E75;
+&#x1E77;
+&#x1E79;
+&#x1E7B;
+&#x1E7D;
+&#x1E7F;
+&#x1E81;
+&#x1E83;
+&#x1E85;
+&#x1E87;
+&#x1E89;
+&#x1E8B;
+&#x1E8D;
+&#x1E8F;
+&#x1E91;
+&#x1E93;
+&#x1E95;
+&#x1E96; <!-- LATIN SMALL LETTER H WITH LINE BELOW -->
+&#x1E97; <!-- LATIN SMALL LETTER T WITH DIAERESIS -->
+&#x1E98; <!-- LATIN SMALL LETTER W WITH RING ABOVE -->
+&#x1E99; <!-- LATIN SMALL LETTER Y WITH RING ABOVE -->
+&#x1E9A; <!-- LATIN SMALL LETTER A WITH RIGHT HALF RING -->
+&#x1E9B;
+&#x1EA1;
+&#x1EA3;
+&#x1EA5;
+&#x1EA7;
+&#x1EA9;
+&#x1EAB;
+&#x1EAD;
+&#x1EAF;
+&#x1EB1;
+&#x1EB3;
+&#x1EB5;
+&#x1EB7;
+&#x1EB9;
+&#x1EBB;
+&#x1EBD;
+&#x1EBF;
+&#x1EC1;
+&#x1EC3;
+&#x1EC5;
+&#x1EC7;
+&#x1EC9;
+&#x1ECB;
+&#x1ECD;
+&#x1ECF;
+&#x1ED1;
+&#x1ED3;
+&#x1ED5;
+&#x1ED7;
+&#x1ED9;
+&#x1EDB;
+&#x1EDD;
+&#x1EDF;
+&#x1EE1;
+&#x1EE3;
+&#x1EE5;
+&#x1EE7;
+&#x1EE9;
+&#x1EEB;
+&#x1EED;
+&#x1EEF;
+&#x1EF1;
+&#x1EF3;
+&#x1EF5;
+&#x1EF7;
+&#x1EF9;
+&#x1EFB;
+&#x1EFD;
+&#x1EFF;
+&#x1F00;
+&#x1F01;
+&#x1F02;
+&#x1F03;
+&#x1F04;
+&#x1F05;
+&#x1F06;
+&#x1F07;
+&#x1F10;
+&#x1F11;
+&#x1F12;
+&#x1F13;
+&#x1F14;
+&#x1F15;
+&#x1F20;
+&#x1F21;
+&#x1F22;
+&#x1F23;
+&#x1F24;
+&#x1F25;
+&#x1F26;
+&#x1F27;
+&#x1F30;
+&#x1F31;
+&#x1F32;
+&#x1F33;
+&#x1F34;
+&#x1F35;
+&#x1F36;
+&#x1F37;
+&#x1F40;
+&#x1F41;
+&#x1F42;
+&#x1F43;
+&#x1F44;
+&#x1F45;
+&#x1F50; <!-- GREEK SMALL LETTER UPSILON WITH PSILI -->
+&#x1F51;
+&#x1F52; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -->
+&#x1F53;
+&#x1F54; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -->
+&#x1F55;
+&#x1F56; <!-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -->
+&#x1F57;
+&#x1F60;
+&#x1F61;
+&#x1F62;
+&#x1F63;
+&#x1F64;
+&#x1F65;
+&#x1F66;
+&#x1F67;
+&#x1F70;
+&#x1F71;
+&#x1F72;
+&#x1F73;
+&#x1F74;
+&#x1F75;
+&#x1F76;
+&#x1F77;
+&#x1F78;
+&#x1F79;
+&#x1F7A;
+&#x1F7B;
+&#x1F7C;
+&#x1F7D;
+&#x1F80; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F81; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F82; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F83; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F84; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F85; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F86; <!-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F87; <!-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F88; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F89; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F8A; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F8B; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F8C; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F8D; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F8E; <!-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F8F; <!-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F90; <!-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1F91; <!-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1F92; <!-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1F93; <!-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1F94; <!-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1F95; <!-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1F96; <!-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F97; <!-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1F98; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1F99; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1F9A; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1F9B; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1F9C; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1F9D; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1F9E; <!-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1F9F; <!-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FA0; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -->
+&#x1FA1; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -->
+&#x1FA2; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -->
+&#x1FA3; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -->
+&#x1FA4; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -->
+&#x1FA5; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -->
+&#x1FA6; <!-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FA7; <!-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FA8; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -->
+&#x1FA9; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -->
+&#x1FAA; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -->
+&#x1FAB; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -->
+&#x1FAC; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -->
+&#x1FAD; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -->
+&#x1FAE; <!-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FAF; <!-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -->
+&#x1FB0;
+&#x1FB1;
+&#x1FB2; <!-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FB3; <!-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -->
+&#x1FB4; <!-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FB6; <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI -->
+&#x1FB7; <!-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FBC; <!-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -->
+&#x1FBE;
+&#x1FC2; <!-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FC3; <!-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -->
+&#x1FC4; <!-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FC6; <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI -->
+&#x1FC7; <!-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FCC; <!-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -->
+&#x1FD0;
+&#x1FD1;
+&#x1FD2; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -->
+&#x1FD3; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -->
+&#x1FD6; <!-- GREEK SMALL LETTER IOTA WITH PERISPOMENI -->
+&#x1FD7; <!-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FE0;
+&#x1FE1;
+&#x1FE2; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -->
+&#x1FE3; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -->
+&#x1FE4; <!-- GREEK SMALL LETTER RHO WITH PSILI -->
+&#x1FE5;
+&#x1FE6; <!-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI -->
+&#x1FE7; <!-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -->
+&#x1FF2; <!-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -->
+&#x1FF3; <!-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -->
+&#x1FF4; <!-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -->
+&#x1FF6; <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI -->
+&#x1FF7; <!-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -->
+&#x1FFC; <!-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -->
+&#x214E;
+&#x2170;
+&#x2171;
+&#x2172;
+&#x2173;
+&#x2174;
+&#x2175;
+&#x2176;
+&#x2177;
+&#x2178;
+&#x2179;
+&#x217A;
+&#x217B;
+&#x217C;
+&#x217D;
+&#x217E;
+&#x217F;
+&#x2184;
+&#x24D0;
+&#x24D1;
+&#x24D2;
+&#x24D3;
+&#x24D4;
+&#x24D5;
+&#x24D6;
+&#x24D7;
+&#x24D8;
+&#x24D9;
+&#x24DA;
+&#x24DB;
+&#x24DC;
+&#x24DD;
+&#x24DE;
+&#x24DF;
+&#x24E0;
+&#x24E1;
+&#x24E2;
+&#x24E3;
+&#x24E4;
+&#x24E5;
+&#x24E6;
+&#x24E7;
+&#x24E8;
+&#x24E9;
+&#x2C30;
+&#x2C31;
+&#x2C32;
+&#x2C33;
+&#x2C34;
+&#x2C35;
+&#x2C36;
+&#x2C37;
+&#x2C38;
+&#x2C39;
+&#x2C3A;
+&#x2C3B;
+&#x2C3C;
+&#x2C3D;
+&#x2C3E;
+&#x2C3F;
+&#x2C40;
+&#x2C41;
+&#x2C42;
+&#x2C43;
+&#x2C44;
+&#x2C45;
+&#x2C46;
+&#x2C47;
+&#x2C48;
+&#x2C49;
+&#x2C4A;
+&#x2C4B;
+&#x2C4C;
+&#x2C4D;
+&#x2C4E;
+&#x2C4F;
+&#x2C50;
+&#x2C51;
+&#x2C52;
+&#x2C53;
+&#x2C54;
+&#x2C55;
+&#x2C56;
+&#x2C57;
+&#x2C58;
+&#x2C59;
+&#x2C5A;
+&#x2C5B;
+&#x2C5C;
+&#x2C5D;
+&#x2C5E;
+&#x2C5F;
+&#x2C61;
+&#x2C65;
+&#x2C66;
+&#x2C68;
+&#x2C6A;
+&#x2C6C;
+&#x2C73;
+&#x2C76;
+&#x2C81;
+&#x2C83;
+&#x2C85;
+&#x2C87;
+&#x2C89;
+&#x2C8B;
+&#x2C8D;
+&#x2C8F;
+&#x2C91;
+&#x2C93;
+&#x2C95;
+&#x2C97;
+&#x2C99;
+&#x2C9B;
+&#x2C9D;
+&#x2C9F;
+&#x2CA1;
+&#x2CA3;
+&#x2CA5;
+&#x2CA7;
+&#x2CA9;
+&#x2CAB;
+&#x2CAD;
+&#x2CAF;
+&#x2CB1;
+&#x2CB3;
+&#x2CB5;
+&#x2CB7;
+&#x2CB9;
+&#x2CBB;
+&#x2CBD;
+&#x2CBF;
+&#x2CC1;
+&#x2CC3;
+&#x2CC5;
+&#x2CC7;
+&#x2CC9;
+&#x2CCB;
+&#x2CCD;
+&#x2CCF;
+&#x2CD1;
+&#x2CD3;
+&#x2CD5;
+&#x2CD7;
+&#x2CD9;
+&#x2CDB;
+&#x2CDD;
+&#x2CDF;
+&#x2CE1;
+&#x2CE3;
+&#x2CEC;
+&#x2CEE;
+&#x2CF3;
+&#x2D00;
+&#x2D01;
+&#x2D02;
+&#x2D03;
+&#x2D04;
+&#x2D05;
+&#x2D06;
+&#x2D07;
+&#x2D08;
+&#x2D09;
+&#x2D0A;
+&#x2D0B;
+&#x2D0C;
+&#x2D0D;
+&#x2D0E;
+&#x2D0F;
+&#x2D10;
+&#x2D11;
+&#x2D12;
+&#x2D13;
+&#x2D14;
+&#x2D15;
+&#x2D16;
+&#x2D17;
+&#x2D18;
+&#x2D19;
+&#x2D1A;
+&#x2D1B;
+&#x2D1C;
+&#x2D1D;
+&#x2D1E;
+&#x2D1F;
+&#x2D20;
+&#x2D21;
+&#x2D22;
+&#x2D23;
+&#x2D24;
+&#x2D25;
+&#x2D27;
+&#x2D2D;
+&#xA641;
+&#xA643;
+&#xA645;
+&#xA647;
+&#xA649;
+&#xA64B;
+&#xA64D;
+&#xA64F;
+&#xA651;
+&#xA653;
+&#xA655;
+&#xA657;
+&#xA659;
+&#xA65B;
+&#xA65D;
+&#xA65F;
+&#xA661;
+&#xA663;
+&#xA665;
+&#xA667;
+&#xA669;
+&#xA66B;
+&#xA66D;
+&#xA681;
+&#xA683;
+&#xA685;
+&#xA687;
+&#xA689;
+&#xA68B;
+&#xA68D;
+&#xA68F;
+&#xA691;
+&#xA693;
+&#xA695;
+&#xA697;
+&#xA699;
+&#xA69B;
+&#xA723;
+&#xA725;
+&#xA727;
+&#xA729;
+&#xA72B;
+&#xA72D;
+&#xA72F;
+&#xA733;
+&#xA735;
+&#xA737;
+&#xA739;
+&#xA73B;
+&#xA73D;
+&#xA73F;
+&#xA741;
+&#xA743;
+&#xA745;
+&#xA747;
+&#xA749;
+&#xA74B;
+&#xA74D;
+&#xA74F;
+&#xA751;
+&#xA753;
+&#xA755;
+&#xA757;
+&#xA759;
+&#xA75B;
+&#xA75D;
+&#xA75F;
+&#xA761;
+&#xA763;
+&#xA765;
+&#xA767;
+&#xA769;
+&#xA76B;
+&#xA76D;
+&#xA76F;
+&#xA77A;
+&#xA77C;
+&#xA77F;
+&#xA781;
+&#xA783;
+&#xA785;
+&#xA787;
+&#xA78C;
+&#xA791;
+&#xA793;
+&#xA794;
+&#xA797;
+&#xA799;
+&#xA79B;
+&#xA79D;
+&#xA79F;
+&#xA7A1;
+&#xA7A3;
+&#xA7A5;
+&#xA7A7;
+&#xA7A9;
+&#xA7B5;
+&#xA7B7;
+&#xA7B9;
+&#xA7BB;
+&#xA7BD;
+&#xA7BF;
+&#xA7C1;
+&#xA7C3;
+&#xA7C8;
+&#xA7CA;
+&#xA7D1;
+&#xA7D7;
+&#xA7D9;
+&#xA7F6;
+&#xAB53;
+&#xAB70;
+&#xAB71;
+&#xAB72;
+&#xAB73;
+&#xAB74;
+&#xAB75;
+&#xAB76;
+&#xAB77;
+&#xAB78;
+&#xAB79;
+&#xAB7A;
+&#xAB7B;
+&#xAB7C;
+&#xAB7D;
+&#xAB7E;
+&#xAB7F;
+&#xAB80;
+&#xAB81;
+&#xAB82;
+&#xAB83;
+&#xAB84;
+&#xAB85;
+&#xAB86;
+&#xAB87;
+&#xAB88;
+&#xAB89;
+&#xAB8A;
+&#xAB8B;
+&#xAB8C;
+&#xAB8D;
+&#xAB8E;
+&#xAB8F;
+&#xAB90;
+&#xAB91;
+&#xAB92;
+&#xAB93;
+&#xAB94;
+&#xAB95;
+&#xAB96;
+&#xAB97;
+&#xAB98;
+&#xAB99;
+&#xAB9A;
+&#xAB9B;
+&#xAB9C;
+&#xAB9D;
+&#xAB9E;
+&#xAB9F;
+&#xABA0;
+&#xABA1;
+&#xABA2;
+&#xABA3;
+&#xABA4;
+&#xABA5;
+&#xABA6;
+&#xABA7;
+&#xABA8;
+&#xABA9;
+&#xABAA;
+&#xABAB;
+&#xABAC;
+&#xABAD;
+&#xABAE;
+&#xABAF;
+&#xABB0;
+&#xABB1;
+&#xABB2;
+&#xABB3;
+&#xABB4;
+&#xABB5;
+&#xABB6;
+&#xABB7;
+&#xABB8;
+&#xABB9;
+&#xABBA;
+&#xABBB;
+&#xABBC;
+&#xABBD;
+&#xABBE;
+&#xABBF;
+&#xFB00; <!-- LATIN SMALL LIGATURE FF -->
+&#xFB01; <!-- LATIN SMALL LIGATURE FI -->
+&#xFB02; <!-- LATIN SMALL LIGATURE FL -->
+&#xFB03; <!-- LATIN SMALL LIGATURE FFI -->
+&#xFB04; <!-- LATIN SMALL LIGATURE FFL -->
+&#xFB05; <!-- LATIN SMALL LIGATURE LONG S T -->
+&#xFB06; <!-- LATIN SMALL LIGATURE ST -->
+&#xFB13; <!-- ARMENIAN SMALL LIGATURE MEN NOW -->
+&#xFB14; <!-- ARMENIAN SMALL LIGATURE MEN ECH -->
+&#xFB15; <!-- ARMENIAN SMALL LIGATURE MEN INI -->
+&#xFB16; <!-- ARMENIAN SMALL LIGATURE VEW NOW -->
+&#xFB17; <!-- ARMENIAN SMALL LIGATURE MEN XEH -->
+&#xFF41;
+&#xFF42;
+&#xFF43;
+&#xFF44;
+&#xFF45;
+&#xFF46;
+&#xFF47;
+&#xFF48;
+&#xFF49;
+&#xFF4A;
+&#xFF4B;
+&#xFF4C;
+&#xFF4D;
+&#xFF4E;
+&#xFF4F;
+&#xFF50;
+&#xFF51;
+&#xFF52;
+&#xFF53;
+&#xFF54;
+&#xFF55;
+&#xFF56;
+&#xFF57;
+&#xFF58;
+&#xFF59;
+&#xFF5A;
+&#x10428;
+&#x10429;
+&#x1042A;
+&#x1042B;
+&#x1042C;
+&#x1042D;
+&#x1042E;
+&#x1042F;
+&#x10430;
+&#x10431;
+&#x10432;
+&#x10433;
+&#x10434;
+&#x10435;
+&#x10436;
+&#x10437;
+&#x10438;
+&#x10439;
+&#x1043A;
+&#x1043B;
+&#x1043C;
+&#x1043D;
+&#x1043E;
+&#x1043F;
+&#x10440;
+&#x10441;
+&#x10442;
+&#x10443;
+&#x10444;
+&#x10445;
+&#x10446;
+&#x10447;
+&#x10448;
+&#x10449;
+&#x1044A;
+&#x1044B;
+&#x1044C;
+&#x1044D;
+&#x1044E;
+&#x1044F;
+&#x104D8;
+&#x104D9;
+&#x104DA;
+&#x104DB;
+&#x104DC;
+&#x104DD;
+&#x104DE;
+&#x104DF;
+&#x104E0;
+&#x104E1;
+&#x104E2;
+&#x104E3;
+&#x104E4;
+&#x104E5;
+&#x104E6;
+&#x104E7;
+&#x104E8;
+&#x104E9;
+&#x104EA;
+&#x104EB;
+&#x104EC;
+&#x104ED;
+&#x104EE;
+&#x104EF;
+&#x104F0;
+&#x104F1;
+&#x104F2;
+&#x104F3;
+&#x104F4;
+&#x104F5;
+&#x104F6;
+&#x104F7;
+&#x104F8;
+&#x104F9;
+&#x104FA;
+&#x104FB;
+&#x10597;
+&#x10598;
+&#x10599;
+&#x1059A;
+&#x1059B;
+&#x1059C;
+&#x1059D;
+&#x1059E;
+&#x1059F;
+&#x105A0;
+&#x105A1;
+&#x105A3;
+&#x105A4;
+&#x105A5;
+&#x105A6;
+&#x105A7;
+&#x105A8;
+&#x105A9;
+&#x105AA;
+&#x105AB;
+&#x105AC;
+&#x105AD;
+&#x105AE;
+&#x105AF;
+&#x105B0;
+&#x105B1;
+&#x105B3;
+&#x105B4;
+&#x105B5;
+&#x105B6;
+&#x105B7;
+&#x105B8;
+&#x105B9;
+&#x105BB;
+&#x105BC;
+&#x10CC0;
+&#x10CC1;
+&#x10CC2;
+&#x10CC3;
+&#x10CC4;
+&#x10CC5;
+&#x10CC6;
+&#x10CC7;
+&#x10CC8;
+&#x10CC9;
+&#x10CCA;
+&#x10CCB;
+&#x10CCC;
+&#x10CCD;
+&#x10CCE;
+&#x10CCF;
+&#x10CD0;
+&#x10CD1;
+&#x10CD2;
+&#x10CD3;
+&#x10CD4;
+&#x10CD5;
+&#x10CD6;
+&#x10CD7;
+&#x10CD8;
+&#x10CD9;
+&#x10CDA;
+&#x10CDB;
+&#x10CDC;
+&#x10CDD;
+&#x10CDE;
+&#x10CDF;
+&#x10CE0;
+&#x10CE1;
+&#x10CE2;
+&#x10CE3;
+&#x10CE4;
+&#x10CE5;
+&#x10CE6;
+&#x10CE7;
+&#x10CE8;
+&#x10CE9;
+&#x10CEA;
+&#x10CEB;
+&#x10CEC;
+&#x10CED;
+&#x10CEE;
+&#x10CEF;
+&#x10CF0;
+&#x10CF1;
+&#x10CF2;
+&#x118C0;
+&#x118C1;
+&#x118C2;
+&#x118C3;
+&#x118C4;
+&#x118C5;
+&#x118C6;
+&#x118C7;
+&#x118C8;
+&#x118C9;
+&#x118CA;
+&#x118CB;
+&#x118CC;
+&#x118CD;
+&#x118CE;
+&#x118CF;
+&#x118D0;
+&#x118D1;
+&#x118D2;
+&#x118D3;
+&#x118D4;
+&#x118D5;
+&#x118D6;
+&#x118D7;
+&#x118D8;
+&#x118D9;
+&#x118DA;
+&#x118DB;
+&#x118DC;
+&#x118DD;
+&#x118DE;
+&#x118DF;
+&#x16E60;
+&#x16E61;
+&#x16E62;
+&#x16E63;
+&#x16E64;
+&#x16E65;
+&#x16E66;
+&#x16E67;
+&#x16E68;
+&#x16E69;
+&#x16E6A;
+&#x16E6B;
+&#x16E6C;
+&#x16E6D;
+&#x16E6E;
+&#x16E6F;
+&#x16E70;
+&#x16E71;
+&#x16E72;
+&#x16E73;
+&#x16E74;
+&#x16E75;
+&#x16E76;
+&#x16E77;
+&#x16E78;
+&#x16E79;
+&#x16E7A;
+&#x16E7B;
+&#x16E7C;
+&#x16E7D;
+&#x16E7E;
+&#x16E7F;
+&#x1E922;
+&#x1E923;
+&#x1E924;
+&#x1E925;
+&#x1E926;
+&#x1E927;
+&#x1E928;
+&#x1E929;
+&#x1E92A;
+&#x1E92B;
+&#x1E92C;
+&#x1E92D;
+&#x1E92E;
+&#x1E92F;
+&#x1E930;
+&#x1E931;
+&#x1E932;
+&#x1E933;
+&#x1E934;
+&#x1E935;
+&#x1E936;
+&#x1E937;
+&#x1E938;
+&#x1E939;
+&#x1E93A;
+&#x1E93B;
+&#x1E93C;
+&#x1E93D;
+&#x1E93E;
+&#x1E93F;
+&#x1E940;
+&#x1E941;
+&#x1E942;
+&#x1E943;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-1.html b/layout/reftests/text-transform/capitalize-1.html
new file mode 100644
index 0000000000..be5bdf7f2e
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+ <body style="letter-spacing:2px">
+ <span style="text-transform:capitalize">This text should be capitalized.</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-2.html b/layout/reftests/text-transform/capitalize-2.html
new file mode 100644
index 0000000000..95578ca7a8
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-2.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+ <body style="letter-spacing:2px">
+ T<span style="text-transform:capitalize">his text should be capitalized.</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-3-ref.html b/layout/reftests/text-transform/capitalize-3-ref.html
new file mode 100644
index 0000000000..96289a5603
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-3-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML>
+<html>
+<body style="letter-spacing:2px">
+<p>I Ask "Questions"
+<p>i ask "Questions"
+<p>I Ask questions
+<p>I Ask<br>Questions
+<p>I Ask&nbsp;Questions
+<p style="white-space:nowrap">I Ask Questions
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-3.html b/layout/reftests/text-transform/capitalize-3.html
new file mode 100644
index 0000000000..970469554e
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-3.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+<body style="letter-spacing:2px">
+<p><span style="text-transform:capitalize">i ask "questions"</span>
+<p>i ask "<span style="text-transform:capitalize">questions"</span>
+<p><span style="text-transform:capitalize">i ask <span style="text-transform:none">q</span>uestions</span>
+<p><span style="text-transform:capitalize">i ask<br>questions</span>
+<p><span style="text-transform:capitalize">i ask&nbsp;questions</span>
+<p style="white-space:nowrap"><span style="text-transform:capitalize">i ask questions</span>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-4-ref.html b/layout/reftests/text-transform/capitalize-4-ref.html
new file mode 100644
index 0000000000..35b4a5dd10
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-4-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>text-transform:capitalize with punctuation</title>
+ </head>
+ <body>
+ <div>
+ "This" (Is) /A/ _Short_ *Test* -For- —The— ¡Capitalize! ¿Transform? «With» [Punctuation] “Marks”.
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-4.html b/layout/reftests/text-transform/capitalize-4.html
new file mode 100644
index 0000000000..7cb04afb24
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-4.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>text-transform:capitalize with punctuation</title>
+ </head>
+ <body>
+ <div style="text-transform:capitalize">
+ "This" (is) /a/ _short_ *test* -for- —the— ¡capitalize! ¿transform? «with» [punctuation] “marks”.
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-5-ref.html b/layout/reftests/text-transform/capitalize-5-ref.html
new file mode 100644
index 0000000000..2174e91878
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-5-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>text-transform:capitalize Deseret with punctuation</title>
+ </head>
+ <body>
+ <div>
+𐐧𐑌𐐮𐐿𐐬𐐼&nbsp;𐐑𐑉𐐲𐑂𐐴𐐼𐑆 (𐐊) _𐐧𐑌𐐨𐐿_ “𐐤𐐲𐑋𐐺𐐲𐑉” -𐐙𐐫𐑉- ¿𐐇𐑂𐑉𐐨? 𐐗𐐯𐑉𐐲𐐿𐐻𐐲𐑉.
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-5.html b/layout/reftests/text-transform/capitalize-5.html
new file mode 100644
index 0000000000..38dcb11752
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-5.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>text-transform:capitalize Deseret with punctuation</title>
+ </head>
+ <body>
+ <div style="text-transform:capitalize">
+𐐧𐑌𐐮𐐿𐐬𐐼&nbsp;𐐹𐑉𐐲𐑂𐐴𐐼𐑆 (𐐲) _𐑏𐑌𐐨𐐿_ “𐑌𐐲𐑋𐐺𐐲𐑉” -𐑁𐐫𐑉- ¿𐐯𐑂𐑉𐐨? 𐐿𐐯𐑉𐐲𐐿𐐻𐐲𐑉.
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-6-ref.html b/layout/reftests/text-transform/capitalize-6-ref.html
new file mode 100644
index 0000000000..132d90fe8c
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-6-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+<div lang="en">
+Ijsland Xijsland Ijsland Ixjsland
+</div>
+<div lang="nl">
+IJsland Xijsland Ijsland Ixjsland
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-6.html b/layout/reftests/text-transform/capitalize-6.html
new file mode 100644
index 0000000000..0aef807233
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-6.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+<div lang="en" style="text-transform:capitalize">
+ijsland xijsland Ijsland ixjsland
+</div>
+<div lang="nl" style="text-transform:capitalize">
+ijsland xijsland Ijsland ixjsland
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-7-ref.html b/layout/reftests/text-transform/capitalize-7-ref.html
new file mode 100644
index 0000000000..16a71c1020
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-7-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p>Blah Blah</p>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-7.html b/layout/reftests/text-transform/capitalize-7.html
new file mode 100644
index 0000000000..3db9a27452
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-7.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<style>
+p:first-letter { text-transform: uppercase; }
+p { text-transform: capitalize }
+</style>
+<body>
+<p>blah blah</p>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-7a.html b/layout/reftests/text-transform/capitalize-7a.html
new file mode 100644
index 0000000000..06360354cf
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-7a.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<style>
+html { overflow: hidden; }
+p:first-letter { text-transform: uppercase; }
+p { text-transform: capitalize }
+</style>
+<body>
+<p>blah blah</p>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/capitalize-8-ref.html b/layout/reftests/text-transform/capitalize-8-ref.html
new file mode 100644
index 0000000000..632398b1ec
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-8-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<style>
+div {
+ white-space: pre;
+}
+</style>
+<div>
+The Quick Brown Fox
+Jumps Over
+The Lazy Dog
diff --git a/layout/reftests/text-transform/capitalize-8.html b/layout/reftests/text-transform/capitalize-8.html
new file mode 100644
index 0000000000..5d1f32a722
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-8.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<style>
+div {
+ text-transform: capitalize;
+ white-space: pre;
+}
+</style>
+<div>
+the quick brown fox
+jumps over
+the lazy dog
diff --git a/layout/reftests/text-transform/capitalize-9-ref.html b/layout/reftests/text-transform/capitalize-9-ref.html
new file mode 100644
index 0000000000..31eedeca6e
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-9-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<div>
+Double-Barrelled
+What.Three.Words
+Snake_case
+Kebab-Case
+Colo[u]r
+Pass/Fail
+Lowe's
+Black’s
+Cancel·lar
diff --git a/layout/reftests/text-transform/capitalize-9.html b/layout/reftests/text-transform/capitalize-9.html
new file mode 100644
index 0000000000..cb09e52883
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-9.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<div style="text-transform:capitalize">
+double-barrelled
+what.three.words
+snake_case
+kebab-case
+colo[u]r
+pass/fail
+lowe's
+black’s
+cancel·lar
diff --git a/layout/reftests/text-transform/capitalize-ref.html b/layout/reftests/text-transform/capitalize-ref.html
new file mode 100644
index 0000000000..16e4d52a96
--- /dev/null
+++ b/layout/reftests/text-transform/capitalize-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+ <body style="letter-spacing:2px">
+ This Text Should Be Capitalized.
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/fake-small-caps-1-ref.html b/layout/reftests/text-transform/fake-small-caps-1-ref.html
new file mode 100644
index 0000000000..3b14167ad2
--- /dev/null
+++ b/layout/reftests/text-transform/fake-small-caps-1-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that does NOT support the 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/dejavu-sans/DejaVuSans.ttf);
+}
+body {
+ font: 100px test;
+}
+span {
+ font-size: 80px;
+}
+</style>
+</head>
+<body>
+<div>S<span>MALL</span> C<span>APS</span>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/fake-small-caps-1.html b/layout/reftests/text-transform/fake-small-caps-1.html
new file mode 100644
index 0000000000..21d83c3636
--- /dev/null
+++ b/layout/reftests/text-transform/fake-small-caps-1.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that does NOT support the 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/dejavu-sans/DejaVuSans.ttf);
+}
+body {
+ font: 100px test;
+}
+</style>
+</head>
+<body>
+<div style="font-variant:small-caps">Small Caps
+</body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-1-ref.html b/layout/reftests/text-transform/fullwidth-1-ref.html
new file mode 100644
index 0000000000..d49be61210
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-1-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <span>&#xff46;&#xff55;&#xff4c;&#xff4c;&#x3000;&#xff57;&#xff49;&#xff44;&#xff54;&#xff48;&#x3000;&#xffe5;&#xff11;&#xff10;</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-1.html b/layout/reftests/text-transform/fullwidth-1.html
new file mode 100644
index 0000000000..147bea6241
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-1.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <span style="text-transform: full-width;">full width &#xa5;10</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-2-ref.html b/layout/reftests/text-transform/fullwidth-2-ref.html
new file mode 100644
index 0000000000..a3a2761509
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-2-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <span style="text-transform: full-width;">&#xff71;&#xff72;&#xff73;&#x3099;</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-2.html b/layout/reftests/text-transform/fullwidth-2.html
new file mode 100644
index 0000000000..745b8ad19a
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-2.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <span style="text-transform: full-width;">&#xff71;&#xff72;&#xff73;&#xff9e;</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-all-ref.html b/layout/reftests/text-transform/fullwidth-all-ref.html
new file mode 100644
index 0000000000..550c3d6bf8
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-all-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<body style="white-space: pre-wrap; word-wrap: break-word">
+<!-- List of all wide characters that have mappings to/from narrow equivalents.
+ Extracted from the Unicode database (v6.2) by running
+
+ cut -d \; -f 1,6 UnicodeData.txt | \
+ perl -n -e 'if (/(....);<(wide|narrow)> (....)/) { printf "&#x%s;%s", ($2 eq 'wide' ? $1 : $3), ++$i % 10 ? "" : "\n" }'
+ -->
+&#x3000;&#xFF01;&#xFF02;&#xFF03;&#xFF04;&#xFF05;&#xFF06;&#xFF07;&#xFF08;&#xFF09;
+&#xFF0A;&#xFF0B;&#xFF0C;&#xFF0D;&#xFF0E;&#xFF0F;&#xFF10;&#xFF11;&#xFF12;&#xFF13;
+&#xFF14;&#xFF15;&#xFF16;&#xFF17;&#xFF18;&#xFF19;&#xFF1A;&#xFF1B;&#xFF1C;&#xFF1D;
+&#xFF1E;&#xFF1F;&#xFF20;&#xFF21;&#xFF22;&#xFF23;&#xFF24;&#xFF25;&#xFF26;&#xFF27;
+&#xFF28;&#xFF29;&#xFF2A;&#xFF2B;&#xFF2C;&#xFF2D;&#xFF2E;&#xFF2F;&#xFF30;&#xFF31;
+&#xFF32;&#xFF33;&#xFF34;&#xFF35;&#xFF36;&#xFF37;&#xFF38;&#xFF39;&#xFF3A;&#xFF3B;
+&#xFF3C;&#xFF3D;&#xFF3E;&#xFF3F;&#xFF40;&#xFF41;&#xFF42;&#xFF43;&#xFF44;&#xFF45;
+&#xFF46;&#xFF47;&#xFF48;&#xFF49;&#xFF4A;&#xFF4B;&#xFF4C;&#xFF4D;&#xFF4E;&#xFF4F;
+&#xFF50;&#xFF51;&#xFF52;&#xFF53;&#xFF54;&#xFF55;&#xFF56;&#xFF57;&#xFF58;&#xFF59;
+&#xFF5A;&#xFF5B;&#xFF5C;&#xFF5D;&#xFF5E;&#xFF5F;&#xFF60;&#x3002;&#x300C;&#x300D;
+&#x3001;&#x30FB;&#x30F2;&#x30A1;&#x30A3;&#x30A5;&#x30A7;&#x30A9;&#x30E3;&#x30E5;
+&#x30E7;&#x30C3;&#x30FC;&#x30A2;&#x30A4;&#x30A6;&#x30A8;&#x30AA;&#x30AB;&#x30AD;
+&#x30AF;&#x30B1;&#x30B3;&#x30B5;&#x30B7;&#x30B9;&#x30BB;&#x30BD;&#x30BF;&#x30C1;
+&#x30C4;&#x30C6;&#x30C8;&#x30CA;&#x30CB;&#x30CC;&#x30CD;&#x30CE;&#x30CF;&#x30D2;
+&#x30D5;&#x30D8;&#x30DB;&#x30DE;&#x30DF;&#x30E0;&#x30E1;&#x30E2;&#x30E4;&#x30E6;
+&#x30E8;&#x30E9;&#x30EA;&#x30EB;&#x30EC;&#x30ED;&#x30EF;&#x30F3;&#x3099;&#x309A;
+&#x3164;&#x3131;&#x3132;&#x3133;&#x3134;&#x3135;&#x3136;&#x3137;&#x3138;&#x3139;
+&#x313A;&#x313B;&#x313C;&#x313D;&#x313E;&#x313F;&#x3140;&#x3141;&#x3142;&#x3143;
+&#x3144;&#x3145;&#x3146;&#x3147;&#x3148;&#x3149;&#x314A;&#x314B;&#x314C;&#x314D;
+&#x314E;&#x314F;&#x3150;&#x3151;&#x3152;&#x3153;&#x3154;&#x3155;&#x3156;&#x3157;
+&#x3158;&#x3159;&#x315A;&#x315B;&#x315C;&#x315D;&#x315E;&#x315F;&#x3160;&#x3161;
+&#x3162;&#x3163;&#xFFE0;&#xFFE1;&#xFFE2;&#xFFE3;&#xFFE4;&#xFFE5;&#xFFE6;&#x2502;
+&#x2190;&#x2191;&#x2192;&#x2193;&#x25A0;&#x25CB;
+</body>
+</html>
diff --git a/layout/reftests/text-transform/fullwidth-all.html b/layout/reftests/text-transform/fullwidth-all.html
new file mode 100644
index 0000000000..2670fac924
--- /dev/null
+++ b/layout/reftests/text-transform/fullwidth-all.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<body style="text-transform: full-width; white-space: pre">
+<!-- List of all "narrow" characters that have a full-width mapping in Unicode.
+ Extracted from the Unicode database (v6.2) by running
+
+ cut -d \; -f 1,6 UnicodeData.txt | \
+ perl -n -e 'if (/(....);<(wide|narrow)> (....)/) { printf "&#x%s;%s", ($2 eq 'narrow' ? $1 : $3), ++$i % 10 ? "" : "\n" }'
+ -->
+&#x0020;&#x0021;&#x0022;&#x0023;&#x0024;&#x0025;&#x0026;&#x0027;&#x0028;&#x0029;
+&#x002A;&#x002B;&#x002C;&#x002D;&#x002E;&#x002F;&#x0030;&#x0031;&#x0032;&#x0033;
+&#x0034;&#x0035;&#x0036;&#x0037;&#x0038;&#x0039;&#x003A;&#x003B;&#x003C;&#x003D;
+&#x003E;&#x003F;&#x0040;&#x0041;&#x0042;&#x0043;&#x0044;&#x0045;&#x0046;&#x0047;
+&#x0048;&#x0049;&#x004A;&#x004B;&#x004C;&#x004D;&#x004E;&#x004F;&#x0050;&#x0051;
+&#x0052;&#x0053;&#x0054;&#x0055;&#x0056;&#x0057;&#x0058;&#x0059;&#x005A;&#x005B;
+&#x005C;&#x005D;&#x005E;&#x005F;&#x0060;&#x0061;&#x0062;&#x0063;&#x0064;&#x0065;
+&#x0066;&#x0067;&#x0068;&#x0069;&#x006A;&#x006B;&#x006C;&#x006D;&#x006E;&#x006F;
+&#x0070;&#x0071;&#x0072;&#x0073;&#x0074;&#x0075;&#x0076;&#x0077;&#x0078;&#x0079;
+&#x007A;&#x007B;&#x007C;&#x007D;&#x007E;&#x2985;&#x2986;&#xFF61;&#xFF62;&#xFF63;
+&#xFF64;&#xFF65;&#xFF66;&#xFF67;&#xFF68;&#xFF69;&#xFF6A;&#xFF6B;&#xFF6C;&#xFF6D;
+&#xFF6E;&#xFF6F;&#xFF70;&#xFF71;&#xFF72;&#xFF73;&#xFF74;&#xFF75;&#xFF76;&#xFF77;
+&#xFF78;&#xFF79;&#xFF7A;&#xFF7B;&#xFF7C;&#xFF7D;&#xFF7E;&#xFF7F;&#xFF80;&#xFF81;
+&#xFF82;&#xFF83;&#xFF84;&#xFF85;&#xFF86;&#xFF87;&#xFF88;&#xFF89;&#xFF8A;&#xFF8B;
+&#xFF8C;&#xFF8D;&#xFF8E;&#xFF8F;&#xFF90;&#xFF91;&#xFF92;&#xFF93;&#xFF94;&#xFF95;
+&#xFF96;&#xFF97;&#xFF98;&#xFF99;&#xFF9A;&#xFF9B;&#xFF9C;&#xFF9D;&#xFF9E;&#xFF9F;
+&#xFFA0;&#xFFA1;&#xFFA2;&#xFFA3;&#xFFA4;&#xFFA5;&#xFFA6;&#xFFA7;&#xFFA8;&#xFFA9;
+&#xFFAA;&#xFFAB;&#xFFAC;&#xFFAD;&#xFFAE;&#xFFAF;&#xFFB0;&#xFFB1;&#xFFB2;&#xFFB3;
+&#xFFB4;&#xFFB5;&#xFFB6;&#xFFB7;&#xFFB8;&#xFFB9;&#xFFBA;&#xFFBB;&#xFFBC;&#xFFBD;
+&#xFFBE;&#xFFC2;&#xFFC3;&#xFFC4;&#xFFC5;&#xFFC6;&#xFFC7;&#xFFCA;&#xFFCB;&#xFFCC;
+&#xFFCD;&#xFFCE;&#xFFCF;&#xFFD2;&#xFFD3;&#xFFD4;&#xFFD5;&#xFFD6;&#xFFD7;&#xFFDA;
+&#xFFDB;&#xFFDC;&#x00A2;&#x00A3;&#x00AC;&#x00AF;&#x00A6;&#x00A5;&#x20A9;&#xFFE8;
+&#xFFE9;&#xFFEA;&#xFFEB;&#xFFEC;&#xFFED;&#xFFEE;
+</body>
+</html>
diff --git a/layout/reftests/text-transform/graphite-small-caps-1-notref.html b/layout/reftests/text-transform/graphite-small-caps-1-notref.html
new file mode 100644
index 0000000000..d56a6694e0
--- /dev/null
+++ b/layout/reftests/text-transform/graphite-small-caps-1-notref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the Graphite 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/sil/CharisSIL-R.ttf);
+}
+body {
+ font: 100px test;
+}
+span {
+ font-size: 80px;
+}
+</style>
+</head>
+<body>
+<div>S<span>MALL</span> C<span>APS</span>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/graphite-small-caps-1-ref.html b/layout/reftests/text-transform/graphite-small-caps-1-ref.html
new file mode 100644
index 0000000000..0d553460af
--- /dev/null
+++ b/layout/reftests/text-transform/graphite-small-caps-1-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the Graphite 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/sil/CharisSIL-R.ttf);
+}
+body {
+ font: 100px test;
+}
+div {
+ font-feature-settings: 'smcp' on;
+}
+</style>
+</head>
+<body>
+<div>Small Caps
+</body>
+</html>
diff --git a/layout/reftests/text-transform/graphite-small-caps-1.html b/layout/reftests/text-transform/graphite-small-caps-1.html
new file mode 100644
index 0000000000..eb9d35bc88
--- /dev/null
+++ b/layout/reftests/text-transform/graphite-small-caps-1.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the Graphite 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/sil/CharisSIL-R.ttf);
+}
+body {
+ font: 100px test;
+}
+</style>
+</head>
+<body>
+<div style="font-variant:small-caps">Small Caps
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-small-caps-1-ref.html b/layout/reftests/text-transform/greek-small-caps-1-ref.html
new file mode 100644
index 0000000000..7e30707574
--- /dev/null
+++ b/layout/reftests/text-transform/greek-small-caps-1-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for Greek small-caps</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+/* use a known font, to avoid dependency on platform font behavior */
+@font-face {
+ font-family: test;
+ src: url(../fonts/dejavu-sans/DejaVuSans.ttf);
+}
+div {
+ font: 150% test;
+ margin: 1em;
+}
+span {
+ font-variant: small-caps;
+}
+</style>
+</head>
+<body lang="en">
+<div>Π<span>ατάτα</span>, Α<span>έρας</span>, Μ<span>άιος</span>, <span>άυλος</span>, <span>αϋπνία</span>, Μ<span>αΐου</span>, <span>χούι</span>, ΆΈΉΊΌΎΏ, Ά<span>κλιτα</span></div>
+<div lang="el">Π<span>ατατα</span>, Α<span>ερας</span>, Μ<span>αϊος</span>, <span>αϋλος</span>, <span>αϋπνία</span>, Μ<span>αϊου</span>, <span>χουι<span>, ΑΕΗΙΟΥΩ, Α<span>κλιτα</span></div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-small-caps-1.html b/layout/reftests/text-transform/greek-small-caps-1.html
new file mode 100644
index 0000000000..ba672429c0
--- /dev/null
+++ b/layout/reftests/text-transform/greek-small-caps-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for Greek small-caps</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+/* use a known font, to avoid dependency on platform font behavior */
+@font-face {
+ font-family: test;
+ src: url(../fonts/dejavu-sans/DejaVuSans.ttf);
+}
+div {
+ font: 150% test;
+ font-variant: small-caps;
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι, ΆΈΉΊΌΎΏ, Άκλιτα</div>
+<div lang="el">Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι, ΆΈΉΊΌΎΏ, Άκλιτα</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-1-ref.html b/layout/reftests/text-transform/greek-uppercase-1-ref.html
new file mode 100644
index 0000000000..ec38eb4698
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-1-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek (NFC)</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+div {
+ font: 150% "Droid Serif", serif; /* explicitly prefer Droid over Charis on Android */
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>ΠΑΤΆΤΑ, ΑΈΡΑΣ, ΜΆΙΟΣ, ΆΥΛΟΣ, ΑΫΠΝΊΑ, ΜΑΪ&#x301;ΟΥ, ΧΟΎΙ</div>
+<div lang="el">ΠΑΤΑΤΑ, ΑΕΡΑΣ, ΜΑΪΟΣ, ΑΫΛΟΣ, ΑΫΠΝΙΑ, ΜΑΪΟΥ, ΧΟΥΙ</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-1a.html b/layout/reftests/text-transform/greek-uppercase-1a.html
new file mode 100644
index 0000000000..af620e9675
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-1a.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek (NFC)</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+/* Note that this test depends on finding the same "serif" font for the
+ English- and Greek-tagged elements; on most platforms, our default prefs
+ provide that, but on Android they currently differ, hence the explicit
+ Droid Serif setting below. */
+div {
+ font: 150% "Droid Serif", serif; /* explicitly prefer Droid over Charis on Android */
+ text-transform: uppercase;
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι</div>
+<div lang="el">Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-1b.html b/layout/reftests/text-transform/greek-uppercase-1b.html
new file mode 100644
index 0000000000..a6398e7e85
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-1b.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek (NFC)</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+/* Note that this test depends on finding the same "serif" font for the
+ English- and Greek-tagged elements; on most platforms, our default prefs
+ provide that, but on Android they currently differ, hence the explicit
+ Droid Serif setting below. */
+div {
+ font: 150% "Droid Serif", serif; /* explicitly prefer Droid over Charis on Android */
+ text-transform: uppercase;
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι</div>
+<div lang="el-GR">Πατάτα, Αέρας, Μάιος, άυλος, αϋπνία, Μαΐου, χούι</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-2-ref.html b/layout/reftests/text-transform/greek-uppercase-2-ref.html
new file mode 100644
index 0000000000..2013a4e4af
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-2-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek (NFD)</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+div {
+ font: 150% serif;
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>ΠΑΤΑ&#x301;ΤΑ, ΑΕ&#x301;ΡΑΣ, ΜΑ&#x301;ΙΟΣ, Α&#x301;ΥΛΟΣ, ΑΥ&#x308;ΠΝΙ&#x301;Α, ΜΑΙ&#x308;&#x301;ΟΥ, ΧΟΥ&#x301;Ι</div>
+<div lang="el">ΠΑΤΑΤΑ, ΑΕΡΑΣ, ΜΑΪΟΣ, ΑΫΛΟΣ, ΑΥ&#x308;ΠΝΙΑ, ΜΑΙ&#x308;ΟΥ, ΧΟΥΙ</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-2.html b/layout/reftests/text-transform/greek-uppercase-2.html
new file mode 100644
index 0000000000..11c8d09648
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-2.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek (NFD)</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+div {
+ font: 150% serif;
+ text-transform: uppercase;
+ margin: 1em;
+}
+</style>
+</head>
+<body lang="en">
+<div>Πατα&#x301;τα, Αε&#x301;ρας, Μα&#x301;ιος, α&#x301;υλος, αυ&#x308;πνι&#x301;α, Μαι&#x308;&#x301;ου, χου&#x301;ι</div>
+<div lang="el">Πατα&#x301;τα, Αε&#x301;ρας, Μα&#x301;ιος, α&#x301;υλος, αυ&#x308;πνι&#x301;α, Μαι&#x308;&#x301;ου, χου&#x301;ι</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/greek-uppercase-3-ref.html b/layout/reftests/text-transform/greek-uppercase-3-ref.html
new file mode 100644
index 0000000000..66a60a47ea
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-3-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek disjunctive eta</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+div {
+ font: 150% serif;
+ margin: 1em;
+}
+</style>
+</head>
+<body>
+<div lang="en">ΉΣΟΥΝ Ή ΕΓΏ Ή ΕΣΎ (ΝΉ) (ΉΝ) (Ή) (Ή.) Ή</div>
+<div lang="el">ΗΣΟΥΝ Ή ΕΓΩ Ή ΕΣΥ (ΝΗ) (ΗΝ) (Ή) (Ή.) Ή</div>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/text-transform/greek-uppercase-3.html b/layout/reftests/text-transform/greek-uppercase-3.html
new file mode 100644
index 0000000000..4d12475ec2
--- /dev/null
+++ b/layout/reftests/text-transform/greek-uppercase-3.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Test for uppercasing of Greek disjunctive eta</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<style type="text/css">
+div {
+ font: 150% serif;
+ text-transform: uppercase;
+ margin: 1em;
+}
+</style>
+</head>
+<body>
+<div lang="en">ήσουν ή εγώ ή εσύ (νή) (ήν) (ή) (ή.) ή</div>
+<div lang="el">ήσουν ή εγώ ή εσύ (νή) (ήν) (ή) (ή.) ή</div>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/text-transform/irish-lowercase-1-ref.html b/layout/reftests/text-transform/irish-lowercase-1-ref.html
new file mode 100644
index 0000000000..3ab55732e5
--- /dev/null
+++ b/layout/reftests/text-transform/irish-lowercase-1-ref.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="ga-IE">
+<head>
+<meta charset="utf-8">
+<title>Test for Irish lowercasing</title>
+<style>
+body {
+ font: 16px/20px monospace;
+ text-transform: none;
+ word-break: keep-all;
+}
+</style>
+</head>
+<body>
+ ár n-acmhainní uisce
+/ ár n-acmhainní uisce
+/ ár n-acmhainní uisce
+/ ár n-acmhainní uisce
+/ ár n-acmhainní uisce
+/ ár nathair
+/ ár nathair
+/ ár nathair
+/ n-a shaighdiúir
+/ gan dul as aca ach le n-a chabhair
+/ eolaíocht na n-ábhar
+/ eolaíocht na n-ábhar
+/ eolaíocht na n-ábhar
+/ eolaíocht na n-ábhar
+/ eolaíocht na n-ábhar
+/ amhrán náisiúnta
+/ amhrán náisiúnta
+/ amhrán náisiúnta
+/ lucht na n-ealaíon
+/ lucht na n-ealaíon
+/ lucht na n-ealaíon
+/ lucht na n-ealaíon
+/ lucht na n-ealaíon
+/ neart daoine
+/ neart daoine
+/ neart daoine
+/ ceol na n-éan
+/ ceol na n-éan
+/ ceol na n-éan
+/ ceol na n-éan
+/ ceol na n-éan
+/ sa néal
+/ sa néal
+/ sa néal
+/ ord na n-imeachtaí
+/ ord na n-imeachtaí
+/ ord na n-imeachtaí
+/ ord na n-imeachtaí
+/ ord na n-imeachtaí
+/ nathair nimhe
+/ nathair nimhe
+/ nathair nimhe
+/ lucht adhartha na n-íomhánna
+/ lucht adhartha na n-íomhánna
+/ lucht adhartha na n-íomhánna
+/ lucht adhartha na n-íomhánna
+/ lucht adhartha na n-íomhánna
+/ níos measa
+/ níos measa
+/ níos measa
+/ gnéithe dár n-oidhreacht
+/ gnéithe dár n-oidhreacht
+/ gnéithe dár n-oidhreacht
+/ gnéithe dár n-oidhreacht
+/ gnéithe dár n-oidhreacht
+/ duine nochta
+/ duine nochta
+/ duine nochta
+/ cultúr na n-óg
+/ cultúr na n-óg
+/ cultúr na n-óg
+/ cultúr na n-óg
+/ cultúr na n-óg
+/ dhá nóiméad
+/ dhá nóiméad
+/ dhá nóiméad
+/ ocht n-uaire sa lá
+/ ocht n-uaire sa lá
+/ ocht n-uaire sa lá
+/ ocht n-uaire sa lá
+/ ocht n-uaire sa lá
+/ gúna nua
+/ gúna nua
+/ gúna nua
+/ formhór na n-údarás
+/ formhór na n-údarás
+/ formhór na n-údarás
+/ formhór na n-údarás
+/ formhór na n-údarás
+/ imoibreoir núicléach
+/ imoibreoir núicléach
+/ imoibreoir núicléach
+/ sean-airteagal
+/ seanairteagal
+/ bunioncaim
+/ bun-ioncaim
+/ buanorduithe
+/ buan-orduithe
+/ ár n-athair
+/ ár n-athair
+/ clár na n-ábhar
+/ clár na n-ábhar
+/ ceol na ndaoine
+/ ceol na ndaoine
+/ táim i ngrá leat
+/ táim i ngrá leat
+/ cén t-am é?
+/ cén t-am é?
+/ cén t-am é?
+/ cén t-am é?
+/ cén t-am é?
+/ tar ar ais!
+/ tar ar ais!
+/ tá an t-ádh orm inniu!
+/ tá an t-ádh orm inniu!
+/ tá an t-ádh orm inniu!
+/ tá an t-ádh orm inniu!
+/ tá an t-ádh orm inniu!
+/ rud tábhachtach
+/ rud tábhachtach
+/ rud tábhachtach
+/ den obair an t-eolas
+/ den obair an t-eolas
+/ den obair an t-eolas
+/ den obair an t-eolas
+/ den obair an t-eolas
+/ an t-éileamh a íoc
+/ an t-éileamh a íoc
+/ an t-éileamh a íoc
+/ an t-éileamh a íoc
+/ an t-éileamh a íoc
+/ an t-inneall cuardaigh is fearr
+/ an t-inneall cuardaigh is fearr
+/ an t-inneall cuardaigh is fearr
+/ an t-inneall cuardaigh is fearr
+/ an t-inneall cuardaigh is fearr
+/ an t-íochtar a chur in uachtar
+/ an t-íochtar a chur in uachtar
+/ an t-íochtar a chur in uachtar
+/ an t-íochtar a chur in uachtar
+/ an t-íochtar a chur in uachtar
+/ tabhair an t-ordú seo dó!
+/ tabhair an t-ordú seo dó!
+/ tabhair an t-ordú seo dó!
+/ tabhair an t-ordú seo dó!
+/ tabhair an t-ordú seo dó!
+/ tá an t-ór buí aige.
+/ tá an t-ór buí aige.
+/ tá an t-ór buí aige.
+/ tá an t-ór buí aige.
+/ tá an t-ór buí aige.
+/ an t-uisce beatha ar an tábla.
+/ an t-uisce beatha ar an tábla.
+/ an t-uisce beatha ar an tábla.
+/ an t-uisce beatha ar an tábla.
+/ an t-uisce beatha ar an tábla.
+/ an t-úrscéal is deireanaí
+/ an t-úrscéal is deireanaí
+/ an t-úrscéal is deireanaí
+/ an t-úrscéal is deireanaí
+/ an t-úrscéal is deireanaí
+/ dréacht-acht
+/ dréachtphlean
+/ dréacht-phlean
+/ dréacht-íocaíocht
+/ áitainmneacha
+/ áit-ainmneacha
+/ státurraithe
+/ stát-urraithe
+/ ar aon tslí
+/ ar aon tslí
+/ amach ón tsnáthaid
+/ amach ón tsnáthaid
+/ ar an tsráid
+/ ar an tsráid
+/ caint an tsráidbhaile
+/ caint an tsráidbhaile
+/ cora crua an tsaoil
+/ cora crua an tsaoil
+/ bholadh an tsáile
+/ bholadh an tsáile
+/ uair sa tseachtain
+/ uair sa tseachtain
+/ deireadh an tséasúir
+/ deireadh an tséasúir
+/ fear an tsiopa
+/ fear an tsiopa
+/ an tsíocháin a choimeád
+/ an tsíocháin a choimeád
+/ an tsochaí faisnéise
+/ an tsochaí faisnéise
+/ gaoth an tsóláis
+/ gaoth an tsóláis
+/ is beag an tsuim iad
+/ is beag an tsuim iad
+/ infheicthe ag an tsúil
+/ infheicthe ag an tsúil
+/ scríobhfaidh
+/ scríobhfaidh
+/ preabphas
+/ preabphas
+/ úsáidtear
+/ úsáidtear
+/ snagcheol
+/ snagcheol
+/ in-athnuaite agatsa
+/ in-athnuaite agatsa
+/ teanga dhomhanda
+/ teanga dhomhanda
+/ réaltsruth
+/ réaltsruth
+/ na hataí
+/ na hataí
+/ t-léine
+/ t-léine
+/ t-léine
+/ t-léine
+/ torc allta
+/ torc allta
+/ tsk tsk tsk a chara
+/ tsk tsk tsk a chara
+</body>
+</html>
diff --git a/layout/reftests/text-transform/irish-lowercase-1a.html b/layout/reftests/text-transform/irish-lowercase-1a.html
new file mode 100644
index 0000000000..87012f224a
--- /dev/null
+++ b/layout/reftests/text-transform/irish-lowercase-1a.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="ga">
+<head>
+<meta charset="utf-8">
+<title>Test for Irish lowercasing</title>
+<style>
+body {
+ font: 16px/20px monospace;
+ text-transform: lowercase;
+ word-break: keep-all;
+}
+</style>
+</head>
+<body>
+ ÁR nACMHAINNÍ UISCE
+/ ÁR N-ACMHAINNÍ UISCE
+/ Ár nAcmhainní Uisce
+/ Ár n-Acmhainní Uisce
+/ ár n-acmhainní uisce
+/ Ár nathair
+/ ÁR NATHAIR
+/ Ár Nathair
+/ N-a shaighdiúir
+/ gan dul as aca ach le nA chabhair
+/ EOLAÍOCHT NA nÁBHAR
+/ EOLAÍOCHT NA n-ÁBHAR
+/ Eolaíocht na nÁbhar
+/ Eolaíocht na n-Ábhar
+/ eolaíocht na n-ábhar
+/ Amhrán náisiúnta
+/ Amhrán Náisiúnta
+/ AMHRÁN NÁISIÚNTA
+/ LUCHT NA nEALAÍON
+/ LUCHT NA n-EALAÍON
+/ Lucht na nEalaíon
+/ Lucht na n-Ealaíon
+/ lucht na n-ealaíon
+/ Neart Daoine
+/ neart daoine
+/ NEART DAOINE
+/ CEOL NA nÉAN
+/ CEOL NA n-ÉAN
+/ Ceol na nÉan
+/ Ceol na n-Éan
+/ ceol na n-éan
+/ Sa Néal
+/ Sa néal
+/ SA NÉAL
+/ ORD NA nIMEACHTAÍ
+/ ORD NA n-IMEACHTAÍ
+/ Ord na nImeachtaí
+/ Ord na n-Imeachtaí
+/ ord na n-imeachtaí
+/ Nathair Nimhe
+/ Nathair nimhe
+/ NATHAIR NIMHE
+/ LUCHT ADHARTHA NA nÍOMHÁNNA
+/ LUCHT ADHARTHA NA n-ÍOMHÁNNA
+/ Lucht Adhartha na nÍomhánna
+/ Lucht Adhartha na n-Íomhánna
+/ lucht adhartha na n-íomhánna
+/ Níos Measa
+/ níos measa
+/ NÍOS MEASA
+/ GNÉITHE DÁR nOIDHREACHT
+/ GNÉITHE DÁR n-OIDHREACHT
+/ Gnéithe Dár nOidhreacht
+/ Gnéithe Dár n-Oidhreacht
+/ gnéithe dár n-oidhreacht
+/ Duine Nochta
+/ Duine nochta
+/ DUINE NOCHTA
+/ CULTÚR NA nÓG
+/ CULTÚR NA n-ÓG
+/ Cultúr na nÓg
+/ Cultúr na n-Óg
+/ cultúr na n-óg
+/ Dhá Nóiméad
+/ Dhá nóiméad
+/ DHÁ NÓIMÉAD
+/ OCHT nUAIRE SA LÁ
+/ OCHT n-UAIRE SA LÁ
+/ Ocht nUaire Sa Lá
+/ Ocht n-Uaire Sa Lá
+/ ocht n-uaire sa lá
+/ Gúna Nua
+/ gúna nua
+/ GÚNA NUA
+/ FORMHÓR NA nÚDARÁS
+/ FORMHÓR NA n-ÚDARÁS
+/ Formhór na nÚdarás
+/ Formhór na n-Údarás
+/ formhór na n-údarás
+/ Imoibreoir Núicléach
+/ Imoibreoir núicléach
+/ IMOIBREOIR NÚICLÉACH
+/ sean-Airteagal
+/ SeanAirteagal
+/ BunIoncaim
+/ Bun-Ioncaim
+/ BuanOrduithe
+/ Buan-Orduithe
+/ ÁR nATHAIR
+/ Ár nAthair
+/ CLÁR NA nÁBHAR
+/ Clár na nÁbhar
+/ CEOL NA nDAOINE
+/ Ceol na nDaoine
+/ TÁIM I nGRÁ LEAT
+/ Táim i nGrá Leat
+/ CÉN tAM É?
+/ CÉN t-AM É?
+/ Cén tAm É?
+/ Cén t-Am É?
+/ cén t-am é?
+/ Tar Ar Ais!
+/ tar ar ais!
+/ TÁ AN tÁDH ORM INNIU!
+/ TÁ AN t-ÁDH ORM INNIU!
+/ Tá An tÁdh Orm Inniu!
+/ Tá An t-Ádh Orm Inniu!
+/ tá an t-ádh orm inniu!
+/ Rud Tábhachtach
+/ Rud tábhachtach
+/ rud tábhachtach
+/ DEN OBAIR AN tEOLAS
+/ DEN OBAIR AN t-EOLAS
+/ Den Obair an tEolas
+/ Den Obair an t-Eolas
+/ den obair an t-eolas
+/ AN tÉILEAMH A ÍOC
+/ AN t-ÉILEAMH A ÍOC
+/ An tÉileamh a Íoc
+/ An t-Éileamh a Íoc
+/ an t-éileamh a íoc
+/ AN tINNEALL CUARDAIGH IS FEARR
+/ AN t-INNEALL CUARDAIGH IS FEARR
+/ An tInneall Cuardaigh Is Fearr
+/ An t-Inneall Cuardaigh Is Fearr
+/ an t-inneall cuardaigh is fearr
+/ AN tÍOCHTAR A CHUR IN UACHTAR
+/ AN t-ÍOCHTAR A CHUR IN UACHTAR
+/ An tÍochtar a Chur In Uachtar
+/ An t-Íochtar a Chur In Uachtar
+/ an t-íochtar a chur in uachtar
+/ TABHAIR AN tORDÚ SEO DÓ!
+/ TABHAIR AN t-ORDÚ SEO DÓ!
+/ Tabhair An tOrdú Seo Dó!
+/ Tabhair An t-Ordú Seo Dó!
+/ tabhair an t-ordú seo dó!
+/ TÁ AN tÓR BUÍ AIGE.
+/ TÁ AN t-ÓR BUÍ AIGE.
+/ Tá An tÓr Buí Aige.
+/ Tá An t-Ór Buí Aige.
+/ tá an t-ór buí aige.
+/ AN tUISCE BEATHA AR AN TÁBLA.
+/ AN t-UISCE BEATHA AR AN TÁBLA.
+/ An tUisce Beatha Ar An Tábla.
+/ An t-Uisce Beatha Ar An Tábla.
+/ an t-uisce beatha ar an tábla.
+/ AN tÚRSCÉAL IS DEIREANAÍ
+/ AN t-ÚRSCÉAL IS DEIREANAÍ
+/ An tÚrscéal Is Deireanaí
+/ An t-Úrscéal Is Deireanaí
+/ an t-úrscéal is deireanaí
+/ Dréacht-Acht
+/ DréachtPhlean
+/ Dréacht-Phlean
+/ Dréacht-Íocaíocht
+/ ÁitAinmneacha
+/ Áit-Ainmneacha
+/ StátUrraithe
+/ Stát-Urraithe
+/ AR AON tSLÍ
+/ Ar Aon tSlí
+/ AMACH ÓN tSNÁTHAID
+/ Amach Ón tSnáthaid
+/ AR AN tSRÁID
+/ Ar An tSráid
+/ CAINT AN tSRÁIDBHAILE
+/ Caint An tSráidbhaile
+/ CORA CRUA AN tSAOIL
+/ Cora Crua An tSaoil
+/ BHOLADH AN tSÁILE
+/ Bholadh An tSáile
+/ UAIR SA tSEACHTAIN
+/ Uair Sa tSeachtain
+/ DEIREADH AN tSÉASÚIR
+/ Deireadh An tSéasúir
+/ FEAR AN tSIOPA
+/ Fear an tSiopa
+/ AN tSÍOCHÁIN A CHOIMEÁD
+/ An tSíocháin a Choimeád
+/ AN tSOCHAÍ FAISNÉISE
+/ An tSochaí Faisnéise
+/ GAOTH AN tSÓLÁIS
+/ Gaoth aN tSóláis
+/ IS BEAG AN tSUIM IAD
+/ Is Beag An tSuim Iad
+/ INFHEICTHE AG AN tSÚIL
+/ Infheicthe Ag An tSúil
+/ SCRÍOBHFAIDH
+/ Scríobhfaidh
+/ PREABPHAS
+/ Preabphas
+/ ÚSÁIDTEAR
+/ Úsáidtear
+/ SNAGCHEOL
+/ Snagcheol
+/ IN-ATHNUAITE AGATSA
+/ In-Athnuaite AGATSA
+/ TEANGA DHOMHANDA
+/ Teanga Dhomhanda
+/ RÉALTSRUTH
+/ Réaltsruth
+/ NA HATAÍ
+/ Na Hataí
+/ T-LÉINE
+/ T-Léine
+/ t-Léine
+/ t-léine
+/ TORC ALLTA
+/ Torc Allta
+/ TSK TSK TSK A CHARA
+/ Tsk Tsk Tsk a Chara
+</body>
+</html>
diff --git a/layout/reftests/text-transform/irish-lowercase-1b.html b/layout/reftests/text-transform/irish-lowercase-1b.html
new file mode 100644
index 0000000000..52c858b712
--- /dev/null
+++ b/layout/reftests/text-transform/irish-lowercase-1b.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="ga-IE">
+<head>
+<meta charset="utf-8">
+<title>Test for Irish lowercasing</title>
+<style>
+body {
+ font: 16px/20px monospace;
+ text-transform: lowercase;
+ word-break: keep-all;
+}
+</style>
+</head>
+<body>
+ ÁR nACMHAINNÍ UISCE
+/ ÁR N-ACMHAINNÍ UISCE
+/ Ár nAcmhainní Uisce
+/ Ár n-Acmhainní Uisce
+/ ár n-acmhainní uisce
+/ Ár nathair
+/ ÁR NATHAIR
+/ Ár Nathair
+/ N-a shaighdiúir
+/ gan dul as aca ach le nA chabhair
+/ EOLAÍOCHT NA nÁBHAR
+/ EOLAÍOCHT NA n-ÁBHAR
+/ Eolaíocht na nÁbhar
+/ Eolaíocht na n-Ábhar
+/ eolaíocht na n-ábhar
+/ Amhrán náisiúnta
+/ Amhrán Náisiúnta
+/ AMHRÁN NÁISIÚNTA
+/ LUCHT NA nEALAÍON
+/ LUCHT NA n-EALAÍON
+/ Lucht na nEalaíon
+/ Lucht na n-Ealaíon
+/ lucht na n-ealaíon
+/ Neart Daoine
+/ neart daoine
+/ NEART DAOINE
+/ CEOL NA nÉAN
+/ CEOL NA n-ÉAN
+/ Ceol na nÉan
+/ Ceol na n-Éan
+/ ceol na n-éan
+/ Sa Néal
+/ Sa néal
+/ SA NÉAL
+/ ORD NA nIMEACHTAÍ
+/ ORD NA n-IMEACHTAÍ
+/ Ord na nImeachtaí
+/ Ord na n-Imeachtaí
+/ ord na n-imeachtaí
+/ Nathair Nimhe
+/ Nathair nimhe
+/ NATHAIR NIMHE
+/ LUCHT ADHARTHA NA nÍOMHÁNNA
+/ LUCHT ADHARTHA NA n-ÍOMHÁNNA
+/ Lucht Adhartha na nÍomhánna
+/ Lucht Adhartha na n-Íomhánna
+/ lucht adhartha na n-íomhánna
+/ Níos Measa
+/ níos measa
+/ NÍOS MEASA
+/ GNÉITHE DÁR nOIDHREACHT
+/ GNÉITHE DÁR n-OIDHREACHT
+/ Gnéithe Dár nOidhreacht
+/ Gnéithe Dár n-Oidhreacht
+/ gnéithe dár n-oidhreacht
+/ Duine Nochta
+/ Duine nochta
+/ DUINE NOCHTA
+/ CULTÚR NA nÓG
+/ CULTÚR NA n-ÓG
+/ Cultúr na nÓg
+/ Cultúr na n-Óg
+/ cultúr na n-óg
+/ Dhá Nóiméad
+/ Dhá nóiméad
+/ DHÁ NÓIMÉAD
+/ OCHT nUAIRE SA LÁ
+/ OCHT n-UAIRE SA LÁ
+/ Ocht nUaire Sa Lá
+/ Ocht n-Uaire Sa Lá
+/ ocht n-uaire sa lá
+/ Gúna Nua
+/ gúna nua
+/ GÚNA NUA
+/ FORMHÓR NA nÚDARÁS
+/ FORMHÓR NA n-ÚDARÁS
+/ Formhór na nÚdarás
+/ Formhór na n-Údarás
+/ formhór na n-údarás
+/ Imoibreoir Núicléach
+/ Imoibreoir núicléach
+/ IMOIBREOIR NÚICLÉACH
+/ sean-Airteagal
+/ SeanAirteagal
+/ BunIoncaim
+/ Bun-Ioncaim
+/ BuanOrduithe
+/ Buan-Orduithe
+/ ÁR nATHAIR
+/ Ár nAthair
+/ CLÁR NA nÁBHAR
+/ Clár na nÁbhar
+/ CEOL NA nDAOINE
+/ Ceol na nDaoine
+/ TÁIM I nGRÁ LEAT
+/ Táim i nGrá Leat
+/ CÉN tAM É?
+/ CÉN t-AM É?
+/ Cén tAm É?
+/ Cén t-Am É?
+/ cén t-am é?
+/ Tar Ar Ais!
+/ tar ar ais!
+/ TÁ AN tÁDH ORM INNIU!
+/ TÁ AN t-ÁDH ORM INNIU!
+/ Tá An tÁdh Orm Inniu!
+/ Tá An t-Ádh Orm Inniu!
+/ tá an t-ádh orm inniu!
+/ Rud Tábhachtach
+/ Rud tábhachtach
+/ rud tábhachtach
+/ DEN OBAIR AN tEOLAS
+/ DEN OBAIR AN t-EOLAS
+/ Den Obair an tEolas
+/ Den Obair an t-Eolas
+/ den obair an t-eolas
+/ AN tÉILEAMH A ÍOC
+/ AN t-ÉILEAMH A ÍOC
+/ An tÉileamh a Íoc
+/ An t-Éileamh a Íoc
+/ an t-éileamh a íoc
+/ AN tINNEALL CUARDAIGH IS FEARR
+/ AN t-INNEALL CUARDAIGH IS FEARR
+/ An tInneall Cuardaigh Is Fearr
+/ An t-Inneall Cuardaigh Is Fearr
+/ an t-inneall cuardaigh is fearr
+/ AN tÍOCHTAR A CHUR IN UACHTAR
+/ AN t-ÍOCHTAR A CHUR IN UACHTAR
+/ An tÍochtar a Chur In Uachtar
+/ An t-Íochtar a Chur In Uachtar
+/ an t-íochtar a chur in uachtar
+/ TABHAIR AN tORDÚ SEO DÓ!
+/ TABHAIR AN t-ORDÚ SEO DÓ!
+/ Tabhair An tOrdú Seo Dó!
+/ Tabhair An t-Ordú Seo Dó!
+/ tabhair an t-ordú seo dó!
+/ TÁ AN tÓR BUÍ AIGE.
+/ TÁ AN t-ÓR BUÍ AIGE.
+/ Tá An tÓr Buí Aige.
+/ Tá An t-Ór Buí Aige.
+/ tá an t-ór buí aige.
+/ AN tUISCE BEATHA AR AN TÁBLA.
+/ AN t-UISCE BEATHA AR AN TÁBLA.
+/ An tUisce Beatha Ar An Tábla.
+/ An t-Uisce Beatha Ar An Tábla.
+/ an t-uisce beatha ar an tábla.
+/ AN tÚRSCÉAL IS DEIREANAÍ
+/ AN t-ÚRSCÉAL IS DEIREANAÍ
+/ An tÚrscéal Is Deireanaí
+/ An t-Úrscéal Is Deireanaí
+/ an t-úrscéal is deireanaí
+/ Dréacht-Acht
+/ DréachtPhlean
+/ Dréacht-Phlean
+/ Dréacht-Íocaíocht
+/ ÁitAinmneacha
+/ Áit-Ainmneacha
+/ StátUrraithe
+/ Stát-Urraithe
+/ AR AON tSLÍ
+/ Ar Aon tSlí
+/ AMACH ÓN tSNÁTHAID
+/ Amach Ón tSnáthaid
+/ AR AN tSRÁID
+/ Ar An tSráid
+/ CAINT AN tSRÁIDBHAILE
+/ Caint An tSráidbhaile
+/ CORA CRUA AN tSAOIL
+/ Cora Crua An tSaoil
+/ BHOLADH AN tSÁILE
+/ Bholadh An tSáile
+/ UAIR SA tSEACHTAIN
+/ Uair Sa tSeachtain
+/ DEIREADH AN tSÉASÚIR
+/ Deireadh An tSéasúir
+/ FEAR AN tSIOPA
+/ Fear an tSiopa
+/ AN tSÍOCHÁIN A CHOIMEÁD
+/ An tSíocháin a Choimeád
+/ AN tSOCHAÍ FAISNÉISE
+/ An tSochaí Faisnéise
+/ GAOTH AN tSÓLÁIS
+/ Gaoth aN tSóláis
+/ IS BEAG AN tSUIM IAD
+/ Is Beag An tSuim Iad
+/ INFHEICTHE AG AN tSÚIL
+/ Infheicthe Ag An tSúil
+/ SCRÍOBHFAIDH
+/ Scríobhfaidh
+/ PREABPHAS
+/ Preabphas
+/ ÚSÁIDTEAR
+/ Úsáidtear
+/ SNAGCHEOL
+/ Snagcheol
+/ IN-ATHNUAITE AGATSA
+/ In-Athnuaite AGATSA
+/ TEANGA DHOMHANDA
+/ Teanga Dhomhanda
+/ RÉALTSRUTH
+/ Réaltsruth
+/ NA HATAÍ
+/ Na Hataí
+/ T-LÉINE
+/ T-Léine
+/ t-Léine
+/ t-léine
+/ TORC ALLTA
+/ Torc Allta
+/ TSK TSK TSK A CHARA
+/ Tsk Tsk Tsk a Chara
+</body>
+</html>
diff --git a/layout/reftests/text-transform/irish-uppercase-1-ref.html b/layout/reftests/text-transform/irish-uppercase-1-ref.html
new file mode 100644
index 0000000000..a9dc7ddc12
--- /dev/null
+++ b/layout/reftests/text-transform/irish-uppercase-1-ref.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="ga-IE">
+<head>
+<meta charset="utf-8">
+<title>Test for Irish uppercasing</title>
+<style>
+body {
+ font: 16px/20px monospace;
+ text-transform: none;
+}
+</style>
+</head>
+<body>
+ ORD NA bhFOCAL
+/ COSÁN NA bhFILÍ
+/ ÁR bPOBAL
+/ NÓRA NA bPORTACH
+/ I dTOSACH BÁIRE
+/ AN GHAEILGE I dTUAISCEART NA hÉIREANN
+/ AS AN gCEANTAR SIN
+/ I gCONTAE NA MÍ AGUS I gCONAMARA
+/ DÉ hAOINE
+/ OIRTHEAR NA hÁISE
+/ PARLAIMINT NA hEORPA
+/ POBLACHT NA hÉIREANN
+/ EALAÍN NA hIODÁILE
+/ NA hÍOSÁNAIGH
+/ ACADAMH NA hOLLSCOLAÍOCHTA
+/ TÍR NA hÓIGE
+/ TOGHCHÁN NA hUACHTARÁNACHTA
+/ NA hÚDARÁIS CHÁNACH
+/ I mBUN MO MHACHNAMH
+/ I mBÉAL FEIRSTE AGUS I mBAILE ÁTHA CLIATH
+/ ÁR nACMHAINNÍ UISCE
+/ EOLAÍOCHT NA nÁBHAR
+/ LUCHT NA nEALAÍON
+/ CEOL NA nÉAN
+/ ORD NA nIMEACHTAÍ
+/ LUCHT ADHARTHA NA nÍOMHÁNNA
+/ GNÉITHE DÁR nOIDHREACHT
+/ CULTÚR NA nÓG
+/ OCHT nUAIRE SA LÁ
+/ FORMHÓR NA nÚDARÁS
+/ ÁR nATHAIR
+/ CLÁR NA nÁBHAR
+/ LOCH nEATHACH
+/ CUMANN NA nÉIREANNACH AONTAITHE
+/ GRÉASÁN NA nIONTAS
+/ NÓIBHÍSEACHT NA nÍOSÁNACH
+/ I gCEANTAR NA nOILEÁN
+/ TÍR NA nÓG
+/ BAILE NA nULTACH
+/ GORT NA nÚLL
+/ CEOL NA nDAOINE
+/ I nDÚN NA nGALL
+/ TÁIM I nGRÁ LEAT
+/ LABHAIR SÉ I nGAEILGE!
+/ CÉN tAM É?
+/ TÁ AN tÁDH ORM INNIU!
+/ DEN OBAIR AN tEOLAS
+/ AN tÉILEAMH A ÍOC
+/ AN tINNEALL CUARDAIGH IS FEARR
+/ AN tÍOCHTAR A CHUR IN UACHTAR
+/ TABHAIR AN tORDÚ SEO DÓ!
+/ TÁ AN tÓR BUÍ AIGE.
+/ AN tUISCE BEATHA AR AN TÁBLA.
+/ AN tÚRSCÉAL IS DEIREANAÍ
+/ AN tACHT OIDEACHAIS
+/ AN tÁIVÉ MÁIRIA
+/ AN tEARRACH ARABACH
+/ AN tÉIRÍ AMACH
+/ AN tIMEALL
+/ AN tÍOSÁNACH PEADAR CANISIUS
+/ AN tOILEÁNACH
+/ AN tÓR MUIRE
+/ AN tUASAL ÉAMON Ó CUÍV
+/ AN tÚDARÁS UM BÓITHRE NÁISIÚNTA
+/ AR AON tSLÍ
+/ BÉAL ÁTHA AN tSLÉIBHE
+/ AMACH ÓN tSNÁTHAID
+/ BANRÍON AN tSNEACHTA
+/ AR AN tSRÁID
+/ CAINT AN tSRÁIDBHAILE
+/ CORA CRUA AN tSAOIL
+/ BHOLADH AN tSÁILE
+/ UAIR SA tSEACHTAIN
+/ DEIREADH AN tSÉASÚIR
+/ FEAR AN tSIOPA
+/ AN tSÍOCHÁIN A CHOIMEÁD
+/ AN tSOCHAÍ FAISNÉISE
+/ GAOTH AN tSÓLÁIS
+/ IS BEAG AN tSUIM IAD
+/ INFHEICTHE AG AN tSÚIL
+/ CNOC AN tSAMHRAIDH
+/ CIONN tSÁILE
+/ AN tSEIRBHÍS PHOIBLÍ
+/ BAILE AN tSÉIPÉIL
+/ AN tSIRIA
+/ AN tSÍN
+/ OIFIG AN tSOLÁTHAIR
+/ POLL AN tSÓMAIS
+/ EOLAIRE AN tSUÍMH
+/ CASADH AN tSÚGÁIN
+/ SCRÍOBHFAIDH
+/ PREABPHAS
+/ ÚSÁIDTEAR
+/ SNAGCHEOL
+/ STÁITSE IMBOLC
+/ IN-ATHNUAITE AGATSA
+/ TEANGA DHOMHANDA
+/ RÉALTSRUTH
+/ NA HATAÍ
+/ NA HATAÍ
+/ ÁR NATHAIR
+/ ÁR NATHAIR
+/ T-LÉINE
+/ TORC ALLTA
+/ TSK TSK TSK A CHARA
+</body>
+</html>
diff --git a/layout/reftests/text-transform/irish-uppercase-1.html b/layout/reftests/text-transform/irish-uppercase-1.html
new file mode 100644
index 0000000000..9e4743917e
--- /dev/null
+++ b/layout/reftests/text-transform/irish-uppercase-1.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="ga-IE">
+<head>
+<meta charset="utf-8">
+<title>Test for Irish uppercasing</title>
+<style>
+body {
+ font: 16px/20px monospace;
+ text-transform: uppercase;
+}
+</style>
+</head>
+<body>
+ ord na bhfocal
+/ Cosán na bhFilí
+/ ár bpobal
+/ Nóra na bPortach
+/ i dtosach báire
+/ An Ghaeilge i dTuaisceart na hÉireann
+/ as an gceantar sin
+/ I gContae na Mí agus i gConamara
+/ Dé hAoine
+/ Oirthear na hÁise
+/ Parlaimint na hEorpa
+/ Poblacht na hÉireann
+/ Ealaín na hIodáile
+/ na hÍosánaigh
+/ Acadamh na hOllscolaíochta
+/ Tír na hÓige
+/ toghchán na hUachtaránachta
+/ na hÚdaráis Chánach
+/ I mbun mo mhachnamh
+/ I mBéal Feirste agus i mBaile Átha Cliath
+/ ár n-acmhainní uisce
+/ eolaíocht na n-ábhar
+/ lucht na n-ealaíon
+/ ceol na n-éan
+/ ord na n-imeachtaí
+/ lucht adhartha na n-íomhánna
+/ gnéithe dár n-oidhreacht
+/ cultúr na n-óg
+/ ocht n-uaire sa lá
+/ formhór na n-údarás
+/ Ár nAthair
+/ Clár na nÁbhar
+/ Loch nEathach
+/ Cumann na nÉireannach Aontaithe
+/ Gréasán na nIontas
+/ nóibhíseacht na nÍosánach
+/ i gCeantar na nOileán
+/ Tír na nÓg
+/ Baile na nUltach
+/ Gort na nÚll
+/ ceol na ndaoine
+/ i nDún na nGall
+/ táim i ngrá leat
+/ labhair sé i nGaeilge!
+/ cén t-am é?
+/ tá an t-ádh orm inniu!
+/ Den obair an t-eolas
+/ An t-éileamh a íoc
+/ an t-inneall cuardaigh is fearr
+/ an t-íochtar a chur in uachtar
+/ Tabhair an t-ordú seo dó!
+/ Tá an t-ór buí aige.
+/ an t-uisce beatha ar an tábla.
+/ an t-úrscéal is deireanaí
+/ An tAcht Oideachais
+/ an tÁivé Máiria
+/ An tEarrach Arabach
+/ An tÉirí Amach
+/ An tImeall
+/ An tÍosánach Peadar Canisius
+/ An tOileánach
+/ An tÓr Muire
+/ an tUasal Éamon Ó Cuív
+/ An tÚdarás um Bóithre Náisiúnta
+/ ar aon tslí
+/ Béal Átha an tSléibhe
+/ Amach ón tsnáthaid
+/ Banríon an tSneachta
+/ ar an tsráid
+/ Caint an tSráidbhaile
+/ cora crua an tsaoil
+/ bholadh an tsáile
+/ uair sa tseachtain
+/ deireadh an tséasúir
+/ fear an tsiopa
+/ an tsíocháin a choimeád
+/ an tsochaí faisnéise
+/ gaoth an tsóláis
+/ Is beag an tsuim iad
+/ infheicthe ag an tsúil
+/ Cnoc an tSamhraidh
+/ Cionn tSáile
+/ an tSeirbhís Phoiblí
+/ Baile an tSéipéil
+/ An tSiria
+/ An tSín
+/ Oifig an tSoláthair
+/ Poll an tSómais
+/ Eolaire an tSuímh
+/ Casadh an tSúgáin
+/ scríobhfaidh
+/ preabphas
+/ úsáidtear
+/ snagcheol
+/ Stáitse Imbolc
+/ in-athnuaite agatsa
+/ Teanga Dhomhanda
+/ Réaltsruth
+/ na hataí
+/ Na Hataí
+/ ár nathair
+/ Ár Nathair
+/ t-léine
+/ torc allta
+/ tsk tsk tsk a chara
+</body>
+</html>
diff --git a/layout/reftests/text-transform/lowercase-1.html b/layout/reftests/text-transform/lowercase-1.html
new file mode 100644
index 0000000000..ffe1eb2860
--- /dev/null
+++ b/layout/reftests/text-transform/lowercase-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+ <body>
+ <span style="text-transform:lowercase">This text should be lowercased.</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/lowercase-ref.html b/layout/reftests/text-transform/lowercase-ref.html
new file mode 100644
index 0000000000..86e62bd10d
--- /dev/null
+++ b/layout/reftests/text-transform/lowercase-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ this text should be lowercased.
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/lowercase-sigma-1-ref.html b/layout/reftests/text-transform/lowercase-sigma-1-ref.html
new file mode 100644
index 0000000000..bfb53f68e5
--- /dev/null
+++ b/layout/reftests/text-transform/lowercase-sigma-1-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
+</head>
+<body>
+ <div>
+ σ σς σσς ας σα ασας ασσα (σ) (σς) (σ-σ) α&#x301;ς α&#x301;ς&#x301; α&#x301;σ&#x301;σ&#x301;α
+ </div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/lowercase-sigma-1.html b/layout/reftests/text-transform/lowercase-sigma-1.html
new file mode 100644
index 0000000000..dd7941bf7d
--- /dev/null
+++ b/layout/reftests/text-transform/lowercase-sigma-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=utf-8">
+</head>
+<body>
+ <div style="text-transform:lowercase">
+ Σ ΣΣ ΣΣΣ ΑΣ ΣΑ ΑΣΑΣ ΑΣΣΑ (Σ) (ΣΣ) (Σ-Σ) Α&#x301;Σ Α&#x301;Σ&#x301; Α&#x301;Σ&#x301;Σ&#x301;Α<br>
+ </div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/opentype-small-caps-1-notref.html b/layout/reftests/text-transform/opentype-small-caps-1-notref.html
new file mode 100644
index 0000000000..fd6ace0774
--- /dev/null
+++ b/layout/reftests/text-transform/opentype-small-caps-1-notref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the OpenType 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/LinLibertine_Re-4.7.5.woff);
+}
+body {
+ font: 100px test;
+}
+span {
+ font-size: 80px;
+}
+</style>
+</head>
+<body>
+<div>S<span>MALL</span> C<span>APS</span>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/opentype-small-caps-1-ref.html b/layout/reftests/text-transform/opentype-small-caps-1-ref.html
new file mode 100644
index 0000000000..ead0ecec88
--- /dev/null
+++ b/layout/reftests/text-transform/opentype-small-caps-1-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the OpenType 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/LinLibertine_Re-4.7.5.woff);
+}
+body {
+ font: 100px test;
+}
+div {
+ font-feature-settings: 'smcp' on;
+}
+</style>
+</head>
+<body>
+<div>Small Caps
+</body>
+</html>
diff --git a/layout/reftests/text-transform/opentype-small-caps-1.html b/layout/reftests/text-transform/opentype-small-caps-1.html
new file mode 100644
index 0000000000..53974db6e9
--- /dev/null
+++ b/layout/reftests/text-transform/opentype-small-caps-1.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+/* load a font that supports the OpenType 'smcp' feature */
+@font-face {
+ font-family: test;
+ src: url(../fonts/LinLibertine_Re-4.7.5.woff);
+}
+body {
+ font: 100px test;
+}
+</style>
+</head>
+<body>
+<div style="font-variant:small-caps">Small Caps
+</body>
+</html>
diff --git a/layout/reftests/text-transform/reftest.list b/layout/reftests/text-transform/reftest.list
new file mode 100644
index 0000000000..3ec0038036
--- /dev/null
+++ b/layout/reftests/text-transform/reftest.list
@@ -0,0 +1,49 @@
+# Some text-transform tests may require font fallback
+defaults pref(gfx.font_rendering.fallback.async,false)
+
+== capitalize-1.html capitalize-ref.html
+== capitalize-2.html capitalize-ref.html
+== capitalize-3.html capitalize-3-ref.html
+== capitalize-4.html capitalize-4-ref.html
+== capitalize-5.html capitalize-5-ref.html
+== capitalize-6.html capitalize-6-ref.html
+== capitalize-7.html capitalize-7-ref.html
+== capitalize-7a.html capitalize-7-ref.html
+== capitalize-8.html capitalize-8-ref.html
+== capitalize-9.html capitalize-9-ref.html
+== lowercase-1.html lowercase-ref.html
+== lowercase-sigma-1.html lowercase-sigma-1-ref.html
+random-if(winWidget) == small-caps-1.html small-caps-1-ref.html # fails if default font supports 'smcp'
+== fake-small-caps-1.html fake-small-caps-1-ref.html
+== opentype-small-caps-1.html opentype-small-caps-1-ref.html
+!= opentype-small-caps-1.html opentype-small-caps-1-notref.html
+== graphite-small-caps-1.html graphite-small-caps-1-ref.html
+!= graphite-small-caps-1.html graphite-small-caps-1-notref.html
+== uppercase-1.html uppercase-ref.html
+== uppercase-szlig-1.html uppercase-szlig-ref.html
+# these use DejaVu Sans via @font-face for consistency of results
+fuzzy-if(cocoaWidget,0-250,0-15) == all-upper.html all-upper-ref.html # bug 1140292
+fuzzy(0-1,0-1800) == all-lower.html all-lower-ref.html # bug 1140292
+fuzzy(0-1,0-80) == all-title.html all-title-ref.html
+== smtp-upper.html smtp-upper-ref.html
+== smtp-lower.html smtp-lower-ref.html
+== smtp-title.html smtp-title-ref.html
+== turkish-casing-1.html turkish-casing-1-ref.html
+!= small-caps-turkish-1.html small-caps-turkish-1-notref.html
+== greek-uppercase-1a.html greek-uppercase-1-ref.html
+== greek-uppercase-1b.html greek-uppercase-1-ref.html
+== greek-uppercase-2.html greek-uppercase-2-ref.html
+== greek-uppercase-3.html greek-uppercase-3-ref.html
+== greek-small-caps-1.html greek-small-caps-1-ref.html
+== irish-uppercase-1.html irish-uppercase-1-ref.html
+== irish-lowercase-1a.html irish-lowercase-1-ref.html
+== irish-lowercase-1b.html irish-lowercase-1-ref.html
+== fullwidth-1.html fullwidth-1-ref.html
+== fullwidth-2.html fullwidth-2-ref.html
+== fullwidth-all.html fullwidth-all-ref.html
+
+pref(layout.css.text-transform.uppercase-eszett.enabled,false) == uppercase-eszett-1.html uppercase-eszett-1a-ref.html
+pref(layout.css.text-transform.uppercase-eszett.enabled,true) == uppercase-eszett-1.html uppercase-eszett-1b-ref.html
+
+# Reset default prefs
+defaults
diff --git a/layout/reftests/text-transform/small-caps-1-ref.html b/layout/reftests/text-transform/small-caps-1-ref.html
new file mode 100644
index 0000000000..e342a3d2a2
--- /dev/null
+++ b/layout/reftests/text-transform/small-caps-1-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE HTML>
+<html>
+<body style="font-size:100px;">A<span style="font-size:80%">A</span></body>
+</html>
diff --git a/layout/reftests/text-transform/small-caps-1.html b/layout/reftests/text-transform/small-caps-1.html
new file mode 100644
index 0000000000..d7146b3e34
--- /dev/null
+++ b/layout/reftests/text-transform/small-caps-1.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+<body style="font-variant:small-caps; font-size:100px;">Aa</body>
+</html>
diff --git a/layout/reftests/text-transform/small-caps-turkish-1-notref.html b/layout/reftests/text-transform/small-caps-turkish-1-notref.html
new file mode 100644
index 0000000000..4e735277a1
--- /dev/null
+++ b/layout/reftests/text-transform/small-caps-turkish-1-notref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Test for Turkish small-caps behavior</title>
+<style type="text/css">
+@font-face {
+ font-family: libertine;
+ src: url(../fonts/LinLibertine_Re-4.7.5.woff);
+}
+div {
+ font-family: libertine;
+}
+</style>
+</head>
+<body>
+<div lang="en" style="font-variant:small-caps">
+Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+hangi altyapı,
+hangi yazılım,
+hangi dil olursa olsun.
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/small-caps-turkish-1.html b/layout/reftests/text-transform/small-caps-turkish-1.html
new file mode 100644
index 0000000000..be848f4b27
--- /dev/null
+++ b/layout/reftests/text-transform/small-caps-turkish-1.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Test for Turkish small-caps behavior</title>
+<style type="text/css">
+@font-face {
+ font-family: libertine;
+ src: url(../fonts/LinLibertine_Re-4.7.5.woff);
+}
+div {
+ font-family: libertine;
+}
+</style>
+</head>
+<body>
+<div lang="tr" style="font-variant:small-caps">
+Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+hangi altyapı,
+hangi yazılım,
+hangi dil olursa olsun.
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-lower-ref.html b/layout/reftests/text-transform/smtp-lower-ref.html
new file mode 100644
index 0000000000..f6d91314e4
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-lower-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <p>
+&#x10428;
+&#x10429;
+&#x1042A;
+&#x1042B;
+&#x1042C;
+&#x1042D;
+&#x1042E;
+&#x1042F;
+&#x10430;
+&#x10431;
+&#x10432;
+&#x10433;
+&#x10434;
+&#x10435;
+&#x10436;
+&#x10437;
+&#x10438;
+&#x10439;
+&#x1043A;
+&#x1043B;
+&#x1043C;
+&#x1043D;
+&#x1043E;
+&#x1043F;
+&#x10440;
+&#x10441;
+&#x10442;
+&#x10443;
+&#x10444;
+&#x10445;
+&#x10446;
+&#x10447;
+&#x10448;
+&#x10449;
+&#x1044A;
+&#x1044B;
+&#x1044C;
+&#x1044D;
+&#x1044E;
+&#x1044F;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-lower.html b/layout/reftests/text-transform/smtp-lower.html
new file mode 100644
index 0000000000..2d3ffa6d55
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-lower.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ p { text-transform: lowercase; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x10400;
+&#x10401;
+&#x10402;
+&#x10403;
+&#x10404;
+&#x10405;
+&#x10406;
+&#x10407;
+&#x10408;
+&#x10409;
+&#x1040A;
+&#x1040B;
+&#x1040C;
+&#x1040D;
+&#x1040E;
+&#x1040F;
+&#x10410;
+&#x10411;
+&#x10412;
+&#x10413;
+&#x10414;
+&#x10415;
+&#x10416;
+&#x10417;
+&#x10418;
+&#x10419;
+&#x1041A;
+&#x1041B;
+&#x1041C;
+&#x1041D;
+&#x1041E;
+&#x1041F;
+&#x10420;
+&#x10421;
+&#x10422;
+&#x10423;
+&#x10424;
+&#x10425;
+&#x10426;
+&#x10427;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-title-ref.html b/layout/reftests/text-transform/smtp-title-ref.html
new file mode 100644
index 0000000000..c404cfaecf
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-title-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <p>
+&#x10400;x
+&#x10401;x
+&#x10402;x
+&#x10403;x
+&#x10404;x
+&#x10405;x
+&#x10406;x
+&#x10407;x
+&#x10408;x
+&#x10409;x
+&#x1040A;x
+&#x1040B;x
+&#x1040C;x
+&#x1040D;x
+&#x1040E;x
+&#x1040F;x
+&#x10410;x
+&#x10411;x
+&#x10412;x
+&#x10413;x
+&#x10414;x
+&#x10415;x
+&#x10416;x
+&#x10417;x
+&#x10418;x
+&#x10419;x
+&#x1041A;x
+&#x1041B;x
+&#x1041C;x
+&#x1041D;x
+&#x1041E;x
+&#x1041F;x
+&#x10420;x
+&#x10421;x
+&#x10422;x
+&#x10423;x
+&#x10424;x
+&#x10425;x
+&#x10426;x
+&#x10427;x
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-title.html b/layout/reftests/text-transform/smtp-title.html
new file mode 100644
index 0000000000..c3dd440d5c
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-title.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ p { text-transform: capitalize; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x10428;x
+&#x10429;x
+&#x1042A;x
+&#x1042B;x
+&#x1042C;x
+&#x1042D;x
+&#x1042E;x
+&#x1042F;x
+&#x10430;x
+&#x10431;x
+&#x10432;x
+&#x10433;x
+&#x10434;x
+&#x10435;x
+&#x10436;x
+&#x10437;x
+&#x10438;x
+&#x10439;x
+&#x1043A;x
+&#x1043B;x
+&#x1043C;x
+&#x1043D;x
+&#x1043E;x
+&#x1043F;x
+&#x10440;x
+&#x10441;x
+&#x10442;x
+&#x10443;x
+&#x10444;x
+&#x10445;x
+&#x10446;x
+&#x10447;x
+&#x10448;x
+&#x10449;x
+&#x1044A;x
+&#x1044B;x
+&#x1044C;x
+&#x1044D;x
+&#x1044E;x
+&#x1044F;x
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-upper-ref.html b/layout/reftests/text-transform/smtp-upper-ref.html
new file mode 100644
index 0000000000..3d8a69c566
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-upper-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ </head>
+ <body>
+ <p>
+&#x10400;
+&#x10401;
+&#x10402;
+&#x10403;
+&#x10404;
+&#x10405;
+&#x10406;
+&#x10407;
+&#x10408;
+&#x10409;
+&#x1040A;
+&#x1040B;
+&#x1040C;
+&#x1040D;
+&#x1040E;
+&#x1040F;
+&#x10410;
+&#x10411;
+&#x10412;
+&#x10413;
+&#x10414;
+&#x10415;
+&#x10416;
+&#x10417;
+&#x10418;
+&#x10419;
+&#x1041A;
+&#x1041B;
+&#x1041C;
+&#x1041D;
+&#x1041E;
+&#x1041F;
+&#x10420;
+&#x10421;
+&#x10422;
+&#x10423;
+&#x10424;
+&#x10425;
+&#x10426;
+&#x10427;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/smtp-upper.html b/layout/reftests/text-transform/smtp-upper.html
new file mode 100644
index 0000000000..959765aca0
--- /dev/null
+++ b/layout/reftests/text-transform/smtp-upper.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ p { text-transform: uppercase; }
+ </style>
+ </head>
+ <body>
+ <p>
+&#x10428;
+&#x10429;
+&#x1042A;
+&#x1042B;
+&#x1042C;
+&#x1042D;
+&#x1042E;
+&#x1042F;
+&#x10430;
+&#x10431;
+&#x10432;
+&#x10433;
+&#x10434;
+&#x10435;
+&#x10436;
+&#x10437;
+&#x10438;
+&#x10439;
+&#x1043A;
+&#x1043B;
+&#x1043C;
+&#x1043D;
+&#x1043E;
+&#x1043F;
+&#x10440;
+&#x10441;
+&#x10442;
+&#x10443;
+&#x10444;
+&#x10445;
+&#x10446;
+&#x10447;
+&#x10448;
+&#x10449;
+&#x1044A;
+&#x1044B;
+&#x1044C;
+&#x1044D;
+&#x1044E;
+&#x1044F;
+ </p>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/turkish-casing-1-ref.html b/layout/reftests/text-transform/turkish-casing-1-ref.html
new file mode 100644
index 0000000000..77acf66cad
--- /dev/null
+++ b/layout/reftests/text-transform/turkish-casing-1-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Test for Turkish casing behavior</title>
+</head>
+<body>
+<div lang="tr">
+EVRENSEL KOD HER YAZI KARAKTERİ İÇİN BİR VE YALNIZ BİR SAYI ŞART KOŞAR,
+HANGİ ALTYAPI,
+HANGİ YAZILIM,
+HANGİ DİL OLURSA OLSUN.
+</div>
+<div lang="tr">
+evrensel kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+hangi altyapı,
+hangi yazılım,
+hangi dil olursa olsun.
+</div>
+<div lang="tr">
+Evrensel Kod Her Yazı Karakteri İçin Bir Ve Yalnız Bir Sayı Şart Koşar,
+Hangi Altyapı,
+Hangi Yazılım,
+Hangi Dil Olursa Olsun.
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/turkish-casing-1.html b/layout/reftests/text-transform/turkish-casing-1.html
new file mode 100644
index 0000000000..976b9dd8cf
--- /dev/null
+++ b/layout/reftests/text-transform/turkish-casing-1.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Test for Turkish casing behavior</title>
+</head>
+<body>
+<div lang="tr" style="text-transform:uppercase">
+Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+hangi altyapı,
+hangi yazılım,
+hangi dil olursa olsun.
+</div>
+<div lang="tr" style="text-transform:lowercase">
+EVRENSEL KOD HER YAZI KARAKTERİ İÇİN BİR VE YALNIZ BİR SAYI ŞART KOŞAR,
+HANGİ ALTYAPI,
+HANGİ YAZILIM,
+HANGİ DİL OLURSA OLSUN.
+</div>
+<div lang="tr" style="text-transform:capitalize">
+Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+hangi altyapı,
+hangi yazılım,
+hangi dil olursa olsun.
+</div>
+</body>
+</html>
diff --git a/layout/reftests/text-transform/uppercase-1.html b/layout/reftests/text-transform/uppercase-1.html
new file mode 100644
index 0000000000..8f7cd07244
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+ <body>
+ <span style="text-transform:uppercase">This text should be uppercased.</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/uppercase-eszett-1.html b/layout/reftests/text-transform/uppercase-eszett-1.html
new file mode 100644
index 0000000000..fe0d1929f4
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-eszett-1.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<div style="text-transform: uppercase;">
+Straße
+Großmann
diff --git a/layout/reftests/text-transform/uppercase-eszett-1a-ref.html b/layout/reftests/text-transform/uppercase-eszett-1a-ref.html
new file mode 100644
index 0000000000..3aae46af63
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-eszett-1a-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<div>
+STRASSE
+GROSSMANN
diff --git a/layout/reftests/text-transform/uppercase-eszett-1b-ref.html b/layout/reftests/text-transform/uppercase-eszett-1b-ref.html
new file mode 100644
index 0000000000..9a31e1e555
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-eszett-1b-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<div>
+STRAẞE
+GROẞMANN
diff --git a/layout/reftests/text-transform/uppercase-ref.html b/layout/reftests/text-transform/uppercase-ref.html
new file mode 100644
index 0000000000..794fe4a152
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ THIS TEXT SHOULD BE UPPERCASED.
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/uppercase-szlig-1.html b/layout/reftests/text-transform/uppercase-szlig-1.html
new file mode 100644
index 0000000000..c1774ada34
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-szlig-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS 2.1 Test Suite: text-transform</title>
+ <link rel="author" title="Robert O'Callahan" href="mailto:robert@ocallahan.org" />
+ <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
+ <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#caps-prop" />
+ <meta name="flags" content="" />
+ <body>
+ <span style="text-transform:uppercase">&szlig;</span>
+ </body>
+</html>
diff --git a/layout/reftests/text-transform/uppercase-szlig-ref.html b/layout/reftests/text-transform/uppercase-szlig-ref.html
new file mode 100644
index 0000000000..e73dd456c0
--- /dev/null
+++ b/layout/reftests/text-transform/uppercase-szlig-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ SS
+ </body>
+</html>