mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-21 05:06:29 +00:00
Use FontFace and consistent text sizing (#988)
This commit is contained in:
41
plugin/src/App/getTextBoundsAsync.lua
Normal file
41
plugin/src/App/getTextBoundsAsync.lua
Normal file
@@ -0,0 +1,41 @@
|
||||
local TextService = game:GetService("TextService")
|
||||
|
||||
local Rojo = script:FindFirstAncestor("Rojo")
|
||||
local Packages = Rojo.Packages
|
||||
|
||||
local Log = require(Packages.Log)
|
||||
|
||||
local params = Instance.new("GetTextBoundsParams")
|
||||
|
||||
local function getTextBoundsAsync(
|
||||
text: string,
|
||||
font: Font,
|
||||
textSize: number,
|
||||
width: number,
|
||||
richText: boolean?
|
||||
): Vector2
|
||||
if type(text) ~= "string" then
|
||||
Log.warn(`Invalid text. Expected string, received {type(text)} instead`)
|
||||
return Vector2.zero
|
||||
end
|
||||
if #text >= 200_000 then
|
||||
Log.warn(`Invalid text. Exceeds the 199,999 character limit`)
|
||||
return Vector2.zero
|
||||
end
|
||||
|
||||
params.Text = text
|
||||
params.Font = font
|
||||
params.Size = textSize
|
||||
params.Width = width
|
||||
params.RichText = not not richText
|
||||
|
||||
local success, bounds = pcall(TextService.GetTextBoundsAsync, TextService, params)
|
||||
if not success then
|
||||
Log.warn(`Failed to get text bounds: {bounds}`)
|
||||
return Vector2.zero
|
||||
end
|
||||
|
||||
return bounds
|
||||
end
|
||||
|
||||
return getTextBoundsAsync
|
||||
Reference in New Issue
Block a user