Why does ‘freedom’ return the french fries  emoji?
The  emoji is offered as an option for any search matching the string ‘freedom fries’, which


  was a political euphemism for French fries in the United States. The term was born in 2003 when the then Republican Chairman of the Committee on House Administration, Bob Ney, renamed the menu item in three Congressional cafeterias in response to France's opposition to the proposed invasion of Iraq.


In the character picker, any prefix substring match on a word relating to that emoji will present the emoji for selection. Therefore ‘free’ or ‘freedom’ will match ‘freedom fries’.



Where does the OS find these strings?

 CoreEmoji.framework contains a list of emojis and relevant search strings, per locale, in

/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/Resources/en.lproj/


replacing en with the locale. For the strings used by the character picker when searching, look in CharacterPicker.strings. For example:

/System/L*/Priv*/CoreE*/V*/A/R*/en.*/C*


Open the .strings file as a .plist in Xcode to prettyprint it as shown above, or use plutil:

$ plutil -extract "" xml1 -o - /System/L*/Priv*/CoreE*/V*/A/R*/en.*/C*
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;string&gt;fries | freedom fries | french fries | fast food | junk food | food | object&lt;/string&gt;
&lt;/plist&gt;




$ plutil -convert json -o - /System/L*/Priv*/CoreE*/V*/A/R*/en.*/C* | jq -r ".[\"\"]"
fries | freedom fries | french fries | fast food | junk food | food | object


I don't want QuickType to suggest  as an autocomplete to ‘freedom’!

It won't. QuickType autocomplete emoji suggestions, or Messages tap-to-replace words with emojis when the emoji keyboard is shown, is defined by another file, FindReplace.strings.

Emojis are suggested as word replacements when an entire word in the original text matches an entire word in a string relating to the emoji. The word ‘freedom’ will not be replaced by the emoji since the ‘freedom fries’ phrase only exists in CharacterPicker.strings, not FindReplace.strings.

$ plutil -convert json -o - /System/L*/Priv*/CoreE*/V*/A/R*/en.*/F* | jq -r ".[\"\"]"
fries | french fries | french fry