/*! \brief If you don't find your preferred font style, but are anxious to have one fitting your needs, you may want to use this method. */ FontStyle* FontManager::FindStyleMatchingFace(uint16 face) const { int32 count = fFamilies.CountItems(); for (int32 i = 0; i < count; i++) { FontFamily* family = fFamilies.ItemAt(i); FontStyle* style = family->GetStyleMatchingFace(face); if (style != NULL) return style; } return NULL; }
/*! \brief Retrieves the FontStyle object that comes closest to the one specified. \param family The font's family or NULL in which case \a familyID is used \param style The font's style or NULL in which case \a styleID is used \param familyID will only be used if \a family is NULL (or empty) \param styleID will only be used if \a style is NULL (or empty) \param face is used to specify the style if both \a style is NULL or empty and styleID is 0xffff. \return The FontStyle having those attributes or NULL if not available */ FontStyle* FontManager::GetStyle(const char* familyName, const char* styleName, uint16 familyID, uint16 styleID, uint16 face) { FontFamily* family; // find family if (familyName != NULL && familyName[0]) family = GetFamily(familyName); else family = GetFamily(familyID); if (family == NULL) return NULL; // find style if (styleName != NULL && styleName[0]) { FontStyle* fontStyle = family->GetStyle(styleName); if (fontStyle != NULL) return fontStyle; // before we fail, we try the mappings for a match if (_AddMappedFont(family->Name(), styleName) == B_OK) { fontStyle = family->GetStyle(styleName); if (fontStyle != NULL) return fontStyle; } _ScanFonts(); return family->GetStyle(styleName); } if (styleID != 0xffff) return family->GetStyleByID(styleID); // try to get from face return family->GetStyleMatchingFace(face); }