UNPKG

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 8.6 kB
{"version":3,"file":"AbstractBitmapFont.mjs","sources":["../../../src/scene/text-bitmap/AbstractBitmapFont.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\n\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { FontMetrics } from '../text/canvas/utils/types';\n\n/**\n * @category text\n * @advanced\n */\nexport interface CharData\n{\n /** Unique id of character */\n id: number;\n /** x-offset to apply when rendering character */\n xOffset: number;\n /** y-offset to apply when rendering character. */\n yOffset: number;\n /** Advancement to apply to next character. */\n xAdvance: number;\n /** The kerning values for this character. */\n kerning: Record<string, number>;\n /** The texture of the character. */\n texture?: Texture;\n}\n\n/**\n * The raw data of a character in a bitmap font.\n * @category text\n * @advanced\n */\nexport interface RawCharData extends Omit<CharData, 'texture'>\n{\n /** The page of the font texture that the character is on. */\n page: number;\n /** The x position of the character in the page. */\n x: number;\n /** The y position of the character in the page. */\n y: number;\n /** The width of the character in the page. */\n width: number;\n /** The height of the character in the page. */\n height: number;\n /** The letter of the character. */\n letter: string;\n}\n\n/**\n * The raw data of a bitmap font.\n * @category text\n * @advanced\n */\nexport interface BitmapFontData\n{\n /** The offset of the font face from the baseline. */\n baseLineOffset: number;\n /** The map of characters by character string. */\n chars: Record<string, RawCharData>;\n /** The map of base page textures (i.e., sheets of glyphs). */\n pages: {\n /** Unique id for bitmap texture */\n id: number;\n /** File name */\n file: string\n }[];\n /** The line-height of the font face in pixels. */\n lineHeight: number;\n /** The size of the font face in pixels. */\n fontSize: number;\n /** The name of the font face. */\n fontFamily: string;\n /** The range and type of the distance field for this font. */\n distanceField?: {\n /** Type of distance field */\n type: 'sdf' | 'msdf' | 'none';\n /** Range of the distance field in pixels */\n range: number;\n };\n}\n\ninterface BitmapFontEvents<Type>\n{\n destroy: [Type];\n}\n\n/**\n * An abstract representation of a bitmap font.\n * @category text\n * @advanced\n */\nexport abstract class AbstractBitmapFont<FontType>\n extends EventEmitter<BitmapFontEvents<FontType>>\n implements Omit<BitmapFontData, 'chars' | 'pages' | 'fontSize'>\n{\n /** The map of characters by character string. */\n public readonly chars: Record<string, CharData> = Object.create(null);\n\n /**\n * The line-height of the font face in pixels.\n * @type {number}\n */\n public readonly lineHeight: BitmapFontData['lineHeight'] = 0;\n\n /**\n * The name of the font face\n * @type {string}\n */\n public readonly fontFamily: BitmapFontData['fontFamily'] = '';\n /** The metrics of the font face. */\n public readonly fontMetrics: FontMetrics = { fontSize: 0, ascent: 0, descent: 0 };\n /**\n * The offset of the font face from the baseline.\n * @type {number}\n */\n public readonly baseLineOffset: BitmapFontData['baseLineOffset'] = 0;\n /** The range and type of the distance field for this font. */\n public readonly distanceField: BitmapFontData['distanceField'] = { type: 'none', range: 0 };\n /** The map of base page textures (i.e., sheets of glyphs). */\n public readonly pages: { texture: Texture }[] = [];\n /** should the fill for this font be applied as a tint to the text. */\n public applyFillAsTint = true;\n\n /** The size of the font face in pixels. */\n public readonly baseMeasurementFontSize: number = 100;\n protected baseRenderedFontSize = 100;\n\n /**\n * The name of the font face.\n * @deprecated since 8.0.0 Use `fontFamily` instead.\n */\n public get font(): BitmapFontData['fontFamily']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.');\n // #endif\n\n return this.fontFamily;\n }\n\n /**\n * The map of base page textures (i.e., sheets of glyphs).\n * @deprecated since 8.0.0 Use `pages` instead.\n */\n public get pageTextures(): AbstractBitmapFont<FontType>['pages']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.');\n // #endif\n\n return this.pages;\n }\n\n /**\n * The size of the font face in pixels.\n * @deprecated since 8.0.0 Use `fontMetrics.fontSize` instead.\n */\n public get size(): BitmapFontData['fontSize']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.');\n // #endif\n\n return this.fontMetrics.fontSize;\n }\n\n /**\n * The kind of distance field for this font or \"none\".\n * @deprecated since 8.0.0 Use `distanceField.type` instead.\n */\n public get distanceFieldRange(): NonNullable<BitmapFontData['distanceField']>['range']\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.');\n // #endif\n\n return this.distanceField.range;\n }\n\n /**\n * The range of the distance field in pixels.\n * @deprecated since 8.0.0 Use `distanceField.range` instead.\n */\n public get distanceFieldType(): NonNullable<BitmapFontData['distanceField']>['type']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.');\n // #endif\n\n return this.distanceField.type;\n }\n\n public destroy(destroyTextures = false): void\n {\n this.emit('destroy', this as unknown as FontType);\n\n this.removeAllListeners();\n\n for (const i in this.chars)\n {\n // texture may not exist if the char is \" \", \\n, \\r, or \\t.\n this.chars[i].texture?.destroy();\n }\n\n (this.chars as null) = null;\n\n if (destroyTextures)\n {\n this.pages.forEach((page) => page.texture.destroy(true));\n (this.pages as any) = null;\n }\n }\n}\n"],"names":[],"mappings":";;;;AA0FO,MAAe,2BACV,YAAA,CAEZ;AAAA,EAHO,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAKH;AAAA,IAAA,IAAA,CAAgB,KAAA,mBAAkC,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAMpE;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAgB,UAAA,GAA2C,CAAA;AAM3D;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAgB,UAAA,GAA2C,EAAA;AAE3D;AAAA,IAAA,IAAA,CAAgB,cAA2B,EAAE,QAAA,EAAU,GAAG,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,EAAE;AAKhF;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAgB,cAAA,GAAmD,CAAA;AAEnE;AAAA,IAAA,IAAA,CAAgB,aAAA,GAAiD,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAE1F;AAAA,IAAA,IAAA,CAAgB,QAAgC,EAAC;AAEjD;AAAA,IAAA,IAAA,CAAO,eAAA,GAAkB,IAAA;AAGzB;AAAA,IAAA,IAAA,CAAgB,uBAAA,GAAkC,GAAA;AAClD,IAAA,IAAA,CAAU,oBAAA,GAAuB,GAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjC,IAAW,IAAA,GACX;AAEI,IAAA,WAAA,CAAY,QAAQ,0EAA0E,CAAA;AAG9F,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAW,YAAA,GACX;AAEI,IAAA,WAAA,CAAY,QAAQ,6EAA6E,CAAA;AAGjG,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAW,IAAA,GACX;AAEI,IAAA,WAAA,CAAY,QAAQ,oFAAoF,CAAA;AAGxG,IAAA,OAAO,KAAK,WAAA,CAAY,QAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAW,kBAAA,GACX;AAGI,IAAA,WAAA,CAAY,QAAQ,iGAAiG,CAAA;AAGrH,IAAA,OAAO,KAAK,aAAA,CAAc,KAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAW,iBAAA,GACX;AAEI,IAAA,WAAA,CAAY,QAAQ,+FAA+F,CAAA;AAGnH,IAAA,OAAO,KAAK,aAAA,CAAc,IAAA;AAAA,EAC9B;AAAA,EAEO,OAAA,CAAQ,kBAAkB,KAAA,EACjC;AACI,IAAA,IAAA,CAAK,IAAA,CAAK,WAAW,IAA2B,CAAA;AAEhD,IAAA,IAAA,CAAK,kBAAA,EAAmB;AAExB,IAAA,KAAA,MAAW,CAAA,IAAK,KAAK,KAAA,EACrB;AAEI,MAAA,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,EAAS,OAAA,EAAQ;AAAA,IACnC;AAEA,IAAC,KAAK,KAAA,GAAiB,IAAA;AAEvB,IAAA,IAAI,eAAA,EACJ;AACI,MAAA,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAC,IAAA,KAAS,KAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAC,CAAA;AACvD,MAAC,KAAK,KAAA,GAAgB,IAAA;AAAA,IAC1B;AAAA,EACJ;AACJ;;;;"}