%PDF- %PDF-
| Direktori : /proc/thread-self/root/lib/python3/dist-packages/ufoLib2/objects/info/ |
| Current File : //proc/thread-self/root/lib/python3/dist-packages/ufoLib2/objects/info/woff.py |
"""Fontinfo.plist fields for WOFF 1.0 metadata.
https://unifiedfontobject.org/versions/ufo3/fontinfo.plist/#woff-data
"""
from __future__ import annotations
from typing import Any, List, Mapping, Optional, Sequence, Type, TypeVar
from attr import Attribute, define, field
from ufoLib2.objects.misc import AttrDictMixin
_T = TypeVar("_T", bound=AttrDictMixin)
def _convert_list_of_woff_metadata(
cls: Type[_T], values: Sequence[_T | Mapping[str, Any]]
) -> list[_T]:
return [cls.coerce_from_dict(v) for v in values]
@define
class WoffMetadataUniqueID(AttrDictMixin):
id: str
@define
class WoffMetadataVendor(AttrDictMixin):
name: str
url: Optional[str] = None
dir: Optional[str] = None
# 'class' of course is reserved in Python
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
@define
class WoffMetadataCredit(AttrDictMixin):
name: str
url: Optional[str] = None
role: Optional[str] = None
dir: Optional[str] = None
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
def _convert_list_of_woff_metadata_credits(
value: list[WoffMetadataCredit | Mapping[str, Any]],
) -> list[WoffMetadataCredit]:
return _convert_list_of_woff_metadata(WoffMetadataCredit, value)
@define
class WoffMetadataCredits(AttrDictMixin):
credits: List[WoffMetadataCredit] = field(
factory=list,
converter=_convert_list_of_woff_metadata_credits,
)
@define
class WoffMetadataText(AttrDictMixin):
text: str
language: Optional[str] = None
dir: Optional[str] = None
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
def _at_least_one_item(
self: Any, attribute: Attribute[Any], value: Sequence[Any]
) -> None:
if len(value) == 0:
raise ValueError(
f"{self.__class__.__name__}.{attribute.name} must contain at list 1 item"
)
def _convert_list_of_woff_metadata_texts(
value: list[WoffMetadataText | Mapping[str, Any]],
) -> list[WoffMetadataText]:
return _convert_list_of_woff_metadata(WoffMetadataText, value)
@define
class WoffMetadataDescription(AttrDictMixin):
url: Optional[str] = None
text: List[WoffMetadataText] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_texts,
)
@define
class WoffMetadataLicense(AttrDictMixin):
url: Optional[str] = None
id: Optional[str] = None
text: List[WoffMetadataText] = field(
factory=list,
converter=_convert_list_of_woff_metadata_texts,
)
@define
class WoffMetadataCopyright(AttrDictMixin):
text: List[WoffMetadataText] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_texts,
)
@define
class WoffMetadataTrademark(AttrDictMixin):
text: List[WoffMetadataText] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_texts,
)
@define
class WoffMetadataLicensee(AttrDictMixin):
name: str
dir: Optional[str] = None
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
@define
class WoffMetadataExtensionName(AttrDictMixin):
text: str
language: Optional[str] = None
dir: Optional[str] = None
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
@define
class WoffMetadataExtensionValue(AttrDictMixin):
text: str
language: Optional[str] = None
dir: Optional[str] = None
class_: Optional[str] = field(default=None, metadata={"rename_attr": "class"})
def _convert_list_of_woff_metadata_extension_name(
value: list[WoffMetadataExtensionName | Mapping[str, Any]],
) -> list[WoffMetadataExtensionName]:
return _convert_list_of_woff_metadata(WoffMetadataExtensionName, value)
def _convert_list_of_woff_metadata_extension_value(
value: list[WoffMetadataExtensionValue | Mapping[str, Any]],
) -> list[WoffMetadataExtensionValue]:
return _convert_list_of_woff_metadata(WoffMetadataExtensionValue, value)
@define
class WoffMetadataExtensionItem(AttrDictMixin):
id: Optional[str] = None
names: List[WoffMetadataExtensionName] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_extension_name,
)
# 'values()' is the name of the dict method, hence the attribute named 'values_'
values_: List[WoffMetadataExtensionValue] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_extension_value,
metadata={"rename_attr": "values"},
)
def _convert_list_of_woff_metadata_extension_item(
value: list[WoffMetadataExtensionItem | Mapping[str, Any]],
) -> list[WoffMetadataExtensionItem]:
return _convert_list_of_woff_metadata(WoffMetadataExtensionItem, value)
@define
class WoffMetadataExtension(AttrDictMixin):
id: Optional[str]
names: List[WoffMetadataExtensionName] = field(
factory=list,
converter=_convert_list_of_woff_metadata_extension_name,
)
# 'items()' is the name of the dict method, hence the attribute named 'items_'
items_: List[WoffMetadataExtensionItem] = field(
factory=list,
validator=_at_least_one_item,
converter=_convert_list_of_woff_metadata_extension_item,
metadata={"rename_attr": "items"},
)