☠☠ backed out by c1b8d9b1b7f0 ☠ ☠ | |
author | Cameron McCormack <cam@mcc.id.au> |
Fri, 28 Sep 2012 17:17:29 +1000 | |
changeset 114718 | 6786b5f4ee4a79d22df9cc6931a36f1f99ca81be |
parent 114717 | a2a509184b0779808ec305b64b321bda419a1b2b |
child 114719 | 96faff88d7928f0c85de918de6a5e1b8677fc31c |
push id | 1708 |
push user | akeybl@mozilla.com |
push date | Mon, 19 Nov 2012 21:10:21 +0000 |
treeherder | mozilla-beta@27b14fe50103 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | smontagu |
bugs | 655877 |
milestone | 18.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/reftests/bidi/bidiMirroring-ref.svg +++ b/layout/reftests/bidi/bidiMirroring-ref.svg @@ -1,14 +1,8 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="520"> - <text x="100" y="40" direction="ltr" unicode-bidi="embed">᚛᚜༼༽༺༻«»{}[]<>()</text> - <text x="100" y="80" direction="ltr" unicode-bidi="embed">₍₎⁽⁾⁅⁆‹›</text> - <text x="100" y="120" direction="ltr" unicode-bidi="embed">≾≿≼≽≺≻≸≹≶≷≴≵≲≳≰≱≮≯≪≫≨≩≦≧≤≥≔≕≒≓⋍∼∽⧵∊∉∈∍∌∋</text> - <text x="100" y="160" direction="ltr" unicode-bidi="embed">⋷⋶⋴⋳⋲⋾⋽⋼⋻⋺⋰⋱⋬⋭⋪⋫⋨⋩⋦⋧⋤⋥⋢⋣⋠⋡⋞⋟⋜⋝⋚⋛⋘⋙⋖⋗⋐⋑≃⋋⋌⋉⋊⊶⊷⊴⊵⊲⊳⊰⊱⫥⫣⫤⫞⊢⊣⦸⊑⊒⊏⊐⊊⊋⊈⊉⊆⊇⊄⊅⊂⊃⊀⊁</text> - <text x="100" y="200" direction="ltr" unicode-bidi="embed">〈〉⌊⌋⌈⌉</text> - <text x="100" y="240" direction="ltr" unicode-bidi="embed">⟮⟯⟬⟭⟪⟫⟨⟩⟦⟧⟤⟥⟢⟣⟝⟞⟕⟖⟋⟍⟈⟉⟅⟆⟃⟄❴❵❲❳❰❱❮❯❬❭❪❫❨❩</text> - <text x="100" y="280" direction="ltr" unicode-bidi="embed">⧼⧽⧸⧹∕⧚⧛⧘⧙⧔⧕⧑⧒⧏⧐⧄⧅⧀⧁⊘⦗⦘⦕⦖⦓⦔⦑⦒⦍⦎⦏⦐⦋⦌⦉⦊⦇⦈⦅⦆⦃⦄</text> - <text x="100" y="320" direction="ltr" unicode-bidi="embed">⫹⫺⫷⫸⫬⫭⊫⊨⊩⊦⫕⫖⫓⫔⫑⫒⫏⫐⫍⫎⫅⫆⫃⫄⫁⫂⪿⫀⪽⪾⪻⪼⪳⪴⪯⪰⪬⪭⪪⪫⪨⪩⪦⪧⪡⪢⪛⪜⪙⪚⪗⪘⪕⪖⪓⪔⪑⪒⪋⪌⪃⪄⪁⪂⩿⪀⩽⩾⩹⩺⩤⩥⨼⨽⨴⨵⨭⨮⨫⨬</text> - <text x="100" y="360" direction="ltr" unicode-bidi="embed">⸨⸩⸦⸧⸤⸥⸢⸣⸠⸡⸜⸝⸌⸍⸉⸊⸄⸅⸂⸃</text> - <text x="100" y="400" direction="ltr" unicode-bidi="embed">〚〛〘〙〖〗〔〕【】『』「」《》〈〉</text> - <text x="100" y="440" direction="ltr" unicode-bidi="embed">﹤﹥﹝﹞﹛﹜﹙﹚</text> - <text x="100" y="480" direction="ltr" unicode-bidi="embed">「」⦅⦆{}[]<>()</text> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="800" height="800" class="reftest-wait" onload="reference()"> + <style> + @font-face { font-family: BitPattern; src: url(../fonts/BitPattern.woff); } + </style> + <script xlink:href="bidiMirroring.js"/> </svg>
new file mode 100644 --- /dev/null +++ b/layout/reftests/bidi/bidiMirroring.js @@ -0,0 +1,407 @@ +// Pairs of mirrored characters from +// http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt +var mirrors = [ + [0x0028, 0x0029], + [0x0029, 0x0028], + [0x003C, 0x003E], + [0x003E, 0x003C], + [0x005B, 0x005D], + [0x005D, 0x005B], + [0x007B, 0x007D], + [0x007D, 0x007B], + [0x00AB, 0x00BB], + [0x00BB, 0x00AB], +// These four are disabled as on Mac earlier than 10.7, Tibetan characters will +// not be used from the BitPattern.woff font due to lack of platform support. +// +// [0x0F3A, 0x0F3B], +// [0x0F3B, 0x0F3A], +// [0x0F3C, 0x0F3D], +// [0x0F3D, 0x0F3C], + [0x169B, 0x169C], + [0x169C, 0x169B], + [0x2039, 0x203A], + [0x203A, 0x2039], + [0x2045, 0x2046], + [0x2046, 0x2045], + [0x207D, 0x207E], + [0x207E, 0x207D], + [0x208D, 0x208E], + [0x208E, 0x208D], + [0x2208, 0x220B], + [0x2209, 0x220C], + [0x220A, 0x220D], + [0x220B, 0x2208], + [0x220C, 0x2209], + [0x220D, 0x220A], + [0x2215, 0x29F5], + [0x223C, 0x223D], + [0x223D, 0x223C], + [0x2243, 0x22CD], + [0x2252, 0x2253], + [0x2253, 0x2252], + [0x2254, 0x2255], + [0x2255, 0x2254], + [0x2264, 0x2265], + [0x2265, 0x2264], + [0x2266, 0x2267], + [0x2267, 0x2266], + [0x2268, 0x2269], + [0x2269, 0x2268], + [0x226A, 0x226B], + [0x226B, 0x226A], + [0x226E, 0x226F], + [0x226F, 0x226E], + [0x2270, 0x2271], + [0x2271, 0x2270], + [0x2272, 0x2273], + [0x2273, 0x2272], + [0x2274, 0x2275], + [0x2275, 0x2274], + [0x2276, 0x2277], + [0x2277, 0x2276], + [0x2278, 0x2279], + [0x2279, 0x2278], + [0x227A, 0x227B], + [0x227B, 0x227A], + [0x227C, 0x227D], + [0x227D, 0x227C], + [0x227E, 0x227F], + [0x227F, 0x227E], + [0x2280, 0x2281], + [0x2281, 0x2280], + [0x2282, 0x2283], + [0x2283, 0x2282], + [0x2284, 0x2285], + [0x2285, 0x2284], + [0x2286, 0x2287], + [0x2287, 0x2286], + [0x2288, 0x2289], + [0x2289, 0x2288], + [0x228A, 0x228B], + [0x228B, 0x228A], + [0x228F, 0x2290], + [0x2290, 0x228F], + [0x2291, 0x2292], + [0x2292, 0x2291], + [0x2298, 0x29B8], + [0x22A2, 0x22A3], + [0x22A3, 0x22A2], + [0x22A6, 0x2ADE], + [0x22A8, 0x2AE4], + [0x22A9, 0x2AE3], + [0x22AB, 0x2AE5], + [0x22B0, 0x22B1], + [0x22B1, 0x22B0], + [0x22B2, 0x22B3], + [0x22B3, 0x22B2], + [0x22B4, 0x22B5], + [0x22B5, 0x22B4], + [0x22B6, 0x22B7], + [0x22B7, 0x22B6], + [0x22C9, 0x22CA], + [0x22CA, 0x22C9], + [0x22CB, 0x22CC], + [0x22CC, 0x22CB], + [0x22CD, 0x2243], + [0x22D0, 0x22D1], + [0x22D1, 0x22D0], + [0x22D6, 0x22D7], + [0x22D7, 0x22D6], + [0x22D8, 0x22D9], + [0x22D9, 0x22D8], + [0x22DA, 0x22DB], + [0x22DB, 0x22DA], + [0x22DC, 0x22DD], + [0x22DD, 0x22DC], + [0x22DE, 0x22DF], + [0x22DF, 0x22DE], + [0x22E0, 0x22E1], + [0x22E1, 0x22E0], + [0x22E2, 0x22E3], + [0x22E3, 0x22E2], + [0x22E4, 0x22E5], + [0x22E5, 0x22E4], + [0x22E6, 0x22E7], + [0x22E7, 0x22E6], + [0x22E8, 0x22E9], + [0x22E9, 0x22E8], + [0x22EA, 0x22EB], + [0x22EB, 0x22EA], + [0x22EC, 0x22ED], + [0x22ED, 0x22EC], + [0x22F0, 0x22F1], + [0x22F1, 0x22F0], + [0x22F2, 0x22FA], + [0x22F3, 0x22FB], + [0x22F4, 0x22FC], + [0x22F6, 0x22FD], + [0x22F7, 0x22FE], + [0x22FA, 0x22F2], + [0x22FB, 0x22F3], + [0x22FC, 0x22F4], + [0x22FD, 0x22F6], + [0x22FE, 0x22F7], + [0x2308, 0x2309], + [0x2309, 0x2308], + [0x230A, 0x230B], + [0x230B, 0x230A], + [0x2329, 0x232A], + [0x232A, 0x2329], + [0x2768, 0x2769], + [0x2769, 0x2768], + [0x276A, 0x276B], + [0x276B, 0x276A], + [0x276C, 0x276D], + [0x276D, 0x276C], + [0x276E, 0x276F], + [0x276F, 0x276E], + [0x2770, 0x2771], + [0x2771, 0x2770], + [0x2772, 0x2773], + [0x2773, 0x2772], + [0x2774, 0x2775], + [0x2775, 0x2774], + [0x27C3, 0x27C4], + [0x27C4, 0x27C3], + [0x27C5, 0x27C6], + [0x27C6, 0x27C5], + [0x27C8, 0x27C9], + [0x27C9, 0x27C8], + [0x27CB, 0x27CD], + [0x27CD, 0x27CB], + [0x27D5, 0x27D6], + [0x27D6, 0x27D5], + [0x27DD, 0x27DE], + [0x27DE, 0x27DD], + [0x27E2, 0x27E3], + [0x27E3, 0x27E2], + [0x27E4, 0x27E5], + [0x27E5, 0x27E4], + [0x27E6, 0x27E7], + [0x27E7, 0x27E6], + [0x27E8, 0x27E9], + [0x27E9, 0x27E8], + [0x27EA, 0x27EB], + [0x27EB, 0x27EA], + [0x27EC, 0x27ED], + [0x27ED, 0x27EC], + [0x27EE, 0x27EF], + [0x27EF, 0x27EE], + [0x2983, 0x2984], + [0x2984, 0x2983], + [0x2985, 0x2986], + [0x2986, 0x2985], + [0x2987, 0x2988], + [0x2988, 0x2987], + [0x2989, 0x298A], + [0x298A, 0x2989], + [0x298B, 0x298C], + [0x298C, 0x298B], + [0x298D, 0x2990], + [0x298E, 0x298F], + [0x298F, 0x298E], + [0x2990, 0x298D], + [0x2991, 0x2992], + [0x2992, 0x2991], + [0x2993, 0x2994], + [0x2994, 0x2993], + [0x2995, 0x2996], + [0x2996, 0x2995], + [0x2997, 0x2998], + [0x2998, 0x2997], + [0x29B8, 0x2298], + [0x29C0, 0x29C1], + [0x29C1, 0x29C0], + [0x29C4, 0x29C5], + [0x29C5, 0x29C4], + [0x29CF, 0x29D0], + [0x29D0, 0x29CF], + [0x29D1, 0x29D2], + [0x29D2, 0x29D1], + [0x29D4, 0x29D5], + [0x29D5, 0x29D4], + [0x29D8, 0x29D9], + [0x29D9, 0x29D8], + [0x29DA, 0x29DB], + [0x29DB, 0x29DA], + [0x29F5, 0x2215], + [0x29F8, 0x29F9], + [0x29F9, 0x29F8], + [0x29FC, 0x29FD], + [0x29FD, 0x29FC], + [0x2A2B, 0x2A2C], + [0x2A2C, 0x2A2B], + [0x2A2D, 0x2A2E], + [0x2A2E, 0x2A2D], + [0x2A34, 0x2A35], + [0x2A35, 0x2A34], + [0x2A3C, 0x2A3D], + [0x2A3D, 0x2A3C], + [0x2A64, 0x2A65], + [0x2A65, 0x2A64], + [0x2A79, 0x2A7A], + [0x2A7A, 0x2A79], + [0x2A7D, 0x2A7E], + [0x2A7E, 0x2A7D], + [0x2A7F, 0x2A80], + [0x2A80, 0x2A7F], + [0x2A81, 0x2A82], + [0x2A82, 0x2A81], + [0x2A83, 0x2A84], + [0x2A84, 0x2A83], + [0x2A8B, 0x2A8C], + [0x2A8C, 0x2A8B], + [0x2A91, 0x2A92], + [0x2A92, 0x2A91], + [0x2A93, 0x2A94], + [0x2A94, 0x2A93], + [0x2A95, 0x2A96], + [0x2A96, 0x2A95], + [0x2A97, 0x2A98], + [0x2A98, 0x2A97], + [0x2A99, 0x2A9A], + [0x2A9A, 0x2A99], + [0x2A9B, 0x2A9C], + [0x2A9C, 0x2A9B], + [0x2AA1, 0x2AA2], + [0x2AA2, 0x2AA1], + [0x2AA6, 0x2AA7], + [0x2AA7, 0x2AA6], + [0x2AA8, 0x2AA9], + [0x2AA9, 0x2AA8], + [0x2AAA, 0x2AAB], + [0x2AAB, 0x2AAA], + [0x2AAC, 0x2AAD], + [0x2AAD, 0x2AAC], + [0x2AAF, 0x2AB0], + [0x2AB0, 0x2AAF], + [0x2AB3, 0x2AB4], + [0x2AB4, 0x2AB3], + [0x2ABB, 0x2ABC], + [0x2ABC, 0x2ABB], + [0x2ABD, 0x2ABE], + [0x2ABE, 0x2ABD], + [0x2ABF, 0x2AC0], + [0x2AC0, 0x2ABF], + [0x2AC1, 0x2AC2], + [0x2AC2, 0x2AC1], + [0x2AC3, 0x2AC4], + [0x2AC4, 0x2AC3], + [0x2AC5, 0x2AC6], + [0x2AC6, 0x2AC5], + [0x2ACD, 0x2ACE], + [0x2ACE, 0x2ACD], + [0x2ACF, 0x2AD0], + [0x2AD0, 0x2ACF], + [0x2AD1, 0x2AD2], + [0x2AD2, 0x2AD1], + [0x2AD3, 0x2AD4], + [0x2AD4, 0x2AD3], + [0x2AD5, 0x2AD6], + [0x2AD6, 0x2AD5], + [0x2ADE, 0x22A6], + [0x2AE3, 0x22A9], + [0x2AE4, 0x22A8], + [0x2AE5, 0x22AB], + [0x2AEC, 0x2AED], + [0x2AED, 0x2AEC], + [0x2AF7, 0x2AF8], + [0x2AF8, 0x2AF7], + [0x2AF9, 0x2AFA], + [0x2AFA, 0x2AF9], + [0x2E02, 0x2E03], + [0x2E03, 0x2E02], + [0x2E04, 0x2E05], + [0x2E05, 0x2E04], + [0x2E09, 0x2E0A], + [0x2E0A, 0x2E09], + [0x2E0C, 0x2E0D], + [0x2E0D, 0x2E0C], + [0x2E1C, 0x2E1D], + [0x2E1D, 0x2E1C], + [0x2E20, 0x2E21], + [0x2E21, 0x2E20], + [0x2E22, 0x2E23], + [0x2E23, 0x2E22], + [0x2E24, 0x2E25], + [0x2E25, 0x2E24], + [0x2E26, 0x2E27], + [0x2E27, 0x2E26], + [0x2E28, 0x2E29], + [0x2E29, 0x2E28], + [0x3008, 0x3009], + [0x3009, 0x3008], + [0x300A, 0x300B], + [0x300B, 0x300A], + [0x300C, 0x300D], + [0x300D, 0x300C], + [0x300E, 0x300F], + [0x300F, 0x300E], + [0x3010, 0x3011], + [0x3011, 0x3010], + [0x3014, 0x3015], + [0x3015, 0x3014], + [0x3016, 0x3017], + [0x3017, 0x3016], + [0x3018, 0x3019], + [0x3019, 0x3018], + [0x301A, 0x301B], + [0x301B, 0x301A], + [0xFE59, 0xFE5A], + [0xFE5A, 0xFE59], + [0xFE5B, 0xFE5C], + [0xFE5C, 0xFE5B], + [0xFE5D, 0xFE5E], + [0xFE5E, 0xFE5D], + [0xFE64, 0xFE65], + [0xFE65, 0xFE64], + [0xFF08, 0xFF09], + [0xFF09, 0xFF08], + [0xFF1C, 0xFF1E], + [0xFF1E, 0xFF1C], + [0xFF3B, 0xFF3D], + [0xFF3D, 0xFF3B], + [0xFF5B, 0xFF5D], + [0xFF5D, 0xFF5B], + [0xFF5F, 0xFF60], + [0xFF60, 0xFF5F], + [0xFF62, 0xFF63], + [0xFF63, 0xFF62] +]; + +function show(attributes, text) { + var e = document.createElementNS("http://www.w3.org/2000/svg", "text"); + for (var name in attributes) { + e.setAttribute(name, attributes[name]); + } + e.textContent = text; + document.documentElement.appendChild(e); +} + +function showCharacters(isReference) { + var row = 0, col = 0; + for (var i = 0; i < mirrors.length; i++) { + show({ x: col * 50 + 30, + y: row * 30 + 30, + direction: isReference ? "ltr" : "rtl", + "unicode-bidi": "embed", + "text-anchor": "middle", + "font-family": "BitPattern", + "font-size": "40px" }, + String.fromCharCode(mirrors[i][isReference ? 0 : 1])); + if (++col == 16) { + col = 0; + row++; + } + } + document.documentElement.removeAttribute("class"); +} + +function test() { + showCharacters(false); +} + +function reference() { + showCharacters(true); +}
--- a/layout/reftests/bidi/bidiMirroring.svg +++ b/layout/reftests/bidi/bidiMirroring.svg @@ -1,14 +1,22 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="520"> - <text x="100" y="40" direction="rtl" unicode-bidi="embed">()<>[]{}«»༺༻༼༽᚛᚜</text> - <text x="100" y="80" direction="rtl" unicode-bidi="embed">‹›⁅⁆⁽⁾₍₎</text> - <text x="100" y="120" direction="rtl" unicode-bidi="embed">∈∉∊∋∌∍∕∼∽≃≒≓≔≕≤≥≦≧≨≩≪≫≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿</text> - <text x="100" y="160" direction="rtl" unicode-bidi="embed">⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊏⊐⊑⊒⊘⊢⊣⊦⊨⊩⊫⊰⊱⊲⊳⊴⊵⊶⊷⋉⋊⋋⋌⋍⋐⋑⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋰⋱⋲⋳⋴⋶⋷⋺⋻⋼⋽⋾</text> - <text x="100" y="200" direction="rtl" unicode-bidi="embed">⌈⌉⌊⌋〈〉</text> - <text x="100" y="240" direction="rtl" unicode-bidi="embed">❨❩❪❫❬❭❮❯❰❱❲❳❴❵⟃⟄⟅⟆⟈⟉⟋⟍⟕⟖⟝⟞⟢⟣⟤⟥⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯</text> - <text x="100" y="280" direction="rtl" unicode-bidi="embed">⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖⦗⦘⦸⧀⧁⧄⧅⧏⧐⧑⧒⧔⧕⧘⧙⧚⧛⧵⧸⧹⧼⧽</text> - <text x="100" y="320" direction="rtl" unicode-bidi="embed">⨫⨬⨭⨮⨴⨵⨼⨽⩤⩥⩹⩺⩽⩾⩿⪀⪁⪂⪃⪄⪋⪌⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪡⪢⪦⪧⪨⪩⪪⪫⪬⪭⪯⪰⪳⪴⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫞⫣⫤⫥⫬⫭⫷⫸⫹⫺</text> - <text x="100" y="360" direction="rtl" unicode-bidi="embed">⸂⸃⸄⸅⸉⸊⸌⸍⸜⸝⸠⸡⸢⸣⸤⸥⸦⸧⸨⸩</text> - <text x="100" y="400" direction="rtl" unicode-bidi="embed">〈〉《》「」『』【】〔〕〖〗〘〙〚〛</text> - <text x="100" y="440" direction="rtl" unicode-bidi="embed">﹙﹚﹛﹜﹝﹞﹤﹥</text> - <text x="100" y="480" direction="rtl" unicode-bidi="embed">()<>[]{}⦅⦆「」</text> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="800" height="800" class="reftest-wait" onload="test()"> + <!-- + BitPattern.woff is a font with a glyph for each mirrored character. + (The glyph is a bit pattern of the character's code point, hence the + font name.) The font was generated by: + + 1. Creating an input file that consisted of a four-hex-digit code + point per line, for each glyph to be included in the font. + (For this test, that would be the 360-odd mirrored characters.) + + 2. Running ./generate-bitpattern-font.pl on that input file, which + generates an SVG Font file. + + 3. Using FontForge to convert that SVG Font file into a WOFF file. + --> + <style> + @font-face { font-family: BitPattern; src: url(../fonts/BitPattern.woff); } + </style> + <script xlink:href="bidiMirroring.js"/> </svg>
--- a/layout/reftests/bidi/bidiSVG-03-ref.svg +++ b/layout/reftests/bidi/bidiSVG-03-ref.svg @@ -1,3 +1,3 @@ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="200"> - <text x="100" y="20" direction="ltr" unicode-bidi="bidi-override">in right-to-left element תירבע םע left-to-right text</text> + <text x="400" y="20" direction="ltr" unicode-bidi="bidi-override" text-anchor="end">in right-to-left element תירבע םע left-to-right text</text> </svg>
--- a/layout/reftests/bidi/bidiSVG-03.svg +++ b/layout/reftests/bidi/bidiSVG-03.svg @@ -1,3 +1,3 @@ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="200"> - <text x="100" y="20" direction="rtl" unicode-bidi="embed">left-to-right text עם עברית in right-to-left element</text> + <text x="400" y="20" direction="rtl" unicode-bidi="embed">left-to-right text עם עברית in right-to-left element</text> </svg>
--- a/layout/reftests/bidi/bidiSVG-04-ref.svg +++ b/layout/reftests/bidi/bidiSVG-04-ref.svg @@ -1,3 +1,3 @@ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="200"> - <text x="100" y="20" direction="ltr" unicode-bidi="bidi-override">ب>ا</text> + <text x="100" y="20" direction="ltr" unicode-bidi="bidi-override" text-anchor="end">ب>ا</text> </svg>
--- a/layout/reftests/bidi/reftest.list +++ b/layout/reftests/bidi/reftest.list @@ -7,20 +7,20 @@ fails-if(Android) == bidi-003.html bidi-003-ref.html # bug 736726 == bidi-004.html bidi-004-ref.html == bidi-004-j.html bidi-004-ref.html == bidi-005.html bidi-005-ref.html random-if(cocoaWidget) == bidi-006.html bidi-006-ref.html # bug 734313 random-if(cocoaWidget) == bidi-006-j.html bidi-006-ref.html # bug 734313 == bidiSVG-01.svg bidiSVG-01-ref.svg == bidiSVG-02.svg bidiSVG-02-ref.svg -== bidiSVG-03.svg bidiSVG-03-ref.svg -== bidiSVG-04.svg bidiSVG-04-ref.svg +pref(svg.text.css-frames.enabled,true) == bidiSVG-03.svg bidiSVG-03-ref.svg +pref(svg.text.css-frames.enabled,true) == bidiSVG-04.svg bidiSVG-04-ref.svg == bidiSVG-05.svg bidiSVG-05-ref.svg -== bidiMirroring.svg bidiMirroring-ref.svg +fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == bidiMirroring.svg bidiMirroring-ref.svg random-if(layersGPUAccelerated) == visualmarquee.html marquee-ref.html random-if(layersGPUAccelerated) == logicalmarquee.html marquee-ref.html == visualmarquee.html logicalmarquee.html # test for glyph mirroring in right-to-left text == mirroring-01.html mirroring-01-ref.html # quote marks are not supposed to mirror, but Unicode 5.0 said they should, so some systems do it random-if(cocoaWidget) == mirroring-02.html mirroring-02-ref.html == mirroring-03.html mirroring-03-ref.html
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e4e8244057758f6b888ce985643f59b54f7a2560 GIT binary patch literal 6248 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 P5-kz?pA-6I0P6n$+<c~!
new file mode 100644 --- /dev/null +++ b/layout/reftests/fonts/generate-bitpattern-font.pl @@ -0,0 +1,35 @@ +#!/usr/bin/perl -w + +# Generates an SVG Font where each glyph (identified on stdin by four +# hex characters) consists of a bit pattern representing the Unicode +# code point it is the glyph for. + +use strict; + +print <<EOF; +<svg xmlns="http://www.w3.org/2000/svg"> +<font id="BitPattern" horiz-adv-x="1000"> + <font-face font-family="BitPattern" units-per-em="1000" ascent="800"/> +EOF + +while (<>) { + chomp; + next if /^\s*$/; + die unless /^[0-9A-Fa-f]{4}$/; + my $c = hex; + my $s = " <glyph unicode='&#x$_;' d='"; + for (my $i = 0; $i < 32; $i++) { + if ($c & (1 << $i)) { + my $x = 100 * (7 - ($i % 8)); + my $y = 100 * int($i / 8); + $s .= "M$x,$y v80h80v-80z "; + } + } + $s .= "'/>\n"; + print $s; +} + +print <<EOF; +</font> +</svg> +EOF