-- pattern, then text, then tmkx ma. local lp = game:GetService("Players").LocalPlayer local tcs = game:GetService("TextChatService") -- 1. THE FONT CONVERTER FUNCTION local function toImgFont(text) local map = {["a"]="ᴀ", ["b"]="ʙ", ["c"]="ᴄ", ["d"]="ᴅ", ["e"]="ᴇ", ["f"]="ғ", ["g"]="ɢ", ["h"]="ʜ", ["i"]="ɪ", ["j"]="ᴊ", ["k"]="ᴋ", ["l"]="ʟ", ["m"]="ᴍ", ["n"]="ɴ", ["o"]="ᴏ", ["p"]="ᴘ", ["q"]="ǫ", ["r"]="ʀ", ["s"]="s", ["t"]="ᴛ", ["u"]="ᴜ", ["v"]="ᴠ", ["w"]="ᴡ", ["x"]="x", ["y"]="ʏ", ["z"]="ᴢ"} local res = "" for i = 1, #text do local c = text:sub(i,i):lower() res = res .. (map[c] or text:sub(i,i)) end return res end -- 2. GUI CONSTRUCTION if lp.PlayerGui:FindFirstChild("SamDevFontTool") then lp.PlayerGui.SamDevFontTool:Destroy() end local sg = Instance.new("ScreenGui", lp.PlayerGui) sg.Name = "SamDevFontTool" local main = Instance.new("Frame", sg) main.Size = UDim2.new(0, 350, 0, 120) main.Position = UDim2.new(0.5, -175, 0.2, 0) main.BackgroundColor3 = Color3.fromRGB(15, 15, 15) main.Active = true main.Draggable = true Instance.new("UICorner", main) -- Rainbow Stroke local stroke = Instance.new("UIStroke", main) stroke.Thickness = 2 task.spawn(function() while task.wait(0.05) do stroke.Color = Color3.fromHSV(tick() % 5 / 5, 1, 1) end end) local title = Instance.new("TextLabel", main) title.Size = UDim2.new(1, 0, 0, 35) title.BackgroundTransparency = 1 title.Text = "sᴀᴍᴅᴇᴠ ᴛᴇxᴛ ᴄᴏɴᴠᴇʀᴛᴇʀ" title.TextColor3 = Color3.new(1, 1, 1) title.Font = Enum.Font.GothamBold title.TextSize = 16 -- 3. THE TEXTBOX (CONVERSION LOGIC) local input = Instance.new("TextBox", main) input.Size = UDim2.new(0.9, 0, 0, 50) input.Position = UDim2.new(0.05, 0, 0.45, 0) input.BackgroundColor3 = Color3.fromRGB(30, 30, 30) input.TextColor3 = Color3.new(1, 1, 1) input.PlaceholderText = "Type here..." input.Text = "" input.ClearTextOnFocus = false input.Font = Enum.Font.Gotham input.TextSize = 14 Instance.new("UICorner", input) -- Real-time Conversion Visual input:GetPropertyChangedSignal("Text"):Connect(function() local currentText = input.Text -- We don't want to loop infinitely, so we check if it's already converted local converted = toImgFont(currentText) if currentText ~= converted then input.Text = converted end end) -- Send to Chat on Enter input.FocusLost:Connect(function(enterPressed) if enterPressed and input.Text ~= "" then local message = input.Text pcall(function() tcs.TextChannels.RBXGeneral:SendAsync(message) end) input.Text = "" -- Clear for next message end end) -- tmkx ma.