   end
 
   defp downcase("", acc), do: acc
+
+  # Sigma handling
+
+  for {first, last} <- rangify.(letters) do
+    if first == last do
+      defp letter?(unquote(first)), do: true
+    else
+      defp letter?(codepoint)
+           when codepoint >= unquote(first) and codepoint <= unquote(last),
+           do: true
+    end
+  end
+
+  defp letter?(_), do: false
 
   # Upcase
 

    |> IO.iodata_to_binary()
end

{codes, letters, non_breakable, decompositions, combining_classes} =
  Enum.reduce(File.stream!(data_path), {[], [], [], %{}, %{}}, fn line, {cacc, lacc, wacc, dacc, kacc} ->
    [
      codepoint,
      _name,


    lacc =
      case category do
        "L" <> _ -> [String.to_integer(codepoint, 16) | lacc]
        _ -> lacc
      end

