handle surrogate pairs in glyph to unicode translation

This commit is contained in:
Andreas Gal 2011-06-19 15:14:07 -07:00
parent 010475176f
commit d515d5ab7c
2 changed files with 81 additions and 77 deletions

View File

@ -62,6 +62,10 @@ var Fonts = {
var uc = encoding[ch]; var uc = encoding[ch];
if (uc instanceof Name) // we didn't convert the glyph yet if (uc instanceof Name) // we didn't convert the glyph yet
uc = encoding[ch] = GlyphsUnicode[uc.name]; uc = encoding[ch] = GlyphsUnicode[uc.name];
if (uc > 0xffff) { // handle surrogate pairs
ret += String.fromCharCode(uc & 0xffff);
uc >>= 16;
}
ret += String.fromCharCode(uc); ret += String.fromCharCode(uc);
} }
@ -83,7 +87,7 @@ var Fonts = {
var Font = function(aName, aFile, aProperties) { var Font = function(aName, aFile, aProperties) {
this.name = aName; this.name = aName;
// If the font has already been decoded simply return // If the font has already been decoded simply return it
if (Fonts[aName]) { if (Fonts[aName]) {
this.font = Fonts[aName].data; this.font = Fonts[aName].data;
return; return;

View File

@ -1505,27 +1505,27 @@ var GlyphsUnicode = {
dalet: 0x05D3, dalet: 0x05D3,
daletdagesh: 0xFB33, daletdagesh: 0xFB33,
daletdageshhebrew: 0xFB33, daletdageshhebrew: 0xFB33,
dalethatafpatah: "05D3 05B2", dalethatafpatah: 0x05D305B2,
dalethatafpatahhebrew: "05D3 05B2", dalethatafpatahhebrew: 0x05D305B2,
dalethatafsegol: "05D3 05B1", dalethatafsegol: 0x05D305B1,
dalethatafsegolhebrew: "05D3 05B1", dalethatafsegolhebrew: 0x05D305B1,
dalethebrew: 0x05D3, dalethebrew: 0x05D3,
dalethiriq: "05D3 05B4", dalethiriq: 0x05D305B4,
dalethiriqhebrew: "05D3 05B4", dalethiriqhebrew: 0x05D305B4,
daletholam: "05D3 05B9", daletholam: 0x05D305B9,
daletholamhebrew: "05D3 05B9", daletholamhebrew: 0x05D305B9,
daletpatah: "05D3 05B7", daletpatah: 0x05D305B7,
daletpatahhebrew: "05D3 05B7", daletpatahhebrew: 0x05D305B7,
daletqamats: "05D3 05B8", daletqamats: 0x05D305B8,
daletqamatshebrew: "05D3 05B8", daletqamatshebrew: 0x05D305B8,
daletqubuts: "05D3 05BB", daletqubuts: 0x05D305BB,
daletqubutshebrew: "05D3 05BB", daletqubutshebrew: 0x05D305BB,
daletsegol: "05D3 05B6", daletsegol: 0x05D305B6,
daletsegolhebrew: "05D3 05B6", daletsegolhebrew: 0x05D305B6,
daletsheva: "05D3 05B0", daletsheva: 0x05D305B0,
daletshevahebrew: "05D3 05B0", daletshevahebrew: 0x05D305B0,
dalettsere: "05D3 05B5", dalettsere: 0x05D305B5,
dalettserehebrew: "05D3 05B5", dalettserehebrew: 0x05D305B5,
dalfinalarabic: 0xFEAA, dalfinalarabic: 0xFEAA,
dammaarabic: 0x064F, dammaarabic: 0x064F,
dammalowarabic: 0x064F, dammalowarabic: 0x064F,
@ -1842,10 +1842,10 @@ var GlyphsUnicode = {
finalkafdagesh: 0xFB3A, finalkafdagesh: 0xFB3A,
finalkafdageshhebrew: 0xFB3A, finalkafdageshhebrew: 0xFB3A,
finalkafhebrew: 0x05DA, finalkafhebrew: 0x05DA,
finalkafqamats: "05DA 05B8", finalkafqamats: 0x05DA05B8,
finalkafqamatshebrew: "05DA 05B8", finalkafqamatshebrew: 0x05DA05B8,
finalkafsheva: "05DA 05B0", finalkafsheva: 0x05DA05B0,
finalkafshevahebrew: "05DA 05B0", finalkafshevahebrew: 0x05DA05B0,
finalmem: 0x05DD, finalmem: 0x05DD,
finalmemhebrew: 0x05DD, finalmemhebrew: 0x05DD,
finalnun: 0x05DF, finalnun: 0x05DF,
@ -2034,14 +2034,14 @@ var GlyphsUnicode = {
hakatakanahalfwidth: 0xFF8A, hakatakanahalfwidth: 0xFF8A,
halantgurmukhi: 0x0A4D, halantgurmukhi: 0x0A4D,
hamzaarabic: 0x0621, hamzaarabic: 0x0621,
hamzadammaarabic: "0621 064F", hamzadammaarabic: 0x0621064F,
hamzadammatanarabic: "0621 064C", hamzadammatanarabic: 0x0621064C,
hamzafathaarabic: "0621 064E", hamzafathaarabic: 0x0621064E,
hamzafathatanarabic: "0621 064B", hamzafathatanarabic: 0x0621064B,
hamzalowarabic: 0x0621, hamzalowarabic: 0x0621,
hamzalowkasraarabic: "0621 0650", hamzalowkasraarabic: 0x06210650,
hamzalowkasratanarabic: "0621 064D", hamzalowkasratanarabic: 0x0621064D,
hamzasukunarabic: "0621 0652", hamzasukunarabic: 0x06210652,
hangulfiller: 0x3164, hangulfiller: 0x3164,
hardsigncyrillic: 0x044A, hardsigncyrillic: 0x044A,
harpoonleftbarbup: 0x21BC, harpoonleftbarbup: 0x21BC,
@ -2473,10 +2473,10 @@ var GlyphsUnicode = {
lameddagesh: 0xFB3C, lameddagesh: 0xFB3C,
lameddageshhebrew: 0xFB3C, lameddageshhebrew: 0xFB3C,
lamedhebrew: 0x05DC, lamedhebrew: 0x05DC,
lamedholam: "05DC 05B9", lamedholam: 0x05DC05B9,
lamedholamdagesh: "05DC 05B9 05BC", lamedholamdagesh: "05DC 05B9 05BC",
lamedholamdageshhebrew: "05DC 05B9 05BC", lamedholamdageshhebrew: "05DC 05B9 05BC",
lamedholamhebrew: "05DC 05B9", lamedholamhebrew: 0x05DC05B9,
lamfinalarabic: 0xFEDE, lamfinalarabic: 0xFEDE,
lamhahinitialarabic: 0xFCCA, lamhahinitialarabic: 0xFCCA,
laminitialarabic: 0xFEDF, laminitialarabic: 0xFEDF,
@ -2784,7 +2784,7 @@ var GlyphsUnicode = {
noonfinalarabic: 0xFEE6, noonfinalarabic: 0xFEE6,
noonghunnaarabic: 0x06BA, noonghunnaarabic: 0x06BA,
noonghunnafinalarabic: 0xFB9F, noonghunnafinalarabic: 0xFB9F,
noonhehinitialarabic: "FEE7 FEEC", noonhehinitialarabic: 0xFEE7FEEC,
nooninitialarabic: 0xFEE7, nooninitialarabic: 0xFEE7,
noonjeeminitialarabic: 0xFCD2, noonjeeminitialarabic: 0xFCD2,
noonjeemisolatedarabic: 0xFC4B, noonjeemisolatedarabic: 0xFC4B,
@ -3156,27 +3156,27 @@ var GlyphsUnicode = {
qof: 0x05E7, qof: 0x05E7,
qofdagesh: 0xFB47, qofdagesh: 0xFB47,
qofdageshhebrew: 0xFB47, qofdageshhebrew: 0xFB47,
qofhatafpatah: "05E7 05B2", qofhatafpatah: 0x05E705B2,
qofhatafpatahhebrew: "05E7 05B2", qofhatafpatahhebrew: 0x05E705B2,
qofhatafsegol: "05E7 05B1", qofhatafsegol: 0x05E705B1,
qofhatafsegolhebrew: "05E7 05B1", qofhatafsegolhebrew: 0x05E705B1,
qofhebrew: 0x05E7, qofhebrew: 0x05E7,
qofhiriq: "05E7 05B4", qofhiriq: 0x05E705B4,
qofhiriqhebrew: "05E7 05B4", qofhiriqhebrew: 0x05E705B4,
qofholam: "05E7 05B9", qofholam: 0x05E705B9,
qofholamhebrew: "05E7 05B9", qofholamhebrew: 0x05E705B9,
qofpatah: "05E7 05B7", qofpatah: 0x05E705B7,
qofpatahhebrew: "05E7 05B7", qofpatahhebrew: 0x05E705B7,
qofqamats: "05E7 05B8", qofqamats: 0x05E705B8,
qofqamatshebrew: "05E7 05B8", qofqamatshebrew: 0x05E705B8,
qofqubuts: "05E7 05BB", qofqubuts: 0x05E705BB,
qofqubutshebrew: "05E7 05BB", qofqubutshebrew: 0x05E705BB,
qofsegol: "05E7 05B6", qofsegol: 0x05E705B6,
qofsegolhebrew: "05E7 05B6", qofsegolhebrew: 0x05E705B6,
qofsheva: "05E7 05B0", qofsheva: 0x05E705B0,
qofshevahebrew: "05E7 05B0", qofshevahebrew: 0x05E705B0,
qoftsere: "05E7 05B5", qoftsere: 0x05E705B5,
qoftserehebrew: "05E7 05B5", qoftserehebrew: 0x05E705B5,
qparen: 0x24AC, qparen: 0x24AC,
quarternote: 0x2669, quarternote: 0x2669,
qubuts: 0x05BB, qubuts: 0x05BB,
@ -3255,27 +3255,27 @@ var GlyphsUnicode = {
rekatakanahalfwidth: 0xFF9A, rekatakanahalfwidth: 0xFF9A,
resh: 0x05E8, resh: 0x05E8,
reshdageshhebrew: 0xFB48, reshdageshhebrew: 0xFB48,
reshhatafpatah: "05E8 05B2", reshhatafpatah: 0x05E805B2,
reshhatafpatahhebrew: "05E8 05B2", reshhatafpatahhebrew: 0x05E805B2,
reshhatafsegol: "05E8 05B1", reshhatafsegol: 0x05E805B1,
reshhatafsegolhebrew: "05E8 05B1", reshhatafsegolhebrew: 0x05E805B1,
reshhebrew: 0x05E8, reshhebrew: 0x05E8,
reshhiriq: "05E8 05B4", reshhiriq: 0x05E805B4,
reshhiriqhebrew: "05E8 05B4", reshhiriqhebrew: 0x05E805B4,
reshholam: "05E8 05B9", reshholam: 0x05E805B9,
reshholamhebrew: "05E8 05B9", reshholamhebrew: 0x05E805B9,
reshpatah: "05E8 05B7", reshpatah: 0x05E805B7,
reshpatahhebrew: "05E8 05B7", reshpatahhebrew: 0x05E805B7,
reshqamats: "05E8 05B8", reshqamats: 0x05E805B8,
reshqamatshebrew: "05E8 05B8", reshqamatshebrew: 0x05E805B8,
reshqubuts: "05E8 05BB", reshqubuts: 0x05E805BB,
reshqubutshebrew: "05E8 05BB", reshqubutshebrew: 0x05E805BB,
reshsegol: "05E8 05B6", reshsegol: 0x05E805B6,
reshsegolhebrew: "05E8 05B6", reshsegolhebrew: 0x05E805B6,
reshsheva: "05E8 05B0", reshsheva: 0x05E805B0,
reshshevahebrew: "05E8 05B0", reshshevahebrew: 0x05E805B0,
reshtsere: "05E8 05B5", reshtsere: 0x05E805B5,
reshtserehebrew: "05E8 05B5", reshtserehebrew: 0x05E805B5,
reversedtilde: 0x223D, reversedtilde: 0x223D,
reviahebrew: 0x0597, reviahebrew: 0x0597,
reviamugrashhebrew: 0x0597, reviamugrashhebrew: 0x0597,
@ -3474,7 +3474,7 @@ var GlyphsUnicode = {
shaddadammaarabic: 0xFC61, shaddadammaarabic: 0xFC61,
shaddadammatanarabic: 0xFC5E, shaddadammatanarabic: 0xFC5E,
shaddafathaarabic: 0xFC60, shaddafathaarabic: 0xFC60,
shaddafathatanarabic: "0651 064B", shaddafathatanarabic: 0x0651064B,
shaddakasraarabic: 0xFC62, shaddakasraarabic: 0xFC62,
shaddakasratanarabic: 0xFC5F, shaddakasratanarabic: 0xFC5F,
shade: 0x2592, shade: 0x2592,
@ -3671,7 +3671,7 @@ var GlyphsUnicode = {
tchehfinalarabic: 0xFB7B, tchehfinalarabic: 0xFB7B,
tchehinitialarabic: 0xFB7C, tchehinitialarabic: 0xFB7C,
tchehmedialarabic: 0xFB7D, tchehmedialarabic: 0xFB7D,
tchehmeeminitialarabic: "FB7C FEE4", tchehmeeminitialarabic: 0xFB7CFEE4,
tcircle: 0x24E3, tcircle: 0x24E3,
tcircumflexbelow: 0x1E71, tcircumflexbelow: 0x1E71,
tcommaaccent: 0x0163, tcommaaccent: 0x0163,