feat(shared): add getPretextFontString formatter

This commit is contained in:
Ilia Mashkov
2026-06-24 13:49:02 +03:00
parent f29e0b0c7c
commit dbd48b287d
3 changed files with 32 additions and 0 deletions
@@ -0,0 +1,15 @@
import {
describe,
expect,
it,
} from 'vitest';
import { getPretextFontString } from './getPretextFontString';
describe('getPretextFontString', () => {
it('formats weight, px size and quoted family for pretext/canvas', () => {
expect(getPretextFontString(400, 48, 'Inter')).toBe('400 48px "Inter"');
});
it('preserves fractional sizes and quotes multi-word family names', () => {
expect(getPretextFontString(700, 12.5, 'PT Serif')).toBe('700 12.5px "PT Serif"');
});
});
@@ -0,0 +1,16 @@
/**
* Formats a font config into the string `@chenglou/pretext` and the Canvas 2D
* `font` property both expect: `weight sizepx "family"`.
*
* ponytail: deliberate copy of widgets/ComparisonView/lib's version — ADR-0002
* keeps the shelved morph tool untouched, so we don't move its util. Three lines
* is cheaper to duplicate than to refactor frozen code.
*
* @param weight - Numeric font weight (e.g. 400).
* @param sizePx - Font size in pixels.
* @param fontName - The font family name.
* @returns A formatted font string: `weight sizepx "fontName"`.
*/
export function getPretextFontString(weight: number, sizePx: number, fontName: string): string {
return `${weight} ${sizePx}px "${fontName}"`;
}
+1
View File
@@ -18,6 +18,7 @@ export { clampNumber } from './clampNumber/clampNumber';
export { cn } from './cn';
export { debounce } from './debounce/debounce';
export { getDecimalPlaces } from './getDecimalPlaces/getDecimalPlaces';
export { getPretextFontString } from './getPretextFontString/getPretextFontString';
export { getSkeletonWidth } from './getSkeletonWidth/getSkeletonWidth';
export { roundToStepPrecision } from './roundToStepPrecision/roundToStepPrecision';
export { smoothScroll } from './smoothScroll/smoothScroll';