boundBox = i->bbox;
++i;
- for (i ; i != glyphs.end(); ++i)
+ for (; i != glyphs.end(); ++i)
{
if ( i->flags & GS_ISSPACE )
continue;
}
std::string eTextPara::replacement_facename;
+std::set<int> eTextPara::forced_replaces;
void eTextPara::setFont(Font *fnt, Font *replacement)
{
}
if (isprintable)
{
- FT_UInt index;
-
- index=(rflags&RS_DIRECT)? *i : FT_Get_Char_Index(current_face, *i);
+ FT_UInt index = 0;
+
+ if (forced_replaces.find(*i) == forced_replaces.end())
+ index=(rflags&RS_DIRECT)? *i : FT_Get_Char_Index(current_face, *i);
if (!index)
{
#include <string>
#include <lib/base/object.h>
+#include <set>
+
class FontRenderClass;
class Font;
class gDC;
int use_kerning;
int previous;
static std::string replacement_facename;
+ static std::set<int> forced_replaces;
eRect area;
ePoint cursor;
virtual ~eTextPara();
static void setReplacementFont(std::string font) { replacement_facename=font; }
+ static void forceReplacementGlyph(int unicode) { forced_replaces.insert(unicode); }
void setFont(const gFont *font);
int renderString(const std::string &string, int flags=0);
gLCDDC::getInstance(my_lcd_dc);
fontRenderClass::getInstance()->AddFont(FONTDIR "/md_khmurabi_10.ttf", "Regular", 100);
+ fontRenderClass::getInstance()->AddFont(FONTDIR "/ae_AlMateen.ttf", "Replacement", 90);
+ eTextPara::setReplacementFont("Replacement");
+
+ /* some characters are wrong in the regular font, force them to use the replacement font */
+ for (int i = 0x60c; i <= 0x66d; ++i)
+ eTextPara::forceReplacementGlyph(i);
+ eTextPara::forceReplacementGlyph(0xfdf2);
+ for (int i = 0xfe80; i < 0xff00; ++i)
+ eTextPara::forceReplacementGlyph(i);
+
eWidgetDesktop dsk(eSize(720, 576));
eWidgetDesktop dsk_lcd(eSize(132, 64));