Draw Modify Font

The ooodev.format.draw.modify.font.FontOnly, class is used to modify the values seen in Fig. 894 of a style.

Draw dialog Font default

Fig. 894 Draw dialog Font default

Setting the font

from __future__ import annotations
import uno
from ooodev.draw import Draw, DrawDoc, ZoomKind
from ooodev.format.draw.modify import FamilyGraphics, DrawStyleFamilyKind
from ooodev.format.draw.modify.font import FontOnly, FontLang
from ooodev.loader.lo import Lo

def main() -> int:
    with Lo.Loader(connector=Lo.ConnectSocket()):
        doc = DrawDoc(Draw.create_draw_doc())
        doc.set_visible()
        Lo.delay(500)
        doc.zoom(ZoomKind.ZOOM_75_PERCENT)

        slide = doc.get_slide()

        width = 100
        height = 50
        x = 10
        y = 10

        rect = slide.draw_rectangle(x=x, y=y, width=width, height=height)
        rect.set_string("Hello World!")
        font_style = FontOnly(
            name="Arial",
            size=20,
            lang=FontLang().french_switzerland,
            style_name=FamilyGraphics.DEFAULT_DRAWING_STYLE,
            style_family=DrawStyleFamilyKind.GRAPHICS,
        )
        doc.apply_styles(font_style)

        Lo.delay(1_000)
        doc.close_doc()
    return 0

if __name__ == "__main__":
    raise SystemExit(main())

Running the above code will produce the following results in the Draw dialog. Note: that the language is changed to French (Switzerland), this is optional via the FontLang class.

Draw dialog Font style changed

Fig. 895 Draw dialog Font style changed

Getting font from a style

# ... other code

f_style = FontOnly.from_style(
    doc=doc.component,
    style_name=FamilyGraphics.DEFAULT_DRAWING_STYLE,
    style_family=DrawStyleFamilyKind.GRAPHICS,
)
assert f_style.prop_style_name == str(FamilyGraphics.DEFAULT_DRAWING_STYLE)