Custom Text Label Creator Plugin!

Custom Font Plugin!

This Plugin allows your creativity not to become limited to Roblox’s specific fonts! Roblox, at the time of making this, has 46 fonts to choose from. It seems like a lot, but compared to the thousands of fonts on the internet it is very miniscule! This plugin allows you to insert/create fonts you can use to your pleasing! The plugin was designed for dynamic (Changing) custom text, but it can still be used for static!


Details:

The plugin supports up to 107 characters, this includes the complete US English Standard Keyboard layout and 12 extra custom character slots. (This may be expanded as the plugin goes into more development)

ExampleFunky
This is an example of what a created font sheet would look like BEFORE being exported

Here are some tips in order to help you create great looking fonts! :grin:


How To Use The Plugin:

Instructions

After you have installed the plugin, you should see a folder named “Fonts” in Replicated Storage.
RepStorage

Those image label names are the fonts that you can use in your custom font objects.

If you want to insert a custom textlabel, go to the topbar and click on the localscript or serverscript button, depending on which one you want to use. (The only difference is that the serverscript has code running on a script, while the localscript (Client) has code running on a localscript.)
TextObject
Then you can mess with each of the attributes till you have something you like. (The variables can be changed in scripts, just remember to use :GetAttribute() and :SetAttribute() when reading or writing to a variable!)

ATTENTION: ATTRIBUTES ARE NOW USED SO ALL PROPERTIES ARE NOW IN THE CUSTOM TEXT FRAME!!!

How To Insert Custom Font Sheet
  • Create a 480px by 480px image with no background

  • Insert custom font Template

  • Place each character of a wanted font into each box

  • When all characters are in place delete or hide the backTemplate and export as a PNG

    • Upload to Roblox as a label
  • Get into Roblox Studio and duplicate the font “Empty”
    EmptySelected

  • When Duplicated, insert the uploaded roblox label assetid into the image property and rename the object to your pleasing
    NewFont

  • When it is renamed, go to your custom font object and to the font property

  • Put the font attribute Value as the name of your imagelable fontsheet and you are good to go!


Tips!
  • To set the custom font’s properties you should go into the textbox’s attributes and change them from there!!!

  • Custom font characters should be centered on the slightly invisible lines to line them up correctly

  • Custom font characters should be exported as white so that they can be color shifted :smiley:

  • Save the Image as a 480px by 480px PNG image

    • When saving the image, make sure to delete the template in the background so that it doesn’t show up!
  • The bottom 12 boxes are for any special characters you may want to add

    • For example, Special accents or emojis!!! :sunglasses:
    • In order to put them in text you need a special syntax (ex: “[[1” for #1 Box, “[[3” for #3 Box, “[[0” for #10 Box, and “{{1” for #11 Box)
  • A nice website to use for inserting or drawing fonts is vectr.com, but even software like MS Paint works!!!

  • When changing text, play around with the properties inside of the object to make it look nice :smiley:


Documentation

Documentation (For Now) has not been created yet.

Please check back later to see if it has been created
(Sorry for the inconvenience :sweat:)


Patch Notes

------------ Patch v1.2 --------------

  • Patched a bunch of alignment bugs
  • Added /n capabilities
  • Fixed bugs related to custom extra textboxes
  • Cleaned up some code

Feel free to look through the source code to see how the plugin works and how the font creator works too!

Recourses

These recourses are HIGHLY recommended to be used while creating fonts!!! Make sure to
download the PNG template so you can get started!

Template V1.1

untitled (9)
*PNG size: 480px 480px

Custom Fontsheets

These font sheets have already been included with the plugin so no need to insert them :smiley:

Funky Fontsheet
untitled (12)

Plaster Fontsheet
untitled (14)

Special Character Syntax

Syntax for bottom 12 boxes (Numbered LEFT TO RIGHT)

[[1 = #1 Box Character
[[2 = #2 Box Character
[[3 = #3 Box Character
[[4 = #4 Box Character
[[5 = #5 Box Character
[[6 = #6 Box Character
[[7 = #7 Box Character
[[8 = #8 Box Character
[[9 = #9 Box Character
[[0 = #10 Box Character
{{1 = #11 Box Character
{{2 = #12 Box Character

Here is the plugin link: Custom Font Creator - Roblox

Have fun creating your own fonts! (This is my Second every plugin and I would love to hear some feedback of how I could make the plugin better in the comments! Thank You!!! :smile:)

[Also any custom font sheets you would like to share, please share them in the comments for others to use :smiley: ]

Here is an advert from Sands Undertale Himself

62 Likes

wouldnt it be easier for the person to make the ui on what part of the text they want to be changed?

4 Likes

This plugin was designed for dynamic text (like having a typewriting effect without the thousands of images). It CAN be used for static text, but you might as well make an image for the static text. (Btw happy cake day :D)

2 Likes

Thank you sooooo much! I’ve been needing this for so long I’ve stopped counting. One question. Would it be okay for people to add font upload images to this post, and then maybe every week or so you add any new ones? Just so that there is more fonts without having to upload them manually. Other than that, you’re a living genius!

3 Likes

Thank you and yes! You can post images of fontsheets if you would like (Just follow the devforum rules) But (maybe) ill add some of the font sheets into the main plugin :smiley:

2 Likes

Awesome! I’m definitely going to add some sheets myself, when I find some free time.

2 Likes

Wow, this plugin is great! Thank you so much, I’ve already got it working and it looks great. Everything weirdly looks really far away from each other though, like an “i” looks really weird next to something like a “k” because the spacing doesn’t consider the width of the character. How do you make it so it makes a new like without making another frame like /n?

3 Likes

Hi! So right now I haven’t been working on this plugin actively, but I was thinking of updating the plugin with /n capabilities :smiley: ! I definitely will not be able to get an update out this week (or few weeks) but I’m definitely going to start work on some updates to it! And yes the spacing is a bit weird for some characters (I may add an width scaling array to fix some of those problems)!

Anyway, thanks for the feedback! (Also updating the custom textbox with attributes will be on my list to update when they come out of beta :))

3 Likes

Would this plugin allow me to display font with a FontSize larger than 100, without losing resolution?
Currently, I need large text in my game, but even at 100 FontSize, roblox fonts are too small. If I increase my PixelsPerStud, the text becomes pixelated.

thanks!

1 Like

The pixel size would be directly affected by the resolution of decal you upload to Roblox. I think the maximum pixel size my plugin uses is 480px by 480px which would mean that each character is 20x30px. So as long as your character size does not go over 30 pixels you should not see a difference in resolution. It does allow you to go over 100 text size but the resolution may be a bit worse

Short answer: It will allow you to go over 100 FontSize but resolution for characters will still become pixilated

3 Likes

Sorry for the bump but I just released version 1.2 of the plugin that introduces attributes to each of the textboxes. This means that every time a new text label is created it will need to use the :GetAttribute() or :SetAttribute() method to edit things like “Text”, “TextSize”, and other properties.
---- ALL CODE THAT IS NOT UPDATED TO ACCOUNT FOR THIS CHANGE WILL BE BROKEN!!! ----

Sorry for the inconvenience but Attributes are a much easier/quicker way of editing values than the instance values that were used before this version

Also /n was released and the right horizontal option is not completely stable as an FYI. Thanks for using the plugin!

I’ve found a bug just now. I’m using this in order to make a realistic font for vehicle registration plates. But it seems that one number in particular the script is not happy with. The number is 972. If you try and set the text to anything containing 972 the script returns this error.

CustomText (Server).Config.CustomTextMaker:143: attempt to index nil with ‘AnchorPoint’ - Server - CustomTextMaker:143

This occurs 100% of the time in all the functions that are trying to set the text.

Edit: It also occurs with the number 279

1 Like

Fixed! There was a logic error in my if statements, it should work now. I’ll publish the fix soon, just update the plugin and re-insert the custom text object!

Thank you for the bug report and I’m glad people are still using this plugin :)!

Edit: Just updated it

1 Like

Cool. Thanks a ton. And also. Have you got any plans of (or if you are already working on it) adding a TextScaled ability? Since I’m now wanting to apply this to a Bus Destination sign to give it a dot matrix font. Basically so the text size changes depending on the length of the text. If this isn’t possible/not going to come any time soon then are they any workarounds I could use?

Tip: buy the commercial license from the font creator for the font you want to use, unless you want your game taken down.

5 Likes

I have not planned on making a TextScaled ability but you should be able to create one by adjusting the text size.

The size is just the pixels in height that the characters take up so what you would need to do is loop through the TextCharacters Folder underneath the UI and see how many letters there are (including spaces) and then calculate the number of pixels it takes up on the x-axis. Then if the size is too large for its container (the parent object) it scales the numbers down to the correct scale. This would only work for *center alignment without wrapped text.

Here is a function that may work, but it has the basic idea there (It would be put in a script that you change the text of the Custom UI in)

local UI = script.Parent --Replace with Custom Text UI 

--Should be called every time AFTER you set a NEW text value 
-- NOTE: ONLY WORKS ON CENTERED TEXT WITHOUT WRAPPING
local function ScaleText()
    local TextSize = UI:GetAttribute("TextSize")
    local CharacterSpacing = UI:GetAttribute("CharacterSpacing")

    local LowestX = 0
    local HighestX = 0
    for i,v in pairs(UI.TextCharacters:GetChildren()) do --Finding Dimentions of X and Y Values
        if LowestX == 0 and HighestX == 0 then
            LowestX = v.Position.X.Offset-(v.Size.X.Offset/2)
            HighestX = v.Position.X.Offset+(v.Size.X.Offset/2)
        end
        if v.Position.X.Offset+(v.Size.X.Offset/2) > HighestX then
            HighestX = v.Position.X.Offset+(v.Size.X.Offset/2)
        end
        if v.Position.X.Offset-(v.Size.X.Offset/2) < LowestX then
            LowestX = v.Position.X.Offset-(v.Size.X.Offset/2)
        end
    end

    --Dimentions
    local lengthY = TextSize
    local lengthX = HighestX-LowestX

    --Checks if both dimensions are out of bounds
    if UI.AbsoluteSize.X < lengthX and UI.AbsoluteSize.Y < lengthY then  
        --Checks which one needs scaled
        if lengthX-UI.AbsoluteSize.X < lengthY-UI.AbsoluteSize.Y then --X needs scaled
            UI:SetAttribute("TextSize", ((UI.AbsoluteSize.X/#UI:GetChildren()) - CharacterSpacing)/0.8) --Calcuation for X Scale
        else --Y needs Scaled
            UI:SetAttribute("TextSize", UI.AbsoluteSize.Y)
        end
    elseif lengthX > UI.AbsoluteSize.X then
        --Calculating X Pixels is hard so in order to figure out the Length of the line, the equation is:
        -- #UI:GetChildren()*(CharacterSpacing + TextSize*0.8) = LengthOfLine
        -- A little more algebra later can then give the equation:
        -- ((LengthOfLine/#UI:GetChildren()) - CharacterSpacing)/0.8 = TextSize

        UI:SetAttribute("TextSize", ((UI.AbsoluteSize.X/#UI:GetChildren()) - CharacterSpacing)/0.8) --Calcuation for X Scale
    elseif lengthY >UI.AbsoluteSize.Y then
        UI:SetAttribute("TextSize", UI.AbsoluteSize.Y)
    end
end

This function should only be called after you change the text and just calculates and sets the pixels in the frame! Hope this helps!

2 Likes

Given the function a go but not working. The script gives this error: (SetText is the name of the script.)
SetText:42: attempt to perform arithmetic (sub) on number and nil - Server - SetText:42

1 Like

I forgot the a in the

local CharacterSpacing = UI:GetAttribute("CharacterSpacing")

Just updated the code and it should work now

This seems like a really cool plugin! I have made a font sheet, and uploaded it to Roblox. When I follow the instructions to create a new Frame, everything runs smoothly until I try to edit the text. For some reason, although the frame is there, no text will appear no matter what. How can I fix this?

EDIT: Actually, it appears in the game when I test it. For some reason though, it doesn’t appear in studio. I don’t know why this bug occurs though, sorry.
Another thing I noticed is that when you try to change the TextSize, it doesn’t fit in the frame. Same thing when you try to scale the frame itself. This is kind of weird because now the text is above the frame, and slightly to the right. Because of this and the fact that I can’t see the text, I have to blindly position the frame below where I want it to be, and keep testing the game over and over until it looks good.

1 Like

VERY NICE TOOL! I’ve been meaning to make something like this for a while, and this tool is brilliant!

1 Like