Choose the correct title font smartly

This commit is contained in:
Benau 2015-10-19 09:39:57 +08:00
parent 06fb6d4eb2
commit 109d6b91ce
5 changed files with 36 additions and 12 deletions

Binary file not shown.

View File

@ -1,4 +1,4 @@
GNU FreeFont (FreeSans, FreeSansBold, FreeMono) is released under the GPLv3
GNU FreeFont (FreeSans, FreeSansBold) is released under the GPLv3
wqyMicroHei is released under the GPLv3 with font embedding exception and Apache-2.0 licenses
By Qianqian Fang and The WenQuanYi Project Contributors

View File

@ -68,6 +68,10 @@ void FTEnvironment::loadFont()
(FileManager::TTF, "Ubuntu-B.ttf", true)).c_str(),
0, &(FTEnvironment::ft_face[F_BOLD]));
FTEnvironment::ft_err += FT_New_Face(FTEnvironment::ft_lib, (file_manager->getAssetChecked
(FileManager::TTF, "FreeSansBold.ttf", true)).c_str(),
0, &(FTEnvironment::ft_face[F_BOLD_FALLBACK]));
FTEnvironment::ft_err += FT_New_Face(FTEnvironment::ft_lib, (file_manager->getAssetChecked
(FileManager::TTF, "Ubuntu-B.ttf",true)).c_str(),
0, &(FTEnvironment::ft_face[F_DIGIT]));

View File

@ -33,8 +33,9 @@ enum FontUse
F_CJK = 2,
F_AR = 3,
F_BOLD = 4,
F_DIGIT = 5,
F_COUNT = 6
F_BOLD_FALLBACK = 5,
F_DIGIT = 6,
F_COUNT = 7
};
enum TTFLoadingType {T_NORMAL, T_DIGIT, T_BOLD};

View File

@ -381,12 +381,6 @@ bool ScalableFont::loadTTF()
std::vector <s32> advance;
std::vector <s32> height;
err = FT_Set_Pixel_Sizes(cur_face, 0, m_dpi);
if (err)
Log::error("ScalableFont::loadTTF", "Can't set font size.");
slot = cur_face->glyph;
std::set<wchar_t>::iterator it;
s32 current_maxheight = 0;
s32 t;
@ -402,8 +396,33 @@ bool ScalableFont::loadTTF()
SGUISprite s;
core::rect<s32> rectangle;
// Retrieve glyph index from character code, skip useless glyph.
int idx = FT_Get_Char_Index(cur_face, *it);
int idx;
if (m_type == T_BOLD) //Lite-Fontconfig for stk, this one is specifically for bold title
{
int count = F_BOLD;
while (count < irr::gui::F_COUNT)
{
m_font_use = (FontUse)count;
err = FT_Set_Pixel_Sizes(cur_face, 0, m_dpi);
if (err)
Log::error("ScalableFont::loadTTF", "Can't set font size.");
idx = FT_Get_Char_Index(cur_face, *it);
if (idx > 0) break;
count++;
}
}
else
{
err = FT_Set_Pixel_Sizes(cur_face, 0, m_dpi);
if (err)
Log::error("ScalableFont::loadTTF", "Can't set font size.");
idx = FT_Get_Char_Index(cur_face, *it);
}
slot = cur_face->glyph;
if (idx)
{
// Load glyph image into the slot (erase previous one)
@ -599,7 +618,7 @@ bool ScalableFont::lazyLoadChar()
//Lite-Fontconfig for stk
int idx;
int count = 0;
while (count < irr::gui::F_COUNT - 2) //Exclude bold and digit font
while (count < irr::gui::F_COUNT - 3) //Exclude bold with fallback and digit font
{
m_font_use = (FontUse)count;
err = FT_Set_Pixel_Sizes(cur_face, 0, m_dpi);