diff -ru abi/configure.ac abi4/configure.ac --- abi/configure.ac Sat Aug 3 10:11:45 2002 +++ abi4/configure.ac Sun Aug 4 13:08:41 2002 @@ -412,8 +412,6 @@ src/other/GNUmakefile src/other/spell/GNUmakefile src/other/spell/xp/GNUmakefile - src/other/fribidi/GNUmakefile - src/other/fribidi/xp/GNUmakefile src/other/ttftool/GNUmakefile src/other/ttftool/unix/GNUmakefile src/text/GNUmakefile diff -ru abi/configure.in abi4/configure.in --- abi/configure.in Sat Aug 3 10:11:46 2002 +++ abi4/configure.in Sun Aug 4 13:08:47 2002 @@ -440,8 +440,6 @@ src/other/GNUmakefile src/other/spell/GNUmakefile src/other/spell/xp/GNUmakefile - src/other/fribidi/GNUmakefile - src/other/fribidi/xp/GNUmakefile src/other/ttftool/GNUmakefile src/other/ttftool/unix/GNUmakefile src/text/GNUmakefile diff -ru abi/includes.mk abi4/includes.mk --- abi/includes.mk Sun Jul 28 10:06:16 2002 +++ abi4/includes.mk Sun Aug 4 13:33:54 2002 @@ -113,7 +113,7 @@ @LIBPOPT_LIBS@ @LIBCURL_LIBS@ @XFT_LIBS@ @THREAD_LIBS@ # BiDi needs a specific lib -BIDI_LIBS=$(top_builddir)/src/other/fribidi/xp/libFribidi.a +BIDI_LIBS=-lfribidi ABI_LIBS=$(top_builddir)/src/wp/ap/libAp.a $(BIDI_LIBS) ABI_LIBS+=$(top_builddir)/src/wp/impexp/libImpExp.a ABI_LIBS+=$(top_builddir)/src/af/xap/libXap.a diff -ru abi/src/af/gr/unix/gr_UnixGraphics.cpp abi4/src/af/gr/unix/gr_UnixGraphics.cpp --- abi/src/af/gr/unix/gr_UnixGraphics.cpp Sun Aug 4 10:07:13 2002 +++ abi4/src/af/gr/unix/gr_UnixGraphics.cpp Sun Aug 4 13:40:07 2002 @@ -317,8 +317,38 @@ int * pCharWidths) { #ifdef USE_XFT - XftDrawString32(m_pXftDraw, &m_XftColor, m_pXftFont, xoff, yoff + m_pXftFont->ascent, - const_cast (pChars + iCharOffset), iLength); + if (iLength == 0) + return; + + yoff += m_pXftFont->ascent; + + if (!pCharWidths) + XftDrawString32(m_pXftDraw, &m_XftColor, m_pXftFont, xoff, yoff, + const_cast (pChars + iCharOffset), iLength); + else + { + XftGlyphSpec aGlyphSpec[256]; + XftGlyphSpec* pGlyphSpec = aGlyphSpec; + + if (iLength > 256) + pGlyphSpec = new XftGlyphSpec[iLength]; + + pGlyphSpec[0].glyph = (FT_UInt) pChars[iCharOffset]; + pGlyphSpec[0].x = xoff; + pGlyphSpec[0].y = yoff; + + for (int i = 1; i < iLength; ++i) + { + pGlyphSpec[i].glyph = (FT_UInt) pChars[i + iCharOffset]; + pGlyphSpec[i].x = (short) (pGlyphSpec[i - 1].x + pCharWidths[i - 1]); + pGlyphSpec[i].y = yoff; + } + + XftDrawGlyphSpec (m_pXftDraw, &m_XftColor, m_pXftFont, pGlyphSpec, iLength); + + if (pGlyphSpec != aGlyphSpec) + delete[] pGlyphSpec; + } #else if (!m_pFontManager) return;