dribia / dbt2pdf

Generate a PDF document from your DBT project's documentation.
MIT License
0 stars 0 forks source link

Add support for custom fonts #3

Closed airibarne closed 3 weeks ago

airibarne commented 2 months ago

We usually use Roboto as our default font, so we'd need some support for this font (and others in the general case).

An initial approach would be to access system fonts, which can be discovered with something like Matplotlib's Font Manager.

With this approach, a use would need to have installed the font to use in the PC before generating the documentation.

Another approach would be to include some functionality to download fonts, which is a bit of overkill. A third but less general approach would be to include Roboto ttf files and making it be the only font available, which is way better than the current standard font.

airibarne commented 2 months ago

Utilitzarem el Font Manager de Matplotlib (que ja està instal·lat), amb from matplotlib.font_manager import findSystemFonts.

  1. Creem un mòdul nou font.py amb una classe Font i una funció find.
  2. La classe Font s'inicialitza a partir d'un Path (que serà dels que torna el findSystemFonts) i omple tres atributs: family, style i path a partir d'aquest argument.
  3. La funció find té un argument que és la família, i utilitza findSystemFonts per tornar un diccionari str: Font on les keys són els estils? Algo així.

Llavors, la funcionalitat quedaria que a la classe PDF se li pot passar un argument font_family i intenta setejar-la. Només petaria quan realment no tenim cap font de la familia instal·lada. Igual si tenim només e.g. la font bàsica però no la bold faria un warning però no petaria. L'argument font_family s'haurà d'exposar via CLI.

airibarne commented 2 months ago

La classe Font podria ser un model de pydantic, el style un enum (check aquí)