Kaydet (Commit) 7ac763db authored tarafından Tor Lillqvist's avatar Tor Lillqvist

tdf#95194: We need to set the GF flags in UniscribeLayout::GetNextGlyphs()

The old SimpleWinLayout::GetNextGlyphs() did it.
PDFWriterImpl::drawVerticalGlyphs() expects GF_ROTL etc to be set when
necessary for vertical text when exporting to PDF.

Change-Id: I325d6e9f75a3bc51f24add33dd3bffe7b3c7bee0
üst d46203b5
...@@ -824,6 +824,8 @@ OUString VisAttrArrayToString(SCRIPT_VISATTR *pVisAttrs, int n) ...@@ -824,6 +824,8 @@ OUString VisAttrArrayToString(SCRIPT_VISATTR *pVisAttrs, int n)
bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs ) bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
{ {
msTheString = rArgs.mrStr;
// for a base layout only the context glyphs have to be dropped // for a base layout only the context glyphs have to be dropped
// => when the whole string is involved there is no extra context // => when the whole string is involved there is no extra context
typedef std::vector<int> TIntVector; typedef std::vector<int> TIntVector;
...@@ -1524,6 +1526,9 @@ int UniscribeLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphs, Point& rPos, ...@@ -1524,6 +1526,9 @@ int UniscribeLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphs, Point& rPos,
} }
// update return values // update return values
if( (mnLayoutFlags & SalLayoutFlags::Vertical) &&
nCharPos != -1 )
aGlyphId |= GetVerticalFlags( msTheString[nCharPos] );
*(pGlyphs++) = aGlyphId; *(pGlyphs++) = aGlyphId;
if( pGlyphAdvances ) if( pGlyphAdvances )
*(pGlyphAdvances++) = nGlyphWidth; *(pGlyphAdvances++) = nGlyphWidth;
......
...@@ -110,6 +110,7 @@ private: ...@@ -110,6 +110,7 @@ private:
// string specific info // string specific info
// everything is in logical order // everything is in logical order
OUString msTheString; // Sadly we need it in GetNextGlyphs(), to be able to call GetVerticalFlags()
int mnCharCapacity; int mnCharCapacity;
WORD* mpLogClusters; // map from absolute_char_pos to relative_glyph_pos WORD* mpLogClusters; // map from absolute_char_pos to relative_glyph_pos
int* mpCharWidths; // map from absolute_char_pos to char_width int* mpCharWidths; // map from absolute_char_pos to char_width
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment