Enable URL patterns for fonts.web.*

See #3636
This commit is contained in:
Florian Bruhin 2021-05-18 17:43:28 +02:00
parent d0cb876eef
commit f617cc6d09
4 changed files with 50 additions and 14 deletions

View File

@ -3089,6 +3089,8 @@ Default: +pass:[default_size default_family]+
=== fonts.web.family.cursive
Font family for cursive fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3097,6 +3099,8 @@ Default: empty
=== fonts.web.family.fantasy
Font family for fantasy fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3105,6 +3109,8 @@ Default: empty
=== fonts.web.family.fixed
Font family for fixed fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3113,6 +3119,8 @@ Default: empty
=== fonts.web.family.sans_serif
Font family for sans-serif fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3121,6 +3129,8 @@ Default: empty
=== fonts.web.family.serif
Font family for serif fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3129,6 +3139,8 @@ Default: empty
=== fonts.web.family.standard
Font family for standard fonts.
This setting supports URL patterns.
Type: <<types,FontFamily>>
Default: empty
@ -3137,6 +3149,8 @@ Default: empty
=== fonts.web.size.default
Default font size (in pixels) for regular text.
This setting supports URL patterns.
Type: <<types,Int>>
Default: +pass:[16]+
@ -3145,6 +3159,8 @@ Default: +pass:[16]+
=== fonts.web.size.default_fixed
Default font size (in pixels) for fixed-pitch text.
This setting supports URL patterns.
Type: <<types,Int>>
Default: +pass:[13]+
@ -3153,6 +3169,8 @@ Default: +pass:[13]+
=== fonts.web.size.minimum
Hard minimum font size (in pixels).
This setting supports URL patterns.
Type: <<types,Int>>
Default: +pass:[0]+
@ -3161,6 +3179,8 @@ Default: +pass:[0]+
=== fonts.web.size.minimum_logical
Minimum logical font size (in pixels) that is applied when zooming out.
This setting supports URL patterns.
Type: <<types,Int>>
Default: +pass:[6]+

View File

@ -989,6 +989,7 @@ class _Quirk:
if self.name is None:
self.name = f"js-{self.filename.replace('_', '-')}"
class _WebEngineScripts(QObject):
def __init__(self, tab, parent=None):

View File

@ -3270,6 +3270,7 @@ fonts.tabs.unselected:
fonts.web.family.standard:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3277,6 +3278,7 @@ fonts.web.family.standard:
fonts.web.family.fixed:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3284,6 +3286,7 @@ fonts.web.family.fixed:
fonts.web.family.serif:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3291,6 +3294,7 @@ fonts.web.family.serif:
fonts.web.family.sans_serif:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3298,6 +3302,7 @@ fonts.web.family.sans_serif:
fonts.web.family.cursive:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3305,6 +3310,7 @@ fonts.web.family.cursive:
fonts.web.family.fantasy:
default: ''
supports_pattern: true
type:
name: FontFamily
none_ok: true
@ -3317,6 +3323,7 @@ fonts.web.family.fantasy:
fonts.web.size.default:
default: 16
supports_pattern: true
type:
name: Int
minval: 1
@ -3325,6 +3332,7 @@ fonts.web.size.default:
fonts.web.size.default_fixed:
default: 13
supports_pattern: true
type:
name: Int
minval: 1
@ -3333,6 +3341,7 @@ fonts.web.size.default_fixed:
fonts.web.size.minimum:
default: 0
supports_pattern: true
type:
name: Int
minval: 0
@ -3343,6 +3352,7 @@ fonts.web.size.minimum_logical:
# This is 0 as default on QtWebKit, and 6 on QtWebEngine - so let's
# just go for 6 here.
default: 6
supports_pattern: true
type:
name: Int
minval: 0

View File

@ -23,7 +23,7 @@ import re
import argparse
import functools
import dataclasses
from typing import Any, Callable, Dict, Optional
from typing import Any, Callable, Dict, Optional, Union
from PyQt5.QtCore import QUrl, pyqtSlot, qVersion
from PyQt5.QtGui import QFont
@ -105,9 +105,6 @@ class AbstractSettings:
def __init__(self, settings: Any) -> None:
self._settings = settings
def _assert_not_unset(self, value: Any) -> None:
assert value is not usertypes.UNSET
def set_attribute(self, name: str, value: Any) -> None:
"""Set the given QWebSettings/QWebEngineSettings attribute.
@ -129,30 +126,38 @@ class AbstractSettings:
info = self._ATTRIBUTES[name]
return self._settings.testAttribute(info.attributes[0])
def set_font_size(self, name: str, value: int) -> None:
def set_font_size(self, name: str, value: Union[int, usertypes.Unset]) -> None:
"""Set the given QWebSettings/QWebEngineSettings font size."""
self._assert_not_unset(value)
family = self._FONT_SIZES[name]
self._settings.setFontSize(family, value)
if value is usertypes.UNSET:
self._settings.resetFontSize(family)
else:
self._settings.setFontSize(family, value)
def set_font_family(self, name: str, value: Optional[str]) -> None:
def set_font_family(
self,
name: str,
value: Union[str, None, usertypes.Unset],
) -> None:
"""Set the given QWebSettings/QWebEngineSettings font family.
With None (the default), QFont is used to get the default font for the
family.
"""
self._assert_not_unset(value)
family = self._FONT_FAMILIES[name]
if value is None:
if value is usertypes.UNSET:
self._settings.resetFontFamily(family)
elif value is None:
font = QFont()
font.setStyleHint(self._FONT_TO_QFONT[family])
value = font.defaultFamily()
self._settings.setFontFamily(family, value)
else:
self._settings.setFontFamily(family, value)
self._settings.setFontFamily(family, value)
def set_default_text_encoding(self, encoding: str) -> None:
def set_default_text_encoding(self, encoding: Union[str, usertypes.Unset]) -> None:
"""Set the default text encoding to use."""
self._assert_not_unset(encoding)
assert encoding is not usertypes.UNSET # unclear how to reset
self._settings.setDefaultTextEncoding(encoding)
def _update_setting(self, setting: str, value: Any) -> bool: