i bet the function checks only full words, eg split by spaces.
Maybe you can ReplaceAll("""", “”" “) before the titlecase then it will do all the words.
Afterwards you can after the titlecase replaceAll(”"" “, “””") this reverts back the changed string.
I wrote a routine to fix it for me. It splits text by spaces, and then checks the first character of each word for anything that’s not a letter. If it starts with a non-letter character it passes it to a function that searches for and capitalizes the first letter.
Then it splits the text by EndOfLine and checks the first word of each sentence in case one starts with a character that’s not a letter, and passes it to the same function if it does.
I would not want to do a whole novel this way, but for sentences and short paragraphs it works.