This is a very nice update that we wanted for a long time!
-Would also be great to make it so that you are able to add your own fonts to ROBLOX studio.
This is a very nice update that we wanted for a long time!
-Would also be great to make it so that you are able to add your own fonts to ROBLOX studio.
As a UI designer, this is a cool update. It’s nice to not have to use rich text because it would sometimes go to SourceSansBlack for all games. Can’t wait to see custom fonts so I don’t have to upload images of them.
Could we have a list of these fonts? Also, if a font fails to load, will it default to a font-file on the device instead or become invisible?
Which of the fonts are new? Also, having ‘unknown’ show for people without the beta is really bad UX as most people will have the beta disabled…
This could cause some confusion amongst newer-developers confused on why a font has a different name in code, this doesn’t look too forwards-compatible.
This is great! But I would perhaps appreciate having a larger preview - you can barely see any details of any of the fonts at 16px:
Also, it’d be nice if GetTextBoundsAsync supported line height as a configurable parameter. The lack of that feature is something we ran into during the recent RDC game jam while doing UI work.
I imagine the ability to import fonts would be a moderation nightmare. Users could import fonts that have letters switched around in order to bypass filters. If they could find a workaround to this, importing fonts would be amazing.
This is a great update, now I don’t need to go through every font to see which one fits the best.
This is a great QoL change.
But as 99% of the others in the thread said, when will we be able to import our own custom fonts?
I love that now we don’t need to look up what a font looks like. It just makes life easier.
I’m sure you guys aren’t the ones who worked on attributes originally but if a new attribute type for fonts can be added whats holding up some of the more desired attributes such as instances or dropdowns?
Great feature! It was needed for a very long time and now will make UI creation much easier!
Can’t wait to try it out!
The idea of a font marketplace is also great, cannot wait to see that in studio as well!
Thank you!
This is one of the best features that Roblox has added to Roblox Studio and it’s totally helping a LOT of devs out there trying to find the right font for their UI.
I can’t wait for other features to be added to Roblox Studio, mostly custom fonts will be a huge update for Roblox developers.
The ability to upload custom fonts as an asset (or maybe based off an image id) would be really nice coupled with this update. If it’s ever added, it’d be great if it also came with a previewer with the ability to check how the font looks in different weights and styles before uploading so you don’t fill your asset list with failed versions of the same font.
I also agree with this, would be nice to finally have built-in support for custom enums like they’re their own asset specifically only for the game (even better if scripts recognize these enums). Attributes are a nice update, but I always end up going back to using ValueObjects whenever I need to write a CFrame or Instance into memory for reasons like a checkpoint system or other. (Perchance I could also ask for Integer and Double support while I’m here too? It would be nice to have that feature for attributes that need to specifically be a whole number or can only have 2 decimal places.)
Another feature that really needs an update in my opinion is properties that use strings (and also attributes). Even just the text box expanding with the text or the ability to open a window to see what you’re writing would be nice. Sometimes I don’t want to write the text in code and sometimes one line isn’t enough to see what you’re writing. Obviously something like NPC Dialogue you have to write in code but I love using RichText so the strings can sometimes be longer than what they should be.
Edit: Whoops, forgot to remove the reply. Sorry
Some detail on those particular cases you mentioned:
The big problem with Instance attributes is that we actually have to adjust the Attributes API to support them, because the default Instance… = nil, which is the same as not having an attribute at all in the existing API. We only really get one shot at how we adjust the API to support Instances and there’s disagreement over the best solution. It will happen eventually.
The issue for dropdown / Enums is the schema problem: Where do you store the list of potential options? If you store it on every single Instance which has the attribute, that’s a significant waste of memory, especially if the list of options is large. There are solutions to this, but again, we only really get one shot at choosing how we do it, so no solution has made it all the way to shipping yet.
I’d love to use Comic Sans in my game because Cartoon just doesn’t cut it.
Respect the response, lets hope when you guys do come to a final decision the community agrees with the route you went or can build on top of that idea to better improve it overall.
This is my first comment, so Howdy. I like this enhancement, since I can now make the reading sections a little more interesting. With quests, important info, while also accounting for when I and many others who refuse to read at times.
This table is pretty big since there are more than 160 font faces between all the families we support currently.
Family | Weight | Style | Accessible before? | Source |
---|---|---|---|---|
Accanthis ADF Std | Regular | Bodoni | local | |
Amatic SC | Regular | AmaticSC | local | |
Amatic SC | Bold | AmaticSC w/ RichText bold | local | |
Arial | Regular | Arial | local | |
Arial | Bold | ArialBold | local | |
Balthazar | Regular | Fantasy | local | |
Bangers | Regular | Bangers | local | |
Comic Neue Angular | Regular | Cartoon | local | |
Creepster | Regular | Creepster | local | |
Denk One | Regular | DenkOne | local | |
Fondamento | Regular | Fondamento | local | |
Fondamento | Regular | Italic | Fondamento w/ RichText italic | local |
Fredoka One | Regular | FredokaOne | local | |
Gotham SSm | Regular | Gotham | local | |
Gotham SSm | Medium | GothamMedium | local | |
Gotham SSm | Bold | GothamBold | local | |
Gotham SSm | Heavy | GothamBlack | local | |
Grenze Gotisch | Thin | not available before | cloud | |
Grenze Gotisch | ExtraLight | not available before | cloud | |
Grenze Gotisch | Light | not available before | cloud | |
Grenze Gotisch | Regular | GrenzeGotisch | local | |
Grenze Gotisch | Medium | not available before | cloud | |
Grenze Gotisch | SemiBold | not available before | cloud | |
Grenze Gotisch | Bold | GrenzeGotisch w/ RichText bold | local | |
Grenze Gotisch | ExtraBold | not available before | cloud | |
Grenze Gotisch | Heavy | not available before | cloud | |
Guru | Regular | Garamond | local | |
Highway Gothic | Regular | Highway | local | |
Inconsolata | ExtraLight | not available before | cloud | |
Inconsolata | Light | not available before | cloud | |
Inconsolata | Regular | Code | local | |
Inconsolata | Medium | not available before | cloud | |
Inconsolata | SemiBold | not available before | cloud | |
Inconsolata | Bold | Code w/ RichText bold | cloud | |
Inconsolata | ExtraBold | not available before | cloud | |
Inconsolata | Heavy | not available before | cloud | |
Indie Flower | Regular | IndieFlower | local | |
Josefin Sans | Thin | not available before | cloud | |
Josefin Sans | Thin | Italic | not available before | cloud |
Josefin Sans | ExtraLight | not available before | cloud | |
Josefin Sans | ExtraLight | Italic | not available before | cloud |
Josefin Sans | Light | not available before | cloud | |
Josefin Sans | Light | Italic | not available before | cloud |
Josefin Sans | Regular | JosefinSans | local | |
Josefin Sans | Regular | Italic | JosefinSans w/ RichText italic | cloud |
Josefin Sans | Medium | not available before | cloud | |
Josefin Sans | Medium | Italic | not available before | cloud |
Josefin Sans | SemiBold | not available before | cloud | |
Josefin Sans | SemiBold | Italic | not available before | cloud |
Josefin Sans | Bold | JosefinSans w/ RichText bold | cloud | |
Josefin Sans | Bold | Italic | JosefinSans w/ RichText bold+italic | cloud |
Jura | Light | not available before | cloud | |
Jura | Regular | Jura | local | |
Jura | Medium | not available before | cloud | |
Jura | SemiBold | not available before | cloud | |
Jura | Bold | Jura w/ RichText bold | cloud | |
Kalam | Light | not available before | cloud | |
Kalam | Regular | Kalam | local | |
Kalam | Bold | Kalam w/ RichText bold | cloud | |
Arial (Legacy) | Regular | Legacy | local | |
Arial (Legacy) | Bold | Legacy w/ RichText bold | local | |
Luckiest Guy | Regular | LuckiestGuy | local | |
Merriweather | Light | not available before | cloud | |
Merriweather | Light | Italic | not available before | cloud |
Merriweather | Regular | Merriweather | local | |
Merriweather | Regular | Italic | Merriweather w/ RichText italic | local |
Merriweather | Bold | Merriweather w/ RichText bold | cloud | |
Merriweather | Bold | Italic | Merriweather w/ RichText bold+italic | cloud |
Merriweather | Heavy | not available before | cloud | |
Merriweather | Heavy | Italic | not available before | cloud |
Michroma | Regular | Michroma | local | |
Nunito | ExtraLight | not available before | cloud | |
Nunito | ExtraLight | Italic | not available before | cloud |
Nunito | Light | not available before | cloud | |
Nunito | Light | Italic | not available before | cloud |
Nunito | Regular | Nunito | local | |
Nunito | Regular | Italic | Nunito w/ RichText italic | cloud |
Nunito | SemiBold | not available before | cloud | |
Nunito | SemiBold | Italic | not available before | cloud |
Nunito | Bold | Nunito w/ RichText bold | cloud | |
Nunito | Bold | Italic | Nunito w/ RichText bold+italic | cloud |
Nunito | ExtraBold | not available before | cloud | |
Nunito | ExtraBold | Italic | not available before | cloud |
Nunito | Heavy | not available before | cloud | |
Nunito | Heavy | Italic | not available before | cloud |
Oswald | ExtraLight | not available before | cloud | |
Oswald | Light | not available before | cloud | |
Oswald | Regular | Oswald | local | |
Oswald | Medium | not available before | cloud | |
Oswald | SemiBold | not available before | cloud | |
Oswald | Bold | Oswald w/ RichText bold | local | |
Patrick Hand | Regular | PatrickHand | local | |
Permanent Marker | Regular | PermanentMarker | local | |
Press Start 2P | Regular | Arcade | local | |
Roboto | Thin | not available before | cloud | |
Roboto | Thin | Italic | not available before | cloud |
Roboto | Light | not available before | cloud | |
Roboto | Light | Italic | not available before | cloud |
Roboto | Regular | Roboto | local | |
Roboto | Regular | Italic | Roboto w/ RichText italic | local |
Roboto | Medium | not available before | cloud | |
Roboto | Medium | Italic | not available before | cloud |
Roboto | Bold | Roboto w/ RichText bold | local | |
Roboto | Bold | Italic | Roboto w/ RichText bold+italic | cloud |
Roboto | Heavy | not available before | cloud | |
Roboto | Heavy | Italic | not available before | cloud |
Roboto Condensed | Light | not available before | cloud | |
Roboto Condensed | Light | Italic | not available before | cloud |
Roboto Condensed | Regular | RobotoCondensed | local | |
Roboto Condensed | Regular | Italic | RobotoCondensed w/ RichText italic | cloud |
Roboto Condensed | Bold | RobotoCondensed w/ RichText bold | cloud | |
Roboto Condensed | Bold | Italic | RobotoCondensed w/ RichText bold+italic | cloud |
Roboto Mono | Thin | not available before | cloud | |
Roboto Mono | Thin | Italic | not available before | cloud |
Roboto Mono | ExtraLight | not available before | cloud | |
Roboto Mono | ExtraLight | Italic | not available before | cloud |
Roboto Mono | Light | not available before | cloud | |
Roboto Mono | Light | Italic | not available before | cloud |
Roboto Mono | Regular | RobotoMono | local | |
Roboto Mono | Regular | Italic | RobotoMono w/ RichText italic | cloud |
Roboto Mono | Medium | not available before | cloud | |
Roboto Mono | Medium | Italic | not available before | cloud |
Roboto Mono | SemiBold | not available before | cloud | |
Roboto Mono | SemiBold | Italic | not available before | cloud |
Roboto Mono | Bold | RobotoMono w/ RichText bold | cloud | |
Roboto Mono | Bold | Italic | RobotoMono w/ RichText bold+italic | cloud |
Roman Antique | Regular | Antique | local | |
Sarpanch | Regular | Sarpanch | local | |
Sarpanch | Medium | not available before | cloud | |
Sarpanch | SemiBold | not available before | cloud | |
Sarpanch | Bold | Sarpanch w/ RichText bold | local | |
Sarpanch | ExtraBold | not available before | cloud | |
Sarpanch | Heavy | not available before | cloud | |
Source Sans Pro | ExtraLight | not available before | cloud | |
Source Sans Pro | ExtraLight | Italic | not available before | cloud |
Source Sans Pro | Light | SourceSansLight | local | |
Source Sans Pro | Light | Italic | not available before | cloud |
Source Sans Pro | Regular | SourceSans | local | |
Source Sans Pro | Regular | Italic | SourceSansItalic | local |
Source Sans Pro | SemiBold | SourceSansSemibold | local | |
Source Sans Pro | SemiBold | Italic | not available before | cloud |
Source Sans Pro | Bold | SourceSansBold | local | |
Source Sans Pro | Bold | Italic | SourceSans w/ RichText bold+italic | cloud |
Source Sans Pro | Heavy | not available before | cloud | |
Source Sans Pro | Heavy | Italic | not available before | cloud |
Special Elite | Regular | SpecialElite | local | |
Titillium Web | ExtraLight | not available before | cloud | |
Titillium Web | ExtraLight | Italic | not available before | cloud |
Titillium Web | Light | not available before | cloud | |
Titillium Web | Light | Italic | not available before | cloud |
Titillium Web | Regular | TitilliumWeb | local | |
Titillium Web | Regular | Italic | TitilliumWeb w/ RichText italic | cloud |
Titillium Web | SemiBold | not available before | cloud | |
Titillium Web | SemiBold | Italic | not available before | cloud |
Titillium Web | Bold | TitilliumWeb w/ RichText bold | local | |
Titillium Web | Bold | Italic | TitilliumWeb w/ RichText bold+italic | cloud |
Titillium Web | Heavy | not available before | cloud | |
Ubuntu | Light | not available before | cloud | |
Ubuntu | Light | Italic | not available before | cloud |
Ubuntu | Regular | Ubuntu | local | |
Ubuntu | Regular | Italic | Ubuntu w/ RichText italic | local |
Ubuntu | Medium | not available before | cloud | |
Ubuntu | Medium | Italic | not available before | cloud |
Ubuntu | Bold | Ubuntu w/ RichText bold | cloud | |
Ubuntu | Bold | Italic | Ubuntu w/ RichText bold+italic | cloud |
Zekton | Regular | SciFi | local |
It will first try to see if there is another appropriate weight in the same family that has loaded. For example, Bold might fall back to using the Regular weight with a procedural bold modifier. If there is no appropriate face in the same family, then it will fallback to Source Sans Pro using a similar weight and style. The text shouldn’t ever be left in an invisible state.
The only way to fix this would have been to force-rollout the change to everyone without going through a beta.
We could consider updating the Font enum to better reflect the true names, like was done with GothamSemibold being renamed to GothamMedium.
I’ll bring this up internally, I think that larger previews would be good as well.
I think that you can multiply the Y size by LineHeight as a workaround. We’re still trying to figure out what properties are good to add to GetTextBoundsParams because if we add all of them, that’s copying the entire TextLabel API.
This was great for news, as some point UI a new font studio its very improved for release new texture preview sometimes, which very cool on custom new fonts.
As mentioned, fonts are now wrapped around assetIDs download from the cloud, similar to textures and sounds; I presume custom fonts are right around the corner