|text||the text you want to appear||None|
|width||width of the text box||None|
|align||'left', 'center', 'right'||left|
|letterSpacing||the letter spacing in pixels||0|
|lineHeight||the line height in pixels||38|
|fnt||path to 'fnt' file||https://cdn.rawgit...|
|fntImage||path to font image file||https://cdn.rawgit...|
|mode||'pre' and 'nowrap'||'normal'|
|color||by RGB, hex, or name||#000|
|opacity||Extent of transparency.||1.0|
More details on these properties here.
Explanation of 'mode' property here.
Write some text:
Rather than add the bmfont-text component to a blank entity, you can try using the text primitive:
This is more convenient, but experimental and buggy (e.g. color failing to apply).
To change the size of the text, use the scale component or position the text closer or further away.
Text can be wrapped by specifying width, but I'm not sure what units three-bmfont-text uses. You will have to play around a bit.
Different fonts can be specified with the 'fnt' and 'fntImage' properties.
Thanks to RawGit, these default to hosted "DejaVu-sdf.fnt" and "DejaVu-sdf.png" files.
This component does not make use of all of the features of three-bmfont-text and its sister modules, if you require more advanced functionality such as tabSize and start and end indices, I recommend forking this component and modifying it. Pull requests are welcome, but please include a test example.
Bitmap font rendering limits you to the characters included in the font (Unicode this is not). SDF font (in particular) tends to smooth sharp edges though there are ways around this.
If you are interested in text rendering in WebGL/ThreeJS/A-Frame and want to learn more, I recommend reading the documentation for three-bmfont-text.
Here are some additional resources:
- 'It’s 2015 and drawing text is still hard (WebGL, ThreeJS)' by Parris Khachi
- Valve's original paper
- 'Hacking with THREE.js' by Matt DesLauriers
Install and use by directly including the browser files:
My A-Frame Scene
Install via NPM:
npm install aframe-bmfont-text-component
Then register and use.