/** * Loads data on font families from various expected configuration files. The * resulting data is returned in the given fontFamilies array. */ void SkFontConfigParser::GetFontFamilies(SkTDArray<FontFamily*> &fontFamilies) { //Determine if we want to use themes bool use_theme_font = false; if (access(THEME_FONTS_FILE, R_OK) == 0) { use_theme_font = true; } if (use_theme_font) { getThemeFontFamilies(fontFamilies); if (fontFamilies.count() > 0) { SkTDArray<FontFamily*> systemFontFamilies; getSystemFontFamilies(systemFontFamilies); addSystemFontsToThemeFonts(fontFamilies, systemFontFamilies); } } if (!use_theme_font || fontFamilies.count() == 0) { getSystemFontFamilies(fontFamilies); } // Append all the fallback fonts to system fonts SkTDArray<FontFamily*> fallbackFonts; getFallbackFontFamilies(fallbackFonts); for (int i = 0; i < fallbackFonts.count(); ++i) { fallbackFonts[i]->fIsFallbackFont = true; *fontFamilies.append() = fallbackFonts[i]; } }
static QString getEnglishFontFamily() { static const QStringList &families = getSystemFontFamilies(); static const FontSets &font_sets = getUserConfigFontSets(); static QString en_font_name; if (!en_font_name.isEmpty()) { return en_font_name; } FontSets::const_iterator it = font_sets.find("default"); if (it != font_sets.end()) { map<Font::Language, QStringList>::const_iterator itt = it->second.find(Font::US_ENGLISH); if (itt != it->second.end()) { for (int i = 0; i < itt->second.size(); ++i) { const QString &font = itt->second[i]; if (families.contains(font)) { en_font_name = font; break; } } } } return en_font_name; }
static QString getFontFamilyForLang(Font::Language lang) { static const QStringList &families = getSystemFontFamilies(); static const FontSets &font_sets = getUserConfigFontSets(); const QString en_font_name = getEnglishFontFamily(); if (lang == Font::US_ENGLISH) { return en_font_name; } FontSets::const_iterator it = font_sets.find(en_font_name.toLower()); if (it != font_sets.end()) { map<Font::Language, QStringList>::const_iterator itt = it->second.find(lang); if (itt != it->second.end()) { for (int i = 0; i < itt->second.size(); ++i) { const QString &font = itt->second[i]; if (families.contains(font)) { return font; } else { FQ_TRACE("font", 5) << "Font " << font << " for " << en_font_name << " not found."; } } } } else { FQ_TRACE("font", 3) << "NO fontset for " << en_font_name << " found."; } return en_font_name; }
/** * Loads data on font families from various expected configuration files. The * resulting data is returned in the given fontFamilies array. */ void getFontFamilies(SkTDArray<FontFamily*> &fontFamilies) { SkTDArray<FontFamily*> fallbackFonts; getSystemFontFamilies(fontFamilies); getFallbackFontFamilies(fallbackFonts); // Append all fallback fonts to system fonts for (int i = 0; i < fallbackFonts.count(); ++i) { *fontFamilies.append() = fallbackFonts[i]; } }
/** * Loads data on font families from various expected configuration files. The * resulting data is returned in the given fontFamilies array. */ void SkFontConfigParser::GetFontFamilies(SkTDArray<FontFamily*> &fontFamilies) { getSystemFontFamilies(fontFamilies); // Append all the fallback fonts to system fonts SkTDArray<FontFamily*> fallbackFonts; getFallbackFontFamilies(fallbackFonts); for (int i = 0; i < fallbackFonts.count(); ++i) { fallbackFonts[i]->fIsFallbackFont = true; *fontFamilies.append() = fallbackFonts[i]; } }