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