1 #ifndef VTESTBED_FONT_FONT_HH     2 #define VTESTBED_FONT_FONT_HH     6 #include <fontconfig/fontconfig.h>    13         static_assert(
alignof(
char) == 
alignof(FcChar8), 
"bad alignment");
    14         static_assert(
sizeof(
char) == 
sizeof(FcChar8), 
"bad size");
    18             inline Init() { ::FcInit(); }
    19             inline ~
Init() { ::FcFini(); } 
    25             FcConfig* _config = 
nullptr;
    28             inline Configuration() { _config = ::FcInitLoadConfigAndFonts(); }
    30             inline operator FcConfig*() { 
return _config; }
    37             FcPattern* _pattern = 
nullptr;
    42             Pattern(FcPattern* p): _pattern(p) {}
    47                 ::FcNameParse(reinterpret_cast<const FcChar8*>(font_name))
    56             _pattern(rhs._pattern) {
    57                 rhs._pattern = 
nullptr;
    61             ~
Pattern() { ::FcPatternDestroy(_pattern); }
    64             operator FcPattern*() { 
return _pattern; }
    67             operator FcPattern*() 
const { 
return _pattern; }
    80             file_name(
const Pattern& pattern);
    84                 const auto& name = this->file_name(pattern);
    85                 return !name.empty() ? name : default_file_name;
    94 #endif // vim:filetype=cpp