Klaus Schmidinger wrote:
Can you please verify if the attached patch does this correctly?
Maybe the attached version is even better, because there are also other places where Glyph() is called.
The patch works, but you should also pass the AntiAliased parameter when recursivly calling Glyph().
Besides this - I have the 0xA0 about 80 times in my epg.data (very often on DMAX). As far as I can tell, the 0xA0 is used as NON-BREAKING SPACE to avoid the collapsing of two or more spaces. Therefore the 0xA0 might as well be rendered as normal single space by default:
if (CharCode == 0xA0) CharCode = 0x20;
Tobias
diff -urNad vdr-1.5.16~/font.c vdr-1.5.16/font.c --- vdr-1.5.16~/font.c 2008-02-29 22:21:30.000000000 +0100 +++ vdr-1.5.16/font.c 2008-02-29 22:24:05.000000000 +0100 @@ -214,6 +214,9 @@ return Glyph; } } +#define UNKNOWN_GLYPH_INDICATOR '?' + if (CharCode != UNKNOWN_GLYPH_INDICATOR) + return Glyph(UNKNOWN_GLYPH_INDICATOR, AntiAliased); return NULL; }
@@ -258,6 +261,8 @@ uint sym = Utf8CharGet(s, sl); s += sl; cGlyph *g = Glyph(sym, AntiAliased); + if (!g) + continue; int kerning = Kerning(g, prevSym); prevSym = sym; uchar *buffer = g->Bitmap();