expo-font
Version:
Load fonts at runtime and use them in React Native components.
39 lines (32 loc) • 1.35 kB
text/typescript
import { CodedError, UnavailabilityError } from 'expo-modules-core';
import ExpoFontLoader from './ExpoFontLoader';
import type { FontSource, ServerFontResourceDescriptor } from './Font.types';
import { getAssetForSource, loadSingleFontAsync } from './FontLoader';
export { withServerContext } from './serverContext';
/**
* @returns the server resources that should be statically extracted.
* @private
*/
export function getServerResources(): string[] {
if (!ExpoFontLoader.getServerResources) {
throw new UnavailabilityError('expo-font', 'getServerResources');
}
return ExpoFontLoader.getServerResources();
}
export function getServerResourceDescriptors(): ServerFontResourceDescriptor[] {
if (!ExpoFontLoader.getServerResourceDescriptors) {
throw new UnavailabilityError('expo-font', 'getServerResourceDescriptors');
}
return ExpoFontLoader.getServerResourceDescriptors();
}
export function registerStaticFont(fontFamily: string, source?: FontSource | null) {
// MUST BE A SYNC FUNCTION!
if (!source) {
throw new CodedError(
`ERR_FONT_SOURCE`,
`Cannot load null or undefined font source: { "${fontFamily}": ${source} }. Expected asset of type \`FontSource\` for fontFamily of name: "${fontFamily}"`
);
}
const asset = getAssetForSource(source);
loadSingleFontAsync(fontFamily, asset);
}