pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 7.25 kB
Source Map (JSON)
{"version":3,"file":"loadBitmapFont.mjs","sources":["../../../../src/scene/text-bitmap/asset/loadBitmapFont.ts"],"sourcesContent":["import { LoaderParserPriority } from '../../../assets/loader/parsers/LoaderParser';\nimport { copySearchParams } from '../../../assets/utils/copySearchParams';\nimport { DOMAdapter } from '../../../environment/adapter';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { path } from '../../../utils/path';\nimport { bitmapFontTextParser } from './bitmapFontTextParser';\nimport { bitmapFontXMLStringParser } from './bitmapFontXMLStringParser';\n\nimport type { CacheParser } from '../../../assets/cache/CacheParser';\nimport type { Loader } from '../../../assets/loader/Loader';\nimport type { LoaderParserAdvanced } from '../../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../../assets/types';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { BitmapFont } from '../BitmapFont';\n\nconst validExtensions = ['.xml', '.fnt'];\n\n/**\n * simple loader plugin for loading in bitmap fonts!\n * @category assets\n * @internal\n */\nexport const bitmapFontCachePlugin = {\n extension: {\n type: ExtensionType.CacheParser,\n name: 'cacheBitmapFont',\n },\n test: (asset: BitmapFont) =>\n !!asset?.pages && !!asset?.chars && typeof asset?.fontFamily === 'string' && asset.fontFamily !== '',\n getCacheableAssets(keys: string[], asset: BitmapFont)\n {\n const out: Record<string, BitmapFont> = {};\n\n keys.forEach((key) =>\n {\n out[key] = asset;\n out[`${key}-bitmap`] = asset;\n });\n\n out[`${asset.fontFamily}-bitmap`] = asset;\n\n return out;\n }\n} satisfies CacheParser<BitmapFont>;\n\n/**\n * Loader plugin for loading bitmap fonts.\n * It supports both XML and text formats, and can handle distance field fonts.\n * @category assets\n * @advanced\n */\nexport const loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal,\n },\n\n /** used for deprecation purposes */\n name: 'loadBitmapFont',\n id: 'bitmap-font',\n\n test(url: string): boolean\n {\n return validExtensions.includes(path.extname(url).toLowerCase());\n },\n\n async testParse(data: string): Promise<boolean>\n {\n return bitmapFontTextParser.test(data) || bitmapFontXMLStringParser.test(data);\n },\n\n async parse(asset: string, data: ResolvedAsset, loader: Loader): Promise<BitmapFont>\n {\n const bitmapFontData = bitmapFontTextParser.test(asset)\n ? bitmapFontTextParser.parse(asset)\n : bitmapFontXMLStringParser.parse(asset);\n\n const { src } = data;\n const { pages } = bitmapFontData;\n const textureUrls = [];\n\n // if we have a distance field - we can assume this is a signed distance field font\n // and we should use force linear filtering and no alpha premultiply\n const textureOptions = (bitmapFontData.distanceField) ? {\n scaleMode: 'linear',\n alphaMode: 'premultiply-alpha-on-upload',\n autoGenerateMipmaps: false,\n resolution: 1,\n } : {};\n\n for (let i = 0; i < pages.length; ++i)\n {\n const pageFile = pages[i].file;\n let imagePath = path.join(path.dirname(src), pageFile);\n\n imagePath = copySearchParams(imagePath, src);\n\n textureUrls.push({\n src: imagePath,\n data: textureOptions\n });\n }\n\n const [loadedTextures, { BitmapFont }] = await Promise.all([\n loader.load<Texture>(textureUrls),\n import('../BitmapFont'),\n ]);\n const textures = textureUrls.map((url) => loadedTextures[url.src]);\n\n const bitmapFont = new BitmapFont({\n data: bitmapFontData,\n textures\n }, src);\n\n return bitmapFont;\n },\n\n async load(url: string, _options: ResolvedAsset): Promise<string>\n {\n const response = await DOMAdapter.get().fetch(url);\n\n return await response.text();\n },\n\n async unload(bitmapFont: BitmapFont, _resolvedAsset, loader): Promise<void>\n {\n await Promise.all(bitmapFont.pages.map((page) => loader.unload(page.texture.source._sourceOrigin)));\n\n bitmapFont.destroy();\n }\n} satisfies LoaderParserAdvanced<string, BitmapFont, BitmapFont>;\n"],"names":[],"mappings":"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"}