To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=113312 Issue #|113312 Summary|filter: Component|framework Version|1.0.0 Platform|Macintosh URL| OS/Version|All Status|UNCONFIRMED Status whiteboard| Keywords| Resolution| Issue type|PATCH Priority|P3 Subcomponent|code Assigned to|mba Reported by|osnola
------- Additional comments from osn...@openoffice.org Wed Jul 21 09:26:00 +0000 2010 ------- Hello, by default, the text found in a PICT(Apple) seems to be read with gsl_getSystemTextEncoding()'s encoding, which can give very odd results... So, a patch to revert to RTL_TEXTENCODING_APPLE_ROMAN if gsl_getSystemTextEncoding() is not an apple encoding. Note: I also make sure that the good encoding is used for symbol fonts and I replace RTL_TEXTENCODING_SYMBOL by RTL_TEXTENCODING_ADOBE_SYMBOL. --- filter/source/graphicfilter/ipict/ipict.cxx.orig 2010-03-13 00:08:17.000000000 +0100 +++ filter/source/graphicfilter/ipict/ipict.cxx 2010-07-21 11:06:23.000000000 +0200 @@ -146,9 +146,11 @@ void SetLineColor( const Color& rColor ); void SetFillColor( const Color& rColor ); + // OSNOLA: returns the text encoding which must be used for system id + static rtl_TextEncoding GetTextEncoding (USHORT fId = 0xFFFF); public: - PictReader() {} + PictReader() { aActFont.SetCharSet(GetTextEncoding()); } void ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile ); // Liesst aus dem Stream eine Pict-Datei und fuellt das GDIMetaFile @@ -208,6 +210,42 @@ } //=================== Methoden von PictReader ============================== +rtl_TextEncoding PictReader::GetTextEncoding (USHORT fId) { + static bool first = true; + static rtl_TextEncoding enc = RTL_TEXTENCODING_APPLE_ROMAN; + if (first) { + rtl_TextEncoding def = gsl_getSystemTextEncoding(); + // we keep gsl_getSystemTextEncoding only if it is a mac encoding + switch(def) { + case RTL_TEXTENCODING_APPLE_ROMAN: + case RTL_TEXTENCODING_APPLE_ARABIC: + case RTL_TEXTENCODING_APPLE_CENTEURO: + case RTL_TEXTENCODING_APPLE_CROATIAN: + case RTL_TEXTENCODING_APPLE_CYRILLIC: + case RTL_TEXTENCODING_APPLE_DEVANAGARI: + case RTL_TEXTENCODING_APPLE_FARSI: + case RTL_TEXTENCODING_APPLE_GREEK: + case RTL_TEXTENCODING_APPLE_GUJARATI: + case RTL_TEXTENCODING_APPLE_GURMUKHI: + case RTL_TEXTENCODING_APPLE_HEBREW: + case RTL_TEXTENCODING_APPLE_ICELAND: + case RTL_TEXTENCODING_APPLE_ROMANIAN: + case RTL_TEXTENCODING_APPLE_THAI: + case RTL_TEXTENCODING_APPLE_TURKISH: + case RTL_TEXTENCODING_APPLE_UKRAINIAN: + case RTL_TEXTENCODING_APPLE_CHINSIMP: + case RTL_TEXTENCODING_APPLE_CHINTRAD: + case RTL_TEXTENCODING_APPLE_JAPANESE: + case RTL_TEXTENCODING_APPLE_KOREAN: + enc = def; break; + default: break; + } + first = false; + } + if (fId == 13) return RTL_TEXTENCODING_ADOBE_DINGBATS; // CHECKME + if (fId == 23) return RTL_TEXTENCODING_ADOBE_SYMBOL; + return enc; +} void PictReader::SetLineColor( const Color& rColor ) { @@ -615,7 +653,7 @@ while ( nLen > 0 && ( (unsigned char)sText[ nLen - 1 ] ) < 32 ) nLen--; sText[ nLen ] = 0; - String aString( (const sal_Char*)&sText, gsl_getSystemTextEncoding() ); + String aString( (const sal_Char*)&sText, aActFont.GetCharSet());// OSNOLA: previous gsl_getSystemTextEncoding() pVirDev->DrawText( Point( aTextPosition.X(), aTextPosition.Y() ), aString ); return nDataLen; } @@ -1129,8 +1167,7 @@ else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN); else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS); else aActFont.SetFamily(FAMILY_ROMAN); - if ( nUSHORT == 23 ) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); - else aActFont.SetCharSet( gsl_getSystemTextEncoding() ); + aActFont.SetCharSet(GetTextEncoding(nUSHORT)); eActMethod=PDM_UNDEFINED; nDataSize=2; break; @@ -1361,8 +1398,7 @@ else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN); else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS); else aActFont.SetFamily(FAMILY_ROMAN); - if (nUSHORT==23) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL); - else aActFont.SetCharSet( gsl_getSystemTextEncoding() ); + aActFont.SetCharSet(GetTextEncoding(nUSHORT)); *pPict >> nByteLen; nLen=((USHORT)nByteLen)&0x00ff; pPict->Read( &sFName, nLen ); sFName[ nLen ] = 0; @@ -1812,7 +1848,7 @@ eActMethod = PDM_UNDEFINED; aActOvalSize = Size(1,1); - aActFont.SetCharSet( gsl_getSystemTextEncoding() ); + aActFont.SetCharSet( GetTextEncoding()); aActFont.SetFamily(FAMILY_SWISS); aActFont.SetSize(Size(0,12)); aActFont.SetAlign(ALIGN_BASELINE); --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@framework.openoffice.org For additional commands, e-mail: issues-h...@framework.openoffice.org --------------------------------------------------------------------- To unsubscribe, e-mail: allbugs-unsubscr...@openoffice.org For additional commands, e-mail: allbugs-h...@openoffice.org