/** * 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]; } }
/** * 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]; } }
static void reload_fallback_fonts() { if (gTestFallbackConfigFile) { // No need to reload fallback fonts in test environment. return; } SkGraphics::PurgeFontCache(); SkTDArray<FontFamily*> fallbackFamilies; getFallbackFontFamilies(fallbackFamilies); int fallbackCount = 0; for (int i = 0; i < fallbackFamilies.count(); ++i) { FontFamily *family = fallbackFamilies[i]; for (int j = 0; j < family->fFileNames.count(); ++j) { if (family->fFileNames[j]) { // ensure the fallback font exists before adding it to the list bool isFixedWidth; SkString name; SkTypeface::Style style; if (!get_name_and_style(family->fFileNames[j], &name, &style, &isFixedWidth, false)) { continue; } size_t uniqueID = find_uniqueID(family->fFileNames[j]); SkASSERT(uniqueID != 0); #if SK_DEBUG_FONTS SkDebugf("---- reload %s as fallback[%d] fontID %d oldFontID %d", family->fFileNames[j], fallbackCount, uniqueID, gFallbackFonts[fallbackCount]); #endif gFallbackFonts[fallbackCount++] = uniqueID; break; // The fallback set contains only the first font of each family } } } // reset the sentinel the end of the newly ordered array gFallbackFonts[fallbackCount] = 0; }