diff --git a/pypdf/annotations/_markup_annotations.py b/pypdf/annotations/_markup_annotations.py index 580b8bf58..5d7da5659 100644 --- a/pypdf/annotations/_markup_annotations.py +++ b/pypdf/annotations/_markup_annotations.py @@ -103,12 +103,17 @@ def __init__( self[NameObject("/Subtype")] = NameObject("/FreeText") self[NameObject("/Rect")] = RectangleObject(rect) + # Table 225 of the 1.7 reference ("CSS2 style attributes used in rich text strings") font_str = "font: " - if bold: - font_str = f"{font_str}bold " if italic: font_str = f"{font_str}italic " - font_str = f"{font_str}{font} {font_size}" + else: + font_str = f"{font_str}normal " + if bold: + font_str = f"{font_str}bold " + else: + font_str = f"{font_str}normal " + font_str = f"{font_str}{font_size} {font}" font_str = f"{font_str};text-align:left;color:#{font_color}" default_appearance_string = "" diff --git a/tests/test_annotations.py b/tests/test_annotations.py index f6d14c5e4..c5df2328d 100644 --- a/tests/test_annotations.py +++ b/tests/test_annotations.py @@ -132,6 +132,26 @@ def test_free_text_annotation(pdf_file_path): writer.write(fp) +def test_free_text_annotation__font_specifier(): + free_text_annotation = FreeText( + text="Hello World", + rect=(0, 0, 0, 0), + ) + assert free_text_annotation["/DS"] == "font: normal normal 14pt Helvetica;text-align:left;color:#000000" + free_text_annotation = FreeText( + text="Hello World", + rect=(50, 550, 200, 650), + font="Arial", + bold=True, + italic=True, + font_size="20pt", + font_color="00ff00", + border_color=None, + background_color=None, + ) + assert free_text_annotation["/DS"] == "font: italic bold 20pt Arial;text-align:left;color:#00ff00" + + def test_annotationdictionary(): a = AnnotationDictionary() a.flags = 123