If I run `default_case_fold_str` on a string containing the ligature `ffi`, it appears to cause an infinite loop that consumes all RAM. Here's a test case that encounters the infinite loop: ```rust #[test] fn test_ligature() { let s = "the spiffiest test"; assert_eq!(default_case_fold_str(&s), "the spiffiest test"); } ``` (In case font rendering is obscuring the problem, the input word "spiffiest" is made of 7 characters: `['s', 'p', 'i', 'ffi', 'e', 's', 't']`.)