From adaf069859d42b4a0bce1375cb8c7ee9ff3ee2b9 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 5 Apr 2023 15:48:53 +0800 Subject: [PATCH 01/61] Add a ctypes wrapper for fontconfig. --- gtk/src/toga_gtk/fonts.py | 22 ++++++++++++-- gtk/src/toga_gtk/libs/__init__.py | 1 + gtk/src/toga_gtk/libs/fontconfig.py | 47 +++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 gtk/src/toga_gtk/libs/fontconfig.py diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 62f006f7db..b3d1b219d1 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -6,8 +6,9 @@ SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, ) +from toga.fonts import _REGISTERED_FONT_CACHE -from .libs import Pango +from .libs import FontConfig, Pango _FONT_CACHE = {} @@ -24,10 +25,27 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: + font_key = self.interface.registered_font_key( + self.interface.family, + weight=self.interface.weight, + style=self.interface.style, + variant=self.interface.variant, + ) + try: + font_path = str( + self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] + ) + try: + FontConfig.add_font_file(font_path) + except ValueError as e: + print(f"Registered font {font_key} could not be loaded: {e}") + except KeyError: + # Not a pre-registered font + pass + # Initialize font with properties 'None NORMAL NORMAL NORMAL 0' font = Pango.FontDescription() - # Set font family family = self.interface.family if family != SYSTEM: family = f"{family}, {SYSTEM}" # Default to system diff --git a/gtk/src/toga_gtk/libs/__init__.py b/gtk/src/toga_gtk/libs/__init__.py index f22a0fe33c..299e982b49 100644 --- a/gtk/src/toga_gtk/libs/__init__.py +++ b/gtk/src/toga_gtk/libs/__init__.py @@ -1,3 +1,4 @@ +from .fontconfig import FontConfig # noqa: F401, F403 from .gtk import * # noqa: F401, F403 from .styles import * # noqa: F401, F403 from .utils import * # noqa: F401, F403 diff --git a/gtk/src/toga_gtk/libs/fontconfig.py b/gtk/src/toga_gtk/libs/fontconfig.py new file mode 100644 index 0000000000..64cd296ce6 --- /dev/null +++ b/gtk/src/toga_gtk/libs/fontconfig.py @@ -0,0 +1,47 @@ +from ctypes import CDLL, c_char_p, c_int, c_void_p, util + +libfontconfig = util.find_library("fontconfig") +if libfontconfig: + fontconfig = CDLL(libfontconfig) + + FcConfig = c_void_p + + fontconfig.FcInit.argtypes = [] + fontconfig.FcInit.restype = c_int + + fontconfig.FcConfigGetCurrent.argtypes = [] + fontconfig.FcConfigGetCurrent.restype = FcConfig + + fontconfig.FcConfigAppFontAddFile.argtypes = [FcConfig, c_char_p] + fontconfig.FcConfigAppFontAddFile.restypes = c_int +else: + fontconfig = None + + +class _FontConfig: + def __init__(self): + if fontconfig: + fontconfig.FcInit() + self.config = fontconfig.FcConfigGetCurrent() + else: + print( + "Unable to initialize FontConfig library. Is libfontconfig.so.1 on your LD_LIBRARY_PATH?" + ) + self.config = None + + def add_font_file(self, path): + if self.config is None: + raise RuntimeError( + "Can't load custom fonts without a working Fontconfig library" + ) + + result = fontconfig.FcConfigAppFontAddFile( + self.config, str(path).encode("utf-8") + ) + if result == 0: + raise ValueError(f"Couldn't load font file {path}") + + +# Instantiate and configure a singleton FontConfig instance +# If fontconfig couldn't be loaded, set the instance to None. +FontConfig = _FontConfig() From cd0fcb24b593b83c7f2e3ea39c91da75f3edc692 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 5 Apr 2023 15:49:56 +0800 Subject: [PATCH 02/61] Add Changenote. --- changes/1837.feature.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/1837.feature.rst diff --git a/changes/1837.feature.rst b/changes/1837.feature.rst new file mode 100644 index 0000000000..896050da51 --- /dev/null +++ b/changes/1837.feature.rst @@ -0,0 +1 @@ +Support for custom font loading was added to the GTK backend. From f706adef15103402dcaf3399ed4a321825ba21a7 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 6 Apr 2023 11:26:55 +0800 Subject: [PATCH 03/61] Improved error reporting for unknown fonts. --- core/src/toga/fonts.py | 10 ++++++++++ core/src/toga/style/pack.py | 9 +++------ gtk/src/toga_gtk/fonts.py | 24 ++++++++++++++++++------ winforms/src/toga_winforms/fonts.py | 21 ++++++++++++++------- 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index df2decf5cb..753ab4f3d5 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -21,6 +21,7 @@ from toga.platform import get_platform_factory +SYSTEM_DEFAULT_FONTS = {SYSTEM, MESSAGE, SERIF, SANS_SERIF, CURSIVE, FANTASY, MONOSPACE} SYSTEM_DEFAULT_FONT_SIZE = -1 _REGISTERED_FONT_CACHE = {} @@ -31,6 +32,15 @@ def __init__(self, family, size, style=NORMAL, variant=NORMAL, weight=NORMAL): self.factory = get_platform_factory() self._impl = self.factory.Font(self) + def __str__(self): + size = ( + "system size" if self.size == SYSTEM_DEFAULT_FONT_SIZE else f"{self.size}pt" + ) + weight = f" {self.weight}" if self.weight != NORMAL else "" + variant = f" {self.variant}" if self.variant != NORMAL else "" + style = f" {self.style}" if self.style != NORMAL else "" + return f"{self.family} {size}{weight}{variant}{style}" + def bind(self, factory=None): warnings.warn( "Fonts no longer need to be explicitly bound.", DeprecationWarning diff --git a/core/src/toga/style/pack.py b/core/src/toga/style/pack.py index 3462bb0ee8..14b419dc0f 100644 --- a/core/src/toga/style/pack.py +++ b/core/src/toga/style/pack.py @@ -1,4 +1,4 @@ -from travertino.constants import ( +from travertino.constants import ( # noqa: F401 BOLD, BOTTOM, CENTER, @@ -29,7 +29,7 @@ from travertino.layout import BaseBox from travertino.size import BaseIntrinsicSize -from toga.fonts import SYSTEM_DEFAULT_FONT_SIZE, Font +from toga.fonts import SYSTEM_DEFAULT_FONT_SIZE, SYSTEM_DEFAULT_FONTS, Font ###################################################################### # Display @@ -57,10 +57,7 @@ COLOR_CHOICES = Choices(color=True, default=True) BACKGROUND_COLOR_CHOICES = Choices(TRANSPARENT, color=True, default=True) -FONT_FAMILY_CHOICES = Choices( - SYSTEM, SERIF, SANS_SERIF, CURSIVE, FANTASY, MONOSPACE, string=True -) -# FONT_FAMILY_CHOICES = Choices(SERIF, SANS_SERIF, CURSIVE, FANTASY, MONOSPACE, string=True, default=True) +FONT_FAMILY_CHOICES = Choices(*SYSTEM_DEFAULT_FONTS, string=True) FONT_STYLE_CHOICES = Choices(NORMAL, ITALIC, OBLIQUE) FONT_VARIANT_CHOICES = Choices(NORMAL, SMALL_CAPS) FONT_WEIGHT_CHOICES = Choices(NORMAL, BOLD) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index b3d1b219d1..295bbace73 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -1,12 +1,17 @@ +from pathlib import Path + from toga.constants import ( BOLD, ITALIC, OBLIQUE, SMALL_CAPS, +) +from toga.fonts import ( + _REGISTERED_FONT_CACHE, SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, + SYSTEM_DEFAULT_FONTS, ) -from toga.fonts import _REGISTERED_FONT_CACHE from .libs import FontConfig, Pango @@ -32,16 +37,23 @@ def __init__(self, interface): variant=self.interface.variant, ) try: - font_path = str( + font_path = ( self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] ) try: - FontConfig.add_font_file(font_path) - except ValueError as e: - print(f"Registered font {font_key} could not be loaded: {e}") + if Path(font_path).is_file(): + FontConfig.add_font_file(str(font_path)) + else: + print(f"Font file {font_path} could not be found") + except ValueError: + print(f"Font '{self.interface}' could not be loaded") except KeyError: # Not a pre-registered font - pass + if self.interface.family not in SYSTEM_DEFAULT_FONTS: + print( + f"Unknown font '{self.interface}'; " + "using system font as a fallback" + ) # Initialize font with properties 'None NORMAL NORMAL NORMAL 0' font = Pango.FontDescription() diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 8d19fe17cb..e7691e1586 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -1,4 +1,4 @@ -from toga.fonts import _REGISTERED_FONT_CACHE +from toga.fonts import _REGISTERED_FONT_CACHE, SYSTEM, SYSTEM_DEFAULT_FONTS from toga_winforms.libs import WinFont, WinForms, win_font_family from toga_winforms.libs.fonts import win_font_size, win_font_style from toga_winforms.libs.winforms import ( @@ -36,16 +36,23 @@ def __init__(self, interface): self._pfc = PrivateFontCollection() self._pfc.AddFontFile(font_path) font_family = self._pfc.Families[0] - except FileNotFoundException as e: - print(f"Registered font path {font_path!r} could not be found: {e}") + except FileNotFoundException: + print(f"Font file {font_path} could not be found") except ExternalException as e: + print(f"Font '{self.interface}' could not be loaded: {e}") + except IndexError: print( - f"Registered font path {font_path!r} could not be loaded: {e}" + f"Font '{self.interface}' does not have a family in the collection" ) - except IndexError as e: - print(f"Registered font {font_key} could not be loaded: {e}") except KeyError: - font_family = win_font_family(self.interface.family) + if self.interface.family not in SYSTEM_DEFAULT_FONTS: + print( + f"Unknown font '{self.interface}'; " + "falling back to system font" + ) + font_family = win_font_family(SYSTEM) + else: + font_family = win_font_family(self.interface.family) font_style = win_font_style( self.interface.weight, From d2afb9594b943191b4de6b3ceec824b56e8b4f67 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 6 Apr 2023 12:24:32 +0800 Subject: [PATCH 04/61] Fonts core API to 100%. Also fixes some stray canvas tests dependent on font rendering. --- core/src/toga/fonts.py | 47 +++---- core/src/toga/widgets/canvas.py | 63 ++++----- core/tests/test_deprecated_factory.py | 8 -- core/tests/test_font.py | 185 ++++++++++++++++++++------ core/tests/widgets/test_canvas.py | 4 +- dummy/src/toga_dummy/fonts.py | 7 + 6 files changed, 190 insertions(+), 124 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 753ab4f3d5..285deddb22 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -1,5 +1,3 @@ -import warnings - # Use the Travertino font definitions as-is from travertino import constants from travertino.constants import ITALIC # noqa: F401 @@ -41,23 +39,17 @@ def __str__(self): style = f" {self.style}" if self.style != NORMAL else "" return f"{self.family} {size}{weight}{variant}{style}" - def bind(self, factory=None): - warnings.warn( - "Fonts no longer need to be explicitly bound.", DeprecationWarning - ) - return self._impl - def measure(self, text, dpi, tight=False): return self._impl.measure(text, dpi=dpi, tight=tight) @staticmethod def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): """Registers a file-based font with it's family name, style, variant - and weight. When invalid values for style, variant or weight are - passed, NORMAL will be used. + and weight. When invalid values for style, variant or weight are passed, + ``NORMAL`` will be used. When a font file includes multiple font weight/style/etc, each variant - must be registerered separately: + must be registerered separately:: # Register a simple regular font Font.register("Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf") @@ -66,20 +58,18 @@ def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): Font.register("Roboto", "resources/Roboto-Regular.ttf") Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=Font.BOLD) - # Register a single font file that contains both a regular and bold weight + # Register a single font file that contains both + # a regular and bold weight Font.register("Bahnschrift", "resources/Bahnschrift.ttf") Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=Font.BOLD) - Args: - family (str): The font family name. This is the name that can be - referenced in style definitions. - path (str): The path to the font file. - weight (str): The font weight: Font.NORMAL (default) or a value - from Font.FONT_WEIGHTS - style (str): The font style: Font.NORMAL (default) or a value from - Font.FONT_STYLES - variant (str): The font variant: Font.NORMAL (default) or a value - from Font.FONT_VARIANTS + :param family: The font family name. This is the name that can be + referenced in style definitions. + :param path: The path to the font file. + :param weight: The font weight; ``NORMAL`` (default) or ``BOLD`` + :param style: The font style; ``NORMAL`` (default), ``ITALIC`` or + ``OBLIQUE`` + :param variant: The font variant; ``NORMAL`` (default) or ``SMALL_CAPS`` """ font_key = Font.registered_font_key( family, weight=weight, style=style, variant=variant @@ -93,14 +83,11 @@ def registered_font_key(family, weight, style, variant): If weight, style or variant contain an invalid value, Font.NORMAL is used instead. - Args: - family (str): The font family name - weight (str): The font weight: Font.NORMAL (default) or a value from Font.FONT_WEIGHTS - style (str): The font style: Font.NORMAL (default) or a value from Font.FONT_STYLES - variant (str): The font variant: Font.NORMAL (default) or a value from Font.FONT_VARIANTS - - Returns: - The font key (str) + :param family: The font family name + :param weight: The font weight: Font.NORMAL (default) or a value from Font.FONT_WEIGHTS + :param style: The font style: Font.NORMAL (default) or a value from Font.FONT_STYLES + :param variant: The font variant: Font.NORMAL (default) or a value from Font.FONT_VARIANTS + :returns: The font key """ if weight not in constants.FONT_WEIGHTS: weight = NORMAL diff --git a/core/src/toga/widgets/canvas.py b/core/src/toga/widgets/canvas.py index 3c7d091c1f..d5bf963bff 100644 --- a/core/src/toga/widgets/canvas.py +++ b/core/src/toga/widgets/canvas.py @@ -374,8 +374,9 @@ def __init__(self, color=BLACK, fill_rule=FillRule.NONZERO, preserve=False): self.preserve = preserve def __repr__(self): - return "{}(color={}, fill_rule={}, preserve={})".format( - self.__class__.__name__, self.color, self.fill_rule, self.preserve + return ( + f"{self.__class__.__name__}(color={self.color!r}, " + f"fill_rule={self.fill_rule}, preserve={self.preserve!r})" ) def _draw(self, impl, *args, **kwargs): @@ -436,8 +437,9 @@ def __init__(self, color=BLACK, line_width=2.0, line_dash=None): self.line_dash = line_dash def __repr__(self): - return "{}(color={}, line_width={}, line_dash={})".format( - self.__class__.__name__, self.color, self.line_width, self.line_dash + return ( + f"{self.__class__.__name__}(color={self.color!r}, " + f"line_width={self.line_width}, line_dash={self.line_dash!r})" ) def _draw(self, impl, *args, **kwargs): @@ -842,14 +844,10 @@ def __init__(self, cp1x, cp1y, cp2x, cp2y, x, y): self.y = y def __repr__(self): - return "{}(cp1x={}, cp1y={}, cp2x={}, cp2y={}, x={}, y={})".format( - self.__class__.__name__, - self.cp1x, - self.cp1y, - self.cp2x, - self.cp2y, - self.x, - self.y, + return ( + f"{self.__class__.__name__}(cp1x={self.cp1x}, cp1y={self.cp1y}, " + f"cp2x={self.cp2x}, cp2y={self.cp2y}, " + f"x={self.x}, y={self.y})" ) def _draw(self, impl, *args, **kwargs): @@ -882,9 +880,7 @@ def __init__(self, cpx, cpy, x, y): self.y = y def __repr__(self): - return "{}(cpx={}, cpy={}, x={}, y={})".format( - self.__class__.__name__, self.cpx, self.cpy, self.x, self.y - ) + return f"{self.__class__.__name__}(cpx={self.cpx}, cpy={self.cpy}, x={self.x}, y={self.y})" def _draw(self, impl, *args, **kwargs): """Draw the drawing object using the implementation.""" @@ -934,18 +930,10 @@ def __init__( def __repr__(self): return ( - "{}(x={}, y={}, radiusx={}, radiusy={}, " - "rotation={}, startangle={}, endangle={}, anticlockwise={})".format( - self.__class__.__name__, - self.x, - self.y, - self.radiusx, - self.radiusy, - self.rotation, - self.startangle, - self.endangle, - self.anticlockwise, - ) + f"{self.__class__.__name__}(x={self.x}, y={self.y}, " + f"radiusx={self.radiusx}, radiusy={self.radiusy}, " + f"rotation={self.rotation}, startangle={self.startangle}, endangle={self.endangle}, " + f"anticlockwise={self.anticlockwise})" ) def _draw(self, impl, *args, **kwargs): @@ -996,14 +984,10 @@ def __init__( self.anticlockwise = anticlockwise def __repr__(self): - return "{}(x={}, y={}, radius={}, startangle={}, endangle={}, anticlockwise={})".format( - self.__class__.__name__, - self.x, - self.y, - self.radius, - self.startangle, - self.endangle, - self.anticlockwise, + return ( + f"{self.__class__.__name__}(x={self.x}, y={self.y}, " + f"radius={self.radius}, startangle={self.startangle}, " + f"endangle={self.endangle}, anticlockwise={self.anticlockwise})" ) def _draw(self, impl, *args, **kwargs): @@ -1042,8 +1026,9 @@ def __init__(self, x, y, width, height): self.height = height def __repr__(self): - return "{}(x={}, y={}, width={}, height={})".format( - self.__class__.__name__, self.x, self.y, self.width, self.height + return ( + f"{self.__class__.__name__}(x={self.x}, y={self.y}, " + f"width={self.width}, height={self.height})" ) def _draw(self, impl, *args, **kwargs): @@ -1154,9 +1139,7 @@ def __init__(self, text, x, y, font): self.font = font def __repr__(self): - return "{}(text={}, x={}, y={}, font={})".format( - self.__class__.__name__, self.text, self.x, self.y, self.font - ) + return f"{self.__class__.__name__}(text={self.text!r}, x={self.x}, y={self.y}, font={self.font!r})" def _draw(self, impl, *args, **kwargs): """Draw the drawing object using the implementation.""" diff --git a/core/tests/test_deprecated_factory.py b/core/tests/test_deprecated_factory.py index 2cea09fe02..6b565dd8cd 100644 --- a/core/tests/test_deprecated_factory.py +++ b/core/tests/test_deprecated_factory.py @@ -1,6 +1,5 @@ import toga import toga_dummy -from toga.fonts import SANS_SERIF from toga_dummy.utils import TestCase @@ -49,13 +48,6 @@ def test_command_set(self): with self.assertWarns(DeprecationWarning): toga.CommandSet(factory=self.factory) - def test_font(self): - widget = toga.Font(SANS_SERIF, 14) - with self.assertWarns(DeprecationWarning): - widget.bind(factory=self.factory) - self.assertEqual(widget._impl.interface, widget) - self.assertNotEqual(widget.factory, self.factory) - def test_icon(self): widget = toga.Icon("resources/toga", system=True) with self.assertWarns(DeprecationWarning): diff --git a/core/tests/test_font.py b/core/tests/test_font.py index 22ae251d31..e14a5863b9 100644 --- a/core/tests/test_font.py +++ b/core/tests/test_font.py @@ -1,3 +1,5 @@ +import pytest + import toga from toga.fonts import ( _REGISTERED_FONT_CACHE, @@ -6,58 +8,153 @@ NORMAL, SANS_SERIF, SMALL_CAPS, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, ) -from toga_dummy.utils import TestCase - - -class FontTests(TestCase): - def setUp(self): - super().setUp() - - self.family = SANS_SERIF - self.size = 14 - self.style = ITALIC - self.variant = SMALL_CAPS - self.weight = BOLD - self.custom_family = "customFamily" - self.custom_path = "resource/custom-font.otf" - - self.font = toga.Font( - family=self.family, - size=self.size, - style=self.style, - variant=self.variant, - weight=self.weight, - ) - # Bind is a no-op - with self.assertWarns(DeprecationWarning): - impl = self.font.bind() - self.assertIsNotNone(impl) +@pytest.mark.parametrize( + "family, size, weight, style, variant, as_str", + [ + # No modifiers + ( + SANS_SERIF, + 12, + NORMAL, + NORMAL, + NORMAL, + "sans-serif 12pt", + ), + # Weight modifier + ( + SANS_SERIF, + 13, + BOLD, + NORMAL, + NORMAL, + "sans-serif 13pt bold", + ), + # Style modifier + ( + SANS_SERIF, + 14, + NORMAL, + ITALIC, + NORMAL, + "sans-serif 14pt italic", + ), + # Variant modifier + ( + SANS_SERIF, + 15, + NORMAL, + NORMAL, + SMALL_CAPS, + "sans-serif 15pt small-caps", + ), + # All modifiers + ( + SANS_SERIF, + 37, + BOLD, + ITALIC, + SMALL_CAPS, + "sans-serif 37pt bold small-caps italic", + ), + # System font, fixed size + ( + SYSTEM, + 42, + NORMAL, + NORMAL, + NORMAL, + "system 42pt", + ), + # Custom font, system size + ( + "Custom Font", + SYSTEM_DEFAULT_FONT_SIZE, + NORMAL, + NORMAL, + NORMAL, + "Custom Font system size", + ), + # System font, system size + ( + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, + NORMAL, + NORMAL, + NORMAL, + "system system size", + ), + ], +) +def test_builtin_font(family, size, weight, style, variant, as_str): + "A builtin font can be constructed" + font = toga.Font( + family=family, + size=size, + style=style, + weight=weight, + variant=variant, + ) + + assert font.family == family + assert font.size == size + assert font.style == style + assert font.weight == weight + assert font.variant == variant + assert str(font) == as_str - # Register a file-based custom font - toga.Font.register(self.custom_family, self.custom_path) - def test_family(self): - self.assertEqual(self.font.family, self.family) +@pytest.mark.parametrize( + "family, weight, style, variant, key", + [ + ("Helvetica", NORMAL, NORMAL, NORMAL, ("Helvetica", NORMAL, NORMAL, NORMAL)), + ( + "Times New Roman", + BOLD, + ITALIC, + SMALL_CAPS, + ("Times New Roman", BOLD, ITALIC, SMALL_CAPS), + ), + # Unknown style/weight/variants are normalized to "NORMAL" + ("Wonky", "unknown", ITALIC, SMALL_CAPS, ("Wonky", NORMAL, ITALIC, SMALL_CAPS)), + ("Wonky", BOLD, "unknown", SMALL_CAPS, ("Wonky", BOLD, NORMAL, SMALL_CAPS)), + ("Wonky", BOLD, ITALIC, "unknown", ("Wonky", BOLD, ITALIC, NORMAL)), + ], +) +def test_registered_font_key(family, style, weight, variant, key): + "Registered font keys can be generarted" + assert ( + toga.Font.registered_font_key( + family, style=style, weight=weight, variant=variant + ) + == key + ) - def test_size(self): - self.assertEqual(self.font.size, self.size) - def test_style(self): - self.assertEqual(self.font.style, self.style) +def test_register_font(): + "A custom font can be registered" + toga.Font.register("Custom Font", "/path/to/custom/font.otf") - def test_variant(self): - self.assertEqual(self.font.variant, self.variant) + assert ( + _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] + == "/path/to/custom/font.otf" + ) - def test_weight(self): - self.assertEqual(self.font.weight, self.weight) - def test_register(self): - font_key = toga.Font.registered_font_key( - self.custom_family, NORMAL, NORMAL, NORMAL - ) +@pytest.mark.parametrize( + "dpi, tight, expected", + [ + (96, False, 21), + (144, False, 31), + (96, True, 17), + (144, True, 26), + ], +) +def test_measure(dpi, tight, expected): + font = toga.Font(SYSTEM, 14, BOLD) - self.assertIn(font_key, _REGISTERED_FONT_CACHE) - self.assertEqual(self.custom_path, _REGISTERED_FONT_CACHE[font_key]) + assert font.measure("Hello world", dpi=dpi, tight=tight) == expected diff --git a/core/tests/widgets/test_canvas.py b/core/tests/widgets/test_canvas.py index e4d5722559..4f23b504e2 100644 --- a/core/tests/widgets/test_canvas.py +++ b/core/tests/widgets/test_canvas.py @@ -586,7 +586,7 @@ def test_write_text_default(self): ) self.assertEqual( repr(write_text), - "WriteText(text=test text, x=0, y=0, font=)", + "WriteText(text='test text', x=0, y=0, font=)", ) def test_write_text_modify(self): @@ -613,7 +613,7 @@ def test_write_text_repr(self): write_text = self.testing_canvas.write_text("hello", x=10, y=-4.2, font=font) self.assertEqual( repr(write_text), - "WriteText(text=hello, x=10, y=-4.2, font=)", + "WriteText(text='hello', x=10, y=-4.2, font=)", ) def test_on_resize(self): diff --git a/dummy/src/toga_dummy/fonts.py b/dummy/src/toga_dummy/fonts.py index f90f3bbd57..bfa9fefa0b 100644 --- a/dummy/src/toga_dummy/fonts.py +++ b/dummy/src/toga_dummy/fonts.py @@ -5,3 +5,10 @@ class Font(LoggedObject): def __init__(self, interface): super().__init__() self.interface = interface + + def measure(self, text, dpi, tight): + # This isn't a real font sizing calculation; + # it assumes all characters have an equal width. + if tight: + return int(len(text) * dpi / 60) + return int(len(text) * dpi / 50) From 2732de141cc1d6ed2e5fa7a724faa1351c7a8736 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 6 Apr 2023 12:33:16 +0800 Subject: [PATCH 05/61] Add an extra test for registering font variants. --- core/tests/test_font.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/tests/test_font.py b/core/tests/test_font.py index e14a5863b9..f8e6394971 100644 --- a/core/tests/test_font.py +++ b/core/tests/test_font.py @@ -145,6 +145,16 @@ def test_register_font(): ) +def test_register_font_variant(): + "A custom font can be registered as a variant" + toga.Font.register("Custom Font", "/path/to/custom/font-bold.otf", weight=BOLD) + + assert ( + _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] + == "/path/to/custom/font-bold.otf" + ) + + @pytest.mark.parametrize( "dpi, tight, expected", [ From dca074dfd6a244fa4a3a43beae44d34f757ec2e1 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 6 Apr 2023 12:54:09 +0800 Subject: [PATCH 06/61] Removed measure as a public API on font. --- core/src/toga/fonts.py | 3 --- core/tests/test_font.py | 15 --------------- dummy/src/toga_dummy/fonts.py | 7 ------- winforms/src/toga_winforms/fonts.py | 9 +-------- 4 files changed, 1 insertion(+), 33 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 285deddb22..87cd594ec5 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -39,9 +39,6 @@ def __str__(self): style = f" {self.style}" if self.style != NORMAL else "" return f"{self.family} {size}{weight}{variant}{style}" - def measure(self, text, dpi, tight=False): - return self._impl.measure(text, dpi=dpi, tight=tight) - @staticmethod def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): """Registers a file-based font with it's family name, style, variant diff --git a/core/tests/test_font.py b/core/tests/test_font.py index f8e6394971..b654b6ef2f 100644 --- a/core/tests/test_font.py +++ b/core/tests/test_font.py @@ -153,18 +153,3 @@ def test_register_font_variant(): _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] == "/path/to/custom/font-bold.otf" ) - - -@pytest.mark.parametrize( - "dpi, tight, expected", - [ - (96, False, 21), - (144, False, 31), - (96, True, 17), - (144, True, 26), - ], -) -def test_measure(dpi, tight, expected): - font = toga.Font(SYSTEM, 14, BOLD) - - assert font.measure("Hello world", dpi=dpi, tight=tight) == expected diff --git a/dummy/src/toga_dummy/fonts.py b/dummy/src/toga_dummy/fonts.py index bfa9fefa0b..f90f3bbd57 100644 --- a/dummy/src/toga_dummy/fonts.py +++ b/dummy/src/toga_dummy/fonts.py @@ -5,10 +5,3 @@ class Font(LoggedObject): def __init__(self, interface): super().__init__() self.interface = interface - - def measure(self, text, dpi, tight): - # This isn't a real font sizing calculation; - # it assumes all characters have an equal width. - if tight: - return int(len(text) * dpi / 60) - return int(len(text) * dpi / 50) diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index e7691e1586..b438a71728 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -1,5 +1,5 @@ from toga.fonts import _REGISTERED_FONT_CACHE, SYSTEM, SYSTEM_DEFAULT_FONTS -from toga_winforms.libs import WinFont, WinForms, win_font_family +from toga_winforms.libs import WinFont, win_font_family from toga_winforms.libs.fonts import win_font_size, win_font_style from toga_winforms.libs.winforms import ( ExternalException, @@ -64,10 +64,3 @@ def __init__(self, interface): _FONT_CACHE[self.interface] = font self.native = font - - def measure(self, text, dpi, tight=False): - size = WinForms.TextRenderer.MeasureText(text, self.native) - return ( - points_to_pixels(size.Width, dpi), - points_to_pixels(size.Height, dpi), - ) From 11777d30a9569fd8bc20c80d61eae9d255935496 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 6 Apr 2023 13:10:19 +0800 Subject: [PATCH 07/61] Removed a now-redundant test. --- gtk/tests/test_font.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/gtk/tests/test_font.py b/gtk/tests/test_font.py index 7c53979d32..b5be345a7e 100644 --- a/gtk/tests/test_font.py +++ b/gtk/tests/test_font.py @@ -36,12 +36,6 @@ def setUp(self): self.font_family = SYSTEM self.font_size = 12 - def test_font_bind(self): - font = toga.Font(self.font_family, self.font_size) - font_impl = font.bind() - - self.assertEqual(font._impl, font_impl) - def test_font_default_has_all_attr_set(self): font = toga.Font(self.font_family, self.font_size) native = font._impl.native From 1395706fa0f6174bcb1084189c4a7ba8428e627c Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 15:28:44 -0600 Subject: [PATCH 08/61] Add fonts to testbed --- .../src/testbed/resources/fonts/Corrupted.ttf | 0 .../src/testbed/resources/fonts/ENDOR___.ttf | Bin 0 -> 57240 bytes .../fonts/Font Awesome 5 Free-Solid-900.otf | Bin 0 -> 591768 bytes .../testbed/resources/fonts/Roboto-Bold.ttf | Bin 0 -> 167336 bytes .../resources/fonts/Roboto-BoldItalic.ttf | Bin 0 -> 171508 bytes .../testbed/resources/fonts/Roboto-Italic.ttf | Bin 0 -> 170504 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 testbed/src/testbed/resources/fonts/Corrupted.ttf create mode 100644 testbed/src/testbed/resources/fonts/ENDOR___.ttf create mode 100644 testbed/src/testbed/resources/fonts/Font Awesome 5 Free-Solid-900.otf create mode 100644 testbed/src/testbed/resources/fonts/Roboto-Bold.ttf create mode 100644 testbed/src/testbed/resources/fonts/Roboto-BoldItalic.ttf create mode 100644 testbed/src/testbed/resources/fonts/Roboto-Italic.ttf diff --git a/testbed/src/testbed/resources/fonts/Corrupted.ttf b/testbed/src/testbed/resources/fonts/Corrupted.ttf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testbed/src/testbed/resources/fonts/ENDOR___.ttf b/testbed/src/testbed/resources/fonts/ENDOR___.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3a7274f8451c069d5dcee54da2a76d1744936c16 GIT binary patch literal 57240 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 z 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
Ix0- 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

05{w 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

RpSHamfi<2T$-{1bA*%dPs^x2934|{JP zr)5>`|F8R=M}~o6V1{RBL=Z)cC_qW_cx56b7-(D8hNVn5S?=e~bh4?_s`^D*L?0~)}tW6E7$UMsenZN13i!xf%_0DU54zCmZ zSlL~<=AA`-EPQUE`xu9)Sx`~eU72BJr7LB9SC9W#4=q)EO~@nC>)$WyaQvqn3pyffDzUMnFduO&%%_ckNmjp}hfn==#O)7(G9!KS4xg+p z{NY-e@6IT8@kbcl=|;7fa+e_#oqLKyJEEAHue^&?$D%qB)^p>BhU08zerM8S@spiB zBx0<@573h!BbRUy6?j|brCi$b3p^wZ>`chPgc6g^qhzL-Y7|` z(?A_7!!^th3@hXmKXc>BhR`~f80zJ#OK7ZrMS#)Ujc?G<2vaavJFu-6rD92`dM_EZ zVu_o_4YU-IWrl`Y^-Vt-&y@XKKXT6la70(?HmetL)uCH zF%_Tie&KZ@vWt8(S;93Vblk3q^k(RP?{?+-)N;t|!j5FWnYpGmbz#LHiaQ+MCj91c zA!BvQ^Ib4wGut{tdZw1@Vm0?Qx|{BfnTY+TJ8H!R&qvp#*w}}J$d>zi$ z;J`bcAs;6G>Q}h@i@GS%HC~5GAJfmy0)BV7A5&WjWsQ-dd1=TZ0?mwT!7BSXN2j9{ zR;u~kwsnLR4>mZN9WJGwA}Acy(`qa^4m}Yo(&TXwx>&eGSjmewz);PY>DWSRnGTph74L1Ee;Vy*5XoFc8{>r7mss>EXH7*U_7g(s7V zh|IdrCBOViFjlBZ^9usq;Mui36+z8-!ZN!I6}TtlPGsLLZhwjl2*R&piD0NeIY`OF8hztIM*J?Z2{7X2zBieq>JQI=cUYxzyME0V~K}Y^~>fkWH@1zb*u}aCK_IaF2k#X`E zFdvp}9o`RLE9~3p8D9r|rSsKK42i$`%=IJTl((8xb&x=Ou&$+qXg`nNx*K2V<`B^g zAU4?;Ks!~zpQ|ohg@2WluX|)T<053ATuYiHGL5JGP4&Gl~& zTf8KYjbOP#EmUZr$9}{Y?Uqdpv_xLg1aS6hg$k8U(^`W4Kv!XPLuuf_YZM1w4h`a~ z)*T1dCyjd1;R3i1Wo~^a?)d1D-5-!+FW+$b-4FiId*{h_b&5NKk8KrW(D9fmS$Ark zbJQEFXpf)^#fx93(^4L%g^0~nM@W+@5TEb%t4LX8>dzqSU2cteCK!%txqo!Yujpk} zV#%@yv}lwiRiFIf=!7!OTozFEW+J0KfsHfaR;P5duQTvDq!6bfsXj?7w^7;V1a6? z{k8*X zGDdB)1AHQ?O$V4<+xP(YN2+Q|ryJD>NVh=aHrL{#bmwWj?%V>GmKaR>`b7Z!@mnD~ zrqMvRMausGS?*ij%yt!ph=V58G(Kup@{$| z*(l${0G}9g($pe|kK2soG*CD-j3%FMf3kk0bw^j=t2;l`8WtB3ZRS19LjU5pb(qOW zxr+s=ks~RTF2W}lf{*LHG-R$X;5ja0eIZvL96NM!*qGXYws+CpSzib~j>?|t?{YKG zVNEson?~|}GdHaT>LE&`jXRL6G6T=mn^=j&U+S+$Uu zS7j0Cq@w`|)!k}uxNIq*-Nr@KBy6;mshMhBD?M>XCU`)CI+4h?8ZF%Z3-UT zCxmC1kO;*ykp7T|c#bm`&#wImq9F^M{u&jC1rox^6P`UY;u+>(F=kf_pL`U=AfCNw z#4{OIk0-51qwZ78b1Ygf11bF5Zg!Tf<#cqaG!-l(Hk++4h#=dw%i`2y?~TY-}f zQ@W-P*qus-zUbYx_)rI-kzT?x8A^{m&pt!XvnRsfxj>qD78B^P)Ulw)eqbneV`cX2 z$|2nXhBRd57vKonvkHNC` z;36Cy%JD$O^ch^sY7!>3RYTA5F}(LD`ij*!{C-D3qL#;i$}I~>G@HN-mBJ%(?YjTL zqqotz<-=!cJ=LEOA=Yh~#l-2!J|OQthm^n9rAjvXVk2ezXxNgVfX`o3=JQbhL-~>j z8ffa15}6+U^UTJW`)(x0=f*XBK<*k(qVEmBxQU03L~s_fz_@~pgx){UAr?r4Ts#Z# ziL?rG^TP46^ioB>l*)H+2lAWq0&M4=(I62uZr>= zHmXk@KbtEi+`iFKT*97GsRns{c`YdezYk4J+Zp#src#C&pOhgMtk122qt>w?MGfdB z3g-`eNj#o&FEV#PyDZ)750d$@{;bYlCw) zZkI?7X*?hoiB};~0wQ#s= zd}A)mTuB+mxjBDljdDlu2c?(!Q6`p$<1IZ5sK1lY+w-RT3F|f;n(WM>>P5fzSO-&h zztIK_mu-pAO4;@tt%4=RQ+Bg_Q^0vh^`lbl&UUokPFiTR0c!Ge;@A6hZkJdHa&M_Y zJw(a7CRG+;aXD;~#~eRmrrfl30cpkAbHaqC2zkT~pY_b3Y*Pzi>~jq_pgbCj#y&BXH8BsDYCf{-klm zN*!C`QCCva*=2O2YSBE)5FL#{&$O6{wy z7esXGVdpGMeVk8b+TzLUGh=nW`R$txVSKy8;j=#TDB@7K)pkVMz;Cll*DDjCK0I~^ zk54(_iSfjVNKTnA3oYhnB)q0KM+GM}GN_xZjxV0$!!_#Y3}#0)k}BUE)vs5_w~KIJ zn?W2yc7WIM4xCSSe7J^xpo@cJia=UFS>4_)!r9K7_|F?SDm2hvL-Qr{*8Z1njIusW zc;&bw8q=IYyWw`OQ*FuDFEDt}M;z(?>e~mw9;ieW?eT}qIqt_Jeij`zewyYO^}CVa zX4S8X-uTkqOi#^)Q^~Go8zH*(#s)3N@%NEy-Nb5c3oxOyBX&v}-#$_JA&vO#EU$K# zt1tKubk%I~OnjeFMm0M{#VDnG+jr@IF4gz*9vzb(eg>p4KcX-{XA(PpiorX~GZZFM zJcz^p|reva?|+zAWW?|8xjUGozbJ=3=|)GkQr z$WXajhBS_qq4vC|8PqL!{RH7BNZ?b&NIa$($z*R;-h=)BW8h5j0@*yVCMG-StB#4CU9<6FvHF9pIW^QKe>mAbbaIqseZ%jMo?1_P_`U#|; zo2r>h`c*7LkzQ7`1Fkc9y?3dUg&M!CJoZas4ByXqh!bO3|vsuH?vL%SODPS&OGN(@O|HhARxZxY$xS=jH5Q(*` zgOO1m#5;V}eI3i*860onE@A07b$;2gr02iCqyyiPbe38?AHh}!p+iIQ~Fj}1w z($DFS<9gy`G~4Df^W~;~5Mnd}fYJb2$!GDke=@|*&lazDrs*Ks(1(rfvg;7Q*e60- z>lz@(>j-GURj7X*&W1jMZ@53lIQ!v%P5xzS^n}$)9w(~k0z-DcAZIK8YKU9Bhzwmt zgzqvk5v5kNhx}bqt=$g-bsnF~;C;Eo*3&uC@uT(eu_J%>NZ*tFA3VRTaBqO?V^Nif@mj!utaKM?w zy+qF)W%PM+7X{FL2Wk9#Q1L|XGsKvFICg>0tRYm8F6A*Py<4ggvvAskok+wfC;zw| zFQEc?n7)FQis3^u0%R{b-Li)a!rfs%i_-{%%iTt>zxZ?SXcAPd49G-7QTyTuV%AUR z`!UU*{PG56(n2}K^OW7j5Pk3xrQynSCTe`)CDbplVaE4t`KBuCuinLXzm=r)_0D?9$+4u>;D(*>h|x@o36W^@2?W*_UdV5tA=`))f{bi zrnIc4g_veB)8iueKn{36b6XJ0#>VOj7^_+lQGiziDJfb%5hKZ3@aqB&9H)AtAWQyY$obQT?-BVP zkndSZ;>AkEk5B~~@li0jBc}#T&5N2>-wc_Wzb-&1y$Kus5mM%6MP#upq(C+pzQKfL zmk?`3gtdQxPnV96dL>ToR6cWk0zOybXTwIRL~PIfyvyX?;c+?)!@zN+|^5Z@mJ zbPB%GOCu_V^h=wHU8A4xKX^!#yZ!!dk4Rz0!h|+Dm1*i3Hk(mp@_A#ikL1z+p@KzO9;-Uy-BLaMP$j2zk z59{Es8=kxf01k=k0jP$}(GYn_Q zv%+MLh2-?12;Wx%d|wuh#JA)oCmWQM6Q8Vxy8JwV5;s6y{`-QwOkq8YgqwiNy%8Yd zygz%*f)xqFfbaj3?^H=~$8w+=rr|Wt=T@Wo15#DD8Jxu*11S5Q5Q^vE(=EBueA2jP z4YOPhYUJYN0f@gdk190#Eu~!+63Y65%RC*Cta(A?@^6+~oT=43sI2n;MFzHm!2H(? zp9G$tCL9@^C}ahU^f;XX`EM)1R|E!rvnNA*8(_t1RA;tdfb;TUoYW_TKRW}j`&bBh zo}WKPLOQhIBE#PWeE%_m%LigeFrCp0Z%UXN-o)AN>#zG{L{85Kp!*>Xxq~VH9l5#H zq9hGy?x0Zyci_u^FTnTp2;bwxCJy0q)O1S@Bne6x$h|Eh;R3}^Auf=m(iI;!9)aQmC_jhL@A9~dmRcOQWCcC=MriLdn2_^Mt; zAaN@51+cmFJhG5}A+UE1oiv%%A@(zE99Ly4|br zU0?|4TI%M04B2L&&UgUlsx!?$n*2D(?ZRtlO0D!uBrN(cX}rTH3A@P(CZ_zw${6*x z3Yd@ubuRzp-Kw5{zMH&X5rN*}Gd`WJa2wGPX=h!-Y*B)27`;_)Aj&)4?zVe%p9=CO z)6zMgMJOV^boMF)2kTZk3(PcC_d>~;N>?;iiT?sk?vILVyW2QDnBO_pKyv^H*W@7t z+ebc}dwq8IvX$`UVnQ}%)o*Z8-R@HNWPhBB`SK~OqQ3-RdjY8St4>(rYas+K3Gq1s z-C%r7a6(b>S0vh^A4cBs0SflBpKdU?68WGb>DNL?etRi_1HUS)72N}D$u68;BM7WU z;jCt41Wo@C!IreH^^y=Wuff;+-3TRW`dx^7pf8Z!&No`q2>~_op8;x~$7k!O@bRE1 z3f?C|m9%c;4j+~Kc3p@hN(tS!h%^JH8bA+2ktJq;?c^u;))ne5-7G8Mt_*PQ;@f>h zzTe9?GQ^Pp^3cYvGDVb=SS^Qhp8&1>N+1`8_?`vMeUGq2iF}9Ut2ZLbBAnmyX=CJD zE#I^dXSt{;zt!Mq3P~FK<16wuDL*PA{tE#)|CGSOS@(m;!V(8VoU7tcd@lwb5=_;5 z2`my{srmSNe%kZ(GrXp1?4%#IS~%=?NGR?TC)N|1SReRLMQv7;t&K>449r%@_is`8 zGSI$CKryx7uKkP3(?qa;%_{NVAy|GB@#*{Av8zy*zc`2?X)(ob@gvZ(w6Q)ZQz@RTU8mL`Q^m-_yzb?WvGdKsv24MJ8-(4 ziBtWT0O&sZm9p|YFlYY-pzi;RG;K!%fPRHjGZJLY&*1BIIv|bP0jU7DYZzqErpoT# zz8i74{2hem?+BoMPzZkxye_w%JY437hNAw6sO%il7tb}aOrGUkL}0d?_{2Q#1gMM* zlg?ovo@33DyClE^hT%XQx*z-^OrtDLNy`J(EzU3lNP)l>DA2&!)2JKr8a z&zpR@H~7r049IvOVfm5>-&69PNj{0wLVULoo48$J|Aa4D7vUoVOI~gu*iN~a70c2m zi^N9aRiNy5A--!OoR5S6^t+n`H4li4=IcoIf{O2@KjFOAjPu-HaS^);wNonzZN47g zhnB*IPwyILNDPU25d^$SRN^Io+{6%HTYzu3a*9bQo6P+DE3@po0MbE6+~t^ zlke=P%Ko`A0Th%zNqqi00lr)St!DvQcBW{F-O}wu*>i*n(h}c}3h8a!hKTgS%KR4b z%1Qg%7XQ2MN!)cc-T8wXh`jWCNv5?0Z}JH;Yn>M?W?O4+5|p@q62*%fLf*M@*;z*L zGMwxdIST{mVPS@6t@r!sq4vEIwBCo)o*~1c%^?}Zn~8fZ4cR~AH{n@wjv`0Mxrt1z zDJXxPy0^(7x1?VH6VPTQCCWorJ8HL1d1@FIXLaD|Ai9H&;2m^~#4NlB&n~88IdSi# z!*6c-ALwYnpox_N9WeYJIygG^D)+C7vq=Rq#c75LR;EF$6Y9C13Pwxv?e3R23-JAN{c0be=g~o#} zc?9P&NwK~XC-=z!=ah(u&+?f)MFPwG9vm)<0X5qvpelTc?*o*(HKL997GZCrkXHT} zVLR3e`ptH{Zeu_#ii~Jf-@UK|=Oya0d&{f#>Z>B6SB4N+Llw0%C5~bJ;LZHwjKyQX z$&M~0xr;=(jq;6FrAQACXv%cop$*xBx6k=R^%IVvR4@AHPs=_1xqyBlg!l`Z+#A;l z(r-d38IQO7bxNO{ZeU#mC3z~AuG@!U*_+~VDvY(sh&iuKWWQEIT0c5M@``sEVb9+~ zVB2cI{eH^!`A}!V?wXgthtJa;5c8s=aQ*p~aS;-FB_LJ5enzPDWXM+H56Jj zkX}5ycCxpGAlnBA$YvitawjKA%)P!>=nf3PyIK`{+%%

8Xfq2ulLV9^Z$qC6Rj( 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�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 z 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 literal 0 HcmV?d00001 From da65018e3023a28eb4f20e5aeb79b09253a9e1b3 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 15:30:50 -0600 Subject: [PATCH 09/61] Quote font family when creating CSS stylesheet --- gtk/src/toga_gtk/libs/styles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk/src/toga_gtk/libs/styles.py b/gtk/src/toga_gtk/libs/styles.py index 6f52d6ae4e..686bb3d1b3 100644 --- a/gtk/src/toga_gtk/libs/styles.py +++ b/gtk/src/toga_gtk/libs/styles.py @@ -43,7 +43,7 @@ def get_font_css(value): "font-style": f"{value.style}", "font-variant": f"{value.variant}", "font-weight": f"{value.weight}", - "font-family": f"{value.family}", + "font-family": f"{value.family!r}", } if value.size != SYSTEM_DEFAULT_FONT_SIZE: From bc2823de1721129b37a00141412038e824e473a2 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 15:58:03 -0600 Subject: [PATCH 10/61] Use dict to convert Pango enums to Toga --- gtk/tests_backend/widgets/properties.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gtk/tests_backend/widgets/properties.py b/gtk/tests_backend/widgets/properties.py index a66ae0d742..59b1da564f 100644 --- a/gtk/tests_backend/widgets/properties.py +++ b/gtk/tests_backend/widgets/properties.py @@ -2,7 +2,7 @@ from travertino.fonts import Font from toga.colors import TRANSPARENT, rgba -from toga.fonts import BOLD, ITALIC, NORMAL +from toga.fonts import BOLD, ITALIC, NORMAL, OBLIQUE, SMALL_CAPS from toga.style.pack import CENTER, JUSTIFY, LEFT, RIGHT from toga_gtk.libs import Gtk, Pango @@ -25,12 +25,20 @@ def toga_color(color): return None +_FONT_STYLE_REVERSE_MAP = {Pango.Style.ITALIC: ITALIC, Pango.Style.OBLIQUE: OBLIQUE} + +_FONT_VARIANT_REVERSE_MAP = {Pango.Variant.SMALL_CAPS: SMALL_CAPS} + +_FONT_WEIGHT_REVERSE_MAP = {Pango.Weight.BOLD: BOLD} + + def toga_font(font): return Font( family=font.get_family(), size=int(font.get_size() / Pango.SCALE), - style=ITALIC if font.get_style() == Pango.Style.ITALIC else NORMAL, - weight=BOLD if font.get_weight() == Pango.Weight.BOLD else NORMAL, + style=_FONT_STYLE_REVERSE_MAP.get(font.get_style(), NORMAL), + weight=_FONT_WEIGHT_REVERSE_MAP.get(font.get_weight(), NORMAL), + variant=_FONT_VARIANT_REVERSE_MAP.get(font.get_variant(), NORMAL), ) From c4778d7da11865f18b9d3cf2122232f8e411d126 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 17:00:25 -0600 Subject: [PATCH 11/61] Add widget_probe fixture to testbed conftest --- testbed/tests/conftest.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/testbed/tests/conftest.py b/testbed/tests/conftest.py index 00179b1e42..1e79d426b6 100644 --- a/testbed/tests/conftest.py +++ b/testbed/tests/conftest.py @@ -1,6 +1,7 @@ import asyncio import inspect from dataclasses import dataclass +from importlib import import_module from pytest import fixture, register_assert_rewrite, skip @@ -35,6 +36,28 @@ def event_loop(app): return ProxyEventLoop(app._impl.loop) +# Identical to widgets/probe, but usable by all tests. +# Should replace generic "probe" fixture when window_probe and others are added +@fixture +async def widget_probe(main_window, widget): + box = toga.Box(children=[widget]) + main_window.content = box + + probe = get_widget_probe(widget) + await probe.redraw() + probe.assert_container(box) + + yield probe + + main_window.content = toga.Box() + + +def get_widget_probe(widget): + name = type(widget).__name__ + module = import_module(f"tests_backend.widgets.{name.lower()}") + return getattr(module, f"{name}Probe")(widget) + + # Proxy which forwards all tasks to another event loop in a thread-safe manner. It # implements only the methods used by pytest-asyncio. @dataclass From 0d31ea04e02030e72ebb2e7c1e8ba0a06b793d40 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 17:00:53 -0600 Subject: [PATCH 12/61] Add font tests to testbed --- testbed/tests/test_font.py | 107 +++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 testbed/tests/test_font.py diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py new file mode 100644 index 0000000000..ff51b9b199 --- /dev/null +++ b/testbed/tests/test_font.py @@ -0,0 +1,107 @@ +from typing import Any +from unittest.mock import patch + +import pytest + +import toga +from toga.fonts import BOLD, ITALIC, OBLIQUE, SANS_SERIF, SMALL_CAPS, SYSTEM, Font + +app_path = toga.App.app.paths.app + + +@pytest.fixture +async def widget() -> toga.Label: + return toga.Label("hello, this is a label") + + +@patch("toga_gtk.fonts.Pango", None) +def test_no_pango(): + with pytest.raises(RuntimeError): + Font(family=SANS_SERIF, size=14) + + +async def test_use_system_font_fallback( + widget: toga.Label, widget_probe: Any, capsys: pytest.CaptureFixture[str] +): + widget_probe.assert_font_family(SYSTEM) + widget.style.font_family = "unknown" + await widget_probe.redraw() + + assert "using system font as a fallback" in capsys.readouterr().out + + +@pytest.mark.parametrize("font_style", [ITALIC, OBLIQUE]) +@pytest.mark.parametrize("font_variant", [SMALL_CAPS]) +async def test_font_options( + widget: toga.Label, widget_probe: Any, font_style: str, font_variant: str +): + widget.style.font_style = font_style + widget.style.font_variant = font_variant + await widget_probe.redraw() + + assert widget_probe.font.style == font_style + assert widget_probe.font.variant == font_variant + + +@pytest.mark.parametrize( + "font_family,font_path,font_kwargs", + [ + # OpenType font, no options + ( + "Font Awesome 5 Free", + "resources/fonts/Font Awesome 5 Free-Solid-900.otf", + {}, + ), + # TrueType font, no options + ("ENDOR", "resources/fonts/ENDOR___.ttf", {}), + # Font with weight property + ("Roboto", "resources/fonts/Roboto-Bold.ttf", {"weight": BOLD}), + # Font with style property + ("Roboto", "resources/fonts/Roboto-Italic.ttf", {"style": ITALIC}), + # Font with multiple properties + ( + "Roboto", + "resources/fonts/Roboto-BoldItalic.ttf", + {"weight": BOLD, "style": ITALIC}, + ), + ], +) +async def test_font_file_loaded( + widget: toga.Label, widget_probe: Any, font_family: str, font_path: str, font_kwargs +): + Font.register( + family=font_family, + path=f"{app_path.parent}/src/testbed/{font_path}", + **font_kwargs, + ) + + # Update widget font family and other options if needed + widget.style.font_family = font_family + for prop, value in font_kwargs.items(): + widget.style.update( + **{f"font_{kwarg}": value for kwarg, value in font_kwargs.items()} + ) + await widget_probe.redraw() + + # Check that font properties are updated + widget_probe.assert_font_family(font_family) + for prop, value in font_kwargs.items(): + assert getattr(widget_probe.font, prop) == value + + +@pytest.mark.parametrize( + "font_family,font_path", + [ + # File does not exist + ("nonexistent", "resources/fonts/nonexistent.ttf"), + # File exists but is corrupted/wrong format + ("Corrupted", "resources/fonts/Corrupted.ttf"), + ], +) +async def test_font_file_not_loaded( + widget: toga.Label, widget_probe: Any, font_family: str, font_path: str +): + Font.register(family=font_family, path=f"{app_path.parent}/src/testbed/{font_path}") + widget.style.font_family = font_family + await widget_probe.redraw() + widget_probe.assert_font_family == SYSTEM From d20ea5bef6d0b998f77b713eb8bf2eadd971e3a6 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 17:20:39 -0600 Subject: [PATCH 13/61] Move font measure to canvas --- gtk/src/toga_gtk/fonts.py | 14 -------------- gtk/src/toga_gtk/widgets/canvas.py | 13 ++++++++++++- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 295bbace73..cb95113ea7 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -85,17 +85,3 @@ def __init__(self, interface): _FONT_CACHE[self.interface] = font self.native = font - - def measure(self, text, widget, tight=False): - layout = widget.create_pango_layout(text) - - layout.set_font_description(self.native) - ink, logical = layout.get_extents() - if tight: - width = (ink.width / Pango.SCALE) - (ink.width * 0.2) / Pango.SCALE - height = ink.height / Pango.SCALE - else: - width = (logical.width / Pango.SCALE) - (logical.width * 0.2) / Pango.SCALE - height = logical.height / Pango.SCALE - - return width, height diff --git a/gtk/src/toga_gtk/widgets/canvas.py b/gtk/src/toga_gtk/widgets/canvas.py index 5cb2e8a95c..b2f51f535d 100644 --- a/gtk/src/toga_gtk/widgets/canvas.py +++ b/gtk/src/toga_gtk/widgets/canvas.py @@ -228,7 +228,18 @@ def write_text(self, text, x, y, font, draw_context, *args, **kwargs): y += height def measure_text(self, text, font, tight=False): - return font._impl.measure(text, widget=self.native, tight=tight) + layout = self.native.create_pango_layout(text) + + layout.set_font_description(self.native) + ink, logical = layout.get_extents() + if tight: + width = (ink.width / Pango.SCALE) - (ink.width * 0.2) / Pango.SCALE + height = ink.height / Pango.SCALE + else: + width = (logical.width / Pango.SCALE) - (logical.width * 0.2) / Pango.SCALE + height = logical.height / Pango.SCALE + + return width, height def get_image_data(self): self.interface.factory.not_implemented("Canvas.get_image_data()") From 32b18e934e0c5a1ba78dfc6c365f2046ff26632f Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 17:45:41 -0600 Subject: [PATCH 14/61] Add changenote --- changes/1903.misc.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/1903.misc.rst diff --git a/changes/1903.misc.rst b/changes/1903.misc.rst new file mode 100644 index 0000000000..dc8c48009c --- /dev/null +++ b/changes/1903.misc.rst @@ -0,0 +1 @@ +GTK fonts coverage is now at 100% From 2e278177c863b8d07f6b1d8b6a4f9ffdcbf04287 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 18:00:45 -0600 Subject: [PATCH 15/61] Fix app path in tests --- testbed/tests/test_font.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index ff51b9b199..1323df02a7 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -71,7 +71,7 @@ async def test_font_file_loaded( ): Font.register( family=font_family, - path=f"{app_path.parent}/src/testbed/{font_path}", + path=f"{app_path}/{font_path}", **font_kwargs, ) From 84519486682327e0c6ada7dbd23a9a2596ab0503 Mon Sep 17 00:00:00 2001 From: Paul Hutchings Date: Tue, 25 Apr 2023 18:22:29 -0600 Subject: [PATCH 16/61] Use app fixture --- testbed/tests/test_font.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index 1323df02a7..3d221a01da 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -6,8 +6,6 @@ import toga from toga.fonts import BOLD, ITALIC, OBLIQUE, SANS_SERIF, SMALL_CAPS, SYSTEM, Font -app_path = toga.App.app.paths.app - @pytest.fixture async def widget() -> toga.Label: @@ -67,11 +65,17 @@ async def test_font_options( ], ) async def test_font_file_loaded( - widget: toga.Label, widget_probe: Any, font_family: str, font_path: str, font_kwargs + widget: toga.Label, + widget_probe: Any, + font_family: str, + font_path: str, + font_kwargs, + capsys: pytest.CaptureFixture[str], + app: toga.App, ): Font.register( family=font_family, - path=f"{app_path}/{font_path}", + path=f"{app.paths.app}/{font_path}", **font_kwargs, ) @@ -88,6 +92,9 @@ async def test_font_file_loaded( for prop, value in font_kwargs.items(): assert getattr(widget_probe.font, prop) == value + # Needed to prevent tests from passing when they shouldn't due to GTK not returning system font as fallback + assert "could not be found" not in capsys.readouterr().out + @pytest.mark.parametrize( "font_family,font_path", @@ -99,9 +106,13 @@ async def test_font_file_loaded( ], ) async def test_font_file_not_loaded( - widget: toga.Label, widget_probe: Any, font_family: str, font_path: str + widget: toga.Label, + widget_probe: Any, + font_family: str, + font_path: str, + app: toga.App, ): - Font.register(family=font_family, path=f"{app_path.parent}/src/testbed/{font_path}") + Font.register(family=font_family, path=f"{app.paths.app}/{font_path}") widget.style.font_family = font_family await widget_probe.redraw() widget_probe.assert_font_family == SYSTEM From 3cd10a8e937ac3b8a3aa0f4ddd0eda3cd16c3db4 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 11:11:56 +0800 Subject: [PATCH 17/61] Corrected a spelling error. --- core/src/toga/fonts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 1656a3a9f3..3a5a5f5a88 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -46,7 +46,7 @@ def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): passed, ``NORMAL`` will be used. When a font file includes multiple font weight/style/etc, each variant - must be registerered separately:: + must be registered separately:: # Register a simple regular font Font.register("Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf") From 67e17c1b7925f91d3f683b163295a808080a9b9d Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 12:14:03 +0800 Subject: [PATCH 18/61] Remove redundant platform font test. --- gtk/tests/test_font.py | 88 ------------------------------------------ 1 file changed, 88 deletions(-) delete mode 100644 gtk/tests/test_font.py diff --git a/gtk/tests/test_font.py b/gtk/tests/test_font.py deleted file mode 100644 index b5be345a7e..0000000000 --- a/gtk/tests/test_font.py +++ /dev/null @@ -1,88 +0,0 @@ -import unittest - -import toga -from toga.constants import BOLD, CURSIVE, ITALIC, OBLIQUE, SMALL_CAPS, SYSTEM -from toga_gtk import fonts as gtk_fonts - -try: - import gi - - gi.require_version("Gtk", "3.0") - from gi.repository import Gtk -except ImportError: - import sys - - # If we're on Linux, Gtk *should* be available. If it isn't, make - # Gtk an object... but in such a way that every test will fail, - # because the object isn't actually the Gtk interface. - if sys.platform == "linux": - Gtk = object() - else: - Gtk = None - -try: - gi.require_version("Pango", "1.0") - from gi.repository import Pango -except ImportError: - Pango = None - - -@unittest.skipIf(Pango is None, "Pango import error") -@unittest.skipIf( - Gtk is None, "Can't run GTK implementation tests on a non-Linux platform" -) -class TestFontImplementation(unittest.TestCase): - def setUp(self): - self.font_family = SYSTEM - self.font_size = 12 - - def test_font_default_has_all_attr_set(self): - font = toga.Font(self.font_family, self.font_size) - native = font._impl.native - self.assertEqual(native.get_family(), SYSTEM) - self.assertEqual(native.get_size() / Pango.SCALE, self.font_size) - self.assertEqual(native.get_style(), Pango.Style.NORMAL) - self.assertEqual(native.get_variant(), Pango.Variant.NORMAL) - self.assertEqual(native.get_weight(), Pango.Weight.NORMAL) - - def test_font_size(self): - self.font_size = 22 - font = toga.Font(self.font_family, self.font_size) - native = font._impl.native - self.assertEqual(native.get_size() / Pango.SCALE, self.font_size) - - def test_font_style_italic(self): - font = toga.Font(self.font_family, self.font_size, style=ITALIC) - native = font._impl.native - self.assertEqual(native.get_style(), Pango.Style.ITALIC) - - def test_font_style_oblique(self): - font = toga.Font(self.font_family, self.font_size, style=OBLIQUE) - native = font._impl.native - self.assertEqual(native.get_style(), Pango.Style.OBLIQUE) - - def test_font_variant_small_caps(self): - font = toga.Font(self.font_family, self.font_size, variant=SMALL_CAPS) - native = font._impl.native - self.assertEqual(native.get_variant(), Pango.Variant.SMALL_CAPS) - - def test_font_weight_bold(self): - font = toga.Font(self.font_family, self.font_size, weight=BOLD) - native = font._impl.native - self.assertEqual(native.get_weight(), Pango.Weight.BOLD) - - def test_font_cache(self): - font = toga.Font(self.font_family, self.font_size) - self.impl = gtk_fonts.Font(font) - self.cache = gtk_fonts._FONT_CACHE - self.assertEqual(self.cache[font], self.impl.native) - - def test_font_family_defaults_to_system(self): - font = toga.Font(CURSIVE, self.font_size) - native = font._impl.native - self.assertIn(CURSIVE, native.get_family()) - self.assertIn(SYSTEM, native.get_family()) - - -if __name__ == "__main__": - unittest.main() From 30e638b4ad6739f68b45cebe62221c54782c11c3 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 12:17:20 +0800 Subject: [PATCH 19/61] Minor cleanup of GTK probe implementation. --- gtk/tests_backend/widgets/properties.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gtk/tests_backend/widgets/properties.py b/gtk/tests_backend/widgets/properties.py index 59b1da564f..172ba6adeb 100644 --- a/gtk/tests_backend/widgets/properties.py +++ b/gtk/tests_backend/widgets/properties.py @@ -25,20 +25,20 @@ def toga_color(color): return None -_FONT_STYLE_REVERSE_MAP = {Pango.Style.ITALIC: ITALIC, Pango.Style.OBLIQUE: OBLIQUE} - -_FONT_VARIANT_REVERSE_MAP = {Pango.Variant.SMALL_CAPS: SMALL_CAPS} - -_FONT_WEIGHT_REVERSE_MAP = {Pango.Weight.BOLD: BOLD} - - def toga_font(font): return Font( family=font.get_family(), size=int(font.get_size() / Pango.SCALE), - style=_FONT_STYLE_REVERSE_MAP.get(font.get_style(), NORMAL), - weight=_FONT_WEIGHT_REVERSE_MAP.get(font.get_weight(), NORMAL), - variant=_FONT_VARIANT_REVERSE_MAP.get(font.get_variant(), NORMAL), + style={ + Pango.Style.ITALIC: ITALIC, + Pango.Style.OBLIQUE: OBLIQUE, + }.get(font.get_style(), NORMAL), + weight={ + Pango.Variant.SMALL_CAPS: SMALL_CAPS, + }.get(font.get_weight(), NORMAL), + variant={ + Pango.Weight.BOLD: BOLD, + }.get(font.get_variant(), NORMAL), ) From bf78924ec47ec11c2edd0b367065ed6e2ac1c311 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 12:18:23 +0800 Subject: [PATCH 20/61] Modify the not-a-font file to make the purpose explicit. --- testbed/src/testbed/resources/fonts/Corrupted.ttf | 1 + 1 file changed, 1 insertion(+) diff --git a/testbed/src/testbed/resources/fonts/Corrupted.ttf b/testbed/src/testbed/resources/fonts/Corrupted.ttf index e69de29bb2..9623145adf 100644 --- a/testbed/src/testbed/resources/fonts/Corrupted.ttf +++ b/testbed/src/testbed/resources/fonts/Corrupted.ttf @@ -0,0 +1 @@ +This is not a font file. From d1ea0e7c55a523ea8d40e457decd9d7a8d5c555b Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 12:20:15 +0800 Subject: [PATCH 21/61] Minor code format cleanup. --- testbed/tests/test_font.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index 3d221a01da..eebc72579d 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -19,7 +19,9 @@ def test_no_pango(): async def test_use_system_font_fallback( - widget: toga.Label, widget_probe: Any, capsys: pytest.CaptureFixture[str] + widget: toga.Label, + widget_probe: Any, + capsys: pytest.CaptureFixture[str], ): widget_probe.assert_font_family(SYSTEM) widget.style.font_family = "unknown" @@ -31,7 +33,10 @@ async def test_use_system_font_fallback( @pytest.mark.parametrize("font_style", [ITALIC, OBLIQUE]) @pytest.mark.parametrize("font_variant", [SMALL_CAPS]) async def test_font_options( - widget: toga.Label, widget_probe: Any, font_style: str, font_variant: str + widget: toga.Label, + widget_probe: Any, + font_style: str, + font_variant: str, ): widget.style.font_style = font_style widget.style.font_variant = font_variant From 93a5874847d402661b19ff47a375d09a2e58fe23 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 13:07:49 +0800 Subject: [PATCH 22/61] Small tweaks to tests. --- gtk/src/toga_gtk/fonts.py | 5 +- gtk/src/toga_gtk/libs/gtk.py | 21 +++----- testbed/tests/conftest.py | 2 +- testbed/tests/test_font.py | 93 +++++++++++++++++++----------------- 4 files changed, 59 insertions(+), 62 deletions(-) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index cb95113ea7..0205c014b5 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -22,9 +22,10 @@ class Font: def __init__(self, interface): self.interface = interface - if Pango is None: + # Can't meaningfully test for pango not being installed + if Pango is None: # pragma: no cover raise RuntimeError( - "'from gi.repository import Pango' failed; you may need to install gir1.2-pango-1.0." + "Unable to import Pango. Have you installed the Pango and gobject-introspection system libraries?" ) try: diff --git a/gtk/src/toga_gtk/libs/gtk.py b/gtk/src/toga_gtk/libs/gtk.py index fa5034f159..259088a48d 100644 --- a/gtk/src/toga_gtk/libs/gtk.py +++ b/gtk/src/toga_gtk/libs/gtk.py @@ -5,27 +5,20 @@ from gi.repository import Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk # noqa: E402, F401 -# The following import will fail if WebKit or its API wrappers aren't -# installed; handle failure gracefully -# (see https://github.com/beeware/toga/issues/26) -# Accept any API version greater than 3.0 -WebKit2 = None -for version in ["4.0", "3.0"]: - try: - gi.require_version("WebKit2", version) - from gi.repository import WebKit2 # noqa: F401 +try: + gi.require_version("WebKit2", "4.0") + from gi.repository import WebKit2 # noqa: F401 - break - except (ImportError, ValueError): - pass +except ImportError: # pragma: no cover + WebKit2 = None try: gi.require_version("Pango", "1.0") from gi.repository import Pango -except ImportError: +except ImportError: # pragma: no cover Pango = None try: import cairo -except ImportError: +except ImportError: # pragma: no cover cairo = None diff --git a/testbed/tests/conftest.py b/testbed/tests/conftest.py index 1e79d426b6..ab6308a548 100644 --- a/testbed/tests/conftest.py +++ b/testbed/tests/conftest.py @@ -44,7 +44,7 @@ async def widget_probe(main_window, widget): main_window.content = box probe = get_widget_probe(widget) - await probe.redraw() + await probe.redraw(f"\nConstructing {widget.__class__.__name__} probe") probe.assert_container(box) yield probe diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index eebc72579d..bf777b6d5d 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -1,49 +1,55 @@ from typing import Any -from unittest.mock import patch import pytest import toga -from toga.fonts import BOLD, ITALIC, OBLIQUE, SANS_SERIF, SMALL_CAPS, SYSTEM, Font +from toga.fonts import ( + BOLD, + ITALIC, + NORMAL, + OBLIQUE, + SMALL_CAPS, + SYSTEM, + Font, +) + +from .conftest import skip_on_platforms @pytest.fixture async def widget() -> toga.Label: + skip_on_platforms("android", "iOS", "macOS", "windows") return toga.Label("hello, this is a label") -@patch("toga_gtk.fonts.Pango", None) -def test_no_pango(): - with pytest.raises(RuntimeError): - Font(family=SANS_SERIF, size=14) - - async def test_use_system_font_fallback( widget: toga.Label, widget_probe: Any, capsys: pytest.CaptureFixture[str], ): + """If an unknown font is requested, the system font is used as a fallback.""" widget_probe.assert_font_family(SYSTEM) widget.style.font_family = "unknown" - await widget_probe.redraw() + await widget_probe.redraw("Falling back to system font") assert "using system font as a fallback" in capsys.readouterr().out -@pytest.mark.parametrize("font_style", [ITALIC, OBLIQUE]) -@pytest.mark.parametrize("font_variant", [SMALL_CAPS]) -async def test_font_options( - widget: toga.Label, - widget_probe: Any, - font_style: str, - font_variant: str, -): - widget.style.font_style = font_style - widget.style.font_variant = font_variant - await widget_probe.redraw() +async def test_font_options(widget: toga.Label, widget_probe: Any): + """Every combination of weight, style and variant can be used on a font.""" + for font_weight in [NORMAL, BOLD]: + for font_style in [NORMAL, ITALIC, OBLIQUE]: + for font_variant in [NORMAL, SMALL_CAPS]: + widget.style.font_style = font_style + widget.style.font_variant = font_variant + widget.style.font_weight = font_weight + await widget_probe.redraw( + f"Using a {font_weight} {font_style} {font_variant} font" + ) - assert widget_probe.font.style == font_style - assert widget_probe.font.variant == font_variant + assert widget_probe.font.weight == font_weight + assert widget_probe.font.style == font_style + assert widget_probe.font.variant == font_variant @pytest.mark.parametrize( @@ -78,9 +84,10 @@ async def test_font_file_loaded( capsys: pytest.CaptureFixture[str], app: toga.App, ): + """Custom fonts can be loaded and used.""" Font.register( family=font_family, - path=f"{app.paths.app}/{font_path}", + path=app.paths.app / font_path, **font_kwargs, ) @@ -90,34 +97,30 @@ async def test_font_file_loaded( widget.style.update( **{f"font_{kwarg}": value for kwarg, value in font_kwargs.items()} ) - await widget_probe.redraw() + await widget_probe.redraw(f"Using {font_family} {' '.join(font_kwargs.values())}") # Check that font properties are updated widget_probe.assert_font_family(font_family) for prop, value in font_kwargs.items(): assert getattr(widget_probe.font, prop) == value - # Needed to prevent tests from passing when they shouldn't due to GTK not returning system font as fallback + # Ensure the font was actually loaded. assert "could not be found" not in capsys.readouterr().out -@pytest.mark.parametrize( - "font_family,font_path", - [ - # File does not exist - ("nonexistent", "resources/fonts/nonexistent.ttf"), - # File exists but is corrupted/wrong format - ("Corrupted", "resources/fonts/Corrupted.ttf"), - ], -) -async def test_font_file_not_loaded( - widget: toga.Label, - widget_probe: Any, - font_family: str, - font_path: str, - app: toga.App, -): - Font.register(family=font_family, path=f"{app.paths.app}/{font_path}") - widget.style.font_family = font_family - await widget_probe.redraw() - widget_probe.assert_font_family == SYSTEM +async def test_non_existent_font_file(app: toga.App): + "Invalid font files fail registration" + with pytest.raises(ValueError, match=r"Font file does not exist"): + Font.register( + family="non-existent", + path=app.paths.app / "resources" / "fonts" / "nonexistent.ttf", + ) + + +async def test_corrupted_font_file(app: toga.App): + "Corrupted font files fail registration" + with pytest.raises(ValueError, match=r"Couldn't load font file"): + Font.register( + family="non-existent", + path=app.paths.app / "resources" / "fonts" / "Corrupted.ttf", + ) From 707a0b8d35e0692ae776a62b5279ab87db61a979 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 14:06:43 +0800 Subject: [PATCH 23/61] Tweaked the GTK font tests. --- gtk/src/toga_gtk/fonts.py | 11 +++---- gtk/src/toga_gtk/libs/fontconfig.py | 8 ++--- gtk/tests_backend/widgets/properties.py | 4 +-- testbed/tests/test_font.py | 41 ++++++++++++++++--------- testbed/tests/widgets/properties.py | 2 +- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 0205c014b5..6812d446b4 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -41,13 +41,10 @@ def __init__(self, interface): font_path = ( self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] ) - try: - if Path(font_path).is_file(): - FontConfig.add_font_file(str(font_path)) - else: - print(f"Font file {font_path} could not be found") - except ValueError: - print(f"Font '{self.interface}' could not be loaded") + if Path(font_path).is_file(): + FontConfig.add_font_file(str(font_path)) + else: + raise ValueError(f"Font file {font_path} could not be found") except KeyError: # Not a pre-registered font if self.interface.family not in SYSTEM_DEFAULT_FONTS: diff --git a/gtk/src/toga_gtk/libs/fontconfig.py b/gtk/src/toga_gtk/libs/fontconfig.py index 64cd296ce6..c57c0a1bb0 100644 --- a/gtk/src/toga_gtk/libs/fontconfig.py +++ b/gtk/src/toga_gtk/libs/fontconfig.py @@ -14,7 +14,7 @@ fontconfig.FcConfigAppFontAddFile.argtypes = [FcConfig, c_char_p] fontconfig.FcConfigAppFontAddFile.restypes = c_int -else: +else: # pragma: no cover fontconfig = None @@ -23,14 +23,14 @@ def __init__(self): if fontconfig: fontconfig.FcInit() self.config = fontconfig.FcConfigGetCurrent() - else: + else: # pragma: no cover print( "Unable to initialize FontConfig library. Is libfontconfig.so.1 on your LD_LIBRARY_PATH?" ) self.config = None def add_font_file(self, path): - if self.config is None: + if self.config is None: # pragma: no cover raise RuntimeError( "Can't load custom fonts without a working Fontconfig library" ) @@ -39,7 +39,7 @@ def add_font_file(self, path): self.config, str(path).encode("utf-8") ) if result == 0: - raise ValueError(f"Couldn't load font file {path}") + raise ValueError(f"Unable to load font file {path}") # Instantiate and configure a singleton FontConfig instance diff --git a/gtk/tests_backend/widgets/properties.py b/gtk/tests_backend/widgets/properties.py index 172ba6adeb..8396930827 100644 --- a/gtk/tests_backend/widgets/properties.py +++ b/gtk/tests_backend/widgets/properties.py @@ -34,10 +34,10 @@ def toga_font(font): Pango.Style.OBLIQUE: OBLIQUE, }.get(font.get_style(), NORMAL), weight={ - Pango.Variant.SMALL_CAPS: SMALL_CAPS, + Pango.Weight.BOLD: BOLD, }.get(font.get_weight(), NORMAL), variant={ - Pango.Weight.BOLD: BOLD, + Pango.Variant.SMALL_CAPS: SMALL_CAPS, }.get(font.get_variant(), NORMAL), ) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index bf777b6d5d..12e22c1206 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -1,3 +1,5 @@ +import sys +from pathlib import Path from typing import Any import pytest @@ -22,6 +24,13 @@ async def widget() -> toga.Label: return toga.Label("hello, this is a label") +@pytest.fixture +async def app_path(app): + # This *should* be app.paths.app, but under test conditions, + # the mainline is the test module, which confuses the app path. + return Path(sys.modules[app.__module__].__file__).parent + + async def test_use_system_font_fallback( widget: toga.Label, widget_probe: Any, @@ -82,12 +91,12 @@ async def test_font_file_loaded( font_path: str, font_kwargs, capsys: pytest.CaptureFixture[str], - app: toga.App, + app_path: Path, ): """Custom fonts can be loaded and used.""" Font.register( family=font_family, - path=app.paths.app / font_path, + path=app_path / font_path, **font_kwargs, ) @@ -108,19 +117,23 @@ async def test_font_file_loaded( assert "could not be found" not in capsys.readouterr().out -async def test_non_existent_font_file(app: toga.App): +async def test_non_existent_font_file(widget: toga.Label, app_path: Path): "Invalid font files fail registration" - with pytest.raises(ValueError, match=r"Font file does not exist"): - Font.register( - family="non-existent", - path=app.paths.app / "resources" / "fonts" / "nonexistent.ttf", - ) + Font.register( + family="non-existent", + path=app_path / "resources" / "fonts" / "nonexistent.ttf", + ) + with pytest.raises( + ValueError, match=r"Font file .*nonexistent.ttf could not be found" + ): + widget.style.font_family = "non-existent" -async def test_corrupted_font_file(app: toga.App): +async def test_corrupted_font_file(widget: toga.Label, app_path: Path): "Corrupted font files fail registration" - with pytest.raises(ValueError, match=r"Couldn't load font file"): - Font.register( - family="non-existent", - path=app.paths.app / "resources" / "fonts" / "Corrupted.ttf", - ) + Font.register( + family="corrupted", + path=app_path / "resources" / "fonts" / "Corrupted.ttf", + ) + with pytest.raises(ValueError, match=r"Unable to load font file .*Corrupted.ttf"): + widget.style.font_family = "corrupted" diff --git a/testbed/tests/widgets/properties.py b/testbed/tests/widgets/properties.py index 4b1de87180..24e00c00df 100644 --- a/testbed/tests/widgets/properties.py +++ b/testbed/tests/widgets/properties.py @@ -170,7 +170,7 @@ async def test_font_attrs(widget, probe): for style in [NORMAL, ITALIC]: widget.style.font_style = style await probe.redraw( - message="Widget text font style should be %s" % style + message=f"Widget text font should be {family} {weight} {style}" ) probe.assert_font_family(family) assert probe.font.weight == weight From c8134fcb2823ce7e00a6e7a333e88318647d642a Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 14:29:54 +0800 Subject: [PATCH 24/61] Ensure webkit2 libraries are available for testing. --- .github/workflows/ci.yml | 2 +- gtk/src/toga_gtk/libs/gtk.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a727ee7a42..f81398891a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -150,7 +150,7 @@ jobs: runs-on: macos-latest - backend: gtk - pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev pkg-config libfuse2" + pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev gir1.2-webkit2-4.0 pkg-config libfuse2" - backend: iOS runs-on: macos-latest diff --git a/gtk/src/toga_gtk/libs/gtk.py b/gtk/src/toga_gtk/libs/gtk.py index d16f2b948d..27143b145d 100644 --- a/gtk/src/toga_gtk/libs/gtk.py +++ b/gtk/src/toga_gtk/libs/gtk.py @@ -13,16 +13,16 @@ try: gi.require_version("WebKit2", "4.0") from gi.repository import WebKit2 # noqa: F401 -except ImportError: # pragma: no cover +except (ValueError, ImportError): # pragma: no cover WebKit2 = None try: gi.require_version("Pango", "1.0") from gi.repository import Pango -except ImportError: # pragma: no cover +except (ValueError, ImportError): # pragma: no cover Pango = None try: import cairo -except ImportError: # pragma: no cover +except (ValueError, ImportError): # pragma: no cover cairo = None From fc9ada3f3276ac7d9ec442d5f4ffd103965b58ec Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 15:14:10 +0800 Subject: [PATCH 25/61] Update Winforms to get 100% font test coverage. --- changes/1903.feature.rst | 1 + changes/1903.misc.rst | 1 - gtk/tests_backend/widgets/base.py | 5 +++++ testbed/tests/test_font.py | 22 +++++++-------------- winforms/src/toga_winforms/fonts.py | 25 +++++------------------- winforms/src/toga_winforms/libs/fonts.py | 6 +----- winforms/tests_backend/widgets/base.py | 16 ++++++++++++++- 7 files changed, 34 insertions(+), 42 deletions(-) create mode 100644 changes/1903.feature.rst delete mode 100644 changes/1903.misc.rst diff --git a/changes/1903.feature.rst b/changes/1903.feature.rst new file mode 100644 index 0000000000..a448645944 --- /dev/null +++ b/changes/1903.feature.rst @@ -0,0 +1 @@ +Font APIs now have 100% test coverage. diff --git a/changes/1903.misc.rst b/changes/1903.misc.rst deleted file mode 100644 index dc8c48009c..0000000000 --- a/changes/1903.misc.rst +++ /dev/null @@ -1 +0,0 @@ -GTK fonts coverage is now at 100% diff --git a/gtk/tests_backend/widgets/base.py b/gtk/tests_backend/widgets/base.py index cb7b078fad..85f6f69f9f 100644 --- a/gtk/tests_backend/widgets/base.py +++ b/gtk/tests_backend/widgets/base.py @@ -2,12 +2,17 @@ import pytest +from toga.fonts import BOLD, ITALIC, NORMAL, OBLIQUE, SMALL_CAPS from toga_gtk.libs import Gtk from .properties import toga_color, toga_font class SimpleProbe: + FONT_WEIGHTS = [NORMAL, BOLD] + FONT_STYLES = [NORMAL, ITALIC, OBLIQUE] + FONT_VARIANTS = [NORMAL, SMALL_CAPS] + def __init__(self, widget): self.widget = widget self.impl = widget._impl diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index 12e22c1206..eb1391729e 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -5,22 +5,14 @@ import pytest import toga -from toga.fonts import ( - BOLD, - ITALIC, - NORMAL, - OBLIQUE, - SMALL_CAPS, - SYSTEM, - Font, -) +from toga.fonts import BOLD, ITALIC, SYSTEM, Font from .conftest import skip_on_platforms @pytest.fixture async def widget() -> toga.Label: - skip_on_platforms("android", "iOS", "macOS", "windows") + skip_on_platforms("android", "iOS", "macOS") return toga.Label("hello, this is a label") @@ -46,9 +38,9 @@ async def test_use_system_font_fallback( async def test_font_options(widget: toga.Label, widget_probe: Any): """Every combination of weight, style and variant can be used on a font.""" - for font_weight in [NORMAL, BOLD]: - for font_style in [NORMAL, ITALIC, OBLIQUE]: - for font_variant in [NORMAL, SMALL_CAPS]: + for font_weight in widget_probe.FONT_WEIGHTS: + for font_style in widget_probe.FONT_STYLES: + for font_variant in widget_probe.FONT_VARIANTS: widget.style.font_style = font_style widget.style.font_variant = font_variant widget.style.font_weight = font_weight @@ -66,12 +58,12 @@ async def test_font_options(widget: toga.Label, widget_probe: Any): [ # OpenType font, no options ( - "Font Awesome 5 Free", + "Font Awesome 5 Free Solid", "resources/fonts/Font Awesome 5 Free-Solid-900.otf", {}, ), # TrueType font, no options - ("ENDOR", "resources/fonts/ENDOR___.ttf", {}), + ("Endor", "resources/fonts/ENDOR___.ttf", {}), # Font with weight property ("Roboto", "resources/fonts/Roboto-Bold.ttf", {"weight": BOLD}), # Font with style property diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 7b0a10da1f..0ed6447071 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -1,4 +1,4 @@ -from toga.fonts import _REGISTERED_FONT_CACHE, SYSTEM, SYSTEM_DEFAULT_FONTS +from toga.fonts import _REGISTERED_FONT_CACHE from toga_winforms.libs import WinFont, win_font_family from toga_winforms.libs.fonts import win_font_size, win_font_style from toga_winforms.libs.winforms import ( @@ -10,10 +10,6 @@ _FONT_CACHE = {} -def points_to_pixels(points, dpi): - return points * 72 / dpi - - class Font: def __init__(self, interface): self._pfc = None # this needs to be an instance variable, otherwise we might get Winforms exceptions later @@ -37,22 +33,11 @@ def __init__(self, interface): self._pfc.AddFontFile(font_path) font_family = self._pfc.Families[0] except FileNotFoundException: - print(f"Font file {font_path} could not be found") - except ExternalException as e: - print(f"Font '{self.interface}' could not be loaded: {e}") - except IndexError: - print( - f"Font '{self.interface}' does not have a family in the collection" - ) + raise ValueError(f"Font file {font_path} could not be found") + except (IndexError, ExternalException): + raise ValueError(f"Unable to load font file {font_path}") except KeyError: - if self.interface.family not in SYSTEM_DEFAULT_FONTS: - print( - f"Unknown font '{self.interface}'; " - "falling back to system font" - ) - font_family = win_font_family(SYSTEM) - else: - font_family = win_font_family(self.interface.family) + font_family = win_font_family(self.interface.family) font_style = win_font_style( self.interface.weight, diff --git a/winforms/src/toga_winforms/libs/fonts.py b/winforms/src/toga_winforms/libs/fonts.py index 3b57a9be63..012c7bd886 100644 --- a/winforms/src/toga_winforms/libs/fonts.py +++ b/winforms/src/toga_winforms/libs/fonts.py @@ -54,11 +54,7 @@ def win_font_family(value): try: return FontFamily(value) except ArgumentException: - print( - "Unable to load font-family '{}', loading '{}' instead".format( - value, SystemFonts.DefaultFont.FontFamily.Name - ) - ) + print(f"Unknown font '{value}'; " "using system font as a fallback") return SystemFonts.DefaultFont.FontFamily diff --git a/winforms/tests_backend/widgets/base.py b/winforms/tests_backend/widgets/base.py index 1a04887c0b..9c6a2fdf17 100644 --- a/winforms/tests_backend/widgets/base.py +++ b/winforms/tests_backend/widgets/base.py @@ -4,13 +4,27 @@ from System.Drawing import FontFamily, SystemColors, SystemFonts from toga.colors import TRANSPARENT -from toga.fonts import CURSIVE, FANTASY, MONOSPACE, SANS_SERIF, SERIF, SYSTEM +from toga.fonts import ( + BOLD, + CURSIVE, + FANTASY, + ITALIC, + MONOSPACE, + NORMAL, + SANS_SERIF, + SERIF, + SYSTEM, +) from toga.style.pack import JUSTIFY, LEFT from .properties import toga_color, toga_font class SimpleProbe: + FONT_WEIGHTS = [NORMAL, BOLD] + FONT_STYLES = [NORMAL, ITALIC] + FONT_VARIANTS = [NORMAL] + def __init__(self, widget): self.widget = widget self.native = widget._impl.native From 3a814ad7f4b05203656f6c85ef4c7fd97723715a Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 3 May 2023 15:18:39 +0800 Subject: [PATCH 26/61] Update docs to reflect support status and Winforms limitations. --- docs/reference/api/resources/fonts.rst | 5 +++++ docs/reference/data/widgets_by_platform.csv | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index bb365f16a7..372eac5f49 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -10,6 +10,11 @@ Font The font class is used for abstracting the platforms implementation of fonts. +Notes +----- + +* Windows does not support the use of the Oblique font style or the Small Caps variant on fonts. + Reference --------- diff --git a/docs/reference/data/widgets_by_platform.csv b/docs/reference/data/widgets_by_platform.csv index 2dab8c95f1..84cc5a4d99 100644 --- a/docs/reference/data/widgets_by_platform.csv +++ b/docs/reference/data/widgets_by_platform.csv @@ -27,7 +27,7 @@ Box,Layout Widget,:class:`~toga.widgets.box.Box`,Container for components,|y|,|y ScrollContainer,Layout Widget,:class:`~toga.widgets.scrollcontainer.ScrollContainer`,Scrollable Container,|b|,|b|,|b|,|b|,|b|, SplitContainer,Layout Widget,:class:`~toga.widgets.splitcontainer.SplitContainer`,Split Container,|b|,|b|,|b|,,, OptionContainer,Layout Widget,:class:`~toga.widgets.optioncontainer.OptionContainer`,Option Container,|b|,|b|,|b|,,, -Font,Resource,:class:`~toga.fonts.Font`,Fonts,|b|,|b|,|b|,|b|,|b|, +Font,Resource,:class:`~toga.fonts.Font`,Fonts,|b|,|y|,|y|,|b|,|b|, Command,Resource,:class:`~toga.command.Command`,Command,|b|,|b|,|b|,,|b|, Group,Resource,:class:`~toga.command.Group`,Command group,|b|,|b|,|b|,|b|,|b|, Icon,Resource,:class:`~toga.icons.Icon`,"An icon for buttons, menus, etc",|b|,|b|,|b|,|b|,|b|, From 6572d97a9b4319e3ad00369695bbca62a6cb9f14 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 07:38:00 +0800 Subject: [PATCH 27/61] Clarify comment around coverage case. Co-authored-by: Malcolm Smith --- gtk/src/toga_gtk/fonts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 6812d446b4..868219acd6 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -22,7 +22,7 @@ class Font: def __init__(self, interface): self.interface = interface - # Can't meaningfully test for pango not being installed + # Can't meaningfully get test coverage for pango not being installed if Pango is None: # pragma: no cover raise RuntimeError( "Unable to import Pango. Have you installed the Pango and gobject-introspection system libraries?" From 9d644e48ef7c9497fc47c7ce8723fe2a1a7dcdc5 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 07:39:42 +0800 Subject: [PATCH 28/61] Clarify description of default font size. --- core/src/toga/fonts.py | 4 +++- core/tests/test_font.py | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 3a5a5f5a88..aa535cabb5 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -32,7 +32,9 @@ def __init__(self, family, size, style=NORMAL, variant=NORMAL, weight=NORMAL): def __str__(self): size = ( - "system size" if self.size == SYSTEM_DEFAULT_FONT_SIZE else f"{self.size}pt" + "default size" + if self.size == SYSTEM_DEFAULT_FONT_SIZE + else f"{self.size}pt" ) weight = f" {self.weight}" if self.weight != NORMAL else "" variant = f" {self.variant}" if self.variant != NORMAL else "" diff --git a/core/tests/test_font.py b/core/tests/test_font.py index b654b6ef2f..d9ac60275c 100644 --- a/core/tests/test_font.py +++ b/core/tests/test_font.py @@ -70,23 +70,23 @@ NORMAL, "system 42pt", ), - # Custom font, system size + # Custom font, default size ( "Custom Font", SYSTEM_DEFAULT_FONT_SIZE, NORMAL, NORMAL, NORMAL, - "Custom Font system size", + "Custom Font default size", ), - # System font, system size + # System font, default size ( SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, NORMAL, NORMAL, NORMAL, - "system system size", + "system default size", ), ], ) From ffc3424988a5bcd70fc579f8516fb404fd4c1db1 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 07:42:53 +0800 Subject: [PATCH 29/61] Restructured code to avoid false KeyError hits. --- gtk/src/toga_gtk/fonts.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 868219acd6..d0aba9b386 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -41,10 +41,6 @@ def __init__(self, interface): font_path = ( self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] ) - if Path(font_path).is_file(): - FontConfig.add_font_file(str(font_path)) - else: - raise ValueError(f"Font file {font_path} could not be found") except KeyError: # Not a pre-registered font if self.interface.family not in SYSTEM_DEFAULT_FONTS: @@ -52,6 +48,11 @@ def __init__(self, interface): f"Unknown font '{self.interface}'; " "using system font as a fallback" ) + else: + if Path(font_path).is_file(): + FontConfig.add_font_file(str(font_path)) + else: + raise ValueError(f"Font file {font_path} could not be found") # Initialize font with properties 'None NORMAL NORMAL NORMAL 0' font = Pango.FontDescription() From 16c4930d9535b3aaca75cc4a45d992174ad1a71e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 07:43:07 +0800 Subject: [PATCH 30/61] Clarified comment about FontConfig singleton. --- gtk/src/toga_gtk/libs/fontconfig.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gtk/src/toga_gtk/libs/fontconfig.py b/gtk/src/toga_gtk/libs/fontconfig.py index c57c0a1bb0..c3415e1845 100644 --- a/gtk/src/toga_gtk/libs/fontconfig.py +++ b/gtk/src/toga_gtk/libs/fontconfig.py @@ -43,5 +43,4 @@ def add_font_file(self, path): # Instantiate and configure a singleton FontConfig instance -# If fontconfig couldn't be loaded, set the instance to None. FontConfig = _FontConfig() From 510abc94b1f379430ab582db889d812cf09b1289 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 07:48:03 +0800 Subject: [PATCH 31/61] Check for additional failure modes when loading custom fonts. --- testbed/tests/test_font.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index eb1391729e..7f4b16b396 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -106,7 +106,9 @@ async def test_font_file_loaded( assert getattr(widget_probe.font, prop) == value # Ensure the font was actually loaded. - assert "could not be found" not in capsys.readouterr().out + stdout = capsys.readouterr().out + assert "using system font as a fallback" not in stdout + assert "could not be found" not in stdout async def test_non_existent_font_file(widget: toga.Label, app_path: Path): From a58e3764572eb3cc6f0f5c05ac5f7b616b107d06 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 08:36:21 +0800 Subject: [PATCH 32/61] Rework font tests to test all variants. --- core/src/toga/fonts.py | 4 + core/src/toga/style/pack.py | 15 ++- gtk/tests_backend/widgets/base.py | 10 +- .../widgets/multilinetextinput.py | 91 +++++++++++++++++++ testbed/tests/test_font.py | 20 ++-- winforms/tests_backend/widgets/base.py | 19 ++-- 6 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 gtk/tests_backend/widgets/multilinetextinput.py diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index aa535cabb5..9ef511bb9c 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -21,6 +21,10 @@ SYSTEM_DEFAULT_FONTS = {SYSTEM, MESSAGE, SERIF, SANS_SERIF, CURSIVE, FANTASY, MONOSPACE} SYSTEM_DEFAULT_FONT_SIZE = -1 +FONT_WEIGHTS = {NORMAL, BOLD} +FONT_STYLES = {NORMAL, ITALIC, OBLIQUE} +FONT_VARIANTS = {NORMAL, SMALL_CAPS} + _REGISTERED_FONT_CACHE = {} diff --git a/core/src/toga/style/pack.py b/core/src/toga/style/pack.py index a06bee6419..f0ea59754b 100644 --- a/core/src/toga/style/pack.py +++ b/core/src/toga/style/pack.py @@ -29,7 +29,14 @@ from travertino.layout import BaseBox from travertino.size import BaseIntrinsicSize -from toga.fonts import SYSTEM_DEFAULT_FONT_SIZE, SYSTEM_DEFAULT_FONTS, Font +from toga.fonts import ( + FONT_STYLES, + FONT_VARIANTS, + FONT_WEIGHTS, + SYSTEM_DEFAULT_FONT_SIZE, + SYSTEM_DEFAULT_FONTS, + Font, +) ###################################################################### # Display @@ -58,9 +65,9 @@ BACKGROUND_COLOR_CHOICES = Choices(TRANSPARENT, color=True, default=True) FONT_FAMILY_CHOICES = Choices(*SYSTEM_DEFAULT_FONTS, string=True) -FONT_STYLE_CHOICES = Choices(NORMAL, ITALIC, OBLIQUE) -FONT_VARIANT_CHOICES = Choices(NORMAL, SMALL_CAPS) -FONT_WEIGHT_CHOICES = Choices(NORMAL, BOLD) +FONT_STYLE_CHOICES = Choices(*FONT_STYLES) +FONT_VARIANT_CHOICES = Choices(*FONT_VARIANTS) +FONT_WEIGHT_CHOICES = Choices(*FONT_WEIGHTS) FONT_SIZE_CHOICES = Choices(integer=True) diff --git a/gtk/tests_backend/widgets/base.py b/gtk/tests_backend/widgets/base.py index 85f6f69f9f..6ac3ffa51f 100644 --- a/gtk/tests_backend/widgets/base.py +++ b/gtk/tests_backend/widgets/base.py @@ -2,17 +2,12 @@ import pytest -from toga.fonts import BOLD, ITALIC, NORMAL, OBLIQUE, SMALL_CAPS from toga_gtk.libs import Gtk from .properties import toga_color, toga_font class SimpleProbe: - FONT_WEIGHTS = [NORMAL, BOLD] - FONT_STYLES = [NORMAL, ITALIC, OBLIQUE] - FONT_VARIANTS = [NORMAL, SMALL_CAPS] - def __init__(self, widget): self.widget = widget self.impl = widget._impl @@ -41,6 +36,11 @@ def assert_alignment(self, expected): def assert_font_family(self, expected): assert self.font.family == expected + def assert_font_options(self, weight, style, variant): + assert self.font.weight == weight + assert self.font.style == style + assert self.font.variant == variant + async def redraw(self, message=None): """Request a redraw of the app, waiting until that redraw has completed.""" # Force a repaint diff --git a/gtk/tests_backend/widgets/multilinetextinput.py b/gtk/tests_backend/widgets/multilinetextinput.py new file mode 100644 index 0000000000..c0c2af86d6 --- /dev/null +++ b/gtk/tests_backend/widgets/multilinetextinput.py @@ -0,0 +1,91 @@ +import asyncio + +from toga_gtk.libs import Gtk + +from .base import SimpleProbe +from .properties import toga_alignment, toga_color, toga_font + + +class MultilineTextInputProbe(SimpleProbe): + native_class = Gtk.ScrolledWindow + + def __init__(self, widget): + super().__init__(widget) + self.native_textview = self.impl.native_textview + + @property + def value(self): + return self.impl.buffer.get_text( + self.impl.buffer.get_start_iter(), self.impl.buffer.get_end_iter(), True + ) + + @property + def placeholder(self): + return str(self.impl._placeholder) + + def placeholder_visible(self): + return self.impl.buffer.get_start_iter().has_tag(self.impl.tag_placeholder) + + @property + def placeholder_hides_on_focus(self): + return True + + @property + def color(self): + sc = self.native_textview.get_style_context() + return toga_color(sc.get_property("color", sc.get_state())) + + @property + def background_color(self): + sc = self.native_textview.get_style_context() + return toga_color(sc.get_property("background-color", sc.get_state())) + + @property + def font(self): + sc = self.native_textview.get_style_context() + return toga_font(sc.get_property("font", sc.get_state())) + + @property + def alignment(self): + return toga_alignment( + self.native_textview.get_justification(), + ) + + @property + def enabled(self): + # Enabled is proxied onto readonly on the text view + return self.native_textview.get_property("editable") + + @property + def readonly(self): + return not self.native_textview.get_property("editable") + + @property + def visible_height(self): + return self.native.frame.size.height + + @property + def visible_width(self): + return self.native.frame.size.width + + @property + def document_height(self): + return max(self.native.contentSize.height, self.native.frame.size.height) + + @property + def document_width(self): + return max(self.native.contentSize.width, self.native.frame.size.width) + + @property + def vertical_scroll_position(self): + return self.native.contentOffset.y + + async def wait_for_scroll_completion(self): + position = self.vertical_scroll_position + current = None + # Iterate until 2 successive reads of the scroll position, + # 0.05s apart, return the same value + while position != current: + position = current + await asyncio.sleep(0.05) + current = self.vertical_scroll_position diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index 7f4b16b396..12cf23d53b 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -5,7 +5,15 @@ import pytest import toga -from toga.fonts import BOLD, ITALIC, SYSTEM, Font +from toga.fonts import ( + BOLD, + FONT_STYLES, + FONT_VARIANTS, + FONT_WEIGHTS, + ITALIC, + SYSTEM, + Font, +) from .conftest import skip_on_platforms @@ -38,9 +46,9 @@ async def test_use_system_font_fallback( async def test_font_options(widget: toga.Label, widget_probe: Any): """Every combination of weight, style and variant can be used on a font.""" - for font_weight in widget_probe.FONT_WEIGHTS: - for font_style in widget_probe.FONT_STYLES: - for font_variant in widget_probe.FONT_VARIANTS: + for font_weight in FONT_WEIGHTS: + for font_style in FONT_STYLES: + for font_variant in FONT_VARIANTS: widget.style.font_style = font_style widget.style.font_variant = font_variant widget.style.font_weight = font_weight @@ -48,9 +56,7 @@ async def test_font_options(widget: toga.Label, widget_probe: Any): f"Using a {font_weight} {font_style} {font_variant} font" ) - assert widget_probe.font.weight == font_weight - assert widget_probe.font.style == font_style - assert widget_probe.font.variant == font_variant + widget_probe.assert_font_options(font_weight, font_style, font_variant) @pytest.mark.parametrize( diff --git a/winforms/tests_backend/widgets/base.py b/winforms/tests_backend/widgets/base.py index 9c6a2fdf17..19a714935c 100644 --- a/winforms/tests_backend/widgets/base.py +++ b/winforms/tests_backend/widgets/base.py @@ -5,14 +5,13 @@ from toga.colors import TRANSPARENT from toga.fonts import ( - BOLD, CURSIVE, FANTASY, - ITALIC, MONOSPACE, - NORMAL, + OBLIQUE, SANS_SERIF, SERIF, + SMALL_CAPS, SYSTEM, ) from toga.style.pack import JUSTIFY, LEFT @@ -21,10 +20,6 @@ class SimpleProbe: - FONT_WEIGHTS = [NORMAL, BOLD] - FONT_STYLES = [NORMAL, ITALIC] - FONT_VARIANTS = [NORMAL] - def __init__(self, widget): self.widget = widget self.native = widget._impl.native @@ -61,6 +56,16 @@ def assert_font_family(self, expected): SYSTEM: SystemFonts.DefaultFont.FontFamily.Name, }.get(expected, expected) + def assert_font_options(self, weight, style, variant): + if style == OBLIQUE: + print("Ignoring OBLIQUE font test") + elif SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert self.font.weight == weight + assert self.font.style == style + assert self.font.variant == variant + async def redraw(self, message=None): """Request a redraw of the app, waiting until that redraw has completed.""" # Winforms style changes always take effect immediately. From a26776395d6f52a21d60c2860f918e6cd540d650 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 10:47:04 +0800 Subject: [PATCH 33/61] Restructure winforms font loading to isolate keyerror failures. --- winforms/src/toga_winforms/fonts.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 0ed6447071..41d09c396c 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -28,6 +28,9 @@ def __init__(self, interface): font_path = str( self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] ) + except KeyError: + font_family = win_font_family(self.interface.family) + else: try: self._pfc = PrivateFontCollection() self._pfc.AddFontFile(font_path) @@ -36,8 +39,6 @@ def __init__(self, interface): raise ValueError(f"Font file {font_path} could not be found") except (IndexError, ExternalException): raise ValueError(f"Unable to load font file {font_path}") - except KeyError: - font_family = win_font_family(self.interface.family) font_style = win_font_style( self.interface.weight, From 5fa3011da24b0528b96e8831aa1ac0ffa28a6106 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 15 May 2023 11:44:08 +0800 Subject: [PATCH 34/61] Moved all Winforms font handling into the font class to allow for custom canvas fonts, plus consistent error messages. --- testbed/tests/test_font.py | 12 +++- winforms/src/toga_winforms/fonts.py | 64 +++++++++++++++++--- winforms/src/toga_winforms/libs/__init__.py | 2 +- winforms/src/toga_winforms/libs/fonts.py | 48 --------------- winforms/src/toga_winforms/widgets/canvas.py | 6 +- 5 files changed, 68 insertions(+), 64 deletions(-) diff --git a/testbed/tests/test_font.py b/testbed/tests/test_font.py index 12cf23d53b..3213cfb2d4 100644 --- a/testbed/tests/test_font.py +++ b/testbed/tests/test_font.py @@ -113,7 +113,17 @@ async def test_font_file_loaded( # Ensure the font was actually loaded. stdout = capsys.readouterr().out - assert "using system font as a fallback" not in stdout + + # Setting the font to "Roboto something" involves setting the font to + # "Roboto" as an intermediate step. However, we haven't registered "Roboto + # regular", so this will raise an warning about the missing "regular" font. + # Ignore this message. + stdout = stdout.replace( + "Unknown font 'Roboto default size'; using system font as a fallback\n", + "", + ) + + assert "; using system font as a fallback" not in stdout assert "could not be found" not in stdout diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 41d09c396c..69d855dd68 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -1,10 +1,23 @@ -from toga.fonts import _REGISTERED_FONT_CACHE -from toga_winforms.libs import WinFont, win_font_family -from toga_winforms.libs.fonts import win_font_size, win_font_style +from toga.fonts import ( + _REGISTERED_FONT_CACHE, + CURSIVE, + FANTASY, + MESSAGE, + MONOSPACE, + SANS_SERIF, + SERIF, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) +from toga_winforms.libs import WinFont from toga_winforms.libs.winforms import ( + ArgumentException, ExternalException, FileNotFoundException, + FontFamily, + FontStyle, PrivateFontCollection, + SystemFonts, ) _FONT_CACHE = {} @@ -29,7 +42,26 @@ def __init__(self, interface): self.interface.factory.paths.app / _REGISTERED_FONT_CACHE[font_key] ) except KeyError: - font_family = win_font_family(self.interface.family) + try: + font_family = { + SYSTEM: SystemFonts.DefaultFont.FontFamily, + MESSAGE: SystemFonts.MenuFont.FontFamily, + SERIF: FontFamily.GenericSerif, + SANS_SERIF: FontFamily.GenericSansSerif, + CURSIVE: FontFamily("Comic Sans MS"), + FANTASY: FontFamily("Impact"), + MONOSPACE: FontFamily.GenericMonospace, + }[self.interface.family] + except KeyError: + try: + font_family = FontFamily(self.interface.family) + except ArgumentException: + print( + f"Unknown font '{self.interface}'; " + "using system font as a fallback" + ) + font_family = SystemFonts.DefaultFont.FontFamily + else: try: self._pfc = PrivateFontCollection() @@ -40,12 +72,24 @@ def __init__(self, interface): except (IndexError, ExternalException): raise ValueError(f"Unable to load font file {font_path}") - font_style = win_font_style( - self.interface.weight, - self.interface.style, - font_family, - ) - font_size = win_font_size(self.interface.size) + # Convert font style to Winforms format + font_style = FontStyle.Regular + if self.interface.weight.lower() == "bold" and font_family.IsStyleAvailable( + FontStyle.Bold + ): + font_style |= FontStyle.Bold + if ( + self.interface.style.lower() == "italic" + and font_family.IsStyleAvailable(FontStyle.Italic) + ): + font_style |= FontStyle.Italic + + # Convert font size to Winforms format + if self.interface.size == SYSTEM_DEFAULT_FONT_SIZE: + font_size = SystemFonts.DefaultFont.Size + else: + font_size = self.interface.size + font = WinFont(font_family, font_size, font_style) _FONT_CACHE[self.interface] = font diff --git a/winforms/src/toga_winforms/libs/__init__.py b/winforms/src/toga_winforms/libs/__init__.py index 029ef9b4f4..e6925a4e89 100644 --- a/winforms/src/toga_winforms/libs/__init__.py +++ b/winforms/src/toga_winforms/libs/__init__.py @@ -3,7 +3,7 @@ WebView2, WebView2RuntimeNotFoundException, ) -from .fonts import HorizontalTextAlignment, TextAlignment, win_font_family # noqa: F401 +from .fonts import HorizontalTextAlignment, TextAlignment # noqa: F401 from .winforms import ( # noqa: F401 Action, Bitmap, diff --git a/winforms/src/toga_winforms/libs/fonts.py b/winforms/src/toga_winforms/libs/fonts.py index 012c7bd886..eb7438cde4 100644 --- a/winforms/src/toga_winforms/libs/fonts.py +++ b/winforms/src/toga_winforms/libs/fonts.py @@ -1,21 +1,7 @@ from toga.constants import CENTER, JUSTIFY, LEFT, RIGHT -from toga.fonts import ( - CURSIVE, - FANTASY, - MESSAGE, - MONOSPACE, - SANS_SERIF, - SERIF, - SYSTEM, - SYSTEM_DEFAULT_FONT_SIZE, -) from .winforms import ( - ArgumentException, ContentAlignment, - FontFamily, - FontStyle, - SystemFonts, WinForms, ) @@ -37,37 +23,3 @@ def HorizontalTextAlignment(value): CENTER: WinForms.HorizontalAlignment.Center, JUSTIFY: WinForms.HorizontalAlignment.Left, }[value] - - -def win_font_family(value): - try: - return { - SYSTEM: SystemFonts.DefaultFont.FontFamily, - MESSAGE: SystemFonts.MenuFont.FontFamily, - SERIF: FontFamily.GenericSerif, - SANS_SERIF: FontFamily.GenericSansSerif, - CURSIVE: FontFamily("Comic Sans MS"), - FANTASY: FontFamily("Impact"), - MONOSPACE: FontFamily.GenericMonospace, - }[value] - except KeyError: - try: - return FontFamily(value) - except ArgumentException: - print(f"Unknown font '{value}'; " "using system font as a fallback") - return SystemFonts.DefaultFont.FontFamily - - -def win_font_style(weight, style, font_family): - font_style = FontStyle.Regular - if weight.lower() == "bold" and font_family.IsStyleAvailable(FontStyle.Bold): - font_style |= FontStyle.Bold - if style.lower() == "italic" and font_family.IsStyleAvailable(FontStyle.Italic): - font_style |= FontStyle.Italic - return font_style - - -def win_font_size(size): - if size == SYSTEM_DEFAULT_FONT_SIZE: - return SystemFonts.DefaultFont.Size - return size diff --git a/winforms/src/toga_winforms/widgets/canvas.py b/winforms/src/toga_winforms/widgets/canvas.py index f03652a5e8..83198d440e 100644 --- a/winforms/src/toga_winforms/widgets/canvas.py +++ b/winforms/src/toga_winforms/widgets/canvas.py @@ -19,10 +19,8 @@ SolidBrush, StringFormat, WinForms, - win_font_family, ) -from ..libs.fonts import win_font_style from .box import Box @@ -302,8 +300,8 @@ def reset_transform(self, draw_context, *args, **kwargs): # Text def write_text(self, text, x, y, font, draw_context, *args, **kwargs): full_height = 0 - font_family = win_font_family(font.family) - font_style = win_font_style(font.weight, font.style, font_family) + font_family = font._impl.native.FontFamily + font_style = font._impl.native.Style for line in text.splitlines(): _, height = self.measure_text(line, font) origin = PointF(x, y + full_height - height) From 6fa4f6f6ee2357cfe8d28fa8f106dfd0f20d4019 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 16 May 2023 07:36:53 +0800 Subject: [PATCH 35/61] Made the winforms font test more complete. --- winforms/tests_backend/widgets/base.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/winforms/tests_backend/widgets/base.py b/winforms/tests_backend/widgets/base.py index 19a714935c..322014d796 100644 --- a/winforms/tests_backend/widgets/base.py +++ b/winforms/tests_backend/widgets/base.py @@ -57,13 +57,16 @@ def assert_font_family(self, expected): }.get(expected, expected) def assert_font_options(self, weight, style, variant): + assert self.font.weight == weight + if style == OBLIQUE: print("Ignoring OBLIQUE font test") - elif SMALL_CAPS: - print("Ignoring SMALL CAPS font test") else: - assert self.font.weight == weight assert self.font.style == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: assert self.font.variant == variant async def redraw(self, message=None): From 58b9039f1929b3ae3b85f828eed6259d6664142e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 17 May 2023 15:34:30 +0800 Subject: [PATCH 36/61] Interpret OBLIQUE as ITALIC. --- docs/reference/api/resources/fonts.rst | 6 +++++- winforms/src/toga_winforms/fonts.py | 3 ++- winforms/tests_backend/widgets/base.py | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index 372eac5f49..c5b8d672ed 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -13,7 +13,11 @@ The font class is used for abstracting the platforms implementation of fonts. Notes ----- -* Windows does not support the use of the Oblique font style or the Small Caps variant on fonts. +* Windows does not support the use of the Oblique font style. A request for an + oblique font will be interpreted as Italic. + +* Windows does not support the use of a Small Caps variant on fonts. A request + for a Small Caps variant will be ingored. Reference --------- diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 69d855dd68..4fb14663a9 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -79,7 +79,8 @@ def __init__(self, interface): ): font_style |= FontStyle.Bold if ( - self.interface.style.lower() == "italic" + # Winforms doesn't recognize Oblique; so we interpret as Italic + self.interface.style.lower() in {"italic", "oblique"} and font_family.IsStyleAvailable(FontStyle.Italic) ): font_style |= FontStyle.Italic diff --git a/winforms/tests_backend/widgets/base.py b/winforms/tests_backend/widgets/base.py index 322014d796..3e6353a47c 100644 --- a/winforms/tests_backend/widgets/base.py +++ b/winforms/tests_backend/widgets/base.py @@ -7,6 +7,7 @@ from toga.fonts import ( CURSIVE, FANTASY, + ITALIC, MONOSPACE, OBLIQUE, SANS_SERIF, @@ -60,7 +61,8 @@ def assert_font_options(self, weight, style, variant): assert self.font.weight == weight if style == OBLIQUE: - print("Ignoring OBLIQUE font test") + print("Intepreting OBLIQUE font as ITALIC") + assert self.font.style == ITALIC else: assert self.font.style == style From a27be034826396d7ae52787f7505b4524c83b418 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 17 May 2023 16:19:43 +0800 Subject: [PATCH 37/61] Correct typo. --- docs/reference/api/resources/fonts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index c5b8d672ed..9891d9ac9f 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -17,7 +17,7 @@ Notes oblique font will be interpreted as Italic. * Windows does not support the use of a Small Caps variant on fonts. A request - for a Small Caps variant will be ingored. + for a Small Caps variant will be ignored. Reference --------- From c4d8a576596c37331b091646e03932387a15a6ad Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 14 Jun 2023 08:09:05 +0800 Subject: [PATCH 38/61] Refactor app path into interface layer. --- android/src/toga_android/fonts.py | 5 +- core/src/toga/fonts.py | 3 +- core/tests/{test_font.py => test_fonts.py} | 51 ++++++++++++++----- gtk/src/toga_gtk/fonts.py | 5 +- testbed/tests/{test_font.py => test_fonts.py} | 0 winforms/src/toga_winforms/fonts.py | 5 +- 6 files changed, 44 insertions(+), 25 deletions(-) rename core/tests/{test_font.py => test_fonts.py} (72%) rename testbed/tests/{test_font.py => test_fonts.py} (100%) diff --git a/android/src/toga_android/fonts.py b/android/src/toga_android/fonts.py index 86e521648e..34386ff956 100644 --- a/android/src/toga_android/fonts.py +++ b/android/src/toga_android/fonts.py @@ -1,6 +1,5 @@ import os -import toga from toga.fonts import ( _REGISTERED_FONT_CACHE, BOLD, @@ -51,9 +50,7 @@ def apply(self, tv, default_size, default_typeface): variant=self.interface.variant, ) if font_key in _REGISTERED_FONT_CACHE: - font_path = str( - toga.App.app.paths.app / _REGISTERED_FONT_CACHE[font_key] - ) + font_path = _REGISTERED_FONT_CACHE[font_key] if os.path.isfile(font_path): typeface = Typeface.createFromFile(font_path) # If the typeface cannot be created, following Exception is thrown: diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 9ef511bb9c..784c3c84ae 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -17,6 +17,7 @@ from travertino.fonts import font # noqa: F401 from travertino.fonts import Font as BaseFont +import toga from toga.platform import get_platform_factory SYSTEM_DEFAULT_FONTS = {SYSTEM, MESSAGE, SERIF, SANS_SERIF, CURSIVE, FANTASY, MONOSPACE} @@ -76,7 +77,7 @@ def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): font_key = Font.registered_font_key( family, weight=weight, style=style, variant=variant ) - _REGISTERED_FONT_CACHE[font_key] = path + _REGISTERED_FONT_CACHE[font_key] = str(toga.App.app.paths.app / path) @staticmethod def registered_font_key(family, weight, style, variant): diff --git a/core/tests/test_font.py b/core/tests/test_fonts.py similarity index 72% rename from core/tests/test_font.py rename to core/tests/test_fonts.py index d9ac60275c..024d5d426a 100644 --- a/core/tests/test_font.py +++ b/core/tests/test_fonts.py @@ -1,3 +1,5 @@ +from pathlib import Path + import pytest import toga @@ -13,6 +15,11 @@ ) +@pytest.fixture +def app(): + return toga.App("Fonts Test", "org.beeware.toga.fonts") + + @pytest.mark.parametrize( "family, size, weight, style, variant, as_str", [ @@ -125,7 +132,7 @@ def test_builtin_font(family, size, weight, style, variant, as_str): ("Wonky", BOLD, ITALIC, "unknown", ("Wonky", BOLD, ITALIC, NORMAL)), ], ) -def test_registered_font_key(family, style, weight, variant, key): +def test_registered_font_key(app, family, style, weight, variant, key): "Registered font keys can be generarted" assert ( toga.Font.registered_font_key( @@ -135,21 +142,39 @@ def test_registered_font_key(family, style, weight, variant, key): ) -def test_register_font(): +@pytest.mark.parametrize( + "path, registered", + [ + # Absolute path + ("/path/to/custom/font.otf", "/path/to/custom/font.otf"), + # Relative path + ( + "path/to/custom/font.otf", + str(Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf"), + ), + ], +) +def test_register_font(app, path, registered): "A custom font can be registered" - toga.Font.register("Custom Font", "/path/to/custom/font.otf") + toga.Font.register("Custom Font", path) - assert ( - _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] - == "/path/to/custom/font.otf" - ) + assert _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] == registered -def test_register_font_variant(): +@pytest.mark.parametrize( + "path, registered", + [ + # Absolute path + ("/path/to/custom/font.otf", "/path/to/custom/font.otf"), + # Relative path + ( + "path/to/custom/font.otf", + str(Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf"), + ), + ], +) +def test_register_font_variant(app, path, registered): "A custom font can be registered as a variant" - toga.Font.register("Custom Font", "/path/to/custom/font-bold.otf", weight=BOLD) + toga.Font.register("Custom Font", path, weight=BOLD) - assert ( - _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] - == "/path/to/custom/font-bold.otf" - ) + assert _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] == registered diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index ad687ef5e1..e5990f3227 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -1,6 +1,5 @@ from pathlib import Path -import toga from toga.constants import ( BOLD, ITALIC, @@ -39,7 +38,7 @@ def __init__(self, interface): variant=self.interface.variant, ) try: - font_path = toga.App.app.paths.app / _REGISTERED_FONT_CACHE[font_key] + font_path = _REGISTERED_FONT_CACHE[font_key] except KeyError: # Not a pre-registered font if self.interface.family not in SYSTEM_DEFAULT_FONTS: @@ -49,7 +48,7 @@ def __init__(self, interface): ) else: if Path(font_path).is_file(): - FontConfig.add_font_file(str(font_path)) + FontConfig.add_font_file(font_path) else: raise ValueError(f"Font file {font_path} could not be found") diff --git a/testbed/tests/test_font.py b/testbed/tests/test_fonts.py similarity index 100% rename from testbed/tests/test_font.py rename to testbed/tests/test_fonts.py diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 17c4d218f2..12e8d1da31 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -1,4 +1,3 @@ -import toga from toga.fonts import ( _REGISTERED_FONT_CACHE, CURSIVE, @@ -39,9 +38,7 @@ def __init__(self, interface): variant=self.interface.variant, ) try: - font_path = str( - toga.App.app.paths.app / _REGISTERED_FONT_CACHE[font_key] - ) + font_path = _REGISTERED_FONT_CACHE[font_key] except KeyError: try: font_family = { From e53c7ea89cef437ef20e46c4dfc740d6ddcf987d Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sun, 25 Jun 2023 09:08:46 +0800 Subject: [PATCH 39/61] Corrections to Winforms and testbed tests. --- core/tests/test_fonts.py | 32 +++++++++++++++++++++++++------- testbed/tests/test_fonts.py | 5 ++--- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/core/tests/test_fonts.py b/core/tests/test_fonts.py index 024d5d426a..14b67b23ab 100644 --- a/core/tests/test_fonts.py +++ b/core/tests/test_fonts.py @@ -146,11 +146,16 @@ def test_registered_font_key(app, family, style, weight, variant, key): "path, registered", [ # Absolute path - ("/path/to/custom/font.otf", "/path/to/custom/font.otf"), + (Path("/path/to/custom/font.otf"), Path("/path/to/custom/font.otf")), + (str(Path("/path/to/custom/font.otf")), Path("/path/to/custom/font.otf")), # Relative path + ( + Path("path/to/custom/font.otf"), + Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf", + ), ( "path/to/custom/font.otf", - str(Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf"), + Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf", ), ], ) @@ -158,18 +163,27 @@ def test_register_font(app, path, registered): "A custom font can be registered" toga.Font.register("Custom Font", path) - assert _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] == registered + # Test fixture has paths in Path format; fully resolve and convert into a string for + # test comparison. This gets around Windows path separator and absolute path + # discrepancies. + resolved = str(registered.resolve()) + assert _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] == resolved @pytest.mark.parametrize( "path, registered", [ # Absolute path - ("/path/to/custom/font.otf", "/path/to/custom/font.otf"), + (Path("/path/to/custom/font.otf"), Path("/path/to/custom/font.otf")), + (str(Path("/path/to/custom/font.otf")), Path("/path/to/custom/font.otf")), # Relative path ( - "path/to/custom/font.otf", - str(Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf"), + Path("path/to/custom/font.otf"), + Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf", + ), + ( + str(Path("path/to/custom/font.otf")), + Path(toga.__file__).parent / "path" / "to" / "custom" / "font.otf", ), ], ) @@ -177,4 +191,8 @@ def test_register_font_variant(app, path, registered): "A custom font can be registered as a variant" toga.Font.register("Custom Font", path, weight=BOLD) - assert _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] == registered + # Test fixture has paths in Path format; fully resolve and convert into a string for + # test comparison. This gets around Windows path separator and absolute path + # discrepancies. + resolved = str(registered.resolve()) + assert _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] == resolved diff --git a/testbed/tests/test_fonts.py b/testbed/tests/test_fonts.py index daf8076682..f9a0de8500 100644 --- a/testbed/tests/test_fonts.py +++ b/testbed/tests/test_fonts.py @@ -1,4 +1,3 @@ -from pathlib import Path from typing import Any import pytest @@ -131,11 +130,11 @@ async def test_non_existent_font_file(widget: toga.Label, app: toga.App): widget.style.font_family = "non-existent" -async def test_corrupted_font_file(widget: toga.Label, app_path: Path): +async def test_corrupted_font_file(widget: toga.Label, app: toga.App): "Corrupted font files fail registration" Font.register( family="corrupted", - path=app_path / "resources" / "fonts" / "Corrupted.ttf", + path=app.paths.app / "resources" / "fonts" / "Corrupted.ttf", ) with pytest.raises(ValueError, match=r"Unable to load font file .*Corrupted.ttf"): widget.style.font_family = "corrupted" From 34cc18d0554c6db70eaec1cfeff2807be7da771b Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sun, 2 Jul 2023 17:00:23 +0800 Subject: [PATCH 40/61] Try a different approach to avoid path discrepancy issues. --- core/src/toga/fonts.py | 15 +++++++-------- core/tests/test_fonts.py | 22 ++++++++++++---------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 784c3c84ae..8214d39300 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -49,11 +49,11 @@ def __str__(self): @staticmethod def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): """Registers a file-based font with its family name, style, variant - and weight. When invalid values for style, variant or weight are - passed, ``NORMAL`` will be used. + and weight. When invalid values for style, variant or weight are passed, + ``NORMAL`` will be used. - When a font file includes multiple font weight/style/etc, each variant - must be registered separately:: + When a font file includes multiple font weight/style/etc, each variant must be + registered separately:: # Register a simple regular font Font.register("Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf") @@ -62,13 +62,12 @@ def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): Font.register("Roboto", "resources/Roboto-Regular.ttf") Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=Font.BOLD) - # Register a single font file that contains both - # a regular and bold weight + # Register a single font file that contains both # a regular and bold weight Font.register("Bahnschrift", "resources/Bahnschrift.ttf") Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=Font.BOLD) - :param family: The font family name. This is the name that can be - referenced in style definitions. + :param family: The font family name. This is the name that can be referenced in + style definitions. :param path: The path to the font file. :param weight: The font weight. Default value is ``NORMAL``. :param style: The font style. Default value is ``NORMAL``. diff --git a/core/tests/test_fonts.py b/core/tests/test_fonts.py index 14b67b23ab..de61351841 100644 --- a/core/tests/test_fonts.py +++ b/core/tests/test_fonts.py @@ -163,11 +163,12 @@ def test_register_font(app, path, registered): "A custom font can be registered" toga.Font.register("Custom Font", path) - # Test fixture has paths in Path format; fully resolve and convert into a string for - # test comparison. This gets around Windows path separator and absolute path - # discrepancies. - resolved = str(registered.resolve()) - assert _REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)] == resolved + # Test fixture has paths in Path format; fully resolve for test comparison. This + # gets around Windows path separator and absolute path discrepancies. + assert ( + Path(_REGISTERED_FONT_CACHE[("Custom Font", NORMAL, NORMAL, NORMAL)]).resolve() + == registered.resolve() + ) @pytest.mark.parametrize( @@ -191,8 +192,9 @@ def test_register_font_variant(app, path, registered): "A custom font can be registered as a variant" toga.Font.register("Custom Font", path, weight=BOLD) - # Test fixture has paths in Path format; fully resolve and convert into a string for - # test comparison. This gets around Windows path separator and absolute path - # discrepancies. - resolved = str(registered.resolve()) - assert _REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)] == resolved + # Test fixture has paths in Path format; fully resolve for test comparison. This + # gets around Windows path separator and absolute path discrepancies. + assert ( + Path(_REGISTERED_FONT_CACHE[("Custom Font", BOLD, NORMAL, NORMAL)]).resolve() + == registered.resolve() + ) From f8635681244be94debbd89ef884ced885110daba Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sun, 2 Jul 2023 18:02:37 +0800 Subject: [PATCH 41/61] Add 100% font coverage for Cocoa. --- cocoa/src/toga_cocoa/fonts.py | 67 +++++++++++++++----------- cocoa/src/toga_cocoa/widgets/canvas.py | 12 ++++- cocoa/tests_backend/probe.py | 38 +++++++++++++-- core/src/toga/fonts.py | 8 +-- gtk/src/toga_gtk/fonts.py | 6 +-- gtk/tests_backend/probe.py | 2 + testbed/tests/test_fonts.py | 41 +++++++++++----- winforms/tests_backend/probe.py | 4 ++ 8 files changed, 125 insertions(+), 53 deletions(-) diff --git a/cocoa/src/toga_cocoa/fonts.py b/cocoa/src/toga_cocoa/fonts.py index 619451cd4a..562a99bdea 100644 --- a/cocoa/src/toga_cocoa/fonts.py +++ b/cocoa/src/toga_cocoa/fonts.py @@ -1,23 +1,25 @@ +from pathlib import Path + from toga.fonts import ( + _REGISTERED_FONT_CACHE, BOLD, CURSIVE, FANTASY, ITALIC, MESSAGE, MONOSPACE, + OBLIQUE, SANS_SERIF, SERIF, SMALL_CAPS, SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, + SYSTEM_DEFAULT_FONTS, ) from toga_cocoa.libs import ( - NSAttributedString, NSFont, - NSFontAttributeName, NSFontManager, NSFontMask, - NSMutableDictionary, ) _FONT_CACHE = {} @@ -29,6 +31,30 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: + font_key = self.interface.registered_font_key( + self.interface.family, + weight=self.interface.weight, + style=self.interface.style, + variant=self.interface.variant, + ) + try: + font_path = _REGISTERED_FONT_CACHE[font_key] + except KeyError: + # Not a pre-registered font + if self.interface.family not in SYSTEM_DEFAULT_FONTS: + print( + f"Unknown font '{self.interface}'; " + "using system font as a fallback" + ) + else: + if Path(font_path).is_file(): + # TODO: Load font file + self.interface.factory.not_implemented("Custom font loading") + # if corrupted font file: + # raise ValueError(f"Unable to load font file {font_path}") + else: + raise ValueError(f"Font file {font_path} could not be found") + # Default system font size on Cocoa is 12pt if self.interface.size == SYSTEM_DEFAULT_FONT_SIZE: font_size = NSFont.systemFontSize @@ -40,18 +66,13 @@ def __init__(self, interface): elif self.interface.family == MESSAGE: font = NSFont.messageFontOfSize(font_size) else: - if self.interface.family is SERIF: - family = "Times-Roman" - elif self.interface.family is SANS_SERIF: - family = "Helvetica" - elif self.interface.family is CURSIVE: - family = "Apple Chancery" - elif self.interface.family is FANTASY: - family = "Papyrus" - elif self.interface.family is MONOSPACE: - family = "Courier New" - else: - family = self.interface.family + family = { + SERIF: "Times-Roman", + SANS_SERIF: "Helvetica", + CURSIVE: "Apple Chancery", + FANTASY: "Papyrus", + MONOSPACE: "Courier New", + }.get(self.interface.family, self.interface.family) font = NSFont.fontWithName(family, size=self.interface.size) @@ -67,7 +88,8 @@ def __init__(self, interface): attributes_mask = 0 if self.interface.weight == BOLD: attributes_mask |= NSFontMask.Bold.value - if self.interface.style == ITALIC: + if self.interface.style in {ITALIC, OBLIQUE}: + # Oblique is the fallback for Italic. attributes_mask |= NSFontMask.Italic.value if self.interface.variant == SMALL_CAPS: attributes_mask |= NSFontMask.SmallCaps.value @@ -81,16 +103,3 @@ def __init__(self, interface): _FONT_CACHE[self.interface] = font.retain() self.native = font - - def measure(self, text, tight=False): - textAttributes = NSMutableDictionary.alloc().init() - textAttributes[NSFontAttributeName] = self.native - text_string = NSAttributedString.alloc().initWithString( - text, attributes=textAttributes - ) - size = text_string.size() - - # TODO: This is a magic fudge factor... - # Replace the magic with SCIENCE. - size.width += 3 - return size.width, size.height diff --git a/cocoa/src/toga_cocoa/widgets/canvas.py b/cocoa/src/toga_cocoa/widgets/canvas.py index b7f28d111d..2aed5a95d8 100644 --- a/cocoa/src/toga_cocoa/widgets/canvas.py +++ b/cocoa/src/toga_cocoa/widgets/canvas.py @@ -249,7 +249,17 @@ def reset_transform(self, draw_context, *args, **kwargs): # Text def measure_text(self, text, font, tight=False): - return font._impl.measure(text, tight=tight) + textAttributes = NSMutableDictionary.alloc().init() + textAttributes[NSFontAttributeName] = self.native + text_string = NSAttributedString.alloc().initWithString( + text, attributes=textAttributes + ) + size = text_string.size() + + # TODO: This is a magic fudge factor... + # Replace the magic with SCIENCE. + size.width += 3 + return size.width, size.height def write_text(self, text, x, y, font, *args, **kwargs): width, height = self.measure_text(text, font) diff --git a/cocoa/tests_backend/probe.py b/cocoa/tests_backend/probe.py index 55fc18aa2a..e2ad496cbb 100644 --- a/cocoa/tests_backend/probe.py +++ b/cocoa/tests_backend/probe.py @@ -4,7 +4,18 @@ from rubicon.objc import SEL, NSArray, NSObject, ObjCClass, objc_method from rubicon.objc.api import NSString -from toga.fonts import CURSIVE, FANTASY, MONOSPACE, SANS_SERIF, SERIF, SYSTEM +from toga.fonts import ( + CURSIVE, + FANTASY, + ITALIC, + MESSAGE, + MONOSPACE, + OBLIQUE, + SANS_SERIF, + SERIF, + SMALL_CAPS, + SYSTEM, +) from toga_cocoa.libs.appkit import appkit NSRunLoop = ObjCClass("NSRunLoop") @@ -25,6 +36,8 @@ def onEvent(self): class BaseProbe: + supports_custom_fonts = False + def __init__(self): self.event_listener = EventListener.alloc().init() @@ -48,9 +61,27 @@ async def post_event(self, event, delay=None): await self.event_listener.event.wait() def assert_font_options(self, weight, style, variant): + # Cocoa's FANTASY (Papyrus) and CURSIVE (Apple Chancery) system + # fonts don't have any bold/italic variants. + if self.font.family == "Papyrus": + print("Ignoring options on FANTASY system font") + return + elif self.font.family == "Apple Chancery": + print("Ignoring options on CURSIVE system font") + return + assert self.font.weight == weight - assert self.font.style == style - assert self.font.variant == variant + + if style == OBLIQUE: + print("Intepreting OBLIQUE font as ITALIC") + assert self.font.style == ITALIC + else: + assert self.font.style == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert self.font.variant == variant def assert_font_family(self, expected): assert self.font.family == { @@ -60,6 +91,7 @@ def assert_font_family(self, expected): SANS_SERIF: "Helvetica", SERIF: "Times", SYSTEM: ".AppleSystemUIFont", + MESSAGE: ".AppleSystemUIFont", }.get(expected, expected) async def redraw(self, message=None, delay=None): diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 8214d39300..3b4fac9129 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -82,11 +82,11 @@ def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): def registered_font_key(family, weight, style, variant): """Creates a key for storing a registered font in the font cache. - If weight, style or variant contain an invalid value, ``NORMAL`` is - used instead. + If weight, style or variant contain an invalid value, ``NORMAL`` is used + instead. - :param family: The font family name. This is the name that can be - referenced in style definitions. + :param family: The font family name. This is the name that can be referenced in + style definitions. :param weight: The font weight. Default value is ``NORMAL``. :param style: The font style. Default value is ``NORMAL``. :param variant: The font variant. Default value is ``NORMAL``. diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index e5990f3227..2baf4e4977 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -1,13 +1,11 @@ from pathlib import Path -from toga.constants import ( +from toga.fonts import ( + _REGISTERED_FONT_CACHE, BOLD, ITALIC, OBLIQUE, SMALL_CAPS, -) -from toga.fonts import ( - _REGISTERED_FONT_CACHE, SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, SYSTEM_DEFAULT_FONTS, diff --git a/gtk/tests_backend/probe.py b/gtk/tests_backend/probe.py index 0373eb7d3b..7332fccc28 100644 --- a/gtk/tests_backend/probe.py +++ b/gtk/tests_backend/probe.py @@ -4,6 +4,8 @@ class BaseProbe: + supports_custom_fonts = True + def assert_font_family(self, expected): assert self.font.family == expected diff --git a/testbed/tests/test_fonts.py b/testbed/tests/test_fonts.py index f9a0de8500..3daf62a859 100644 --- a/testbed/tests/test_fonts.py +++ b/testbed/tests/test_fonts.py @@ -10,6 +10,7 @@ FONT_WEIGHTS, ITALIC, SYSTEM, + SYSTEM_DEFAULT_FONTS, Font, ) @@ -18,7 +19,7 @@ @pytest.fixture async def widget() -> toga.Label: - skip_on_platforms("android", "iOS", "macOS") + skip_on_platforms("android", "iOS") return toga.Label("hello, this is a label") @@ -37,17 +38,23 @@ async def test_use_system_font_fallback( async def test_font_options(widget: toga.Label, widget_probe: Any): """Every combination of weight, style and variant can be used on a font.""" - for font_weight in FONT_WEIGHTS: - for font_style in FONT_STYLES: - for font_variant in FONT_VARIANTS: - widget.style.font_style = font_style - widget.style.font_variant = font_variant - widget.style.font_weight = font_weight - await widget_probe.redraw( - f"Using a {font_weight} {font_style} {font_variant} font" - ) + for font_family in SYSTEM_DEFAULT_FONTS: + for font_weight in FONT_WEIGHTS: + for font_style in FONT_STYLES: + for font_variant in FONT_VARIANTS: + widget.style.font_family = font_family + widget.style.font_style = font_style + widget.style.font_variant = font_variant + widget.style.font_weight = font_weight + await widget_probe.redraw( + f"Using a {font_family} {font_weight} {font_style} {font_variant} font" + ) - widget_probe.assert_font_options(font_weight, font_style, font_variant) + widget_probe.assert_font_family(font_family) + + widget_probe.assert_font_options( + font_weight, font_style, font_variant + ) @pytest.mark.parametrize( @@ -83,6 +90,9 @@ async def test_font_file_loaded( capsys: pytest.CaptureFixture[str], ): """Custom fonts can be loaded and used.""" + if not widget_probe.supports_custom_fonts: + pytest.skip("Platform doesn't support registering and loading custom fonts") + Font.register( family=font_family, path=app.paths.app / font_path, @@ -130,8 +140,15 @@ async def test_non_existent_font_file(widget: toga.Label, app: toga.App): widget.style.font_family = "non-existent" -async def test_corrupted_font_file(widget: toga.Label, app: toga.App): +async def test_corrupted_font_file( + widget: toga.Label, + widget_probe: Any, + app: toga.App, +): "Corrupted font files fail registration" + if not widget_probe.supports_custom_fonts: + pytest.skip("Platform doesn't support registering and loading custom fonts") + Font.register( family="corrupted", path=app.paths.app / "resources" / "fonts" / "Corrupted.ttf", diff --git a/winforms/tests_backend/probe.py b/winforms/tests_backend/probe.py index 506178fb72..30a3636839 100644 --- a/winforms/tests_backend/probe.py +++ b/winforms/tests_backend/probe.py @@ -6,6 +6,7 @@ CURSIVE, FANTASY, ITALIC, + MESSAGE, MONOSPACE, OBLIQUE, SANS_SERIF, @@ -16,6 +17,8 @@ class BaseProbe: + supports_custom_fonts = True + def assert_font_options(self, weight, style, variant): assert self.font.weight == weight @@ -34,6 +37,7 @@ def assert_font_family(self, expected): assert self.font.family == { CURSIVE: "Comic Sans MS", FANTASY: "Impact", + MESSAGE: SystemFonts.MenuFont.FontFamily.Name, MONOSPACE: FontFamily.GenericMonospace.Name, SANS_SERIF: FontFamily.GenericSansSerif.Name, SERIF: FontFamily.GenericSerif.Name, From 0d329131b2582bebc6271fee11e3308471a103e3 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 3 Jul 2023 16:32:26 +0800 Subject: [PATCH 42/61] Restructure font probe into a standalone mixin. --- cocoa/src/toga_cocoa/fonts.py | 3 +- cocoa/tests_backend/fonts.py | 62 ++++++++++++++ cocoa/tests_backend/probe.py | 48 ----------- cocoa/tests_backend/widgets/base.py | 7 +- cocoa/tests_backend/widgets/button.py | 6 +- cocoa/tests_backend/widgets/label.py | 6 +- .../widgets/multilinetextinput.py | 4 +- cocoa/tests_backend/widgets/numberinput.py | 4 +- cocoa/tests_backend/widgets/properties.py | 15 ---- cocoa/tests_backend/widgets/switch.py | 5 -- cocoa/tests_backend/widgets/textinput.py | 4 +- core/src/toga/fonts.py | 5 +- gtk/tests_backend/fonts.py | 44 ++++++++++ gtk/tests_backend/probe.py | 10 --- gtk/tests_backend/widgets/base.py | 7 +- .../widgets/multilinetextinput.py | 4 +- gtk/tests_backend/widgets/properties.py | 21 +---- gtk/tests_backend/widgets/switch.py | 4 +- testbed/tests/conftest.py | 22 ----- testbed/tests/test_fonts.py | 84 +++++++++++-------- testbed/tests/widgets/properties.py | 40 ++++----- winforms/tests_backend/fonts.py | 52 ++++++++++++ winforms/tests_backend/probe.py | 42 ---------- winforms/tests_backend/widgets/base.py | 7 +- winforms/tests_backend/widgets/properties.py | 12 --- 25 files changed, 260 insertions(+), 258 deletions(-) create mode 100644 cocoa/tests_backend/fonts.py create mode 100644 gtk/tests_backend/fonts.py create mode 100644 winforms/tests_backend/fonts.py diff --git a/cocoa/src/toga_cocoa/fonts.py b/cocoa/src/toga_cocoa/fonts.py index 562a99bdea..a1665f3e0d 100644 --- a/cocoa/src/toga_cocoa/fonts.py +++ b/cocoa/src/toga_cocoa/fonts.py @@ -74,7 +74,7 @@ def __init__(self, interface): MONOSPACE: "Courier New", }.get(self.interface.family, self.interface.family) - font = NSFont.fontWithName(family, size=self.interface.size) + font = NSFont.fontWithName(family, size=font_size) if font is None: print( @@ -93,6 +93,7 @@ def __init__(self, interface): attributes_mask |= NSFontMask.Italic.value if self.interface.variant == SMALL_CAPS: attributes_mask |= NSFontMask.SmallCaps.value + if attributes_mask: # If there is no font with the requested traits, this returns the original # font unchanged. diff --git a/cocoa/tests_backend/fonts.py b/cocoa/tests_backend/fonts.py new file mode 100644 index 0000000000..31c32bdce6 --- /dev/null +++ b/cocoa/tests_backend/fonts.py @@ -0,0 +1,62 @@ +from toga.fonts import ( + BOLD, + CURSIVE, + FANTASY, + ITALIC, + MESSAGE, + MONOSPACE, + NORMAL, + OBLIQUE, + SANS_SERIF, + SERIF, + SMALL_CAPS, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) +from toga_cocoa.libs.appkit import NSFont, NSFontMask + + +class FontMixin: + supports_custom_fonts = False + + def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): + # Cocoa's FANTASY (Papyrus) and CURSIVE (Apple Chancery) system + # fonts don't have any bold/italic variants. + if str(self.font.familyName) == "Papyrus": + print("Ignoring options on FANTASY system font") + return + elif str(self.font.familyName) == "Apple Chancery": + print("Ignoring options on CURSIVE system font") + return + + traits = self.font.fontDescriptor.symbolicTraits + + assert (BOLD if traits & NSFontMask.Bold else NORMAL) == weight + + if style == OBLIQUE: + print("Intepreting OBLIQUE font as ITALIC") + assert bool(traits & NSFontMask.Italic) + else: + assert ITALIC if traits & NSFontMask.Italic else NORMAL == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert NORMAL == variant + + def assert_font_size(self, expected): + if expected == SYSTEM_DEFAULT_FONT_SIZE: + assert self.font.pointSize == NSFont.systemFontSize + else: + assert self.font.pointSize == expected + + def assert_font_family(self, expected): + assert str(self.font.familyName) == { + CURSIVE: "Apple Chancery", + FANTASY: "Papyrus", + MONOSPACE: "Courier New", + SANS_SERIF: "Helvetica", + SERIF: "Times", + SYSTEM: ".AppleSystemUIFont", + MESSAGE: ".AppleSystemUIFont", + }.get(expected, expected) diff --git a/cocoa/tests_backend/probe.py b/cocoa/tests_backend/probe.py index e2ad496cbb..d28bfc049c 100644 --- a/cocoa/tests_backend/probe.py +++ b/cocoa/tests_backend/probe.py @@ -4,18 +4,6 @@ from rubicon.objc import SEL, NSArray, NSObject, ObjCClass, objc_method from rubicon.objc.api import NSString -from toga.fonts import ( - CURSIVE, - FANTASY, - ITALIC, - MESSAGE, - MONOSPACE, - OBLIQUE, - SANS_SERIF, - SERIF, - SMALL_CAPS, - SYSTEM, -) from toga_cocoa.libs.appkit import appkit NSRunLoop = ObjCClass("NSRunLoop") @@ -36,8 +24,6 @@ def onEvent(self): class BaseProbe: - supports_custom_fonts = False - def __init__(self): self.event_listener = EventListener.alloc().init() @@ -60,40 +46,6 @@ async def post_event(self, event, delay=None): ) await self.event_listener.event.wait() - def assert_font_options(self, weight, style, variant): - # Cocoa's FANTASY (Papyrus) and CURSIVE (Apple Chancery) system - # fonts don't have any bold/italic variants. - if self.font.family == "Papyrus": - print("Ignoring options on FANTASY system font") - return - elif self.font.family == "Apple Chancery": - print("Ignoring options on CURSIVE system font") - return - - assert self.font.weight == weight - - if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") - assert self.font.style == ITALIC - else: - assert self.font.style == style - - if variant == SMALL_CAPS: - print("Ignoring SMALL CAPS font test") - else: - assert self.font.variant == variant - - def assert_font_family(self, expected): - assert self.font.family == { - CURSIVE: "Apple Chancery", - FANTASY: "Papyrus", - MONOSPACE: "Courier New", - SANS_SERIF: "Helvetica", - SERIF: "Times", - SYSTEM: ".AppleSystemUIFont", - MESSAGE: ".AppleSystemUIFont", - }.get(expected, expected) - async def redraw(self, message=None, delay=None): """Request a redraw of the app, waiting until that redraw has completed.""" if self.app.run_slow: diff --git a/cocoa/tests_backend/widgets/base.py b/cocoa/tests_backend/widgets/base.py index 83edbf7b1f..f84a244bee 100644 --- a/cocoa/tests_backend/widgets/base.py +++ b/cocoa/tests_backend/widgets/base.py @@ -3,11 +3,12 @@ from toga.colors import TRANSPARENT from toga_cocoa.libs import NSEvent, NSEventType +from ..fonts import FontMixin from ..probe import BaseProbe from .properties import toga_color -class SimpleProbe(BaseProbe): +class SimpleProbe(BaseProbe, FontMixin): def __init__(self, widget): super().__init__() self.app = widget.app @@ -90,6 +91,10 @@ def background_color(self): else: return TRANSPARENT + @property + def font(self): + return self.native.font + async def press(self): self.native.performClick(None) diff --git a/cocoa/tests_backend/widgets/button.py b/cocoa/tests_backend/widgets/button.py index 2f6219df39..2746e88f1e 100644 --- a/cocoa/tests_backend/widgets/button.py +++ b/cocoa/tests_backend/widgets/button.py @@ -4,7 +4,7 @@ from toga_cocoa.libs import NSBezelStyle, NSButton, NSFont from .base import SimpleProbe -from .properties import toga_color, toga_font +from .properties import toga_color class ButtonProbe(SimpleProbe): @@ -18,10 +18,6 @@ def text(self): def color(self): xfail("Can't get/set the text color of a button on macOS") - @property - def font(self): - return toga_font(self.native.font) - @property def background_color(self): if self.native.bezelColor: diff --git a/cocoa/tests_backend/widgets/label.py b/cocoa/tests_backend/widgets/label.py index e89cb423ba..ee4d681c61 100644 --- a/cocoa/tests_backend/widgets/label.py +++ b/cocoa/tests_backend/widgets/label.py @@ -1,7 +1,7 @@ from toga_cocoa.libs import NSTextField from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class LabelProbe(SimpleProbe): @@ -15,10 +15,6 @@ def text(self): def color(self): return toga_color(self.native.textColor) - @property - def font(self): - return toga_font(self.native.font) - @property def alignment(self): return toga_alignment(self.native.alignment) diff --git a/cocoa/tests_backend/widgets/multilinetextinput.py b/cocoa/tests_backend/widgets/multilinetextinput.py index ae347b3433..0b9246d09b 100644 --- a/cocoa/tests_backend/widgets/multilinetextinput.py +++ b/cocoa/tests_backend/widgets/multilinetextinput.py @@ -2,7 +2,7 @@ from toga_cocoa.libs import NSScrollView, NSTextView from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class MultilineTextInputProbe(SimpleProbe): @@ -55,7 +55,7 @@ def background_color(self): @property def font(self): - return toga_font(self.native_text.font) + return self.native_text.font @property def alignment(self): diff --git a/cocoa/tests_backend/widgets/numberinput.py b/cocoa/tests_backend/widgets/numberinput.py index 3bc80a6d48..30394f95c3 100644 --- a/cocoa/tests_backend/widgets/numberinput.py +++ b/cocoa/tests_backend/widgets/numberinput.py @@ -10,7 +10,7 @@ ) from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class NumberInputProbe(SimpleProbe): @@ -82,7 +82,7 @@ def background_color(self): @property def font(self): - return toga_font(self.native_input.font) + return self.native_input.font @property def alignment(self): diff --git a/cocoa/tests_backend/widgets/properties.py b/cocoa/tests_backend/widgets/properties.py index 66a33ff3a5..85375bcb0d 100644 --- a/cocoa/tests_backend/widgets/properties.py +++ b/cocoa/tests_backend/widgets/properties.py @@ -1,11 +1,7 @@ -from travertino.fonts import Font - from toga.colors import rgba -from toga.fonts import BOLD, ITALIC, NORMAL from toga.style.pack import CENTER, JUSTIFY, LEFT, RIGHT from toga_cocoa.libs.appkit import ( NSCenterTextAlignment, - NSFontMask, NSJustifiedTextAlignment, NSLeftTextAlignment, NSRightTextAlignment, @@ -24,17 +20,6 @@ def toga_color(color): return None -def toga_font(font): - traits = font.fontDescriptor.symbolicTraits - return Font( - family=str(font.familyName), - size=font.pointSize, - style=ITALIC if traits & NSFontMask.Italic else NORMAL, - variant=NORMAL, - weight=BOLD if traits & NSFontMask.Bold else NORMAL, - ) - - def toga_alignment(alignment): return { NSLeftTextAlignment: LEFT, diff --git a/cocoa/tests_backend/widgets/switch.py b/cocoa/tests_backend/widgets/switch.py index ce6f5d7391..9f314e3bbd 100644 --- a/cocoa/tests_backend/widgets/switch.py +++ b/cocoa/tests_backend/widgets/switch.py @@ -3,7 +3,6 @@ from toga_cocoa.libs import NSButton from .base import SimpleProbe -from .properties import toga_font class SwitchProbe(SimpleProbe): @@ -16,7 +15,3 @@ def text(self): @property def color(self): xfail("Can't get/set the text color of a button on macOS") - - @property - def font(self): - return toga_font(self.native.font) diff --git a/cocoa/tests_backend/widgets/textinput.py b/cocoa/tests_backend/widgets/textinput.py index ad430fba17..1001dab198 100644 --- a/cocoa/tests_backend/widgets/textinput.py +++ b/cocoa/tests_backend/widgets/textinput.py @@ -8,7 +8,7 @@ ) from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class TextInputProbe(SimpleProbe): @@ -56,7 +56,7 @@ def background_color(self): @property def font(self): - return toga_font(self.native.font) + return self.native.font @property def alignment(self): diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 3b4fac9129..ef8e65ebd9 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -1,10 +1,10 @@ # Use the Travertino font definitions as-is from travertino import constants -from travertino.constants import ITALIC # noqa: F401 -from travertino.constants import ( # noqa: F401 +from travertino.constants import ( BOLD, CURSIVE, FANTASY, + ITALIC, MESSAGE, MONOSPACE, NORMAL, @@ -14,7 +14,6 @@ SMALL_CAPS, SYSTEM, ) -from travertino.fonts import font # noqa: F401 from travertino.fonts import Font as BaseFont import toga diff --git a/gtk/tests_backend/fonts.py b/gtk/tests_backend/fonts.py new file mode 100644 index 0000000000..f82641e7e9 --- /dev/null +++ b/gtk/tests_backend/fonts.py @@ -0,0 +1,44 @@ +from toga.fonts import ( + BOLD, + ITALIC, + NORMAL, + OBLIQUE, + SMALL_CAPS, + SYSTEM_DEFAULT_FONT_SIZE, +) +from toga_gtk.libs import Pango + + +class FontMixin: + supports_custom_fonts = True + + def assert_font_family(self, expected): + assert self.font.get_family().split(",")[0] == expected + + def assert_font_size(self, expected): + # GTK fonts aren't realized until they appear on a widget. + # The actual system default size is determined by the widget theme. + # So - if the font size reports as 0, it must be a default system + # font size that hasn't been realized yet. Once a font has been realized, + # we can't reliably determine what the system font size is, other than + # knowing that it must be non-zero. Pick some reasonable bounds instead. + if self.font.get_size() == 0: + assert expected == SYSTEM_DEFAULT_FONT_SIZE + elif expected == SYSTEM_DEFAULT_FONT_SIZE: + assert 8 < int(self.font.get_size() / Pango.SCALE) < 18 + else: + assert int(self.font.get_size() / Pango.SCALE) == expected + + def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): + assert { + Pango.Weight.BOLD: BOLD, + }.get(self.font.get_weight(), NORMAL) == weight + + assert { + Pango.Style.ITALIC: ITALIC, + Pango.Style.OBLIQUE: OBLIQUE, + }.get(self.font.get_style(), NORMAL) == style + + assert { + Pango.Variant.SMALL_CAPS: SMALL_CAPS, + }.get(self.font.get_variant(), NORMAL) == variant diff --git a/gtk/tests_backend/probe.py b/gtk/tests_backend/probe.py index 7332fccc28..597c0a5470 100644 --- a/gtk/tests_backend/probe.py +++ b/gtk/tests_backend/probe.py @@ -4,16 +4,6 @@ class BaseProbe: - supports_custom_fonts = True - - def assert_font_family(self, expected): - assert self.font.family == expected - - def assert_font_options(self, weight, style, variant): - assert self.font.weight == weight - assert self.font.style == style - assert self.font.variant == variant - def repaint_needed(self): return Gtk.events_pending() diff --git a/gtk/tests_backend/widgets/base.py b/gtk/tests_backend/widgets/base.py index 1d467e7f53..16a2d995e1 100644 --- a/gtk/tests_backend/widgets/base.py +++ b/gtk/tests_backend/widgets/base.py @@ -2,11 +2,12 @@ from toga_gtk.libs import Gdk, Gtk +from ..fonts import FontMixin from ..probe import BaseProbe -from .properties import toga_color, toga_font +from .properties import toga_color -class SimpleProbe(BaseProbe): +class SimpleProbe(BaseProbe, FontMixin): def __init__(self, widget): super().__init__() self.app = widget.app @@ -97,7 +98,7 @@ def background_color(self): @property def font(self): sc = self.native.get_style_context() - return toga_font(sc.get_property("font", sc.get_state())) + return sc.get_property("font", sc.get_state()) @property def is_hidden(self): diff --git a/gtk/tests_backend/widgets/multilinetextinput.py b/gtk/tests_backend/widgets/multilinetextinput.py index 5f38643b95..ffc76b3b9d 100644 --- a/gtk/tests_backend/widgets/multilinetextinput.py +++ b/gtk/tests_backend/widgets/multilinetextinput.py @@ -1,7 +1,7 @@ from toga_gtk.libs import Gtk from .base import SimpleProbe -from .properties import toga_alignment_from_justification, toga_color, toga_font +from .properties import toga_alignment_from_justification, toga_color class MultilineTextInputProbe(SimpleProbe): @@ -83,7 +83,7 @@ def background_color(self): @property def font(self): sc = self.native_textview.get_style_context() - return toga_font(sc.get_property("font", sc.get_state())) + return sc.get_property("font", sc.get_state()) @property def alignment(self): diff --git a/gtk/tests_backend/widgets/properties.py b/gtk/tests_backend/widgets/properties.py index 0dd6c5d810..d341975361 100644 --- a/gtk/tests_backend/widgets/properties.py +++ b/gtk/tests_backend/widgets/properties.py @@ -1,10 +1,8 @@ import pytest -from travertino.fonts import Font from toga.colors import TRANSPARENT, rgba -from toga.fonts import BOLD, ITALIC, NORMAL, OBLIQUE, SMALL_CAPS from toga.style.pack import BOTTOM, CENTER, JUSTIFY, LEFT, RIGHT, TOP -from toga_gtk.libs import Gtk, Pango +from toga_gtk.libs import Gtk def toga_color(color): @@ -25,23 +23,6 @@ def toga_color(color): return None -def toga_font(font): - return Font( - family=font.get_family(), - size=int(font.get_size() / Pango.SCALE), - style={ - Pango.Style.ITALIC: ITALIC, - Pango.Style.OBLIQUE: OBLIQUE, - }.get(font.get_style(), NORMAL), - weight={ - Pango.Weight.BOLD: BOLD, - }.get(font.get_weight(), NORMAL), - variant={ - Pango.Variant.SMALL_CAPS: SMALL_CAPS, - }.get(font.get_variant(), NORMAL), - ) - - def toga_xalignment(xalign, justify=None): try: return { diff --git a/gtk/tests_backend/widgets/switch.py b/gtk/tests_backend/widgets/switch.py index a96769f3d9..4a87668992 100644 --- a/gtk/tests_backend/widgets/switch.py +++ b/gtk/tests_backend/widgets/switch.py @@ -1,7 +1,7 @@ from toga_gtk.libs import Gtk from .base import SimpleProbe -from .properties import toga_color, toga_font +from .properties import toga_color class SwitchProbe(SimpleProbe): @@ -28,7 +28,7 @@ def color(self): @property def font(self): sc = self.native_label.get_style_context() - return toga_font(sc.get_property("font", sc.get_state())) + return sc.get_property("font", sc.get_state()) def assert_width(self, min_width, max_width): super().assert_width(min_width, max_width) diff --git a/testbed/tests/conftest.py b/testbed/tests/conftest.py index 487d25c335..66a4b533f2 100644 --- a/testbed/tests/conftest.py +++ b/testbed/tests/conftest.py @@ -46,28 +46,6 @@ def event_loop(app): return ProxyEventLoop(app._impl.loop) -# Identical to widgets/probe, but usable by all tests. -# Should replace generic "probe" fixture when window_probe and others are added -@fixture -async def widget_probe(main_window, widget): - box = toga.Box(children=[widget]) - main_window.content = box - - probe = get_widget_probe(widget) - await probe.redraw(f"\nConstructing {widget.__class__.__name__} probe") - probe.assert_container(box) - - yield probe - - main_window.content = toga.Box() - - -def get_widget_probe(widget): - name = type(widget).__name__ - module = import_module(f"tests_backend.widgets.{name.lower()}") - return getattr(module, f"{name}Probe")(widget) - - # Proxy which forwards all tasks to another event loop in a thread-safe manner. It # implements only the methods used by pytest-asyncio. @dataclass diff --git a/testbed/tests/test_fonts.py b/testbed/tests/test_fonts.py index 3daf62a859..90f9eabc9f 100644 --- a/testbed/tests/test_fonts.py +++ b/testbed/tests/test_fonts.py @@ -1,4 +1,4 @@ -from typing import Any +from importlib import import_module import pytest @@ -10,51 +10,67 @@ FONT_WEIGHTS, ITALIC, SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, SYSTEM_DEFAULT_FONTS, Font, ) -from .conftest import skip_on_platforms + +# Fully testing fonts requires a manifested widget. +@pytest.fixture +async def widget(): + return toga.Label("This is a font test") @pytest.fixture -async def widget() -> toga.Label: - skip_on_platforms("android", "iOS") - return toga.Label("hello, this is a label") +async def font_probe(main_window, widget): + box = toga.Box(children=[widget]) + main_window.content = box + + module = import_module("tests_backend.widgets.label") + probe = getattr(module, "LabelProbe")(widget) + await probe.redraw("\nConstructing Font probe") + probe.assert_container(box) + + yield probe + + main_window.content = toga.Box() async def test_use_system_font_fallback( widget: toga.Label, - widget_probe: Any, + font_probe, capsys: pytest.CaptureFixture[str], ): """If an unknown font is requested, the system font is used as a fallback.""" - widget_probe.assert_font_family(SYSTEM) + font_probe.assert_font_family(SYSTEM) widget.style.font_family = "unknown" - await widget_probe.redraw("Falling back to system font") + await font_probe.redraw("Falling back to system font") assert "using system font as a fallback" in capsys.readouterr().out -async def test_font_options(widget: toga.Label, widget_probe: Any): +async def test_font_options(widget: toga.Label, font_probe): """Every combination of weight, style and variant can be used on a font.""" for font_family in SYSTEM_DEFAULT_FONTS: - for font_weight in FONT_WEIGHTS: - for font_style in FONT_STYLES: - for font_variant in FONT_VARIANTS: - widget.style.font_family = font_family - widget.style.font_style = font_style - widget.style.font_variant = font_variant - widget.style.font_weight = font_weight - await widget_probe.redraw( - f"Using a {font_family} {font_weight} {font_style} {font_variant} font" - ) - - widget_probe.assert_font_family(font_family) - - widget_probe.assert_font_options( - font_weight, font_style, font_variant - ) + for font_size in [20, SYSTEM_DEFAULT_FONT_SIZE]: + for font_weight in FONT_WEIGHTS: + for font_style in FONT_STYLES: + for font_variant in FONT_VARIANTS: + widget.style.font_family = font_family + widget.style.font_size = font_size + widget.style.font_style = font_style + widget.style.font_variant = font_variant + widget.style.font_weight = font_weight + await font_probe.redraw( + f"Using a {font_family} {font_size} {font_weight} {font_style} {font_variant} font" + ) + + font_probe.assert_font_family(font_family) + font_probe.assert_font_size(font_size) + font_probe.assert_font_options( + font_weight, font_style, font_variant + ) @pytest.mark.parametrize( @@ -83,34 +99,34 @@ async def test_font_options(widget: toga.Label, widget_probe: Any): async def test_font_file_loaded( app: toga.App, widget: toga.Label, - widget_probe: Any, + font_probe, font_family: str, font_path: str, font_kwargs, capsys: pytest.CaptureFixture[str], ): """Custom fonts can be loaded and used.""" - if not widget_probe.supports_custom_fonts: - pytest.skip("Platform doesn't support registering and loading custom fonts") - Font.register( family=font_family, path=app.paths.app / font_path, **font_kwargs, ) + if not font_probe.supports_custom_fonts: + pytest.skip("Platform doesn't support loading custom fonts") + # Update widget font family and other options if needed widget.style.font_family = font_family for prop, value in font_kwargs.items(): widget.style.update( **{f"font_{kwarg}": value for kwarg, value in font_kwargs.items()} ) - await widget_probe.redraw(f"Using {font_family} {' '.join(font_kwargs.values())}") + await font_probe.redraw(f"Using {font_family} {' '.join(font_kwargs.values())}") # Check that font properties are updated - widget_probe.assert_font_family(font_family) + font_probe.assert_font_family(font_family) for prop, value in font_kwargs.items(): - assert getattr(widget_probe.font, prop) == value + assert getattr(font_probe.font, prop) == value # Ensure the font was actually loaded. stdout = capsys.readouterr().out @@ -142,11 +158,11 @@ async def test_non_existent_font_file(widget: toga.Label, app: toga.App): async def test_corrupted_font_file( widget: toga.Label, - widget_probe: Any, + font_probe, app: toga.App, ): "Corrupted font files fail registration" - if not widget_probe.supports_custom_fonts: + if not font_probe.supports_custom_fonts: pytest.skip("Platform doesn't support registering and loading custom fonts") Font.register( diff --git a/testbed/tests/widgets/properties.py b/testbed/tests/widgets/properties.py index 79d2e2a2ad..ac9798997d 100644 --- a/testbed/tests/widgets/properties.py +++ b/testbed/tests/widgets/properties.py @@ -3,7 +3,15 @@ from pytest import approx from toga.colors import CORNFLOWERBLUE, RED, TRANSPARENT, color as named_color -from toga.fonts import BOLD, FANTASY, ITALIC, NORMAL, SERIF, SYSTEM +from toga.fonts import ( + BOLD, + FANTASY, + ITALIC, + NORMAL, + SERIF, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) from toga.style.pack import CENTER, COLUMN, JUSTIFY, LEFT, LTR, RIGHT, RTL from ..assertions import assert_color @@ -278,20 +286,14 @@ async def test_font(widget, probe, verify_font_sizes): orig_width = probe.width if verify_font_sizes[1]: orig_height = probe.height - orig_font = probe.font probe.assert_font_family(SYSTEM) + probe.assert_font_size(SYSTEM_DEFAULT_FONT_SIZE) + probe.assert_font_options(weight=NORMAL, variant=NORMAL, style=NORMAL) - # Set the font to larger than its original size - widget.style.font_size = orig_font.size * 3 + # Set the font to be large + widget.style.font_size = 30 await probe.redraw("Widget font should be larger than its original size") - - # Widget has a new font size - new_size_font = probe.font - # Font size in points is an integer; however, some platforms - # perform rendering in pixels (or device independent pixels, - # so round-tripping points->pixels->points through the probe - # can result in rounding errors. - assert (orig_font.size * 2.5) < new_size_font.size < (orig_font.size * 3.5) + probe.assert_font_size(30) # Widget should be taller and wider if verify_font_sizes[0]: @@ -304,11 +306,11 @@ async def test_font(widget, probe, verify_font_sizes): await probe.redraw("Widget font should be changed to FANTASY") # Font family has been changed - new_family_font = probe.font probe.assert_font_family(FANTASY) # Font size hasn't changed - assert new_family_font.size == new_size_font.size + probe.assert_font_size(30) + # Widget should still be taller and wider than the original if verify_font_sizes[0]: assert probe.width > orig_width @@ -321,7 +323,9 @@ async def test_font(widget, probe, verify_font_sizes): await probe.redraw( message="Widget text should be reset to original family and size" ) - assert probe.font == orig_font + probe.assert_font_family(SYSTEM) + probe.assert_font_size(SYSTEM_DEFAULT_FONT_SIZE) + probe.assert_font_options(weight=NORMAL, variant=NORMAL, style=NORMAL) if verify_font_sizes[0] and probe.shrink_on_resize: assert probe.width == orig_width if verify_font_sizes[1]: @@ -330,8 +334,7 @@ async def test_font(widget, probe, verify_font_sizes): async def test_font_attrs(widget, probe): "The font weight and style of a widget can be changed." - assert probe.font.weight == NORMAL - assert probe.font.style == NORMAL + probe.assert_font_options(weight=NORMAL, style=NORMAL) for family in [SYSTEM, SERIF]: widget.style.font_family = family @@ -343,8 +346,7 @@ async def test_font_attrs(widget, probe): message=f"Widget text font should be {family} {weight} {style}" ) probe.assert_font_family(family) - assert probe.font.weight == weight - assert probe.font.style == style + probe.assert_font_options(weight=weight, style=style) async def test_color(widget, probe): diff --git a/winforms/tests_backend/fonts.py b/winforms/tests_backend/fonts.py new file mode 100644 index 0000000000..f08ce22228 --- /dev/null +++ b/winforms/tests_backend/fonts.py @@ -0,0 +1,52 @@ +from System.Drawing import FontFamily, SystemFonts + +from toga.fonts import ( + BOLD, + CURSIVE, + FANTASY, + ITALIC, + MESSAGE, + MONOSPACE, + NORMAL, + OBLIQUE, + SANS_SERIF, + SERIF, + SMALL_CAPS, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) + + +class FontMixin: + supports_custom_fonts = True + + def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): + assert BOLD if self.font.Bold else NORMAL == weight + + if style == OBLIQUE: + print("Intepreting OBLIQUE font as ITALIC") + assert self.font.Italic + else: + assert (ITALIC if self.font.Italic else NORMAL) == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert NORMAL == variant + + def assert_font_size(self, expected): + if expected == SYSTEM_DEFAULT_FONT_SIZE: + assert int(self.font.SizeInPoints) == int(SystemFonts.DefaultFont.Size) + else: + assert int(self.font.SizeInPoints) == expected + + def assert_font_family(self, expected): + assert str(self.font.Name) == { + CURSIVE: "Comic Sans MS", + FANTASY: "Impact", + MESSAGE: SystemFonts.MenuFont.FontFamily.Name, + MONOSPACE: FontFamily.GenericMonospace.Name, + SANS_SERIF: FontFamily.GenericSansSerif.Name, + SERIF: FontFamily.GenericSerif.Name, + SYSTEM: SystemFonts.DefaultFont.FontFamily.Name, + }.get(expected, expected) diff --git a/winforms/tests_backend/probe.py b/winforms/tests_backend/probe.py index 30a3636839..1396bc1f1b 100644 --- a/winforms/tests_backend/probe.py +++ b/winforms/tests_backend/probe.py @@ -1,49 +1,7 @@ import asyncio -from System.Drawing import FontFamily, SystemFonts - -from toga.fonts import ( - CURSIVE, - FANTASY, - ITALIC, - MESSAGE, - MONOSPACE, - OBLIQUE, - SANS_SERIF, - SERIF, - SMALL_CAPS, - SYSTEM, -) - class BaseProbe: - supports_custom_fonts = True - - def assert_font_options(self, weight, style, variant): - assert self.font.weight == weight - - if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") - assert self.font.style == ITALIC - else: - assert self.font.style == style - - if variant == SMALL_CAPS: - print("Ignoring SMALL CAPS font test") - else: - assert self.font.variant == variant - - def assert_font_family(self, expected): - assert self.font.family == { - CURSIVE: "Comic Sans MS", - FANTASY: "Impact", - MESSAGE: SystemFonts.MenuFont.FontFamily.Name, - MONOSPACE: FontFamily.GenericMonospace.Name, - SANS_SERIF: FontFamily.GenericSansSerif.Name, - SERIF: FontFamily.GenericSerif.Name, - SYSTEM: SystemFonts.DefaultFont.FontFamily.Name, - }.get(expected, expected) - async def redraw(self, message=None, delay=None): """Request a redraw of the app, waiting until that redraw has completed.""" # Winforms style changes always take effect immediately. diff --git a/winforms/tests_backend/widgets/base.py b/winforms/tests_backend/widgets/base.py index 7b4576ca51..310a8dafb0 100644 --- a/winforms/tests_backend/widgets/base.py +++ b/winforms/tests_backend/widgets/base.py @@ -6,8 +6,9 @@ from toga.colors import TRANSPARENT from toga.style.pack import JUSTIFY, LEFT +from ..fonts import FontMixin from ..probe import BaseProbe -from .properties import toga_color, toga_font +from .properties import toga_color KEY_CODES = { f"<{name}>": f"{{{name.upper()}}}" @@ -20,7 +21,7 @@ ) -class SimpleProbe(BaseProbe): +class SimpleProbe(BaseProbe, FontMixin): fixed_height = None def __init__(self, widget): @@ -71,7 +72,7 @@ def background_color(self): @property def font(self): - return toga_font(self.native.Font) + return self.native.Font @property def hidden(self): diff --git a/winforms/tests_backend/widgets/properties.py b/winforms/tests_backend/widgets/properties.py index 7eb444c163..332191bac9 100644 --- a/winforms/tests_backend/widgets/properties.py +++ b/winforms/tests_backend/widgets/properties.py @@ -1,9 +1,7 @@ from System.Drawing import Color, ContentAlignment, SystemColors from System.Windows.Forms import HorizontalAlignment -from travertino.fonts import Font from toga.colors import TRANSPARENT, rgba -from toga.fonts import BOLD, ITALIC, NORMAL from toga.style.pack import BOTTOM, CENTER, LEFT, RIGHT, TOP @@ -14,16 +12,6 @@ def toga_color(color): return rgba(color.R, color.G, color.B, color.A / 255) -def toga_font(font): - return Font( - family=str(font.Name), - size=int(font.SizeInPoints), - style=ITALIC if font.Italic else NORMAL, - variant=NORMAL, - weight=BOLD if font.Bold else NORMAL, - ) - - def toga_xalignment(alignment): return { ContentAlignment.TopLeft: LEFT, From d246db465d2ca5ea7b4a7af76baa787790a66d31 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 3 Jul 2023 16:38:31 +0800 Subject: [PATCH 43/61] 100% coverage for iOS fonts. --- iOS/src/toga_iOS/fonts.py | 83 ++++++++++++++---------- iOS/src/toga_iOS/widgets/canvas.py | 12 +++- iOS/tests_backend/fonts.py | 65 +++++++++++++++++++ iOS/tests_backend/probe.py | 16 ----- iOS/tests_backend/widgets/base.py | 7 +- iOS/tests_backend/widgets/button.py | 4 +- iOS/tests_backend/widgets/label.py | 6 +- iOS/tests_backend/widgets/numberinput.py | 6 +- iOS/tests_backend/widgets/properties.py | 15 ----- iOS/tests_backend/widgets/selection.py | 6 +- iOS/tests_backend/widgets/switch.py | 4 +- iOS/tests_backend/widgets/textinput.py | 6 +- 12 files changed, 138 insertions(+), 92 deletions(-) create mode 100644 iOS/tests_backend/fonts.py diff --git a/iOS/src/toga_iOS/fonts.py b/iOS/src/toga_iOS/fonts.py index aac6bb60b8..c0e7943bc9 100644 --- a/iOS/src/toga_iOS/fonts.py +++ b/iOS/src/toga_iOS/fonts.py @@ -1,20 +1,21 @@ -from rubicon.objc import NSMutableDictionary +from pathlib import Path from toga.fonts import ( + _REGISTERED_FONT_CACHE, BOLD, CURSIVE, FANTASY, ITALIC, MESSAGE, MONOSPACE, + OBLIQUE, SANS_SERIF, SERIF, SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, + SYSTEM_DEFAULT_FONTS, ) from toga_iOS.libs import ( - NSAttributedString, - NSFontAttributeName, UIFont, UIFontDescriptorTraitBold, UIFontDescriptorTraitItalic, @@ -29,6 +30,30 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: + font_key = self.interface.registered_font_key( + self.interface.family, + weight=self.interface.weight, + style=self.interface.style, + variant=self.interface.variant, + ) + try: + font_path = _REGISTERED_FONT_CACHE[font_key] + except KeyError: + # Not a pre-registered font + if self.interface.family not in SYSTEM_DEFAULT_FONTS: + print( + f"Unknown font '{self.interface}'; " + "using system font as a fallback" + ) + else: + if Path(font_path).is_file(): + # TODO: Load font file + self.interface.factory.not_implemented("Custom font loading") + # if corrupted font file: + # raise ValueError(f"Unable to load font file {font_path}") + else: + raise ValueError(f"Font file {font_path} could not be found") + if self.interface.size == SYSTEM_DEFAULT_FONT_SIZE: # iOS default label size is 17pt # FIXME: make this dynamic. @@ -37,55 +62,43 @@ def __init__(self, interface): size = self.interface.size if self.interface.family == SYSTEM: - font = UIFont.systemFontOfSize(size) + base_font = UIFont.systemFontOfSize(size) elif self.interface.family == MESSAGE: - font = UIFont.messageFontOfSize(size) + base_font = UIFont.systemFontOfSize(size) else: - if self.interface.family is SERIF: - family = "Times-Roman" - elif self.interface.family is SANS_SERIF: - family = "Helvetica" - elif self.interface.family is CURSIVE: - family = "Apple Chancery" - elif self.interface.family is FANTASY: - family = "Papyrus" - elif self.interface.family is MONOSPACE: - family = "Courier New" - else: - family = self.interface.family + family = { + SERIF: "Times-Roman", + SANS_SERIF: "Helvetica", + CURSIVE: "Snell Roundhand", + FANTASY: "Papyrus", + MONOSPACE: "Courier New", + }.get(self.interface.family, self.interface.family) - font = UIFont.fontWithName(family, size=size) - if font is None: + base_font = UIFont.fontWithName(family, size=size) + if base_font is None: print(f"Unable to load font: {size}pt {family}") - font = UIFont.systemFontOfSize(size) + base_font = UIFont.systemFontOfSize(size) # Convert the base font definition into a font with all the desired traits. traits = 0 if self.interface.weight == BOLD: traits |= UIFontDescriptorTraitBold - if self.interface.style == ITALIC: + if self.interface.style in {ITALIC, OBLIQUE}: traits |= UIFontDescriptorTraitItalic + if traits: # If there is no font with the requested traits, this returns the original # font unchanged. font = UIFont.fontWithDescriptor( - font.fontDescriptor.fontDescriptorWithSymbolicTraits(traits), + base_font.fontDescriptor.fontDescriptorWithSymbolicTraits(traits), size=size, ) + # If the traits conversion failed, fall back to the default font. + if font is None: + font = base_font + else: + font = base_font _FONT_CACHE[self.interface] = font.retain() self.native = font - - def measure(self, text, tight=False): - textAttributes = NSMutableDictionary.alloc().init() - textAttributes[NSFontAttributeName] = self.native - text_string = NSAttributedString.alloc().initWithString_attributes_( - text, textAttributes - ) - size = text_string.size() - - # TODO: This is a magic fudge factor... - # Replace the magic with SCIENCE. - size.width += 3 - return size.width, size.height diff --git a/iOS/src/toga_iOS/widgets/canvas.py b/iOS/src/toga_iOS/widgets/canvas.py index 6909d62a8f..25014d79aa 100644 --- a/iOS/src/toga_iOS/widgets/canvas.py +++ b/iOS/src/toga_iOS/widgets/canvas.py @@ -203,7 +203,17 @@ def reset_transform(self, draw_context, *args, **kwargs): # Text def measure_text(self, text, font, tight=False): - return font._impl.measure(text, tight=tight) + textAttributes = NSMutableDictionary.alloc().init() + textAttributes[NSFontAttributeName] = font._impl.native + text_string = NSAttributedString.alloc().initWithString_attributes_( + text, textAttributes + ) + size = text_string.size() + + # TODO: This is a magic fudge factor... + # Replace the magic with SCIENCE. + size.width += 3 + return size.width, size.height def write_text(self, text, x, y, font, *args, **kwargs): width, height = self.measure_text(text, font) diff --git a/iOS/tests_backend/fonts.py b/iOS/tests_backend/fonts.py new file mode 100644 index 0000000000..ff1d2c2d67 --- /dev/null +++ b/iOS/tests_backend/fonts.py @@ -0,0 +1,65 @@ +from toga.fonts import ( + BOLD, + CURSIVE, + FANTASY, + ITALIC, + MESSAGE, + MONOSPACE, + NORMAL, + OBLIQUE, + SANS_SERIF, + SERIF, + SMALL_CAPS, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) +from toga_iOS.libs import ( + UIFontDescriptorTraitBold, + UIFontDescriptorTraitItalic, +) + + +class FontMixin: + supports_custom_fonts = False + + def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): + # Cocoa's FANTASY (Papyrus) and CURSIVE (Snell Roundhand) system + # fonts don't have any bold/italic variants. + if str(self.font.familyName) == "Papyrus": + print("Ignoring options on FANTASY system font") + return + elif str(self.font.familyName) == "Snell Roundhand": + print("Ignoring options on CURSIVE system font") + return + + traits = self.font.fontDescriptor.symbolicTraits + + assert (BOLD if traits & UIFontDescriptorTraitBold else NORMAL) == weight + + if style == OBLIQUE: + print("Intepreting OBLIQUE font as ITALIC") + assert bool(traits & UIFontDescriptorTraitItalic) + else: + assert ITALIC if traits & UIFontDescriptorTraitItalic else NORMAL == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert NORMAL == variant + + def assert_font_size(self, expected): + if expected == SYSTEM_DEFAULT_FONT_SIZE: + assert self.font.pointSize == 17 + else: + assert self.font.pointSize == expected + + def assert_font_family(self, expected): + assert str(self.font.familyName) == { + CURSIVE: "Snell Roundhand", + FANTASY: "Papyrus", + MONOSPACE: "Courier New", + SANS_SERIF: "Helvetica", + SERIF: "Times New Roman", + SYSTEM: ".AppleSystemUIFont", + MESSAGE: ".AppleSystemUIFont", + }.get(expected, expected) diff --git a/iOS/tests_backend/probe.py b/iOS/tests_backend/probe.py index ce5bc5fbbd..e600fb2e43 100644 --- a/iOS/tests_backend/probe.py +++ b/iOS/tests_backend/probe.py @@ -1,25 +1,9 @@ import asyncio -from toga.fonts import CURSIVE, FANTASY, MONOSPACE, SANS_SERIF, SERIF, SYSTEM from toga_iOS.libs import NSRunLoop class BaseProbe: - def assert_font_options(self, weight, style, variant): - assert self.font.weight == weight - assert self.font.style == style - assert self.font.variant == variant - - def assert_font_family(self, expected): - assert self.font.family == { - CURSIVE: "Apple Chancery", - FANTASY: "Papyrus", - MONOSPACE: "Courier New", - SANS_SERIF: "Helvetica", - SERIF: "Times New Roman", - SYSTEM: ".AppleSystemUIFont", - }.get(expected, expected) - async def redraw(self, message=None, delay=None): """Request a redraw of the app, waiting until that redraw has completed.""" # If we're running slow, wait for a second diff --git a/iOS/tests_backend/widgets/base.py b/iOS/tests_backend/widgets/base.py index c5506aff58..52adcbb6bf 100644 --- a/iOS/tests_backend/widgets/base.py +++ b/iOS/tests_backend/widgets/base.py @@ -1,5 +1,6 @@ from toga_iOS.libs import UIApplication +from ..fonts import FontMixin from ..probe import BaseProbe from .properties import toga_color @@ -31,7 +32,7 @@ UIControlEventAllEvents = 0xFFFFFFFF -class SimpleProbe(BaseProbe): +class SimpleProbe(BaseProbe, FontMixin): def __init__(self, widget): super().__init__() self.app = widget.app @@ -119,6 +120,10 @@ def assert_height(self, min_height, max_height): def background_color(self): return toga_color(self.native.backgroundColor) + @property + def font(self): + return self.native.font + async def press(self): self.native.sendActionsForControlEvents(UIControlEventTouchDown) diff --git a/iOS/tests_backend/widgets/button.py b/iOS/tests_backend/widgets/button.py index 30e4a225b6..962f3d523b 100644 --- a/iOS/tests_backend/widgets/button.py +++ b/iOS/tests_backend/widgets/button.py @@ -1,7 +1,7 @@ from toga_iOS.libs import UIButton, UIControlStateNormal from .base import SimpleProbe -from .properties import toga_color, toga_font +from .properties import toga_color class ButtonProbe(SimpleProbe): @@ -17,4 +17,4 @@ def color(self): @property def font(self): - return toga_font(self.native.titleLabel.font) + return self.native.titleLabel.font diff --git a/iOS/tests_backend/widgets/label.py b/iOS/tests_backend/widgets/label.py index f344201938..15feca8b24 100644 --- a/iOS/tests_backend/widgets/label.py +++ b/iOS/tests_backend/widgets/label.py @@ -1,7 +1,7 @@ from toga_iOS.libs import UILabel from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class LabelProbe(SimpleProbe): @@ -18,10 +18,6 @@ def text(self): def color(self): return toga_color(self.native.textColor) - @property - def font(self): - return toga_font(self.native.font) - @property def alignment(self): return toga_alignment(self.native.textAlignment) diff --git a/iOS/tests_backend/widgets/numberinput.py b/iOS/tests_backend/widgets/numberinput.py index 76f9069de5..b5a1a3bd52 100644 --- a/iOS/tests_backend/widgets/numberinput.py +++ b/iOS/tests_backend/widgets/numberinput.py @@ -4,7 +4,7 @@ from toga_iOS.libs import UITextField from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class NumberInputProbe(SimpleProbe): @@ -28,10 +28,6 @@ async def decrement(self): def color(self): return toga_color(self.native.textColor) - @property - def font(self): - return toga_font(self.native.font) - @property def alignment(self): return toga_alignment(self.native.textAlignment) diff --git a/iOS/tests_backend/widgets/properties.py b/iOS/tests_backend/widgets/properties.py index 4f5fe6c008..1259b9131b 100644 --- a/iOS/tests_backend/widgets/properties.py +++ b/iOS/tests_backend/widgets/properties.py @@ -1,10 +1,8 @@ from ctypes import byref from rubicon.objc import CGFloat -from travertino.fonts import Font from toga.colors import TRANSPARENT, rgba -from toga.fonts import BOLD, ITALIC, NORMAL from toga.style.pack import CENTER, JUSTIFY, LEFT, RIGHT from toga_iOS.libs import ( NSCenterTextAlignment, @@ -12,8 +10,6 @@ NSLeftTextAlignment, NSRightTextAlignment, UIColor, - UIFontDescriptorTraitBold, - UIFontDescriptorTraitItalic, ) @@ -37,17 +33,6 @@ def toga_color(color): return None -def toga_font(font): - traits = font.fontDescriptor.symbolicTraits - return Font( - family=str(font.familyName), - size=font.pointSize, - style=ITALIC if traits & UIFontDescriptorTraitItalic else NORMAL, - variant=NORMAL, - weight=BOLD if traits & UIFontDescriptorTraitBold else NORMAL, - ) - - def toga_alignment(alignment): return { NSLeftTextAlignment: LEFT, diff --git a/iOS/tests_backend/widgets/selection.py b/iOS/tests_backend/widgets/selection.py index 2cc829d024..41c9dbf4f4 100644 --- a/iOS/tests_backend/widgets/selection.py +++ b/iOS/tests_backend/widgets/selection.py @@ -5,7 +5,7 @@ from toga_iOS.libs import UIPickerView, UITextField from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class SelectionProbe(SimpleProbe): @@ -31,10 +31,6 @@ def assert_vertical_alignment(self, expected): def color(self): return toga_color(self.native.textColor) - @property - def font(self): - return toga_font(self.native.font) - @property def titles(self): count = self.native_picker.pickerView( diff --git a/iOS/tests_backend/widgets/switch.py b/iOS/tests_backend/widgets/switch.py index 2170d0121b..1f2523e8e0 100644 --- a/iOS/tests_backend/widgets/switch.py +++ b/iOS/tests_backend/widgets/switch.py @@ -1,7 +1,7 @@ from toga_iOS.libs import UIStackView from .base import SimpleProbe, UIControlEventValueChanged -from .properties import toga_color, toga_font +from .properties import toga_color class SwitchProbe(SimpleProbe): @@ -26,7 +26,7 @@ def color(self): @property def font(self): - return toga_font(self.native_label.font) + return self.native_label.font def assert_width(self, min_width, max_width): super().assert_width(min_width, max_width) diff --git a/iOS/tests_backend/widgets/textinput.py b/iOS/tests_backend/widgets/textinput.py index bff254d545..54bae26a73 100644 --- a/iOS/tests_backend/widgets/textinput.py +++ b/iOS/tests_backend/widgets/textinput.py @@ -3,7 +3,7 @@ from toga_iOS.libs import UITextField from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class TextInputProbe(SimpleProbe): @@ -41,10 +41,6 @@ def placeholder_hides_on_focus(self): def color(self): return toga_color(self.native.textColor) - @property - def font(self): - return toga_font(self.native.font) - @property def alignment(self): return toga_alignment(self.native.textAlignment) From c5836d2dbe0b937eb25fb273a21e0e74417c666b Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 3 Jul 2023 16:39:10 +0800 Subject: [PATCH 44/61] Android fonts working for all but custom fonts. --- android/src/toga_android/fonts.py | 42 +++++------ android/tests_backend/fonts.py | 69 +++++++++++++++++++ android/tests_backend/probe.py | 14 ---- android/tests_backend/widgets/base.py | 4 +- android/tests_backend/widgets/button.py | 9 +-- android/tests_backend/widgets/label.py | 11 ++- .../tests_backend/widgets/passwordinput.py | 10 +-- android/tests_backend/widgets/properties.py | 48 +------------ 8 files changed, 102 insertions(+), 105 deletions(-) create mode 100644 android/tests_backend/fonts.py diff --git a/android/src/toga_android/fonts.py b/android/src/toga_android/fonts.py index 34386ff956..b194ac81f2 100644 --- a/android/src/toga_android/fonts.py +++ b/android/src/toga_android/fonts.py @@ -1,4 +1,4 @@ -import os +from pathlib import Path from toga.fonts import ( _REGISTERED_FONT_CACHE, @@ -6,11 +6,14 @@ CURSIVE, FANTASY, ITALIC, + MESSAGE, MONOSPACE, + OBLIQUE, SANS_SERIF, SERIF, SYSTEM, SYSTEM_DEFAULT_FONT_SIZE, + SYSTEM_DEFAULT_FONTS, ) from toga_android.libs.android.graphics import Typeface from toga_android.libs.android.util import TypedValue @@ -49,16 +52,24 @@ def apply(self, tv, default_size, default_typeface): style=self.interface.style, variant=self.interface.variant, ) - if font_key in _REGISTERED_FONT_CACHE: + try: font_path = _REGISTERED_FONT_CACHE[font_key] - if os.path.isfile(font_path): + except KeyError: + # Not a pre-registered font + if self.interface.family not in SYSTEM_DEFAULT_FONTS: + print( + f"Unknown font '{self.interface}'; " + "using system font as a fallback" + ) + else: + if Path(font_path).is_file(): typeface = Typeface.createFromFile(font_path) # If the typeface cannot be created, following Exception is thrown: # E/Minikin: addFont failed to create font, invalid request # It does not kill the app, but there is currently no way to # catch this Exception on Android else: - print(f"Registered font path {font_path!r} could not be found") + raise ValueError(f"Font file {font_path} could not be found") if typeface is None: if self.interface.family is SYSTEM: @@ -67,6 +78,8 @@ def apply(self, tv, default_size, default_typeface): # (600 or 700). To preserve this, we use the widget's original # typeface as a starting point rather than Typeface.DEFAULT. typeface = default_typeface + elif self.interface.family is MESSAGE: + typeface = Typeface.DEFAULT elif self.interface.family is SERIF: typeface = Typeface.SERIF elif self.interface.family is SANS_SERIF: @@ -84,25 +97,14 @@ def apply(self, tv, default_size, default_typeface): typeface = Typeface.create(self.interface.family, Typeface.NORMAL) native_style = typeface.getStyle() - if self.interface.weight is not None: - native_style = set_bits( - native_style, Typeface.BOLD, self.interface.weight == BOLD - ) - if self.interface.style is not None: - native_style = set_bits( - native_style, Typeface.ITALIC, self.interface.style == ITALIC - ) + if self.interface.weight == BOLD: + native_style |= Typeface.BOLD + if self.interface.style in {ITALIC, OBLIQUE}: + native_style |= Typeface.ITALIC + if native_style != typeface.getStyle(): typeface = Typeface.create(typeface, native_style) _FONT_CACHE[cache_key] = typeface tv.setTypeface(typeface) - - -def set_bits(input, mask, enable=True): - if enable: - output = input | mask - else: - output = input & ~mask - return output diff --git a/android/tests_backend/fonts.py b/android/tests_backend/fonts.py new file mode 100644 index 0000000000..10f7a88d53 --- /dev/null +++ b/android/tests_backend/fonts.py @@ -0,0 +1,69 @@ +from android.graphics import Typeface +from android.util import TypedValue +from toga.fonts import ( + BOLD, + ITALIC, + MESSAGE, + NORMAL, + OBLIQUE, + SMALL_CAPS, + SYSTEM, + SYSTEM_DEFAULT_FONT_SIZE, +) + +DECLARED_FONTS = {} + + +def load_fontmap(): + field = Typeface.getClass().getDeclaredField("sSystemFontMap") + field.setAccessible(True) + fontmap = field.get(None) + + for name in fontmap.keySet().toArray(): + typeface = fontmap.get(name) + DECLARED_FONTS[typeface] = name + for native_style in [ + Typeface.BOLD, + Typeface.ITALIC, + Typeface.BOLD | Typeface.ITALIC, + ]: + DECLARED_FONTS[Typeface.create(typeface, native_style)] = name + + +class FontMixin: + supports_custom_fonts = True + + def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): + assert (BOLD if self.font.getTypeface().isBold() else NORMAL) == weight + + if style == OBLIQUE: + print("Intepreting OBLIQUE font as ITALIC") + assert self.font.getTypeface().isItalic() + else: + assert (ITALIC if self.font.getTypeface().isItalic() else NORMAL) == style + + if variant == SMALL_CAPS: + print("Ignoring SMALL CAPS font test") + else: + assert NORMAL == variant + + def assert_font_size(self, expected): + if expected == SYSTEM_DEFAULT_FONT_SIZE: + assert self.font.getTextSize() == self.impl._default_text_size + else: + expected_px = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_SP, + expected, + self.font.getResources().getDisplayMetrics(), + ) + assert self.font.getTextSize() == expected_px + + def assert_font_family(self, expected): + # Ensure we have a map of typeface to font names + if not DECLARED_FONTS: + load_fontmap() + + assert DECLARED_FONTS[self.font.getTypeface()] == { + SYSTEM: self.system_font_family, + MESSAGE: "sans-serif", + }.get(expected, expected) diff --git a/android/tests_backend/probe.py b/android/tests_backend/probe.py index a8d63f9c1c..39c3f3608e 100644 --- a/android/tests_backend/probe.py +++ b/android/tests_backend/probe.py @@ -1,21 +1,7 @@ import asyncio -from toga.fonts import SYSTEM - class BaseProbe: - def assert_font_options(self, weight, style, variant): - assert self.font.weight == weight - assert self.font.style == style - assert self.font.variant == variant - - def assert_font_family(self, expected): - actual = self.font.family - if expected == SYSTEM: - assert actual == "sans-serif" - else: - assert actual == expected - async def redraw(self, message=None, delay=None): """Request a redraw of the app, waiting until that redraw has completed.""" # If we're running slow, wait for a second diff --git a/android/tests_backend/widgets/base.py b/android/tests_backend/widgets/base.py index 1748e129b2..eb4f48a071 100644 --- a/android/tests_backend/widgets/base.py +++ b/android/tests_backend/widgets/base.py @@ -14,6 +14,7 @@ from toga.colors import TRANSPARENT from toga.style.pack import JUSTIFY, LEFT +from ..fonts import FontMixin from ..probe import BaseProbe from .properties import toga_color, toga_vertical_alignment @@ -27,11 +28,12 @@ def onGlobalLayout(self): self.event.set() -class SimpleProbe(BaseProbe): +class SimpleProbe(BaseProbe, FontMixin): def __init__(self, widget): super().__init__() self.app = widget.app self.widget = widget + self.impl = widget._impl self.native = widget._impl.native self.layout_listener = LayoutListener() self.native.getViewTreeObserver().addOnGlobalLayoutListener( diff --git a/android/tests_backend/widgets/button.py b/android/tests_backend/widgets/button.py index 6cdd2fecc5..85bc37b7e2 100644 --- a/android/tests_backend/widgets/button.py +++ b/android/tests_backend/widgets/button.py @@ -1,7 +1,6 @@ from java import jclass from toga.colors import TRANSPARENT -from toga.fonts import SYSTEM from .label import LabelProbe @@ -9,13 +8,7 @@ # On Android, a Button is just a TextView with a state-dependent background image. class ButtonProbe(LabelProbe): native_class = jclass("android.widget.Button") - - def assert_font_family(self, expected): - actual = self.font.family - if expected == SYSTEM: - assert actual == "sans-serif-medium" - else: - assert actual == expected + system_font_family = "sans-serif-medium" @property def background_color(self): diff --git a/android/tests_backend/widgets/label.py b/android/tests_backend/widgets/label.py index df5fa9d0a0..c96e4b8ef2 100644 --- a/android/tests_backend/widgets/label.py +++ b/android/tests_backend/widgets/label.py @@ -3,11 +3,12 @@ from android.os import Build from .base import SimpleProbe -from .properties import toga_alignment, toga_color, toga_font +from .properties import toga_alignment, toga_color class LabelProbe(SimpleProbe): native_class = jclass("android.widget.TextView") + system_font_family = "sans-serif" supports_justify = True @property @@ -20,11 +21,9 @@ def text(self): @property def font(self): - return toga_font( - self.native.getTypeface(), - self.native.getTextSize(), - self.native.getResources(), - ) + # Android doesn't have a standalone object to represent a font; + # it stores the typeface and size separately on the native widget. + return self.native @property def alignment(self): diff --git a/android/tests_backend/widgets/passwordinput.py b/android/tests_backend/widgets/passwordinput.py index 0ec4805f97..f543a104a0 100644 --- a/android/tests_backend/widgets/passwordinput.py +++ b/android/tests_backend/widgets/passwordinput.py @@ -1,13 +1,5 @@ -from toga.fonts import SYSTEM - from .textinput import TextInputProbe class PasswordInputProbe(TextInputProbe): - # In password mode, the EditText defaults to monospace. - def assert_font_family(self, expected): - actual = self.font.family - if expected == SYSTEM: - assert actual == "monospace" - else: - assert actual == expected + system_font_family = "monospace" diff --git a/android/tests_backend/widgets/properties.py b/android/tests_backend/widgets/properties.py index cfabddf847..c202caecbe 100644 --- a/android/tests_backend/widgets/properties.py +++ b/android/tests_backend/widgets/properties.py @@ -1,18 +1,11 @@ from java import jint -from travertino.fonts import Font -from android.graphics import Color, Typeface +from android.graphics import Color from android.os import Build from android.text import Layout -from android.util import TypedValue from android.view import Gravity from toga.colors import TRANSPARENT, rgba from toga.constants import BOTTOM, CENTER, JUSTIFY, LEFT, RIGHT, TOP -from toga.fonts import ( - BOLD, - ITALIC, - NORMAL, -) def toga_color(color_int): @@ -29,45 +22,6 @@ def toga_color(color_int): ) -DECLARED_FONTS = {} - - -def load_fontmap(): - field = Typeface.getClass().getDeclaredField("sSystemFontMap") - field.setAccessible(True) - fontmap = field.get(None) - - for name in fontmap.keySet().toArray(): - typeface = fontmap.get(name) - DECLARED_FONTS[typeface] = name - for native_style in [ - Typeface.BOLD, - Typeface.ITALIC, - Typeface.BOLD | Typeface.ITALIC, - ]: - DECLARED_FONTS[Typeface.create(typeface, native_style)] = name - - -def toga_font(typeface, size, resources): - # Android provides font details in pixels; that size needs to be converted to SP (see - # notes in toga_android/fonts.py). - pixels_per_sp = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_SP, 1, resources.getDisplayMetrics() - ) - - # Ensure we have a map of typeface to font names - if not DECLARED_FONTS: - load_fontmap() - - return Font( - family=DECLARED_FONTS[typeface], - size=round(size / pixels_per_sp), - style=ITALIC if typeface.isItalic() else NORMAL, - variant=NORMAL, - weight=BOLD if typeface.isBold() else NORMAL, - ) - - def toga_alignment(gravity, justification_mode=None): horizontal_gravity = gravity & Gravity.HORIZONTAL_GRAVITY_MASK if (Build.VERSION.SDK_INT < 26) or ( From dca62195a9c0841ceedfcc89e20d00f8f4b810c0 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 4 Jul 2023 07:00:55 +0800 Subject: [PATCH 45/61] Correct GTK test for custom font. --- testbed/tests/test_fonts.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/testbed/tests/test_fonts.py b/testbed/tests/test_fonts.py index 90f9eabc9f..83bc2bb868 100644 --- a/testbed/tests/test_fonts.py +++ b/testbed/tests/test_fonts.py @@ -125,8 +125,7 @@ async def test_font_file_loaded( # Check that font properties are updated font_probe.assert_font_family(font_family) - for prop, value in font_kwargs.items(): - assert getattr(font_probe.font, prop) == value + font_probe.assert_font_options(**font_kwargs) # Ensure the font was actually loaded. stdout = capsys.readouterr().out From dbafa7506a541cebfe685292377f9ea1bbfd74ad Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 4 Jul 2023 07:34:14 +0800 Subject: [PATCH 46/61] Add safety rail when using Dummy backend. --- dummy/src/toga_dummy/app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dummy/src/toga_dummy/app.py b/dummy/src/toga_dummy/app.py index 8e84c3c63d..3e684995a7 100644 --- a/dummy/src/toga_dummy/app.py +++ b/dummy/src/toga_dummy/app.py @@ -31,6 +31,7 @@ def create_menus(self): self._action("create menus") def main_loop(self): + print("Starting app using Dummy backend.") self._action("main loop") def set_main_window(self, window): From 424014dce2aa9eef31646a6fc55630638511f727 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 4 Jul 2023 11:19:38 +0800 Subject: [PATCH 47/61] Small tweak to box child creation to ensure custom fonts work on GTK. --- core/src/toga/widgets/base.py | 10 +++++++++- core/src/toga/widgets/box.py | 9 +++++---- core/tests/widgets/test_box.py | 6 +++--- gtk/src/toga_gtk/widgets/base.py | 2 +- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/core/src/toga/widgets/base.py b/core/src/toga/widgets/base.py index 049bd3a337..d857d17a3e 100644 --- a/core/src/toga/widgets/base.py +++ b/core/src/toga/widgets/base.py @@ -114,7 +114,11 @@ def add(self, *children: list[Widget]): child.app = self.app child.window = self.window - self._impl.add_child(child._impl) + # add() can be invoked inside a constructor of a widget with children; + # in this case, the impl may not yet exist. In this case, the addition + # of children will be handled when this widget is assigned to a container. + if self._impl: + self._impl.add_child(child._impl) if self.window: self.window.content.refresh() @@ -143,6 +147,8 @@ def insert(self, index: int, child: Widget): child.app = self.app child.window = self.window + # The impl must exist, because we're invoking + # remove() on a fully instantiated widget. self._impl.insert_child(index, child._impl) if self.window: @@ -169,6 +175,8 @@ def remove(self, *children: list[Widget]): child.app = None child.window = None + # The impl must exist, because we're invoking + # remove() on a fully instantiated widget. self._impl.remove_child(child._impl) if self.window and removed: diff --git a/core/src/toga/widgets/box.py b/core/src/toga/widgets/box.py index ba36c4736f..1150f000a2 100644 --- a/core/src/toga/widgets/box.py +++ b/core/src/toga/widgets/box.py @@ -21,14 +21,15 @@ def __init__( """ super().__init__(id=id, style=style) - # Create a platform specific implementation of a Box - self._impl = self.factory.Box(interface=self) - - # Children need to be added *after* the impl has been created. + # Children need to be added *before* the impl is created. Otherwise, GTK + # doesn't apply custom loaded fonts that have been on child widgets. self._children = [] if children: self.add(*children) + # Create a platform specific implementation of a Box + self._impl = self.factory.Box(interface=self) + @property def enabled(self) -> bool: """Is the widget currently enabled? i.e., can the user interact with the widget? diff --git a/core/tests/widgets/test_box.py b/core/tests/widgets/test_box.py index 2a9f5d1ad1..2dc70cbcb9 100644 --- a/core/tests/widgets/test_box.py +++ b/core/tests/widgets/test_box.py @@ -2,7 +2,6 @@ from toga_dummy.utils import ( assert_action_not_performed, assert_action_performed, - assert_action_performed_with, ) @@ -26,8 +25,9 @@ def test_create_box_with_children(): assert box._impl.interface == box assert_action_performed(box, "create Box") - assert_action_performed_with(box, "add child", child=child1._impl) - assert_action_performed_with(box, "add child", child=child2._impl) + # No add_child action occurs, because the children are added to the box + # before the impl is created. + assert_action_not_performed(box, "add child") # But the box will have children. assert box.children == [child1, child2] diff --git a/gtk/src/toga_gtk/widgets/base.py b/gtk/src/toga_gtk/widgets/base.py index 58765399e3..d4c87628ce 100644 --- a/gtk/src/toga_gtk/widgets/base.py +++ b/gtk/src/toga_gtk/widgets/base.py @@ -49,7 +49,7 @@ def container(self): @container.setter def container(self, container): if self.container: - assert container is None, "Widget Already have a container" + assert container is None, "Widget already has a container" # container is set to None, removing self from the container.native # Note from pygtk documentation: Note that the container will own a From 131503db7d54b3ed60d51edd0fda982030cc8d73 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 4 Aug 2023 11:48:47 +0800 Subject: [PATCH 48/61] Correct spelling errors. --- android/tests_backend/fonts.py | 2 +- cocoa/tests_backend/fonts.py | 2 +- iOS/tests_backend/fonts.py | 2 +- winforms/tests_backend/fonts.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/tests_backend/fonts.py b/android/tests_backend/fonts.py index 10f7a88d53..59465fd193 100644 --- a/android/tests_backend/fonts.py +++ b/android/tests_backend/fonts.py @@ -37,7 +37,7 @@ def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): assert (BOLD if self.font.getTypeface().isBold() else NORMAL) == weight if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") + print("Interpreting OBLIQUE font as ITALIC") assert self.font.getTypeface().isItalic() else: assert (ITALIC if self.font.getTypeface().isItalic() else NORMAL) == style diff --git a/cocoa/tests_backend/fonts.py b/cocoa/tests_backend/fonts.py index 31c32bdce6..532787614b 100644 --- a/cocoa/tests_backend/fonts.py +++ b/cocoa/tests_backend/fonts.py @@ -34,7 +34,7 @@ def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): assert (BOLD if traits & NSFontMask.Bold else NORMAL) == weight if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") + print("Interpreting OBLIQUE font as ITALIC") assert bool(traits & NSFontMask.Italic) else: assert ITALIC if traits & NSFontMask.Italic else NORMAL == style diff --git a/iOS/tests_backend/fonts.py b/iOS/tests_backend/fonts.py index ff1d2c2d67..af1350fe3f 100644 --- a/iOS/tests_backend/fonts.py +++ b/iOS/tests_backend/fonts.py @@ -37,7 +37,7 @@ def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): assert (BOLD if traits & UIFontDescriptorTraitBold else NORMAL) == weight if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") + print("Interpreting OBLIQUE font as ITALIC") assert bool(traits & UIFontDescriptorTraitItalic) else: assert ITALIC if traits & UIFontDescriptorTraitItalic else NORMAL == style diff --git a/winforms/tests_backend/fonts.py b/winforms/tests_backend/fonts.py index f08ce22228..83a9748a99 100644 --- a/winforms/tests_backend/fonts.py +++ b/winforms/tests_backend/fonts.py @@ -24,7 +24,7 @@ def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): assert BOLD if self.font.Bold else NORMAL == weight if style == OBLIQUE: - print("Intepreting OBLIQUE font as ITALIC") + print("Interpreting OBLIQUE font as ITALIC") assert self.font.Italic else: assert (ITALIC if self.font.Italic else NORMAL) == style From 3531f9f6ecd594b7af5fd05c1f92216b9dbebea3 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 11 Sep 2023 10:25:09 +0800 Subject: [PATCH 49/61] Bump PyGObject version to incorporate bugfix for PyGObject bug 119. --- gtk/setup.py | 2 +- testbed/pyproject.toml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/gtk/setup.py b/gtk/setup.py index 9e15f6fe78..c7ce5cbbdf 100644 --- a/gtk/setup.py +++ b/gtk/setup.py @@ -9,6 +9,6 @@ "toga-core==%s" % version, "gbulb>=0.5.3", "pycairo>=1.17.0", - "pygobject>=3.14.0", + "pygobject>=3.46.0", ], ) diff --git a/testbed/pyproject.toml b/testbed/pyproject.toml index c96a05c878..3732f31321 100644 --- a/testbed/pyproject.toml +++ b/testbed/pyproject.toml @@ -43,9 +43,6 @@ test_sources = [ ] requires = [ "../gtk", - # PyGObject #119 breaks the test suite; the fix has been merged, but we need to use - # a mainline version of PyGObject until we can pin an official release. - "git+https://gitlab.gnome.org/GNOME/pygobject.git@5acfb6cc7c34c8ce9e20aef7eaaa79f27248b1a6", ] [tool.briefcase.app.testbed.linux.appimage] From d22539a1d054b1819a5b8219fdeeabd5fb6eb00f Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 11 Sep 2023 13:21:02 +0100 Subject: [PATCH 50/61] Clarify that Android Selection doesn't support font, color or alignment --- android/src/toga_android/widgets/selection.py | 7 ++----- android/tests_backend/widgets/selection.py | 3 +-- docs/reference/api/widgets/selection.rst | 4 ++-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/android/src/toga_android/widgets/selection.py b/android/src/toga_android/widgets/selection.py index b1d9b6be2a..3b140018e5 100644 --- a/android/src/toga_android/widgets/selection.py +++ b/android/src/toga_android/widgets/selection.py @@ -1,9 +1,9 @@ from travertino.size import at_least from ..libs.android import R__layout -from ..libs.android.view import Gravity, View__MeasureSpec +from ..libs.android.view import View__MeasureSpec from ..libs.android.widget import ArrayAdapter, OnItemSelectedListener, Spinner -from .base import Widget, align +from .base import Widget class TogaOnItemSelectedListener(OnItemSelectedListener): @@ -89,6 +89,3 @@ def rehint(self): ) self.interface.intrinsic.width = at_least(self.native.getMeasuredWidth()) self.interface.intrinsic.height = self.native.getMeasuredHeight() - - def set_alignment(self, value): - self.native.setGravity(Gravity.CENTER_VERTICAL | align(value)) diff --git a/android/tests_backend/widgets/selection.py b/android/tests_backend/widgets/selection.py index f68b21f6d1..f848741cda 100644 --- a/android/tests_backend/widgets/selection.py +++ b/android/tests_backend/widgets/selection.py @@ -3,7 +3,6 @@ from android.widget import Spinner from .base import SimpleProbe -from .properties import toga_alignment class SelectionProbe(SimpleProbe): @@ -15,7 +14,7 @@ def assert_resizes_on_content_change(self): @property def alignment(self): - return toga_alignment(self.native.getGravity()) + xfail("Can't change the alignment of Selection on this backend") @property def color(self): diff --git a/docs/reference/api/widgets/selection.rst b/docs/reference/api/widgets/selection.rst index 78497b0e2e..6063d59cb8 100644 --- a/docs/reference/api/widgets/selection.rst +++ b/docs/reference/api/widgets/selection.rst @@ -72,9 +72,9 @@ selected item. Notes ----- -* On macOS, you cannot change the font of a Selection. +* On macOS and Android, you cannot change the font of a Selection. -* On macOS and GTK, you cannot change the text color, background color, or +* On macOS, GTK and Android, you cannot change the text color, background color, or alignment of labels in a Selection. * On GTK, a Selection widget with flexible sizing will expand its width (to the From 5821c65eda72f75013f6357ddaa18932db125f62 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 12 Sep 2023 18:33:52 +0100 Subject: [PATCH 51/61] Documentation cleanups --- android/src/toga_android/fonts.py | 2 +- changes/1903.removal.rst | 1 + cocoa/src/toga_cocoa/fonts.py | 2 +- core/src/toga/fonts.py | 75 ++++++++++++++------------ core/tests/test_fonts.py | 4 +- docs/conf.py | 11 +++- docs/reference/api/resources/fonts.rst | 2 +- docs/reference/api/widgets/divider.rst | 2 +- docs/reference/style/pack.rst | 21 ++++++-- gtk/src/toga_gtk/fonts.py | 2 +- iOS/src/toga_iOS/fonts.py | 2 +- winforms/src/toga_winforms/fonts.py | 2 +- 12 files changed, 77 insertions(+), 49 deletions(-) create mode 100644 changes/1903.removal.rst diff --git a/android/src/toga_android/fonts.py b/android/src/toga_android/fonts.py index b194ac81f2..689c2f69f7 100644 --- a/android/src/toga_android/fonts.py +++ b/android/src/toga_android/fonts.py @@ -46,7 +46,7 @@ def apply(self, tv, default_size, default_typeface): typeface = _FONT_CACHE[cache_key] except KeyError: typeface = None - font_key = self.interface.registered_font_key( + font_key = self.interface._registered_font_key( self.interface.family, weight=self.interface.weight, style=self.interface.style, diff --git a/changes/1903.removal.rst b/changes/1903.removal.rst new file mode 100644 index 0000000000..9deb0249da --- /dev/null +++ b/changes/1903.removal.rst @@ -0,0 +1 @@ +The ``weight``, ``style`` and ``variant`` arguments for ``Font`` and ``Font.register`` are now keyword-only. diff --git a/cocoa/src/toga_cocoa/fonts.py b/cocoa/src/toga_cocoa/fonts.py index a1665f3e0d..bc40c9f69d 100644 --- a/cocoa/src/toga_cocoa/fonts.py +++ b/cocoa/src/toga_cocoa/fonts.py @@ -31,7 +31,7 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: - font_key = self.interface.registered_font_key( + font_key = self.interface._registered_font_key( self.interface.family, weight=self.interface.weight, style=self.interface.style, diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 6450275946..bb519195dd 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -35,10 +35,21 @@ def __init__( self, family: str, size: int | str, + *, + weight: str = NORMAL, style: str = NORMAL, variant: str = NORMAL, - weight: str = NORMAL, ): + """This class is used to represent a font when drawing on a :any:`Canvas`. For + all other widgets, fonts can be controlled using the style properties which are + linked below. + + :param family: The :ref:`font family `. + :param size: The :ref:`font size `. + :param weight: The :ref:`font weight `. + :param style: The :ref:`font style `. + :param variant: The :ref:`font variant `. + """ super().__init__(family, size, style, variant, weight) self.factory = get_platform_factory() self._impl = self.factory.Font(self) @@ -55,51 +66,45 @@ def __str__(self) -> str: return f"{self.family} {size}{weight}{variant}{style}" @staticmethod - def register(family, path, weight=NORMAL, style=NORMAL, variant=NORMAL): - """Registers a file-based font with its family name, style, variant - and weight. When invalid values for style, variant or weight are passed, - ``NORMAL`` will be used. + def register(family, path, *, weight=NORMAL, style=NORMAL, variant=NORMAL): + """Registers a file-based font. + + **Note:** This is not currently supported on macOS or iOS. + + When invalid values for style, variant or weight are passed, ``NORMAL`` will be + used. - When a font file includes multiple font weight/style/etc, each variant must be - registered separately:: + When a font includes multiple weights, styles or variants, each one must be + registered separately, even if they're stored in the same file:: + + from toga.style.pack import BOLD # Register a simple regular font - Font.register("Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf") + Font.register( + "Font Awesome 5 Free Solid", "Font Awesome 5 Free-Solid-900.otf" + ) # Register a regular and bold font, contained in separate font files - Font.register("Roboto", "resources/Roboto-Regular.ttf") - Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=Font.BOLD) - - # Register a single font file that contains both # a regular and bold weight - Font.register("Bahnschrift", "resources/Bahnschrift.ttf") - Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=Font.BOLD) - - :param family: The font family name. This is the name that can be referenced in - style definitions. - :param path: The path to the font file. - :param weight: The font weight. Default value is ``NORMAL``. - :param style: The font style. Default value is ``NORMAL``. - :param variant: The font variant. Default value is ``NORMAL``. + Font.register("Roboto", "Roboto-Regular.ttf") + Font.register("Roboto", "Roboto-Bold.ttf", weight=BOLD) + + # Register a single font file that contains both a regular and bold weight + Font.register("Bahnschrift", "Bahnschrift.ttf") + Font.register("Bahnschrift", "Bahnschrift.ttf", weight=BOLD) + + Parameters are the same as in the ``Font`` constructor above, with the addition + of: + + :param path: The path to the font file. This can be an absolute path, or a path + relative to the module that defines your :any:`App` class. """ - font_key = Font.registered_font_key( + font_key = Font._registered_font_key( family, weight=weight, style=style, variant=variant ) _REGISTERED_FONT_CACHE[font_key] = str(toga.App.app.paths.app / path) @staticmethod - def registered_font_key(family, weight, style, variant): - """Creates a key for storing a registered font in the font cache. - - If weight, style or variant contain an invalid value, ``NORMAL`` is used - instead. - - :param family: The font family name. This is the name that can be referenced in - style definitions. - :param weight: The font weight. Default value is ``NORMAL``. - :param style: The font style. Default value is ``NORMAL``. - :param variant: The font variant. Default value is ``NORMAL``. - :returns: The font key - """ + def _registered_font_key(family, weight, style, variant): if weight not in constants.FONT_WEIGHTS: weight = NORMAL if style not in constants.FONT_STYLES: diff --git a/core/tests/test_fonts.py b/core/tests/test_fonts.py index de61351841..a06c3dc612 100644 --- a/core/tests/test_fonts.py +++ b/core/tests/test_fonts.py @@ -132,10 +132,10 @@ def test_builtin_font(family, size, weight, style, variant, as_str): ("Wonky", BOLD, ITALIC, "unknown", ("Wonky", BOLD, ITALIC, NORMAL)), ], ) -def test_registered_font_key(app, family, style, weight, variant, key): +def test__registered_font_key(app, family, style, weight, variant, key): "Registered font keys can be generarted" assert ( - toga.Font.registered_font_key( + toga.Font._registered_font_key( family, style=style, weight=weight, variant=variant ) == key diff --git a/docs/conf.py b/docs/conf.py index ec3ac9c25a..64c5580c29 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -134,8 +134,15 @@ def setup(app): def autodoc_process_signature( app, what, name, obj, options, signature, return_annotation ): - if (what == "class") and (obj.__bases__ != (object,)): - options.show_inheritance = True + if what == "class": + # Travertino classes are not part of the public API. + bases = [ + base + for base in obj.__bases__ + if (base != object) and not base.__module__.startswith("travertino.") + ] + if bases: + options.show_inheritance = True # -- Options for link checking ------------------------------------------------- diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index b5e4fa8361..4acd80632f 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -8,7 +8,7 @@ Font :included_cols: 4,5,6,7,8,9,10 :exclude: {0: '(?!(Font|Component))'} -The font class is used for abstracting the platforms implementation of fonts. +A font for displaying text. Notes ----- diff --git a/docs/reference/api/widgets/divider.rst b/docs/reference/api/widgets/divider.rst index 94eb8c096a..c5d34a3db1 100644 --- a/docs/reference/api/widgets/divider.rst +++ b/docs/reference/api/widgets/divider.rst @@ -21,7 +21,7 @@ To separate two labels stacked vertically with a horizontal line: .. code-block:: python import toga - from toga.style import Pack, COLUMN + from toga.style.pack import Pack, COLUMN box = toga.Box( children=[ diff --git a/docs/reference/style/pack.rst b/docs/reference/style/pack.rst index 3dd07c0c56..e776bb89aa 100644 --- a/docs/reference/style/pack.rst +++ b/docs/reference/style/pack.rst @@ -194,10 +194,13 @@ Defines the alignment of text in the object being rendered. Defines the natural direction of horizontal content. +.. _pack-font-family: + ``font_family`` --------------- -**Values:** ``system`` | ``serif`` | ``sans-serif`` | ``cursive`` | ``fantasy`` | ``monospace`` | ```` +**Values:** ``system`` | ``serif`` | ``sans-serif`` | ``cursive`` | ``fantasy`` | +``monospace`` | ```` **Initial value:** ``system`` @@ -206,9 +209,14 @@ The font family to be used. A value of ``system`` indicates that whatever is a system-appropriate font should be used. -A value of ``serif``, ``sans-serif``, ``cursive``, ``fantasy``, or ``monospace`` will use a system defined font that matches the description (e.g.,"Times New Roman" for ``serif``, "Courier New" for ``monospace``). +A value of ``serif``, ``sans-serif``, ``cursive``, ``fantasy``, or ``monospace`` will +use a system-defined font that matches the description (e.g. "Times New Roman" for +``serif``, "Courier New" for ``monospace``). + +Any other value will be checked against the family names previously registered with +:any:`Font.register`. If the name cannot be resolved, the system font will be used. -Otherwise, any font name can be specified. If the font name cannot be resolved, the system font will be used. +.. _pack-font-style: ``font_style`` ---------------- @@ -219,6 +227,8 @@ Otherwise, any font name can be specified. If the font name cannot be resolved, The style of the font to be used. +.. _pack-font-variant: + ``font_variant`` ---------------- @@ -228,6 +238,8 @@ The style of the font to be used. The variant of the font to be used. +.. _pack-font-weight: + ``font_weight`` --------------- @@ -237,6 +249,8 @@ The variant of the font to be used. The weight of the font to be used. +.. _pack-font-size: + ``font_size`` ------------- @@ -244,6 +258,7 @@ The weight of the font to be used. **Initial value:** System default +The size of the font to be used, in points. The relationship between Pack and CSS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py index 2baf4e4977..8647a7d656 100644 --- a/gtk/src/toga_gtk/fonts.py +++ b/gtk/src/toga_gtk/fonts.py @@ -29,7 +29,7 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: - font_key = self.interface.registered_font_key( + font_key = self.interface._registered_font_key( self.interface.family, weight=self.interface.weight, style=self.interface.style, diff --git a/iOS/src/toga_iOS/fonts.py b/iOS/src/toga_iOS/fonts.py index c0e7943bc9..d7a6ce6c96 100644 --- a/iOS/src/toga_iOS/fonts.py +++ b/iOS/src/toga_iOS/fonts.py @@ -30,7 +30,7 @@ def __init__(self, interface): try: font = _FONT_CACHE[self.interface] except KeyError: - font_key = self.interface.registered_font_key( + font_key = self.interface._registered_font_key( self.interface.family, weight=self.interface.weight, style=self.interface.style, diff --git a/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py index 2ba1b33042..71aad8127b 100644 --- a/winforms/src/toga_winforms/fonts.py +++ b/winforms/src/toga_winforms/fonts.py @@ -32,7 +32,7 @@ def __init__(self, interface): font = _FONT_CACHE[self.interface] except KeyError: font = None - font_key = self.interface.registered_font_key( + font_key = self.interface._registered_font_key( self.interface.family, weight=self.interface.weight, style=self.interface.style, From 86015f40d6b22bd8e15028aab9e93dd7ffd5e764 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 12 Sep 2023 18:43:14 +0100 Subject: [PATCH 52/61] Complete transition to keyword-only arguments --- core/src/toga/fonts.py | 6 ++---- core/tests/style/pack/test_apply.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index bb519195dd..9144f68789 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -50,7 +50,7 @@ def __init__( :param style: The :ref:`font style `. :param variant: The :ref:`font variant `. """ - super().__init__(family, size, style, variant, weight) + super().__init__(family, size, weight=weight, style=style, variant=variant) self.factory = get_platform_factory() self._impl = self.factory.Font(self) @@ -98,9 +98,7 @@ def register(family, path, *, weight=NORMAL, style=NORMAL, variant=NORMAL): :param path: The path to the font file. This can be an absolute path, or a path relative to the module that defines your :any:`App` class. """ - font_key = Font._registered_font_key( - family, weight=weight, style=style, variant=variant - ) + font_key = Font._registered_font_key(family, weight, style, variant) _REGISTERED_FONT_CACHE[font_key] = str(toga.App.app.paths.app / path) @staticmethod diff --git a/core/tests/style/pack/test_apply.py b/core/tests/style/pack/test_apply.py index 72a85d8595..d72545ba7b 100644 --- a/core/tests/style/pack/test_apply.py +++ b/core/tests/style/pack/test_apply.py @@ -63,7 +63,7 @@ def test_set_font(): ) root.style.reapply() root._impl.set_font.assert_called_with( - Font("Roboto", 12, "normal", "small-caps", "bold") + Font("Roboto", 12, style="normal", variant="small-caps", weight="bold") ) root.refresh.assert_called_with() From 86bb969868ef9add7dd04274e24292c856a5d7ec Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 12 Sep 2023 21:11:48 +0100 Subject: [PATCH 53/61] Fix Android Table font tests, and add expected font sizes to probes --- android/tests_backend/fonts.py | 20 +++++++++---------- android/tests_backend/widgets/base.py | 3 +++ android/tests_backend/widgets/button.py | 4 +++- android/tests_backend/widgets/label.py | 11 +++++----- .../tests_backend/widgets/passwordinput.py | 2 +- android/tests_backend/widgets/selection.py | 6 +++++- android/tests_backend/widgets/table.py | 10 ++++++---- android/tests_backend/widgets/textinput.py | 1 + core/tests/test_fonts.py | 2 +- 9 files changed, 36 insertions(+), 23 deletions(-) diff --git a/android/tests_backend/fonts.py b/android/tests_backend/fonts.py index 59465fd193..c64082328e 100644 --- a/android/tests_backend/fonts.py +++ b/android/tests_backend/fonts.py @@ -34,13 +34,13 @@ class FontMixin: supports_custom_fonts = True def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): - assert (BOLD if self.font.getTypeface().isBold() else NORMAL) == weight + assert (BOLD if self.typeface.isBold() else NORMAL) == weight if style == OBLIQUE: print("Interpreting OBLIQUE font as ITALIC") - assert self.font.getTypeface().isItalic() + assert self.typeface.isItalic() else: - assert (ITALIC if self.font.getTypeface().isItalic() else NORMAL) == style + assert (ITALIC if self.typeface.isItalic() else NORMAL) == style if variant == SMALL_CAPS: print("Ignoring SMALL CAPS font test") @@ -49,21 +49,21 @@ def assert_font_options(self, weight=NORMAL, style=NORMAL, variant=NORMAL): def assert_font_size(self, expected): if expected == SYSTEM_DEFAULT_FONT_SIZE: - assert self.font.getTextSize() == self.impl._default_text_size - else: - expected_px = TypedValue.applyDimension( + expected = self.default_font_size + assert round(self.text_size) == round( + TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, expected, - self.font.getResources().getDisplayMetrics(), + self.native.getResources().getDisplayMetrics(), ) - assert self.font.getTextSize() == expected_px + ) def assert_font_family(self, expected): # Ensure we have a map of typeface to font names if not DECLARED_FONTS: load_fontmap() - assert DECLARED_FONTS[self.font.getTypeface()] == { - SYSTEM: self.system_font_family, + assert DECLARED_FONTS[self.typeface] == { + SYSTEM: self.default_font_family, MESSAGE: "sans-serif", }.get(expected, expected) diff --git a/android/tests_backend/widgets/base.py b/android/tests_backend/widgets/base.py index 22ea4765b0..8a998f7bf3 100644 --- a/android/tests_backend/widgets/base.py +++ b/android/tests_backend/widgets/base.py @@ -35,6 +35,9 @@ def onGlobalLayout(self): class SimpleProbe(BaseProbe, FontMixin): + default_font_family = "sans-serif" + default_font_size = 14 + def __init__(self, widget): super().__init__() self.app = widget.app diff --git a/android/tests_backend/widgets/button.py b/android/tests_backend/widgets/button.py index 85bc37b7e2..27ab6c8f5e 100644 --- a/android/tests_backend/widgets/button.py +++ b/android/tests_backend/widgets/button.py @@ -8,7 +8,9 @@ # On Android, a Button is just a TextView with a state-dependent background image. class ButtonProbe(LabelProbe): native_class = jclass("android.widget.Button") - system_font_family = "sans-serif-medium" + + # Heavier than sans-serif, but lighter than sans-serif bold + default_font_family = "sans-serif-medium" @property def background_color(self): diff --git a/android/tests_backend/widgets/label.py b/android/tests_backend/widgets/label.py index c96e4b8ef2..93c5145f33 100644 --- a/android/tests_backend/widgets/label.py +++ b/android/tests_backend/widgets/label.py @@ -8,7 +8,6 @@ class LabelProbe(SimpleProbe): native_class = jclass("android.widget.TextView") - system_font_family = "sans-serif" supports_justify = True @property @@ -20,10 +19,12 @@ def text(self): return str(self.native.getText()) @property - def font(self): - # Android doesn't have a standalone object to represent a font; - # it stores the typeface and size separately on the native widget. - return self.native + def typeface(self): + return self.native.getTypeface() + + @property + def text_size(self): + return self.native.getTextSize() @property def alignment(self): diff --git a/android/tests_backend/widgets/passwordinput.py b/android/tests_backend/widgets/passwordinput.py index f543a104a0..baba02b7ce 100644 --- a/android/tests_backend/widgets/passwordinput.py +++ b/android/tests_backend/widgets/passwordinput.py @@ -2,4 +2,4 @@ class PasswordInputProbe(TextInputProbe): - system_font_family = "monospace" + default_font_family = "monospace" diff --git a/android/tests_backend/widgets/selection.py b/android/tests_backend/widgets/selection.py index f848741cda..8925cf272f 100644 --- a/android/tests_backend/widgets/selection.py +++ b/android/tests_backend/widgets/selection.py @@ -21,7 +21,11 @@ def color(self): xfail("Can't change the color of Selection on this backend") @property - def font(self): + def typeface(self): + xfail("Can't change the font of Selection on this backend") + + @property + def text_size(self): xfail("Can't change the font of Selection on this backend") @property diff --git a/android/tests_backend/widgets/table.py b/android/tests_backend/widgets/table.py index a00de1269c..d27084314f 100644 --- a/android/tests_backend/widgets/table.py +++ b/android/tests_backend/widgets/table.py @@ -3,7 +3,6 @@ from android.widget import ScrollView, TableLayout, TextView from .base import SimpleProbe -from .properties import toga_font HEADER = "HEADER" @@ -90,6 +89,9 @@ async def activate_row(self, row): self._row_view(row).performLongClick() @property - def font(self): - tv = self._row_view(0).getChildAt(0) - return toga_font(tv.getTypeface(), tv.getTextSize(), tv.getResources()) + def typeface(self): + return self._row_view(0).getChildAt(0).getTypeface() + + @property + def text_size(self): + return self._row_view(0).getChildAt(0).getTextSize() diff --git a/android/tests_backend/widgets/textinput.py b/android/tests_backend/widgets/textinput.py index 2bf66e7fb7..339e82ed04 100644 --- a/android/tests_backend/widgets/textinput.py +++ b/android/tests_backend/widgets/textinput.py @@ -10,6 +10,7 @@ class TextInputProbe(LabelProbe): native_class = jclass("android.widget.EditText") + default_font_size = 18 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/core/tests/test_fonts.py b/core/tests/test_fonts.py index a06c3dc612..e5dd0b7b5b 100644 --- a/core/tests/test_fonts.py +++ b/core/tests/test_fonts.py @@ -132,7 +132,7 @@ def test_builtin_font(family, size, weight, style, variant, as_str): ("Wonky", BOLD, ITALIC, "unknown", ("Wonky", BOLD, ITALIC, NORMAL)), ], ) -def test__registered_font_key(app, family, style, weight, variant, key): +def test_registered_font_key(app, family, style, weight, variant, key): "Registered font keys can be generarted" assert ( toga.Font._registered_font_key( From 026f9572edb62bf9d174cf6608ec50efeb472b21 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 13 Sep 2023 06:38:31 +0800 Subject: [PATCH 54/61] Add an example of adding a label with a font after initial construction. --- examples/font/font/app.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/examples/font/font/app.py b/examples/font/font/app.py index a2238f0171..be9b87c677 100644 --- a/examples/font/font/app.py +++ b/examples/font/font/app.py @@ -22,12 +22,19 @@ def do_style(self, widget, **kwargs): else: widget.style.font_style = NORMAL - def do_monospace_button(self, widget): + def do_monospace_button(self, widget, **kwargs): self.textpanel.value += widget.text + "\n" - def do_icon_button(self, widget): + def do_icon_button(self, widget, **kwargs): self.textpanel.value += widget.id + "\n" + def do_add_content(self, widget, **kwargs): + new_lbl = toga.Label( + "More Endor bold", + style=Pack(font_family="Endor", font_size=14, font_weight=BOLD), + ) + self.labels.add(new_lbl) + def startup(self): # Set up main window self.main_window = toga.MainWindow(title=self.name) @@ -54,6 +61,7 @@ def startup(self): toga.Button("Clear", on_press=self.do_clear), toga.Button("Weight", on_press=self.do_weight), toga.Button("Style", on_press=self.do_style), + toga.Button("Add", on_press=self.do_add_content), ], ) @@ -143,11 +151,8 @@ def startup(self): readonly=False, style=Pack(flex=1), placeholder="Ready." ) - # Outermost box - outer_box = toga.Box( + self.labels = toga.Box( children=[ - btn_box1, - btn_box2, lbl1, lbl2, lbl3, @@ -160,6 +165,15 @@ def startup(self): lbl_ub, lbl_ui, lbl_ubi, + ], + style=Pack(direction=COLUMN), + ) + # Outermost box + outer_box = toga.Box( + children=[ + btn_box1, + btn_box2, + self.labels, self.textpanel, ], style=Pack(flex=1, direction=COLUMN, padding=10), From 38625453f169af0f6964fac20b454a619716a634 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Wed, 13 Sep 2023 15:10:17 +0100 Subject: [PATCH 55/61] 100% coverage for Android fonts --- android/src/toga_android/fonts.py | 6 ++-- android/tests_backend/fonts.py | 56 ++++++++++++++++++++++++++----- testbed/pyproject.toml | 1 + testbed/tests/test_fonts.py | 19 +++++------ 4 files changed, 59 insertions(+), 23 deletions(-) diff --git a/android/src/toga_android/fonts.py b/android/src/toga_android/fonts.py index 689c2f69f7..7f0d3455b6 100644 --- a/android/src/toga_android/fonts.py +++ b/android/src/toga_android/fonts.py @@ -64,10 +64,8 @@ def apply(self, tv, default_size, default_typeface): else: if Path(font_path).is_file(): typeface = Typeface.createFromFile(font_path) - # If the typeface cannot be created, following Exception is thrown: - # E/Minikin: addFont failed to create font, invalid request - # It does not kill the app, but there is currently no way to - # catch this Exception on Android + if typeface is Typeface.DEFAULT: + raise ValueError(f"Unable to load font file {font_path}") else: raise ValueError(f"Font file {font_path} could not be found") diff --git a/android/tests_backend/fonts.py b/android/tests_backend/fonts.py index c64082328e..4f5966843b 100644 --- a/android/tests_backend/fonts.py +++ b/android/tests_backend/fonts.py @@ -1,4 +1,11 @@ +from concurrent.futures import ThreadPoolExecutor + +from fontTools.ttLib import TTFont +from java import jint +from java.lang import Integer, Long + from android.graphics import Typeface +from android.graphics.fonts import FontFamily from android.util import TypedValue from toga.fonts import ( BOLD, @@ -11,7 +18,8 @@ SYSTEM_DEFAULT_FONT_SIZE, ) -DECLARED_FONTS = {} +SYSTEM_FONTS = {} +nativeGetFamily = new_FontFamily = None def load_fontmap(): @@ -21,13 +29,32 @@ def load_fontmap(): for name in fontmap.keySet().toArray(): typeface = fontmap.get(name) - DECLARED_FONTS[typeface] = name + SYSTEM_FONTS[typeface] = name for native_style in [ Typeface.BOLD, Typeface.ITALIC, Typeface.BOLD | Typeface.ITALIC, ]: - DECLARED_FONTS[Typeface.create(typeface, native_style)] = name + SYSTEM_FONTS[Typeface.create(typeface, native_style)] = name + + +def reflect_font_methods(): + global nativeGetFamily, new_FontFamily + + # Bypass non-SDK interface restrictions by looking them up on a background thread + # with no Java stack frames (https://stackoverflow.com/a/61600526). + with ThreadPoolExecutor() as executor: + nativeGetFamily = executor.submit( + Typeface.getClass().getDeclaredMethod, + "nativeGetFamily", + Long.TYPE, + Integer.TYPE, + ).result() + nativeGetFamily.setAccessible(True) + + new_FontFamily = executor.submit( + FontFamily.getClass().getConstructor, Long.TYPE + ).result() class FontMixin: @@ -59,11 +86,22 @@ def assert_font_size(self, expected): ) def assert_font_family(self, expected): - # Ensure we have a map of typeface to font names - if not DECLARED_FONTS: + if not SYSTEM_FONTS: load_fontmap() - assert DECLARED_FONTS[self.typeface] == { - SYSTEM: self.default_font_family, - MESSAGE: "sans-serif", - }.get(expected, expected) + if actual := SYSTEM_FONTS.get(self.typeface): + assert actual == { + SYSTEM: self.default_font_family, + MESSAGE: "sans-serif", + }.get(expected, expected) + else: + if not nativeGetFamily: + reflect_font_methods() + family_ptr = nativeGetFamily.invoke( + None, self.typeface.native_instance, jint(0) + ) + family = new_FontFamily.newInstance(family_ptr) + assert family.getSize() == 1 + + font = TTFont(family.getFont(0).getFile().getPath()) + assert font["name"].getDebugName(1) == expected diff --git a/testbed/pyproject.toml b/testbed/pyproject.toml index 3732f31321..c0371b3a51 100644 --- a/testbed/pyproject.toml +++ b/testbed/pyproject.toml @@ -87,6 +87,7 @@ test_sources = [ ] requires = [ "../android", + "fonttools==4.42.1", ] build_gradle_extra_content = """\ android.defaultConfig.python { diff --git a/testbed/tests/test_fonts.py b/testbed/tests/test_fonts.py index 83bc2bb868..6eb33763f1 100644 --- a/testbed/tests/test_fonts.py +++ b/testbed/tests/test_fonts.py @@ -76,11 +76,11 @@ async def test_font_options(widget: toga.Label, font_probe): @pytest.mark.parametrize( "font_family,font_path,font_kwargs", [ - # OpenType font, no options + # OpenType font with weight property ( "Font Awesome 5 Free Solid", "resources/fonts/Font Awesome 5 Free-Solid-900.otf", - {}, + {"weight": BOLD}, ), # TrueType font, no options ("Endor", "resources/fonts/ENDOR___.ttf", {}), @@ -127,20 +127,19 @@ async def test_font_file_loaded( font_probe.assert_font_family(font_family) font_probe.assert_font_options(**font_kwargs) - # Ensure the font was actually loaded. - stdout = capsys.readouterr().out - # Setting the font to "Roboto something" involves setting the font to # "Roboto" as an intermediate step. However, we haven't registered "Roboto # regular", so this will raise an warning about the missing "regular" font. # Ignore this message. - stdout = stdout.replace( - "Unknown font 'Roboto default size'; using system font as a fallback\n", - "", - ) + stdout = capsys.readouterr().out + if font_kwargs: + stdout = stdout.replace( + f"Unknown font '{font_family} default size'; " + f"using system font as a fallback\n", + "", + ) assert "; using system font as a fallback" not in stdout - assert "could not be found" not in stdout async def test_non_existent_font_file(widget: toga.Label, app: toga.App): From 4b9c84abafef21a3f673a9326cbeaa7ba73ccdb3 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Wed, 13 Sep 2023 18:56:05 +0100 Subject: [PATCH 56/61] Documentation fixes --- core/src/toga/fonts.py | 25 ++++++++++++--------- core/src/toga/widgets/base.py | 2 +- docs/reference/api/resources/fonts.rst | 9 -------- docs/reference/data/widgets_by_platform.csv | 2 +- docs/reference/style/pack.rst | 6 +++++ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 9144f68789..26aa4456be 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -40,9 +40,11 @@ def __init__( style: str = NORMAL, variant: str = NORMAL, ): - """This class is used to represent a font when drawing on a :any:`Canvas`. For - all other widgets, fonts can be controlled using the style properties which are - linked below. + """Constructs a reference to a font. + + This class should be used when an API requires an explicit font reference (e.g. + :any:`Context.write_text`). In all other cases, fonts in Toga are controlled + using the style properties linked below. :param family: The :ref:`font family `. :param size: The :ref:`font size `. @@ -81,22 +83,23 @@ def register(family, path, *, weight=NORMAL, style=NORMAL, variant=NORMAL): # Register a simple regular font Font.register( - "Font Awesome 5 Free Solid", "Font Awesome 5 Free-Solid-900.otf" + "Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf" ) # Register a regular and bold font, contained in separate font files - Font.register("Roboto", "Roboto-Regular.ttf") - Font.register("Roboto", "Roboto-Bold.ttf", weight=BOLD) + Font.register("Roboto", "resources/Roboto-Regular.ttf") + Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=BOLD) # Register a single font file that contains both a regular and bold weight - Font.register("Bahnschrift", "Bahnschrift.ttf") - Font.register("Bahnschrift", "Bahnschrift.ttf", weight=BOLD) - - Parameters are the same as in the ``Font`` constructor above, with the addition - of: + Font.register("Bahnschrift", "resources/Bahnschrift.ttf") + Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=BOLD) + :param family: The :ref:`font family `. :param path: The path to the font file. This can be an absolute path, or a path relative to the module that defines your :any:`App` class. + :param weight: The :ref:`font weight `. + :param style: The :ref:`font style `. + :param variant: The :ref:`font variant `. """ font_key = Font._registered_font_key(family, weight, style, variant) _REGISTERED_FONT_CACHE[font_key] = str(toga.App.app.paths.app / path) diff --git a/core/src/toga/widgets/base.py b/core/src/toga/widgets/base.py index 2ad25a4fc3..91a507d33f 100644 --- a/core/src/toga/widgets/base.py +++ b/core/src/toga/widgets/base.py @@ -157,7 +157,7 @@ def insert(self, index: int, child: Widget) -> None: child.window = self.window # The impl must exist, because we're invoking - # remove() on a fully instantiated widget. + # insert() on a fully instantiated widget. self._impl.insert_child(index, child._impl) # Whatever layout we're a part of needs to be refreshed diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index 4acd80632f..340b884f82 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -10,15 +10,6 @@ Font A font for displaying text. -Notes ------ - -* Windows does not support the use of the Oblique font style. A request for an - oblique font will be interpreted as Italic. - -* Windows does not support the use of a Small Caps variant on fonts. A request - for a Small Caps variant will be ignored. - Reference --------- diff --git a/docs/reference/data/widgets_by_platform.csv b/docs/reference/data/widgets_by_platform.csv index 4124f44d96..a6c51fc6a6 100644 --- a/docs/reference/data/widgets_by_platform.csv +++ b/docs/reference/data/widgets_by_platform.csv @@ -28,7 +28,7 @@ ScrollContainer,Layout Widget,:class:`~toga.ScrollContainer`,A container that ca SplitContainer,Layout Widget,:class:`~toga.SplitContainer`,A container that divides an area into two panels with a movable border,|y|,|y|,|y|,,,, OptionContainer,Layout Widget,:class:`~toga.OptionContainer`,A container that can display multiple labeled tabs of content,|y|,|y|,|y|,,,, App Paths,Resource,:class:`~toga.paths.Paths`,A mechanism for obtaining platform-appropriate filesystem locations for an application.,|y|,|y|,|y|,|y|,|y|,,|b| -Font,Resource,:class:`~toga.Font`,A text font,|b|,|y|,|y|,|b|,|b|,, +Font,Resource,:class:`~toga.Font`,A text font,|b|,|y|,|y|,|b|,|y|,, Command,Resource,:class:`~toga.Command`,Command,|b|,|b|,|b|,,|b|,, Group,Resource,:class:`~toga.Group`,Command group,|b|,|b|,|b|,|b|,|b|,, Icon,Resource,:class:`~toga.Icon`,"A small, square image, used to provide easily identifiable visual context to a widget.",|y|,|y|,|y|,|y|,|y|,,|b| diff --git a/docs/reference/style/pack.rst b/docs/reference/style/pack.rst index e776bb89aa..11a6dfc0ee 100644 --- a/docs/reference/style/pack.rst +++ b/docs/reference/style/pack.rst @@ -227,6 +227,9 @@ Any other value will be checked against the family names previously registered w The style of the font to be used. +**Note:** Windows and Android do not support the oblique font style. A request for an +``oblique`` font will be interpreted as ``italic``. + .. _pack-font-variant: ``font_variant`` @@ -238,6 +241,9 @@ The style of the font to be used. The variant of the font to be used. +**Note:** Windows and Android do not support the small caps variant. A request for a +``small_caps`` font will be interpreted as ``normal``. + .. _pack-font-weight: ``font_weight`` From a0933e9c8e68dc14dfbbeeea35732b1070597f22 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 14 Sep 2023 06:59:08 +0800 Subject: [PATCH 57/61] Revert the child creation order. --- core/src/toga/widgets/base.py | 8 +++----- core/src/toga/widgets/box.py | 10 +++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core/src/toga/widgets/base.py b/core/src/toga/widgets/base.py index 91a507d33f..184572dba5 100644 --- a/core/src/toga/widgets/base.py +++ b/core/src/toga/widgets/base.py @@ -122,11 +122,9 @@ def add(self, *children: Widget) -> None: child.app = self.app child.window = self.window - # add() can be invoked inside a constructor of a widget with children; - # in this case, the impl may not yet exist. In this case, the addition - # of children will be handled when this widget is assigned to a container. - if self._impl: - self._impl.add_child(child._impl) + # The impl must exist, because we add children after the impl is + # constructed. + self._impl.add_child(child._impl) # Whatever layout we're a part of needs to be refreshed if self._impl: diff --git a/core/src/toga/widgets/box.py b/core/src/toga/widgets/box.py index 2732835ea5..ece8712232 100644 --- a/core/src/toga/widgets/box.py +++ b/core/src/toga/widgets/box.py @@ -19,15 +19,15 @@ def __init__( """ super().__init__(id=id, style=style) - # Children need to be added *before* the impl is created. Otherwise, GTK - # doesn't apply custom loaded fonts that have been on child widgets. + # Create a platform specific implementation of a Box + self._impl = self.factory.Box(interface=self) + + # Children need to be added *after* the impl has been created; this avoids the + # need to check whether the parent impl exists when adding a child. self._children = [] if children: self.add(*children) - # Create a platform specific implementation of a Box - self._impl = self.factory.Box(interface=self) - @property def enabled(self) -> bool: """Is the widget currently enabled? i.e., can the user interact with the widget? From e69d97e918c0604b3ec68c1a3f6e41e515784a26 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 14 Sep 2023 07:00:32 +0800 Subject: [PATCH 58/61] Clarify an android requirements as a test requirement. --- testbed/pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testbed/pyproject.toml b/testbed/pyproject.toml index c0371b3a51..9107fb175b 100644 --- a/testbed/pyproject.toml +++ b/testbed/pyproject.toml @@ -87,6 +87,8 @@ test_sources = [ ] requires = [ "../android", +] +test_requires = [ "fonttools==4.42.1", ] build_gradle_extra_content = """\ From dce0223e6597f351edfff03a4577597792714aad Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 14 Sep 2023 07:35:37 +0800 Subject: [PATCH 59/61] Reorganize docs for Font. --- core/src/toga/fonts.py | 21 -------- docs/reference/api/resources/fonts.rst | 71 +++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 22 deletions(-) diff --git a/core/src/toga/fonts.py b/core/src/toga/fonts.py index 26aa4456be..bbb1042dce 100644 --- a/core/src/toga/fonts.py +++ b/core/src/toga/fonts.py @@ -73,27 +73,6 @@ def register(family, path, *, weight=NORMAL, style=NORMAL, variant=NORMAL): **Note:** This is not currently supported on macOS or iOS. - When invalid values for style, variant or weight are passed, ``NORMAL`` will be - used. - - When a font includes multiple weights, styles or variants, each one must be - registered separately, even if they're stored in the same file:: - - from toga.style.pack import BOLD - - # Register a simple regular font - Font.register( - "Font Awesome 5 Free Solid", "resources/Font Awesome 5 Free-Solid-900.otf" - ) - - # Register a regular and bold font, contained in separate font files - Font.register("Roboto", "resources/Roboto-Regular.ttf") - Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=BOLD) - - # Register a single font file that contains both a regular and bold weight - Font.register("Bahnschrift", "resources/Bahnschrift.ttf") - Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=BOLD) - :param family: The :ref:`font family `. :param path: The path to the font file. This can be an absolute path, or a path relative to the module that defines your :any:`App` class. diff --git a/docs/reference/api/resources/fonts.rst b/docs/reference/api/resources/fonts.rst index 340b884f82..76ae364a37 100644 --- a/docs/reference/api/resources/fonts.rst +++ b/docs/reference/api/resources/fonts.rst @@ -1,6 +1,8 @@ Font ==== +A font for displaying text. + .. rst-class:: widget-support .. csv-filter:: Availability (:ref:`Key `) :header-rows: 1 @@ -8,7 +10,74 @@ Font :included_cols: 4,5,6,7,8,9,10 :exclude: {0: '(?!(Font|Component))'} -A font for displaying text. +Usage +----- + +For most widget styling, you do not need to create instances of the :class:`Font` class. +Fonts are applied to widgets using style properties:: + + import toga + from toga.style.pack import pack, SERIF, BOLD + + # Create a bold label in the system's serif font at default system size. + my_label = toga.Label("Hello World", style=Pack(font_family=SERIF, font_weight=BOLD)) + +Toga provides a number of :ref:`built-in system fonts `. Font sizes +are specified in points; if unspecified, the size will fall back to the default font size +for the widget being styled. + +If you want to use a custom font, the font file must be provided as part of your app's +resources, and registered before first use:: + + import toga + + # Register the user font with name "Roboto" + toga.Font.register("Roboto", "resources/Roboto-Regular.ttf") + + # Create a label with the new font. + my_label = toga.Label("Hello World", style=Pack(font_family="Roboto") + +When registering a font, if an invalid value is provided for the style, variant or +weight, ``NORMAL`` will be used. + +When a font includes multiple weights, styles or variants, each one must be registered +separately, even if they're stored in the same file:: + + import toga + from toga.style.pack import BOLD + + # Register a regular and bold font, contained in separate font files + Font.register("Roboto", "resources/Roboto-Regular.ttf") + Font.register("Roboto", "resources/Roboto-Bold.ttf", weight=BOLD) + + # Register a single font file that contains both a regular and bold weight + Font.register("Bahnschrift", "resources/Bahnschrift.ttf") + Font.register("Bahnschrift", "resources/Bahnschrift.ttf", weight=BOLD) + +A small number of Toga APIs (e.g., :any:`Context.write_text`) *do* require the use of +:class:`Font` instance. In these cases, you can instantiate a Font using similar +properties to the ones used for widget styling:: + + import toga + from toga.style.pack import BOLD + + # Obtain a 14 point Serif bold font instance + my_font = toga.Font(SERIF, 14, weight=BOLD) + + # Use the font to write on a canvas. + canvas = toga.Canvas() + canvas.context.write_text("Hello", font=my_font) + +Notes +----- + +* macOS and iOS do not currently support registering user fonts. + +* Android and Windows do not support the oblique font style. If an oblique font is + specified, Toga will attempt to use an italic style of the same font. + +* Android and Windows do not support the small caps font variant. If a Small Caps font + is specified, Toga will use the normal variant of the same font. Reference --------- From 7036ec497c04008a2713cc45662771bbe64d2c8e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 14 Sep 2023 07:47:55 +0800 Subject: [PATCH 60/61] Correct test case for child creation order. --- core/tests/widgets/test_box.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/tests/widgets/test_box.py b/core/tests/widgets/test_box.py index 2dc70cbcb9..d537caf3b5 100644 --- a/core/tests/widgets/test_box.py +++ b/core/tests/widgets/test_box.py @@ -25,9 +25,8 @@ def test_create_box_with_children(): assert box._impl.interface == box assert_action_performed(box, "create Box") - # No add_child action occurs, because the children are added to the box - # before the impl is created. - assert_action_not_performed(box, "add child") + # The box has children, so add child also occurs. + assert_action_performed(box, "add child") # But the box will have children. assert box.children == [child1, child2] From 33931fa1ee57faa7ac37c4a1a3ea19a3851d262b Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Thu, 14 Sep 2023 10:27:41 +0100 Subject: [PATCH 61/61] Complete reversion of child creation order --- core/src/toga/widgets/base.py | 9 +-------- core/src/toga/widgets/box.py | 3 +-- core/tests/widgets/test_box.py | 5 +++-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/core/src/toga/widgets/base.py b/core/src/toga/widgets/base.py index 184572dba5..68af53e3de 100644 --- a/core/src/toga/widgets/base.py +++ b/core/src/toga/widgets/base.py @@ -122,13 +122,10 @@ def add(self, *children: Widget) -> None: child.app = self.app child.window = self.window - # The impl must exist, because we add children after the impl is - # constructed. self._impl.add_child(child._impl) # Whatever layout we're a part of needs to be refreshed - if self._impl: - self.refresh() + self.refresh() def insert(self, index: int, child: Widget) -> None: """Insert a widget as a child of this widget. @@ -154,8 +151,6 @@ def insert(self, index: int, child: Widget) -> None: child.app = self.app child.window = self.window - # The impl must exist, because we're invoking - # insert() on a fully instantiated widget. self._impl.insert_child(index, child._impl) # Whatever layout we're a part of needs to be refreshed @@ -182,8 +177,6 @@ def remove(self, *children: Widget) -> None: child.app = None child.window = None - # The impl must exist, because we're invoking - # remove() on a fully instantiated widget. self._impl.remove_child(child._impl) # If we removed something, whatever layout we're a part of needs to be refreshed diff --git a/core/src/toga/widgets/box.py b/core/src/toga/widgets/box.py index ece8712232..3bc9485682 100644 --- a/core/src/toga/widgets/box.py +++ b/core/src/toga/widgets/box.py @@ -22,8 +22,7 @@ def __init__( # Create a platform specific implementation of a Box self._impl = self.factory.Box(interface=self) - # Children need to be added *after* the impl has been created; this avoids the - # need to check whether the parent impl exists when adding a child. + # Children need to be added *after* the impl has been created. self._children = [] if children: self.add(*children) diff --git a/core/tests/widgets/test_box.py b/core/tests/widgets/test_box.py index d537caf3b5..2a9f5d1ad1 100644 --- a/core/tests/widgets/test_box.py +++ b/core/tests/widgets/test_box.py @@ -2,6 +2,7 @@ from toga_dummy.utils import ( assert_action_not_performed, assert_action_performed, + assert_action_performed_with, ) @@ -25,8 +26,8 @@ def test_create_box_with_children(): assert box._impl.interface == box assert_action_performed(box, "create Box") - # The box has children, so add child also occurs. - assert_action_performed(box, "add child") + assert_action_performed_with(box, "add child", child=child1._impl) + assert_action_performed_with(box, "add child", child=child2._impl) # But the box will have children. assert box.children == [child1, child2]