58 self, data: bytes, source_format: DataTypes, generate_css: bool =
True
59 ) -> CONV_CONST.ConversionResult:
63 data (bytes): _description_
64 source_format (DataTypes): _description_
65 generate_css (bool, optional): _description_. Defaults to True.
68 CONV_CONST.ConversionResult: _description_
72 if not MEDIA_TYPES.is_font(source_format):
73 self.
disp.log_warning(f
"Unsupported font format: {source_format}")
74 return self.
_build_result(data,
False, source_format, source_format,
None)
77 if source_format == DataTypes.EOT:
78 self.
disp.log_warning(
"EOT is read-only; returning original data")
79 return self.
_build_result(data,
False, source_format, source_format, data)
84 return self.
_build_result(data,
False, source_format, source_format,
None)
93 css_text = self.
_generate_css(converted_files)
if generate_css
else ""
98 font_result = CONV_CONST.FontResult(
99 ttf=converted_files.get(DataTypes.TTF, b
""),
100 otf=converted_files.get(DataTypes.OTF, b
""),
101 woff=converted_files.get(DataTypes.WOFF, b
""),
102 woff2=converted_files.get(DataTypes.WOFF2, b
""),
109 from_type=source_format,
123 targets = [DataTypes.WOFF, DataTypes.WOFF2]
124 if source_format
in (DataTypes.TTF, DataTypes.OTF):
125 targets.append(source_format)
129 self, font: TTFont, data: bytes, targets: list[DataTypes]
130 ) -> Dict[DataTypes, bytes]:
131 converted_files: Dict[DataTypes, bytes] = {}
132 for target
in targets:
135 converted_files[target] = converted
136 return converted_files
140 font_copy = TTFont(BytesIO(data))
141 out_buffer = BytesIO()
143 if target == DataTypes.WOFF:
144 font_copy.flavor =
"woff"
145 font_copy.save(out_buffer)
146 elif target == DataTypes.WOFF2:
147 font_copy.flavor =
"woff2"
148 font_copy.save(out_buffer)
150 font_copy.save(out_buffer)
152 return out_buffer.getvalue()
153 except Exception
as e:
154 self.
disp.log_error(f
"Failed to convert to {target}: {e}")
195 from_type: DataTypes,
196 to_type: Optional[DataTypes],
197 result: Optional[Union[bytes, str, CONV_CONST.FontResult]] =
None
198 ) -> CONV_CONST.ConversionResult:
200 return CONV_CONST.ConversionResult(
207 return CONV_CONST.ConversionResult(