freetypeで正常にフォント表示されない問題

具体的にはONScripterでメニュー画面のフォント表示がおかしい(ちょうど参考URL1*1のような状態になる)。これはfreetypeがEmbedded Bitmapを含むフォントを扱う処理に問題があるためで、参考URL2*2のパッチをSDL_ttfに当てると直る。
さらに、MythTVでも同様の問題があったので、FT_Load_Glyph()を呼び出している部分を修正したら、こちらも問題が解消した。

以下CVS HEADに当てるパッチ。

--- mythtv/libs/libmythtv/ttfont.cpp.orig       2005-08-09 15:45:48.000000000 +0900
+++ mythtv/libs/libmythtv/ttfont.cpp    2005-09-23 00:27:16.000000000 +0900
@@ -173,7 +173,7 @@
            continue;
        if (i == 0)
        {
-           FT_Load_Glyph(face, j, FT_LOAD_DEFAULT);
+           FT_Load_Glyph(face, j, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP);
            pw += 2; //((face->glyph->metrics.horiBearingX) / 64);
        }

@@ -211,7 +211,7 @@
    Raster_Map *rtmp;

    j = text[0];
-   FT_Load_Glyph(face, j, FT_LOAD_DEFAULT);
+   FT_Load_Glyph(face, j, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP);
    x_offset = 2; //(face->glyph->metrics.horiBearingX) / 64;

    y_offset = -(max_descent / 64);
@@ -577,7 +577,7 @@

     code = FT_Get_Char_Index(face, c);

-    FT_Load_Glyph(face, code, FT_LOAD_DEFAULT);
+    FT_Load_Glyph(face, code, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP);
     FT_Glyph& glyph = glyphs[c];
     if (FT_Get_Glyph(face->glyph, &glyph))
     {