1
1
from typing import BinaryIO , Literal , TypedDict , final , overload
2
+ try :
3
+ from collections .abc import Buffer
4
+ except ImportError :
5
+ from typing_extensions import Buffer # < Py 3.12
2
6
3
7
import numpy as np
4
8
from numpy .typing import NDArray
@@ -159,28 +163,7 @@ class _SfntPcltDict(TypedDict):
159
163
serifStyle : int
160
164
161
165
@final
162
- class FT2Font :
163
- ascender : int
164
- bbox : tuple [int , int , int , int ]
165
- descender : int
166
- face_flags : int
167
- family_name : str
168
- fname : str
169
- height : int
170
- max_advance_height : int
171
- max_advance_width : int
172
- num_charmaps : int
173
- num_faces : int
174
- num_fixed_sizes : int
175
- num_glyphs : int
176
- postscript_name : str
177
- scalable : bool
178
- style_flags : int
179
- style_name : str
180
- underline_position : int
181
- underline_thickness : int
182
- units_per_EM : int
183
-
166
+ class FT2Font (Buffer ):
184
167
def __init__ (
185
168
self ,
186
169
filename : str | BinaryIO ,
@@ -189,6 +172,7 @@ class FT2Font:
189
172
_fallback_list : list [FT2Font ] | None = ...,
190
173
_kerning_factor : int = ...
191
174
) -> None : ...
175
+ def __buffer__ (self , flags : int ) -> memoryview : ...
192
176
def _get_fontmap (self , string : str ) -> dict [str , FT2Font ]: ...
193
177
def clear (self ) -> None : ...
194
178
def draw_glyph_to_bitmap (
@@ -232,23 +216,72 @@ class FT2Font:
232
216
def set_text (
233
217
self , string : str , angle : float = ..., flags : int = ...
234
218
) -> NDArray [np .float64 ]: ...
219
+ @property
220
+ def ascender (self ) -> int : ...
221
+ @property
222
+ def bbox (self ) -> tuple [int , int , int , int ]: ...
223
+ @property
224
+ def descender (self ) -> int : ...
225
+ @property
226
+ def face_flags (self ) -> int : ...
227
+ @property
228
+ def family_name (self ) -> str : ...
229
+ @property
230
+ def fname (self ) -> str : ...
231
+ @property
232
+ def height (self ) -> int : ...
233
+ @property
234
+ def max_advance_height (self ) -> int : ...
235
+ @property
236
+ def max_advance_width (self ) -> int : ...
237
+ @property
238
+ def num_charmaps (self ) -> int : ...
239
+ @property
240
+ def num_faces (self ) -> int : ...
241
+ @property
242
+ def num_fixed_sizes (self ) -> int : ...
243
+ @property
244
+ def num_glyphs (self ) -> int : ...
245
+ @property
246
+ def postscript_name (self ) -> str : ...
247
+ @property
248
+ def scalable (self ) -> bool : ...
249
+ @property
250
+ def style_flags (self ) -> int : ...
251
+ @property
252
+ def style_name (self ) -> str : ...
253
+ @property
254
+ def underline_position (self ) -> int : ...
255
+ @property
256
+ def underline_thickness (self ) -> int : ...
257
+ @property
258
+ def units_per_EM (self ) -> int : ...
235
259
236
260
@final
237
- class FT2Image : # TODO: When updating mypy>=1.4, subclass from Buffer.
261
+ class FT2Image ( Buffer ):
238
262
def __init__ (self , width : float , height : float ) -> None : ...
239
263
def draw_rect_filled (self , x0 : float , y0 : float , x1 : float , y1 : float ) -> None : ...
264
+ def __buffer__ (self , flags : int ) -> memoryview : ...
240
265
241
266
@final
242
267
class Glyph :
243
- width : int
244
- height : int
245
- horiBearingX : int
246
- horiBearingY : int
247
- horiAdvance : int
248
- linearHoriAdvance : int
249
- vertBearingX : int
250
- vertBearingY : int
251
- vertAdvance : int
252
-
268
+ @property
269
+ def width (self ) -> int : ...
270
+ @property
271
+ def height (self ) -> int : ...
272
+ @property
273
+ def horiBearingX (self ) -> int : ...
274
+ @property
275
+ def horiBearingY (self ) -> int : ...
276
+ @property
277
+ def horiAdvance (self ) -> int : ...
278
+ @property
279
+ def linearHoriAdvance (self ) -> int : ...
280
+ @property
281
+ def vertBearingX (self ) -> int : ...
282
+ @property
283
+ def vertBearingY (self ) -> int : ...
284
+ @property
285
+ def vertAdvance (self ) -> int : ...
253
286
@property
254
287
def bbox (self ) -> tuple [int , int , int , int ]: ...
0 commit comments