Hello Leah,
very thorough and VERY long, and way more than I care to know about this.
Aw, but fonts are fun! 😁
The basic problem is you likely have at least one conflicting font somewhere. The OS then gets confused which is the correct font, and the font cache data gets mangled because the OS is trying to save a cache for duplicate fonts. The OS doesn't know what to do, so you then get the boxed question mark from the font, LastResort. You clear the cache, it's fixed momentarily, but the cache gets corrupted once again with conflicting data.
You may not see any fonts with the same Finder name, but it's the internal names of each font that matter. Those are the ones you see in your font lists. You could rename Palatino.ttc to xxx.ttc, and it would still show up in your apps and the OS as Palatino.
Things to do, preferably in the order listed:
a) If Font Book is still on the drive, remove it. Never have more than one font manager on your system at a time. They will fight for control of your fonts. This isn't all that easy to do in Mojave. That is, you can't just move Font Book to the trash since the OS insists it's required by the OS. It isn't. It's just another font manager. The OS will work perfectly fine without it.
How to remove it? Easiest is to startup to any other drive or partition you have the OS on. Once booted to that drive, you can delete anything you want from any other drive. System Integrity Protection only protects the startup disk.
If you can't do that, the next option takes more time, but isn't all that difficult. Restart and hold down the Command+R keys to boot into Recovery Mode. Once at the work screen, go to the top menu bar and choose Utilities > Terminal. In the Terminal window, type …
csrutil disable
… and press return. You should get a message that SIP has been successfully disabled. Then type …
reboot
… and press return. The Mac will restart.
Now, even from the startup drive, you can put Font Book in the trash and delete it using only your admin password. Make sure to empty the trash. Then repeat the steps above for Recovery Mode, except the first command will be …
crsutil enable
You should get a message that SIP has been successfully enabled.
Type reboot and press return. The moment the Mac goes into the restart sequence, hold down the Shift key to enter Safe Mode. This is just to once more delete all user cache files for the account you login to in Safe Mode. Once at the desktop, restart again normally.
Two more things to do related to Font Book before you're done with this first step. Now that Font Book is gone, you want to clear the last of anything related to its startup data.
From the desktop, hold the Option key down and from the top menu bar, choose Go > Library. This opens the Library folder in your user account. From there, open the Preferences folder. Delete these two items (both may not exist):
com.apple.FontBook.plist
com.apple.FontRegistry.user.plist
Lastly, remove all font cache data from the system.
Close all running applications. From an administrator account, open the Terminal app and enter the following command. You can also copy/paste it from here into the Terminal window:
sudo atsutil databases -remove
This removes all font cache files. Both for the system and the current logged in user. After running the command, close Terminal and immediately restart your Mac.
All of this is to get Font Book and its related data off the drive so it stops interfering with FEX. This itself may not fix the visible issue of question marks where text should be, but we're just getting Font Book out of the way. Simply launching Font Book will cause it to recreate the .plist files you removed, and other hidden data. The OS then reads those to determine what fonts Font Book says should be active or not, which may not be what FEX says. This conflict of font management needs to be eliminated.
b) Now test to see if the issue returns. If it does, you have either damaged or conflicted third party fonts installed. Let us know and we'll address it as necessary.
I'm no techy, but I know that's not normal.
It's very normal. There are far more users who are very competent at using a computer, but not really knowing how to fix one than there are tech-heads.