Compare commits

...

6 Commits

4 changed files with 58 additions and 5 deletions

View File

@ -1,3 +1,4 @@
import { isLocalFont } from "@reactive-resume/utils";
import { useEffect, useMemo } from "react";
import { Helmet } from "react-helmet-async";
import { Outlet } from "react-router";
@ -18,6 +19,18 @@ export const ArtboardPage = () => {
}, [metadata.typography.font]);
useEffect(() => {
const family = metadata.typography.font.family;
if (isLocalFont(family)) {
let frame = 0;
frame = requestAnimationFrame(() => {
const width = window.document.body.offsetWidth;
const height = window.document.body.offsetHeight;
const message = { type: "PAGE_LOADED", payload: { width, height } };
window.postMessage(message, "*");
});
return () => { cancelAnimationFrame(frame); };
}
webfontloader.load({
google: { families: [fontString] },
active: () => {

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: te\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-11-04 14:22\n"
"PO-Revision-Date: 2025-11-06 00:11\n"
"Last-Translator: \n"
"Language-Team: Telugu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -314,13 +314,13 @@ msgstr "కోడ్ ఖచ్చితంగా 6 అంకెలు ఉండ
#: apps/client/src/pages/builder/sidebars/left/index.tsx:272
msgid "Collapse All"
msgstr ""
msgstr "అన్నిటినీ మూసివేయి"
#: apps/client/src/pages/builder/sidebars/left/sections/basics.tsx:30
#: apps/client/src/pages/builder/sidebars/left/sections/shared/section-base.tsx:115
#: apps/client/src/pages/builder/sidebars/left/sections/summary.tsx:33
msgid "Collapse section"
msgstr ""
msgstr "విభాగాన్ని మూసివేయి"
#: apps/client/src/pages/builder/sidebars/left/sections/shared/section-options.tsx:136
msgid "Columns"
@ -583,13 +583,13 @@ msgstr "మీరు ఆర్థికంగా సహాయం చేయలే
#: apps/client/src/pages/builder/sidebars/left/index.tsx:271
msgid "Expand All"
msgstr ""
msgstr "అన్నింటినీ తెరవు"
#: apps/client/src/pages/builder/sidebars/left/sections/basics.tsx:30
#: apps/client/src/pages/builder/sidebars/left/sections/shared/section-base.tsx:115
#: apps/client/src/pages/builder/sidebars/left/sections/summary.tsx:33
msgid "Expand section"
msgstr ""
msgstr "విభాగాన్ని తెరవు"
#: apps/client/src/pages/home/sections/templates/index.tsx:12
msgid "Explore the templates available in Reactive Resume and view the resumes crafted with them. They could also serve as examples to help guide the creation of your next resume."

View File

@ -6,6 +6,21 @@ export type Font = {
files: Record<string, string>;
};
/**
* Known system fonts we consider available locally without fetching from Google Fonts.
* Extend this list when adding more system-safe families to the app.
*/
export const localFonts = ["Arial", "Cambria", "Garamond", "Times New Roman"];
/**
* Checks whether a font family is a local/system font.
*
* Input: font family name (case-insensitive)
* Output: true if present in localFonts, otherwise false
*/
export const isLocalFont = (family: string): boolean =>
localFonts.some((f) => f.toLowerCase() === family.toLowerCase());
export const fonts: Font[] = [
{
family: "Roboto",

View File

@ -0,0 +1,25 @@
import { describe, expect, it } from "vitest";
import { isLocalFont, localFonts } from "../fonts";
describe("isLocalFont", () => {
it("returns true for known local fonts (case-insensitive)", () => {
expect(isLocalFont("Arial")).toBe(true);
expect(isLocalFont("arial")).toBe(true);
expect(isLocalFont("Times New Roman")).toBe(true);
expect(isLocalFont("times new roman")).toBe(true);
});
it("returns false for non-local fonts", () => {
expect(isLocalFont("Roboto")).toBe(false);
expect(isLocalFont("Open Sans")).toBe(false);
});
});
describe("localFonts", () => {
it("includes the expected base set", () => {
for (const f of ["Arial", "Cambria", "Garamond", "Times New Roman"]) {
expect(localFonts).toContain(f);
}
});
});