std::size_t font_hasher::hash(const font& v) { std::size_t seed(0); combine(seed, v.family()); combine(seed, v.style()); combine(seed, v.name()); return seed; }
XLNT_API bool operator==(const font &left, const font &right) { if (left.bold() != right.bold()) { return false; } if (left.has_color() != right.has_color()) { return false; } if (left.has_color()) { if (left.color() != right.color()) { return false; } } if (left.has_family() != right.has_family()) { return false; } if (left.has_family()) { if (left.family() != right.family()) { return false; } } if (left.italic() != right.italic()) { return false; } if (left.name() != right.name()) { return false; } if (left.has_scheme() != right.has_scheme()) { return false; } if (left.has_scheme()) { if (left.scheme() != right.scheme()) { return false; } } if (std::fabs(left.size() - right.size()) != 0.0) { return false; } if (left.strikethrough() != right.strikethrough()) { return false; } if (left.superscript() != right.superscript()) { return false; } if (left.underline() != right.underline()) { return false; } return true; }