From dc5b35515af31fdff3b3db3296879194e99f55c1 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Fri, 28 Sep 2012 17:17:29 +1000 Subject: [PATCH] Bug 655877 - Part 44: Fix some bidi tests whose rendering behavior has changed a bit with the new SVG text support. r=smontagu --HG-- extra : rebase_source : b4727f7966aeafd1a0c581fc0faa59b6ec888f12 --- layout/reftests/bidi/bidiMirroring-ref.svg | 20 +- layout/reftests/bidi/bidiMirroring.js | 407 ++++++++++++++++++ layout/reftests/bidi/bidiMirroring.svg | 34 +- layout/reftests/bidi/bidiSVG-03-ref.svg | 2 +- layout/reftests/bidi/bidiSVG-03.svg | 2 +- layout/reftests/bidi/bidiSVG-04-ref.svg | 2 +- layout/reftests/bidi/reftest.list | 6 +- layout/reftests/fonts/BitPattern.woff | Bin 0 -> 6248 bytes .../fonts/generate-bitpattern-font.pl | 35 ++ 9 files changed, 476 insertions(+), 32 deletions(-) create mode 100644 layout/reftests/bidi/bidiMirroring.js create mode 100644 layout/reftests/fonts/BitPattern.woff create mode 100644 layout/reftests/fonts/generate-bitpattern-font.pl diff --git a/layout/reftests/bidi/bidiMirroring-ref.svg b/layout/reftests/bidi/bidiMirroring-ref.svg index f6f9b7fe58c..988ff28882d 100644 --- a/layout/reftests/bidi/bidiMirroring-ref.svg +++ b/layout/reftests/bidi/bidiMirroring-ref.svg @@ -1,14 +1,8 @@ - - ᚛᚜༼༽༺༻«»{}[]<>() - ₍₎⁽⁾⁅⁆‹› - ≾≿≼≽≺≻≸≹≶≷≴≵≲≳≰≱≮≯≪≫≨≩≦≧≤≥≔≕≒≓⋍∼∽⧵∊∉∈∍∌∋ - ⋷⋶⋴⋳⋲⋾⋽⋼⋻⋺⋰⋱⋬⋭⋪⋫⋨⋩⋦⋧⋤⋥⋢⋣⋠⋡⋞⋟⋜⋝⋚⋛⋘⋙⋖⋗⋐⋑≃⋋⋌⋉⋊⊶⊷⊴⊵⊲⊳⊰⊱⫥⫣⫤⫞⊢⊣⦸⊑⊒⊏⊐⊊⊋⊈⊉⊆⊇⊄⊅⊂⊃⊀⊁ - 〈〉⌊⌋⌈⌉ - ⟮⟯⟬⟭⟪⟫⟨⟩⟦⟧⟤⟥⟢⟣⟝⟞⟕⟖⟋⟍⟈⟉⟅⟆⟃⟄❴❵❲❳❰❱❮❯❬❭❪❫❨❩ - ⧼⧽⧸⧹∕⧚⧛⧘⧙⧔⧕⧑⧒⧏⧐⧄⧅⧀⧁⊘⦗⦘⦕⦖⦓⦔⦑⦒⦍⦎⦏⦐⦋⦌⦉⦊⦇⦈⦅⦆⦃⦄ - ⫹⫺⫷⫸⫬⫭⊫⊨⊩⊦⫕⫖⫓⫔⫑⫒⫏⫐⫍⫎⫅⫆⫃⫄⫁⫂⪿⫀⪽⪾⪻⪼⪳⪴⪯⪰⪬⪭⪪⪫⪨⪩⪦⪧⪡⪢⪛⪜⪙⪚⪗⪘⪕⪖⪓⪔⪑⪒⪋⪌⪃⪄⪁⪂⩿⪀⩽⩾⩹⩺⩤⩥⨼⨽⨴⨵⨭⨮⨫⨬ - ⸨⸩⸦⸧⸤⸥⸢⸣⸠⸡⸜⸝⸌⸍⸉⸊⸄⸅⸂⸃ - 〚〛〘〙〖〗〔〕【】『』「」《》〈〉 - ﹤﹥﹝﹞﹛﹜﹙﹚ - 「」⦅⦆{}[]<>() + + + diff --git a/layout/reftests/bidi/bidiMirroring.js b/layout/reftests/bidi/bidiMirroring.js new file mode 100644 index 00000000000..0fd521c5f83 --- /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); +} diff --git a/layout/reftests/bidi/bidiMirroring.svg b/layout/reftests/bidi/bidiMirroring.svg index e9699d5ca08..93ef3a00417 100644 --- a/layout/reftests/bidi/bidiMirroring.svg +++ b/layout/reftests/bidi/bidiMirroring.svg @@ -1,14 +1,22 @@ - - ()<>[]{}«»༺༻༼༽᚛᚜ - ‹›⁅⁆⁽⁾₍₎ - ∈∉∊∋∌∍∕∼∽≃≒≓≔≕≤≥≦≧≨≩≪≫≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿ - ⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊏⊐⊑⊒⊘⊢⊣⊦⊨⊩⊫⊰⊱⊲⊳⊴⊵⊶⊷⋉⋊⋋⋌⋍⋐⋑⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋰⋱⋲⋳⋴⋶⋷⋺⋻⋼⋽⋾ - ⌈⌉⌊⌋〈〉 - ❨❩❪❫❬❭❮❯❰❱❲❳❴❵⟃⟄⟅⟆⟈⟉⟋⟍⟕⟖⟝⟞⟢⟣⟤⟥⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯ - ⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖⦗⦘⦸⧀⧁⧄⧅⧏⧐⧑⧒⧔⧕⧘⧙⧚⧛⧵⧸⧹⧼⧽ - ⨫⨬⨭⨮⨴⨵⨼⨽⩤⩥⩹⩺⩽⩾⩿⪀⪁⪂⪃⪄⪋⪌⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪡⪢⪦⪧⪨⪩⪪⪫⪬⪭⪯⪰⪳⪴⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫞⫣⫤⫥⫬⫭⫷⫸⫹⫺ - ⸂⸃⸄⸅⸉⸊⸌⸍⸜⸝⸠⸡⸢⸣⸤⸥⸦⸧⸨⸩ - 〈〉《》「」『』【】〔〕〖〗〘〙〚〛 - ﹙﹚﹛﹜﹝﹞﹤﹥ - ()<>[]{}⦅⦆「」 + + + + diff --git a/layout/reftests/bidi/bidiSVG-03-ref.svg b/layout/reftests/bidi/bidiSVG-03-ref.svg index b11f37079e0..455de81e75a 100644 --- a/layout/reftests/bidi/bidiSVG-03-ref.svg +++ b/layout/reftests/bidi/bidiSVG-03-ref.svg @@ -1,3 +1,3 @@ - in right-to-left element תירבע םע left-to-right text + in right-to-left element תירבע םע left-to-right text diff --git a/layout/reftests/bidi/bidiSVG-03.svg b/layout/reftests/bidi/bidiSVG-03.svg index 355bc5ac75b..20b18f8e43e 100644 --- a/layout/reftests/bidi/bidiSVG-03.svg +++ b/layout/reftests/bidi/bidiSVG-03.svg @@ -1,3 +1,3 @@ - left-to-right text עם עברית in right-to-left element + left-to-right text עם עברית in right-to-left element diff --git a/layout/reftests/bidi/bidiSVG-04-ref.svg b/layout/reftests/bidi/bidiSVG-04-ref.svg index 368ea26d2f9..c2f9038db1f 100644 --- a/layout/reftests/bidi/bidiSVG-04-ref.svg +++ b/layout/reftests/bidi/bidiSVG-04-ref.svg @@ -1,3 +1,3 @@ - ب>ا + ب>ا diff --git a/layout/reftests/bidi/reftest.list b/layout/reftests/bidi/reftest.list index f2f2a24652a..aafdc6a0c0d 100644 --- a/layout/reftests/bidi/reftest.list +++ b/layout/reftests/bidi/reftest.list @@ -12,10 +12,10 @@ 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 diff --git a/layout/reftests/fonts/BitPattern.woff b/layout/reftests/fonts/BitPattern.woff new file mode 100644 index 0000000000000000000000000000000000000000..e4e8244057758f6b888ce985643f59b54f7a2560 GIT binary patch literal 6248 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 Q+exA&V*k6LPX?g=Kiqt#lK=n! literal 0 HcmV?d00001 diff --git a/layout/reftests/fonts/generate-bitpattern-font.pl b/layout/reftests/fonts/generate-bitpattern-font.pl new file mode 100644 index 00000000000..d47ff4541f2 --- /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 + +while (<>) { + chomp; + next if /^\s*$/; + die unless /^[0-9A-Fa-f]{4}$/; + my $c = hex; + my $s = " \n"; + print $s; +} + +print < + +EOF