summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2013-11-21 22:59:06 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2013-11-21 23:17:12 +0200
commit856ceb2cc5d78c36c7a8fc6118254d85f990d7e6 (patch)
tree9dc345934205ad7283606a0b9a4c6e80ea112a8c
parent618052e201318bcfba8a0fcdd29cf88eaa4a143e (diff)
fdo#67802: Fix PS printing of non-CTL text with ligatures
The GlyphSet::AddGlyphID() was messing with glyphs of characters that can be converted to Windows-1252 encoding, discarding whatever glyph it was asked to use and using a random glyph that is supposed to belong to the converted character. For ligatures this means the ligature glyphs was discarded and the glyphs for its component was used, but this broken for just any glyph substitution. The code makes no sense at all, apart from the fact that it is verbatim copy of GlyphSet::AddCharID() since 9754ad8d979557ea03cbfe04708b62b698d1276c and just happened to work because we did not enable ligatures and other typographic features for non-CTL text before. Change-Id: I764f0b40f8acf61eae38a9038b0666d711c04a9d
-rw-r--r--vcl/generic/print/glyphset.cxx12
1 files changed, 5 insertions, 7 deletions
diff --git a/vcl/generic/print/glyphset.cxx b/vcl/generic/print/glyphset.cxx
index 94730be8d385..b2e982efd623 100644
--- a/vcl/generic/print/glyphset.cxx
+++ b/vcl/generic/print/glyphset.cxx
@@ -275,16 +275,14 @@ GlyphSet::AddGlyphID (
sal_Int32* nOutGlyphSetID
)
{
- sal_uChar nMappedChar;
+ sal_uChar nMappedChar = 0;
// XXX important: avoid to reencode type1 symbol fonts
if (mnBaseEncoding == RTL_TEXTENCODING_SYMBOL)
nMappedChar = GetSymbolMapping (nUnicode);
- else
- nMappedChar = GetAnsiMapping (nUnicode);
- // create an empty glyphmap that is reserved for iso1252 encoded glyphs
- // (or -- unencoded -- symbol glyphs) and a second map that takes any other
+ // create an empty glyphmap that is reserved for unencoded symbol glyphs,
+ // and a second map that takes any other
if (maGlyphList.empty())
{
glyph_map_t aMap, aMapp;
@@ -302,7 +300,7 @@ GlyphSet::AddGlyphID (
// insert a new glyph in the font subset
if (nMappedChar)
{
- // always put iso1252 chars into the first map, map them on itself
+ // always put symbol glyphs into the first map, map them on itself
glyph_map_t& aGlyphSet = maGlyphList.front();
AddNotdef (aGlyphSet);
@@ -312,7 +310,7 @@ GlyphSet::AddGlyphID (
}
else
{
- // other chars are just appended to the list
+ // other glyphs are just appended to the list
glyph_map_t& aGlyphSet = maGlyphList.back();
AddNotdef (aGlyphSet);