util.string.isnfc

Shared

Checks whether a string is already in Unicode NFC normalized form


Syntax

local is_normalized = util.string.isnfc(
    input
)

Parameters

TypeNameDescription
stringinputString to check

Returns

TypeNameDescription
boolis_normalizedtrue if input is already in NFC (Normalization Form C)

Examples

A plain ASCII string is always already NFC
local is_normalized = util.string.isnfc("hello")

core.engine.print("info", is_normalized) -- true
A precomposed accented character is NFC
local is_normalized = util.string.isnfc("café") -- é as a single codepoint

core.engine.print("info", is_normalized) -- true
A decomposed character is not NFC
local decomposed = "e" .. util.string.char(0x0301) -- 'e' + combining acute accent
local is_normalized = util.string.isnfc(decomposed)

core.engine.print("info", is_normalized) -- false
Check before relying on string equality across sources
local input = get_user_input()

if not util.string.isnfc(input) then
    input = util.string.normalize_nfc(input)
end

On this page