UNPKG

@pmndrs/uikit

Version:

Build performant 3D user interfaces with Three.js and yoga.

95 lines (94 loc) 2.61 kB
import { Signal } from '@preact/signals-core'; import { Texture, TypedArray, WebGLRenderer } from 'three'; import { MergedProperties } from '../properties/merged.js'; export type FontFamilyWeightMap = Partial<Record<FontWeight, string | FontInfo>>; export type FontFamilies = Record<string, FontFamilyWeightMap>; declare const fontWeightNames: { thin: number; 'extra-light': number; light: number; normal: number; medium: number; 'semi-bold': number; bold: number; 'extra-bold': number; black: number; 'extra-black': number; }; export type FontWeight = keyof typeof fontWeightNames | number; export type FontFamilyProperties = { fontFamily?: string; fontWeight?: FontWeight; }; export declare function computedFont(properties: Signal<MergedProperties>, fontFamiliesSignal: Signal<FontFamilies | undefined> | undefined, renderer: WebGLRenderer): Signal<Font | undefined>; export type FontInfo = { pages: Array<string>; chars: Array<GlyphInfo>; info: { face: string; size: number; bold: number; italic: number; charset: Array<string>; unicode: number; stretchH: number; smooth: number; aa: number; padding: Array<number>; spacing: Array<number>; outline: number; }; common: { lineHeight: number; base: number; scaleW: number; scaleH: number; pages: number; packed: number; alphaChnl: number; redChnl: number; greenChnl: number; blueChnl: number; }; distanceField: { fieldType: string; distanceRange: number; }; kernings: Array<{ first: number; second: number; amount: number; }>; }; export type GlyphInfo = { id: number; index: number; char: string; width: number; height: number; x: number; y: number; xoffset: number; yoffset: number; xadvance: number; chnl: number; page: number; uvWidth?: number; uvHeight?: number; uvX?: number; uvY?: number; }; export declare class Font { page: Texture; private glyphInfoMap; private kerningMap; private questionmarkGlyphInfo; readonly pageWidth: number; readonly pageHeight: number; readonly distanceRange: number; constructor(info: FontInfo, page: Texture); getGlyphInfo(char: string): GlyphInfo; getKerning(firstId: number, secondId: number): number; } export declare function glyphIntoToUV(info: GlyphInfo, target: TypedArray, offset: number): void; export {};