local unicode_printability_boundaries = require "luacheck.unicode_printability_boundaries" local unicode = {} -- unicode_printability_boundaries is an array of first codepoints of -- each continuous block of codepoints that are all printable or all not printable. function unicode.is_printable(codepoint) -- Binary search for index of the first boundary less than or equal to given codepoint. local floor_boundary_index -- Target index is always in [begin_index..end_index). local begin_index = 1 local end_index = #unicode_printability_boundaries + 1 while end_index - begin_index > 1 do local mid_index = math.floor((begin_index + end_index) / 2) local mid_codepoint = unicode_printability_boundaries[mid_index] if codepoint < mid_codepoint then end_index = mid_index elseif codepoint > mid_codepoint then begin_index = mid_index else floor_boundary_index = mid_index break end end floor_boundary_index = floor_boundary_index or begin_index -- floor_boundary_index is the number of the block containing codepoint. -- Printable and not printable blocks alternate and the first one is not printable (zero is not printable). return floor_boundary_index % 2 == 0 end return unicode