Parse the optional fields for kern pair data and composites. Returns ------- kern_data : dict A dict containing kerning information. May be empty. See `._parse_kern_pairs`. composites : dict A dict containing composite information. May be empty.
(fh: BinaryIO)
| 346 | |
| 347 | |
| 348 | def _parse_optional(fh: BinaryIO) -> tuple[dict[tuple[str, str], float], |
| 349 | dict[bytes, list[CompositePart]]]: |
| 350 | """ |
| 351 | Parse the optional fields for kern pair data and composites. |
| 352 | |
| 353 | Returns |
| 354 | ------- |
| 355 | kern_data : dict |
| 356 | A dict containing kerning information. May be empty. |
| 357 | See `._parse_kern_pairs`. |
| 358 | composites : dict |
| 359 | A dict containing composite information. May be empty. |
| 360 | See `._parse_composites`. |
| 361 | """ |
| 362 | kern_data: dict[tuple[str, str], float] = {} |
| 363 | composites: dict[bytes, list[CompositePart]] = {} |
| 364 | for line in fh: |
| 365 | line = line.rstrip() |
| 366 | if not line: |
| 367 | continue |
| 368 | match line.split()[0]: |
| 369 | case b'StartKernData': |
| 370 | kern_data = _parse_kern_pairs(fh) |
| 371 | case b'StartComposites': |
| 372 | composites = _parse_composites(fh) |
| 373 | |
| 374 | return kern_data, composites |
| 375 | |
| 376 | |
| 377 | class AFM: |
no test coverage detected
searching dependent graphs…