add fonts

This commit is contained in:
Sina Atalay 2023-10-07 23:18:05 +02:00
parent 134adfcbe5
commit 575bc06c50
6 changed files with 42 additions and 5 deletions

View File

@ -3,6 +3,7 @@
import subprocess import subprocess
import os import os
import re import re
import shutil
from jinja2 import Environment, PackageLoader from jinja2 import Environment, PackageLoader
@ -201,6 +202,15 @@ def print_today() -> str:
return today.strftime("%B %d, %Y") return today.strftime("%B %d, %Y")
def get_path_to_fonts_directory() -> str:
"""Return the path to the fonts directory.
Returns:
str: The path to the fonts directory.
"""
return os.path.join(os.path.dirname(__file__), "templates", "fonts")
def render_template(data): def render_template(data):
"""Render the template using the given data. """Render the template using the given data.
@ -242,7 +252,10 @@ def render_template(data):
environment.filters["make_it_italic"] = make_it_italic environment.filters["make_it_italic"] = make_it_italic
output_latex_file = template.render( output_latex_file = template.render(
design=data.design.options, cv=data.cv, today=print_today() design=data.design.options,
cv=data.cv,
today=print_today(),
fonts_directory=get_path_to_fonts_directory(),
) )
# Create an output file and write the rendered LaTeX code to it: # Create an output file and write the rendered LaTeX code to it:
@ -251,6 +264,21 @@ def render_template(data):
with open(output_file_path, "w") as file: with open(output_file_path, "w") as file:
file.write(output_latex_file) file.write(output_latex_file)
# Copy the fonts directory to the output directory:
fonts_directory = get_path_to_fonts_directory()
output_fonts_directory = os.path.join(os.path.dirname(output_file_path), "fonts")
os.makedirs(output_fonts_directory, exist_ok=True)
for directory in os.listdir(fonts_directory):
if directory == "SourceSans3":
# copy the SourceSans3 fonts:
source_directory = os.path.join(fonts_directory, directory)
shutil.copytree(
source_directory,
output_fonts_directory,
dirs_exist_ok=True,
)
return output_file_path return output_file_path
@ -267,7 +295,7 @@ def run_latex(latex_file_path):
if os.name == "nt": if os.name == "nt":
# remove all files except the .tex file # remove all files except the .tex file
for file in os.listdir(os.path.dirname(latex_file_path)): for file in os.listdir(os.path.dirname(latex_file_path)):
if file.endswith(".tex"): if file.endswith(".tex") or file == "fonts":
continue continue
os.remove(os.path.join(os.path.dirname(latex_file_path), file)) os.remove(os.path.join(os.path.dirname(latex_file_path), file))
@ -278,6 +306,7 @@ def run_latex(latex_file_path):
"bin", "bin",
"windows", "windows",
) )
print("PDF generatation started!")
subprocess.run( subprocess.run(
[ [
f"{tinytexPath}\\latexmk.exe", f"{tinytexPath}\\latexmk.exe",
@ -289,6 +318,12 @@ def run_latex(latex_file_path):
"-file-line-error", "-file-line-error",
], ],
cwd=os.path.dirname(latex_file_path), cwd=os.path.dirname(latex_file_path),
stdout=subprocess.DEVNULL,
) )
print("PDF generated successfully!")
else: else:
print("Only Windows is supported for now.") print(
"Only Windows is supported for now. But you can still use the generated"
" .tex file to generate the PDF. Go to overleaf.com and upload the .tex"
" file there to generate the PDF."
)

View File

@ -17,7 +17,6 @@
\usepackage[explicit]{titlesec} % for customizing section titles \usepackage[explicit]{titlesec} % for customizing section titles
\usepackage{tabularx} % for making tables with fixed width columns \usepackage{tabularx} % for making tables with fixed width columns
\usepackage{array} % tabularx requires this \usepackage{array} % tabularx requires this
\usepackage{xifthen} % for if-then-else statements
\usepackage[dvipsnames]{xcolor} % for coloring text \usepackage[dvipsnames]{xcolor} % for coloring text
\definecolor{primaryColor}{RGB}{<<design.primary_color.as_rgb_tuple()|join(", ")>>} % define primary color \definecolor{primaryColor}{RGB}{<<design.primary_color.as_rgb_tuple()|join(", ")>>} % define primary color
\usepackage{enumitem} % for customizing lists \usepackage{enumitem} % for customizing lists
@ -38,12 +37,15 @@
\setlength{\topskip}{0pt} % no top skip \setlength{\topskip}{0pt} % no top skip
\pagenumbering{gobble} % no page numbering \pagenumbering{gobble} % no page numbering
\setmainfont{SourceSans3}[ \setmainfont{SourceSans3}[
Path= fonts/,
Extension = .ttf, Extension = .ttf,
UprightFont = *-Regular, UprightFont = *-Regular,
ItalicFont = *-Italic, ItalicFont = *-Italic,
BoldFont = *-Bold, BoldFont = *-Bold,
BoldItalicFont = *-BoldItalic] % set main font BoldItalicFont = *-BoldItalic
]
\titleformat{\section}{ \titleformat{\section}{
% make the font size of the section title large and color it with the primary color % make the font size of the section title large and color it with the primary color