BoyerMooreNocase could avoid tolower() call
The function BoyerMooreNoCase() uses tolower() to convert each character to lower case before looking it up in the jump tables. It would be simpler to just duplicate the lowercase jump values into the uppercase jump entries and remove the tolower() calls.
This requires that the tables for case and nocase of the same content string are not shared. This might already be the case.