Skip to content

Commit 658abc3

Browse files
committed
ENH: Font dataclass
This patch adds a new Font dataclass. Its initial use, for now, is to act as a dataclass for the font metrics of the 14 Adobe core fonts. These fonts are usually not embedded in PDF documents, while PDF readers are expected to carry that information themselves.
1 parent 5e6c41d commit 658abc3

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

pypdf/_font.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Copyright (c) Stefan...
2+
#
3+
# All rights reserved.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are
7+
# met:
8+
#
9+
# * Redistributions of source code must retain the above copyright notice,
10+
# this list of conditions and the following disclaimer.
11+
# * Redistributions in binary form must reproduce the above copyright notice,
12+
# this list of conditions and the following disclaimer in the documentation
13+
# and/or other materials provided with the distribution.
14+
# * The name of the author may not be used to endorse or promote products
15+
# derived from this software without specific prior written permission.
16+
#
17+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27+
# POSSIBILITY OF SUCH DAMAGE.
28+
29+
from dataclasses import dataclass
30+
from typing import Dict, Tuple
31+
32+
33+
@dataclass(frozen=True)
34+
class Font:
35+
name: str
36+
family: str
37+
weight: str
38+
39+
ascent: float
40+
descent: float
41+
cap_height: float
42+
x_height: float
43+
italic_angle: float
44+
flags: int
45+
bbox: Tuple[float, float, float, float]
46+
47+
character_widths: Dict[str, int]

0 commit comments

Comments
 (0)