| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_GFX_SYSTEM_FONTS_WIN_H_ |
| #define UI_GFX_SYSTEM_FONTS_WIN_H_ |
| |
| #include "ui/gfx/font.h" |
| #include "ui/gfx/gfx_export.h" |
| |
| namespace gfx { |
| namespace win { |
| |
| // Represents an optional override of system font and scale. |
| struct FontAdjustment { |
| std::wstring font_family_override; |
| double font_scale = 1.0; |
| }; |
| |
| // Identifiers for Windows-specific fonts described in the NONCLIENTMETRICS |
| // struct. |
| enum class SystemFont { kCaption = 0, kSmallCaption, kMenu, kStatus, kMessage }; |
| |
| // Callback that returns the minimum height that should be used for |
| // gfx::Fonts. Optional. If not specified, the minimum font size is 0. |
| typedef int (*GetMinimumFontSizeCallback)(); |
| GFX_EXPORT void SetGetMinimumFontSizeCallback( |
| GetMinimumFontSizeCallback callback); |
| |
| // Callback that adjusts a FontAdjustment to meet suitability requirements |
| // of the embedding application. Optional. If not specified, no adjustments |
| // are performed other than clamping to a minimum font size if |
| // |get_minimum_font_size_callback| is specified. |
| typedef void (*AdjustFontCallback)(FontAdjustment* font_adjustment); |
| GFX_EXPORT void SetAdjustFontCallback(AdjustFontCallback callback); |
| |
| // Returns the specified Windows default system font. By default, this is the |
| // font used for message boxes (see struct NONCLIENTMETRICS). |
| GFX_EXPORT const Font& GetDefaultSystemFont(); |
| |
| // Returns the specified Windows system font, suitable for drawing on screen |
| // elements. |
| GFX_EXPORT const Font& GetSystemFont(SystemFont system_font); |
| |
| // Applies a font adjustment to an existing native font. |
| GFX_EXPORT NativeFont |
| AdjustExistingSystemFont(NativeFont existing_font, |
| const FontAdjustment& font_adjustment); |
| |
| // Computes and returns the adjusted size of a font, subject to the global |
| // minimum size. |lf_height| is the height as reported by the LOGFONT structure, |
| // and may be positive or negative (but is typically negative, indicating |
| // character size rather than cell size). The absolute value of |lf_size| will |
| // be adjusted by |size_delta| and then returned with the original sign. |
| GFX_EXPORT int AdjustFontSize(int lf_height, int size_delta); |
| |
| // Adjusts a LOGFONT structure for optional size scale and face override. |
| GFX_EXPORT void AdjustLOGFONTForTesting(const FontAdjustment& font_adjustment, |
| LOGFONT* logfont); |
| |
| // Retrieves a FONT from a LOGFONT structure. |
| GFX_EXPORT Font GetFontFromLOGFONTForTesting(const LOGFONT& logfont); |
| |
| // Clears the system fonts cache. SystemFonts is keeping a global state that |
| // must be reset in unittests when using |GetMinimumFontSizeCallback| or |
| // |SetAdjustFontCallback|. |
| GFX_EXPORT void ResetSystemFontsForTesting(); |
| |
| } // namespace win |
| } // namespace gfx |
| |
| #endif // UI_GFX_SYSTEM_FONTS_WIN_H_ |