Michalis Kabrianis wrote [edited]:
> Όπως ίσως ξέρετε όσοι ασχολείστε με το openoffice.org υπάρχει (μεταξύ
> άλλων) ένα πρόβλημα με το export των ελληνικών χαρακτήρων σε html.
[...]
> Επειδή η επαναφορά του θα μας πάρει αρκετό χρόνο, θέλουμε να ζητήσουμε
> αν κάποιος από εδώ έχει κάποιο δέντρο από το οποίο να χτίζει το
> openoffice.org (οποιαδήποτε έκδοση) να δοκιμάσει να φτιάξει το patch
> σύντομα και να το στείλει, για να μη χάσουμε την ευκαιρία να ενσωματωθεί
> στην έκδοση 2.0 του OpenOffice.org
Attached.
Den eixa dentro, alla ena wget toy source, ena tar zxvf,
ki ena vim argotera (argh! tabstops ana 4!?!),
to patch einai etoimo. [eisai tyxeros poy eixa disko adeio]
An thelei kai kaneis allos na to dokimasei... :-)
Mia poy milas esy me aytoys, steil'to toys kalytera esy
(mexri na brw pws kai poy na to kanw egw...)
--
-- zvr --
-- +---------------------------+ Alexios Zavras (-zvr-)
| H eytyxia den exei enoxes | zvr [ at ] pobox [ dot ] com
+-----------------------zvr-+
--- OOo_1.1.4rc_source/svtools/source/svhtml/htmlout.cxx 2002-03-13 10:42:08.000000000 +0200
+++ OOo_1.1.4rc-zvr/svtools/source/svhtml/htmlout.cxx 2005-01-14 12:30:00.000000000 +0200
@@ -98,7 +98,7 @@
const sal_Char __FAR_DATA HTMLOutFuncs::sNewLine[] = "\015\012";
#endif
-const sal_Char *lcl_svhtml_GetEntityForChar( sal_Unicode c )
+const sal_Char *lcl_svhtml_GetEntityForChar( sal_Unicode c, rtl_TextEncoding eDestEnc )
{
const sal_Char* pStr = 0;
switch( c )
@@ -216,58 +216,11 @@
case 402: pStr = sHTML_S_fnof; break;
case 710: pStr = sHTML_S_circ; break;
case 732: pStr = sHTML_S_tilde; break;
- case 913: pStr = sHTML_S_Alpha; break;
- case 914: pStr = sHTML_S_Beta; break;
- case 915: pStr = sHTML_S_Gamma; break;
- case 916: pStr = sHTML_S_Delta; break;
- case 917: pStr = sHTML_S_Epsilon; break;
- case 918: pStr = sHTML_S_Zeta; break;
- case 919: pStr = sHTML_S_Eta; break;
- case 920: pStr = sHTML_S_Theta; break;
- case 921: pStr = sHTML_S_Iota; break;
- case 922: pStr = sHTML_S_Kappa; break;
- case 923: pStr = sHTML_S_Lambda; break;
- case 924: pStr = sHTML_S_Mu; break;
- case 925: pStr = sHTML_S_Nu; break;
- case 926: pStr = sHTML_S_Xi; break;
- case 927: pStr = sHTML_S_Omicron; break;
- case 928: pStr = sHTML_S_Pi; break;
- case 929: pStr = sHTML_S_Rho; break;
- case 931: pStr = sHTML_S_Sigma; break;
- case 932: pStr = sHTML_S_Tau; break;
- case 933: pStr = sHTML_S_Upsilon; break;
- case 934: pStr = sHTML_S_Phi; break;
- case 935: pStr = sHTML_S_Chi; break;
- case 936: pStr = sHTML_S_Psi; break;
- case 937: pStr = sHTML_S_Omega; break;
- case 945: pStr = sHTML_S_alpha; break;
- case 946: pStr = sHTML_S_beta; break;
- case 947: pStr = sHTML_S_gamma; break;
- case 948: pStr = sHTML_S_delta; break;
- case 949: pStr = sHTML_S_epsilon; break;
- case 950: pStr = sHTML_S_zeta; break;
- case 951: pStr = sHTML_S_eta; break;
- case 952: pStr = sHTML_S_theta; break;
- case 953: pStr = sHTML_S_iota; break;
- case 954: pStr = sHTML_S_kappa; break;
- case 955: pStr = sHTML_S_lambda; break;
- case 956: pStr = sHTML_S_mu; break;
- case 957: pStr = sHTML_S_nu; break;
- case 958: pStr = sHTML_S_xi; break;
- case 959: pStr = sHTML_S_omicron; break;
- case 960: pStr = sHTML_S_pi; break;
- case 961: pStr = sHTML_S_rho; break;
- case 962: pStr = sHTML_S_sigmaf; break;
- case 963: pStr = sHTML_S_sigma; break;
- case 964: pStr = sHTML_S_tau; break;
- case 965: pStr = sHTML_S_upsilon; break;
- case 966: pStr = sHTML_S_phi; break;
- case 967: pStr = sHTML_S_chi; break;
- case 968: pStr = sHTML_S_psi; break;
- case 969: pStr = sHTML_S_omega; break;
- case 977: pStr = sHTML_S_thetasym;break;
- case 978: pStr = sHTML_S_upsih; break;
- case 982: pStr = sHTML_S_piv; break;
+
+ // Greek chars are handled later,
+ // since they should *not* be transformed to entities
+ // when generating Greek text (== using Greek encoding)
+
case 8194: pStr = sHTML_S_ensp; break;
case 8195: pStr = sHTML_S_emsp; break;
case 8201: pStr = sHTML_S_thinsp; break;
@@ -362,6 +315,68 @@
case 9830: pStr = sHTML_S_diams; break;
}
+ // Greek chars: if we do not produce a Greek encoding,
+ // transform them into entities
+ if( ( eDestEnc != RTL_TEXTENCODING_ISO_8859_7 ) &&
+ ( eDestEnc != RTL_TEXTENCODING_MS_1253 ) )
+ {
+ switch( c )
+ {
+ case 913: pStr = sHTML_S_Alpha; break;
+ case 914: pStr = sHTML_S_Beta; break;
+ case 915: pStr = sHTML_S_Gamma; break;
+ case 916: pStr = sHTML_S_Delta; break;
+ case 917: pStr = sHTML_S_Epsilon; break;
+ case 918: pStr = sHTML_S_Zeta; break;
+ case 919: pStr = sHTML_S_Eta; break;
+ case 920: pStr = sHTML_S_Theta; break;
+ case 921: pStr = sHTML_S_Iota; break;
+ case 922: pStr = sHTML_S_Kappa; break;
+ case 923: pStr = sHTML_S_Lambda; break;
+ case 924: pStr = sHTML_S_Mu; break;
+ case 925: pStr = sHTML_S_Nu; break;
+ case 926: pStr = sHTML_S_Xi; break;
+ case 927: pStr = sHTML_S_Omicron; break;
+ case 928: pStr = sHTML_S_Pi; break;
+ case 929: pStr = sHTML_S_Rho; break;
+ case 931: pStr = sHTML_S_Sigma; break;
+ case 932: pStr = sHTML_S_Tau; break;
+ case 933: pStr = sHTML_S_Upsilon; break;
+ case 934: pStr = sHTML_S_Phi; break;
+ case 935: pStr = sHTML_S_Chi; break;
+ case 936: pStr = sHTML_S_Psi; break;
+ case 937: pStr = sHTML_S_Omega; break;
+ case 945: pStr = sHTML_S_alpha; break;
+ case 946: pStr = sHTML_S_beta; break;
+ case 947: pStr = sHTML_S_gamma; break;
+ case 948: pStr = sHTML_S_delta; break;
+ case 949: pStr = sHTML_S_epsilon; break;
+ case 950: pStr = sHTML_S_zeta; break;
+ case 951: pStr = sHTML_S_eta; break;
+ case 952: pStr = sHTML_S_theta; break;
+ case 953: pStr = sHTML_S_iota; break;
+ case 954: pStr = sHTML_S_kappa; break;
+ case 955: pStr = sHTML_S_lambda; break;
+ case 956: pStr = sHTML_S_mu; break;
+ case 957: pStr = sHTML_S_nu; break;
+ case 958: pStr = sHTML_S_xi; break;
+ case 959: pStr = sHTML_S_omicron; break;
+ case 960: pStr = sHTML_S_pi; break;
+ case 961: pStr = sHTML_S_rho; break;
+ case 962: pStr = sHTML_S_sigmaf; break;
+ case 963: pStr = sHTML_S_sigma; break;
+ case 964: pStr = sHTML_S_tau; break;
+ case 965: pStr = sHTML_S_upsilon; break;
+ case 966: pStr = sHTML_S_phi; break;
+ case 967: pStr = sHTML_S_chi; break;
+ case 968: pStr = sHTML_S_psi; break;
+ case 969: pStr = sHTML_S_omega; break;
+ case 977: pStr = sHTML_S_thetasym;break;
+ case 978: pStr = sHTML_S_upsih; break;
+ case 982: pStr = sHTML_S_piv; break;
+ }
+ }
+
return pStr;
}
@@ -389,7 +404,7 @@
// because Netscape 4 does support UTF-8 but does not support
// these entities.
if( c < 256 || RTL_TEXTENCODING_UTF8 != eDestEnc )
- pStr = lcl_svhtml_GetEntityForChar( c );
+ pStr = lcl_svhtml_GetEntityForChar( c, eDestEnc );
break;
}