diff options
author | woglinde <woglinde@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2011-02-06 00:36:20 +0000 |
---|---|---|
committer | woglinde <woglinde@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2011-02-06 00:36:20 +0000 |
commit | 71e52d34facc76ae86f67a080b28efcfde5d30cd (patch) | |
tree | 284c7d3ef8b504278ec685fbdb8dad558532b6fd | |
parent | 5d80dac725515ab688a4ae99586413e929a9d59a (diff) | |
download | navit-71e52d34facc76ae86f67a080b28efcfde5d30cd.tar.gz |
Fix:font/freetype:Fix the usage of libfribidi with new and oldapi, stolen from wesnoth
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@4113 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | configure.in | 13 | ||||
-rw-r--r-- | navit/font/freetype/Makefile.am | 4 | ||||
-rw-r--r-- | navit/font/freetype/font_freetype.c | 26 |
3 files changed, 32 insertions, 11 deletions
diff --git a/configure.in b/configure.in index 16a7d4c61..a9563e769 100644 --- a/configure.in +++ b/configure.in @@ -450,7 +450,7 @@ AC_SUBST(FREETYPE2_LIBS) AM_CONDITIONAL(FONT_FREETYPE, test "x${font_freetype}" = "xyes") AC_ARG_WITH(freetype-fonts, [ --with-freetype-fonts specify what fonts to use], AC_DEFINE_UNQUOTED(FREETYPE_FONTS,[${withval}],[Freetype fonts to use])) -AC_ARG_ENABLE(fontconfig, [ --disable-fontconfig don't add fontconfig support], fontconfig=$enableval;fontconfig_reason="configure parameter") +AC_ARG_ENABLE(fontconfig, [ --disable-fontconfig don't' add fontconfig support], fontconfig=$enableval;fontconfig_reason="configure parameter") if test "x${fontconfig}" = "xyes"; then PKG_CHECK_MODULES(FONTCONFIG, [fontconfig], [fontconfig=yes], [fontconfig=no]) fi @@ -465,11 +465,20 @@ AM_CONDITIONAL(FONTS, test "x${font_freetype}" = "xyes" -a "x$fontconfig" != "xy # fribidi AC_ARG_ENABLE(fribidi, [ --disable-fribidi dont build with fribidi], fribidi=$enableval;fribidi_reason="configure parameter", fribidi=yes) if test x"${fribidi}" = "xyes"; then - PKG_CHECK_MODULES(FRIBIDI, [fribidi], [fribidi=yes], [fribidi=no;fribidi_reason="FriBidi library not found"]) + PKG_CHECK_MODULES(FRIBIDI2, [fribidi >= 0.19.0], [fribidi=yes;oldfribidi=no], + [ PKG_CHECK_MODULES([FRIBIDI], [fribidi], + [fribidi=yes;oldfribidi=yes;fribid_reason="using old version"], [fribidi=no;fribidi_reason="FriBidi library not found"]) + ]) fi if test x"${fribidi}" = "xyes"; then AC_DEFINE(USE_FRIBIDI, 1, [Build with fribidi support]) fi +if test x"${oldfribidi}" = "xyes"; then + AC_DEFINE(FRIBIDIOLD, 1, [Build with fribidi support for older versions of fribidi]) +fi + +AC_SUBST(FRIBIDI2_CFLAGS) +AC_SUBST(FRIBIDI2_LIBS) AC_SUBST(FRIBIDI_CFLAGS) AC_SUBST(FRIBIDI_LIBS) diff --git a/navit/font/freetype/Makefile.am b/navit/font/freetype/Makefile.am index bb06a944f..4c081e391 100644 --- a/navit/font/freetype/Makefile.am +++ b/navit/font/freetype/Makefile.am @@ -1,9 +1,9 @@ include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @FREETYPE2_CFLAGS@ @FONTCONFIG_CFLAGS@ @FRIBIDI_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=font_freetype +AM_CPPFLAGS = @NAVIT_CFLAGS@ @FREETYPE2_CFLAGS@ @FONTCONFIG_CFLAGS@ @FRIBIDI2_CFLAGS@ @FRIBIDI_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=font_freetype if PLUGINS modulefont_LTLIBRARIES = libfont_freetype.la else noinst_LTLIBRARIES = libfont_freetype.la endif libfont_freetype_la_SOURCES = font_freetype.c font_freetype.h -libfont_freetype_la_LDFLAGS = @FREETYPE2_LIBS@ @FONTCONFIG_LIBS@ @FRIBIDI_LIBS@ -module -avoid-version +libfont_freetype_la_LDFLAGS = @FREETYPE2_LIBS@ @FONTCONFIG_LIBS@ @FRIBIDI2_LIBS@ @FRIBIDI_LIBS@ -module -avoid-version diff --git a/navit/font/freetype/font_freetype.c b/navit/font/freetype/font_freetype.c index d71e0f63a..814ae5caf 100644 --- a/navit/font/freetype/font_freetype.c +++ b/navit/font/freetype/font_freetype.c @@ -12,10 +12,7 @@ #include FT_CACHE_H #endif #if USE_FRIBIDI -#include <fribidi/fribidi.h> -#if FRIBIDI_INTERFACE_VERSION == 3 -#include <fribidi/fribidi-deprecated.h> -#endif +#include <fribidi.h> #endif #include <freetype/ftglyph.h> #include "point.h" @@ -203,13 +200,28 @@ font_freetype_text_new(char *text, struct font_freetype_font *font, int dx, // Need to use fribidi to handle the string properly char visual_text[len*4+1]; { - FriBidiChar unicode_text[len+1]; - FriBidiChar visual_unicode_text[len+1]; - int unicode_len = fribidi_utf8_to_unicode(text, strlen(text), unicode_text); + FriBidiChar unicode_text[len+2]; + FriBidiChar visual_unicode_text[len+2]; + FriBidiStrIndex textlen = strlen(text); +#ifdef FRIBIDIOLD FriBidiCharType base = FRIBIDI_TYPE_LTR; +#else + FriBidiParType base = FRIBIDI_PAR_LTR; +#endif + + FriBidiStrIndex unicode_len = +#ifdef FRIBIDIOLD + fribidi_utf8_to_unicode(text, textlen, unicode_text); +#else + fribidi_charset_to_unicode(FRIBIDI_CHAR_SET_UTF8, text, textlen, unicode_text); +#endif fribidi_log2vis(unicode_text, unicode_len, &base, visual_unicode_text, NULL, NULL, NULL); // TODO: check return value +#ifdef FRIBIDIOLD fribidi_unicode_to_utf8(visual_unicode_text, unicode_len, visual_text); +#else + fribidi_unicode_to_charset(FRIBIDI_CHAR_SET_UTF8, visual_unicode_text, unicode_len, visual_text); +#endif p = visual_text; } #endif /* USE_FRIBIDI */ |