diff --git a/apps/marketing/next.config.js b/apps/marketing/next.config.js index c8c89e45d..e0cec231e 100644 --- a/apps/marketing/next.config.js +++ b/apps/marketing/next.config.js @@ -18,6 +18,10 @@ const FONT_CAVEAT_BYTES = fs.readFileSync( path.join(__dirname, '../../packages/assets/fonts/caveat.ttf'), ); +const FONT_NOTO_SANS_BYTES = fs.readFileSync( + path.join(__dirname, '../../packages/assets/fonts/noto-sans.ttf'), +); + /** @type {import('next').NextConfig} */ const config = { experimental: { @@ -38,6 +42,7 @@ const config = { env: { NEXT_PUBLIC_PROJECT: 'marketing', FONT_CAVEAT_URI: `data:font/ttf;base64,${FONT_CAVEAT_BYTES.toString('base64')}`, + FONT_NOTO_SANS_URI: `data:font/ttf;base64,${FONT_NOTO_SANS_BYTES.toString('base64')}`, }, modularizeImports: { 'lucide-react': { diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 85d3097ca..88cd0b3fc 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -18,6 +18,10 @@ const FONT_CAVEAT_BYTES = fs.readFileSync( path.join(__dirname, '../../packages/assets/fonts/caveat.ttf'), ); +const FONT_NOTO_SANS_BYTES = fs.readFileSync( + path.join(__dirname, '../../packages/assets/fonts/noto-sans.ttf'), +); + /** @type {import('next').NextConfig} */ const config = { output: process.env.DOCKER_OUTPUT ? 'standalone' : undefined, @@ -42,6 +46,7 @@ const config = { APP_VERSION: version, NEXT_PUBLIC_PROJECT: 'web', FONT_CAVEAT_URI: `data:font/ttf;base64,${FONT_CAVEAT_BYTES.toString('base64')}`, + FONT_NOTO_SANS_URI: `data:font/ttf;base64,${FONT_NOTO_SANS_BYTES.toString('base64')}`, }, modularizeImports: { 'lucide-react': { diff --git a/packages/assets/fonts/noto-sans.ttf b/packages/assets/fonts/noto-sans.ttf new file mode 100644 index 000000000..fa4cff505 Binary files /dev/null and b/packages/assets/fonts/noto-sans.ttf differ diff --git a/packages/lib/constants/pdf.ts b/packages/lib/constants/pdf.ts index 19663ef58..1ac3508d5 100644 --- a/packages/lib/constants/pdf.ts +++ b/packages/lib/constants/pdf.ts @@ -1,6 +1,6 @@ import { APP_BASE_URL } from './app'; -export const DEFAULT_STANDARD_FONT_SIZE = 15; +export const DEFAULT_STANDARD_FONT_SIZE = 12; export const DEFAULT_HANDWRITING_FONT_SIZE = 50; export const MIN_STANDARD_FONT_SIZE = 8; diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts index 1aabf96b8..0c7a4f58c 100644 --- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts +++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts @@ -1,6 +1,6 @@ // https://github.com/Hopding/pdf-lib/issues/20#issuecomment-412852821 import fontkit from '@pdf-lib/fontkit'; -import { PDFDocument, StandardFonts } from 'pdf-lib'; +import { PDFDocument } from 'pdf-lib'; import { DEFAULT_HANDWRITING_FONT_SIZE, @@ -17,6 +17,10 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu res.arrayBuffer(), ); + const fontUbuntu = await fetch(process.env.FONT_NOTO_SANS_URI).then(async (res) => + res.arrayBuffer(), + ); + const isSignatureField = isSignatureFieldType(field.type); pdf.registerFontkit(fontkit); @@ -41,7 +45,7 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu const fieldX = pageWidth * (Number(field.positionX) / 100); const fieldY = pageHeight * (Number(field.positionY) / 100); - const font = await pdf.embedFont(isSignatureField ? fontCaveat : StandardFonts.Helvetica); + const font = await pdf.embedFont(isSignatureField ? fontCaveat : fontUbuntu); if (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) { await pdf.embedFont(fontCaveat); diff --git a/packages/tsconfig/process-env.d.ts b/packages/tsconfig/process-env.d.ts index 0e05004a4..13e3973db 100644 --- a/packages/tsconfig/process-env.d.ts +++ b/packages/tsconfig/process-env.d.ts @@ -73,6 +73,7 @@ declare namespace NodeJS { DEPLOYMENT_TARGET?: 'webapp' | 'marketing'; FONT_CAVEAT_URI: string; + FONT_NOTO_SANS_URI: string; POSTGRES_URL?: string; DATABASE_URL?: string; diff --git a/turbo.json b/turbo.json index fa89193eb..8f89e97a6 100644 --- a/turbo.json +++ b/turbo.json @@ -112,6 +112,7 @@ "NODE_ENV", "DEPLOYMENT_TARGET", "FONT_CAVEAT_URI", + "FONT_NOTO_SANS_URI", "POSTGRES_URL", "DATABASE_URL", "DATABASE_URL_UNPOOLED",