diff options
39 files changed, 801 insertions, 649 deletions
diff --git a/dictionaries/de_wordlist.xml b/dictionaries/de_wordlist.xml index 745594460..b895f237b 100644 --- a/dictionaries/de_wordlist.xml +++ b/dictionaries/de_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="de" description="Deutsch" date="1338184280" version="12" options="german_umlaut_processing"> +<wordlist locale="de" description="Deutsch" date="1339787575" version="15" options="german_umlaut_processing"> <w f="203" flags="">der</w> <w f="200" flags="">und</w> <w f="198" flags="">die</w> @@ -3043,6 +3043,7 @@ <w f="105" flags="abbreviation">SK</w> <w f="105" flags="">Sankt</w> <w f="105" flags="">Sendung</w> + <w f="105" flags="">Süßigkeit</w> <w f="105" flags="">Teilnahme</w> <w f="105" flags="">Texas</w> <w f="105" flags="">Theodor</w> @@ -8448,6 +8449,8 @@ <w f="90" flags="">Gestapo</w> <w f="90" flags="">Gewässern</w> <w f="90" flags="">Giuseppe</w> + <w f="90">Gmail</w> + <w f="90">Google</w> <w f="90" flags="">Gräber</w> <w f="90" flags="">Gymnasiums</w> <w f="90" flags="">Göttin</w> @@ -15609,6 +15612,7 @@ <w f="80" flags="">Landesgrenze</w> <w f="80" flags="">Landeshauptmann</w> <w f="80" flags="">Lebensbedingungen</w> + <w f="80">Lecker</w> <w f="80" flags="">Leeds</w> <w f="80" flags="">Lehramt</w> <w f="80" flags="">Leitungen</w> @@ -22727,7 +22731,6 @@ <w f="74" flags="">dreizählig</w> <w f="74" flags="">duale</w> <w f="74" flags="">duftenden</w> - <w f="74" flags="">dumm</w> <w f="74" flags="">durchgehender</w> <w f="74" flags="">durchschaut</w> <w f="74" flags="">durchschneidet</w> @@ -27903,7 +27906,7 @@ <w f="70" flags="">Bürgers</w> <w f="70" flags="abbreviation">CNRS</w> <w f="70" flags="abbreviation">CSD</w> - <w f="70" flags="">Cafe</w> + <w f="70" flags="">Café</w> <w f="70" flags="">Calais</w> <w f="70" flags="">Calder</w> <w f="70" flags="">Casimir</w> @@ -61063,7 +61066,6 @@ <w f="56" flags="">Firmung</w> <w f="56" flags="">Fiskus</w> <w f="56" flags="">Fitch</w> - <w f="56" flags="">Flecke</w> <w f="56" flags="">Fliehburg</w> <w f="56" flags="">Flipper</w> <w f="56" flags="">Flugboot</w> @@ -100003,7 +100005,6 @@ <w f="46" flags="">Südlibanon</w> <w f="46" flags="">Südnorwegen</w> <w f="46" flags="">Süskind</w> - <w f="46" flags="">Süßigkeit</w> <w f="46" flags="">Süßwasserfisch</w> <w f="46" flags="">Tabakrauch</w> <w f="46" flags="">Tabellenvorletzter</w> @@ -104069,6 +104070,7 @@ <w f="45" flags="">Nordwestufer</w> <w f="45" flags="">Notausgang</w> <w f="45" flags="">Notausgänge</w> + <w f="45">Notizblock</w> <w f="45" flags="">Novellensammlung</w> <w f="45" flags="">Novizinnen</w> <w f="45" flags="">Nutzholz</w> @@ -107670,7 +107672,6 @@ <w f="44" flags="">Dubais</w> <w f="44" flags="">Dugan</w> <w f="44" flags="">Duisdorf</w> - <w f="44" flags="">Dummkopf</w> <w f="44" flags="">Duncans</w> <w f="44" flags="">Dunmore</w> <w f="44" flags="">Dunois</w> @@ -128553,7 +128554,6 @@ <w f="40" flags="">glitzernd</w> <w f="40" flags="">glückten</w> <w f="40" flags="">goldne</w> - <w f="40" flags="">google</w> <w f="40" flags="">gottesfürchtige</w> <w f="40" flags="">grampositives</w> <w f="40" flags="">grazile</w> @@ -192953,6 +192953,7 @@ <w f="25" flags="">Dünnschichttechnologie</w> <w f="25" flags="">Dünnschliff</w> <w f="25" flags="">Düsentriebwerke</w> + <w f="25" flags="">E-Mail</w> <w f="25" flags="">Echtzeitsystemen</w> <w f="25" flags="">Eckpavillon</w> <w f="25" flags="">Edelmänner</w> @@ -193796,6 +193797,7 @@ <w f="25" flags="">Flaschengeist</w> <w f="25" flags="">Flaschengrößen</w> <w f="25" flags="">Flaschenzüge</w> + <w f="25" flags="">Flecke</w> <w f="25" flags="">Fleischbrücke</w> <w f="25" flags="">Fleischersatz</w> <w f="25" flags="">Fleischteile</w> @@ -201588,7 +201590,6 @@ <w f="25" flags="">einreisenden</w> <w f="25" flags="">einriss</w> <w f="25" flags="">elektronendichte</w> - <w f="25" flags="">email</w> <w f="25" flags="">enterprises</w> <w f="25" flags="">entfetten</w> <w f="25" flags="">epitome</w> @@ -202700,6 +202701,8 @@ <w f="21" flags="">zwanzigstel</w> <w f="21" flags="">zwischenlagern</w> <w f="21" flags="">übersprechen</w> + <w f="20">BBQ</w> + <w f="20">Germanwings</w> <w f="18" flags="">Fernfachhochschule</w> <w f="18" flags="">Finanzverbund</w> <w f="18" flags="">Taxibus</w> @@ -205754,6 +205757,7 @@ <w f="1" flags="">ökotest</w> <w f="1" flags="">übergangszeiten</w> <w f="1" flags="">überparteilichkeit</w> + <w f="0" flags="">Dummkopf</w> <w f="0" flags="n">after</w> <w f="0" flags="n">anal</w> <w f="0" flags="n">angekettet</w> @@ -205767,6 +205771,7 @@ <w f="0" flags="n">chicks</w> <w f="0" flags="n">dreckig</w> <w f="0" flags="n">dreier</w> + <w f="0" flags="">dumm</w> <w f="0" flags="n">eindringen</w> <w f="0" flags="n">entblößt</w> <w f="0" flags="n">erotisch</w> diff --git a/dictionaries/en_gb_wordlist.xml b/dictionaries/en_gb_wordlist.xml index 024c78fa7..c2af46e1d 100644 --- a/dictionaries/en_gb_wordlist.xml +++ b/dictionaries/en_gb_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="en_GB" description="English (UK)" date="1338457498" version="14"> +<wordlist locale="en_GB" description="English (UK)" date="1340038724" version="16"> <w f="222" flags="">the</w> <w f="214" flags="">of</w> <w f="212" flags="">and</w> @@ -29,6 +29,7 @@ <w f="182" flags="">has</w> <w f="181" flags="">but</w> <w f="180" flags="">first</w> + <w f="180" flags="">very</w> <w f="180" flags="">we</w> <w f="179" flags="">one</w> <w f="179" flags="">their</w> @@ -163,7 +164,6 @@ <w f="160" flags="">too</w> <w f="160" flags="n">up</w> <w f="160" flags="">us</w> - <w f="160" flags="">very</w> <w f="160" flags="">won</w> <w f="160" flags="">yes</w> <w f="160" flags="">you're</w> @@ -6579,7 +6579,6 @@ <w f="112" flags="">outskirts</w> <w f="112" flags="">overlooking</w> <w f="112" flags="">overnight</w> - <w f="112" flags="">overs</w> <w f="112" flags="">palm</w> <w f="112" flags="">papal</w> <w f="112" flags="">partnerships</w> @@ -7266,6 +7265,7 @@ <w f="110" flags="">jumped</w> <w f="110" flags="">keeper</w> <w f="110" flags="">kindergarten</w> + <w f="110" flags="">kitten</w> <w f="110" flags="">knight</w> <w f="110" flags="">lasts</w> <w f="110" flags="">latitude</w> @@ -7688,6 +7688,7 @@ <w f="109" flags="abbreviation">kHz</w> <w f="109" flags="">kernel</w> <w f="109" flags="">kidney</w> + <w f="109" flags="">kittens</w> <w f="109" flags="">knockout</w> <w f="109" flags="">laboratories</w> <w f="109" flags="">lamp</w> @@ -11906,6 +11907,7 @@ <w f="100" flags="">helmets</w> <w f="100" flags="">heyday</w> <w f="100" flags="">highlighting</w> + <w f="100">how've</w> <w f="100" flags="">hugely</w> <w f="100" flags="">iPhone</w> <w f="100" flags="">identifiable</w> @@ -12734,6 +12736,7 @@ <w f="99" flags="">snail</w> <w f="99" flags="">snout</w> <w f="99" flags="">socket</w> + <w f="99" flags="">spacious</w> <w f="99" flags="">spawning</w> <w f="99" flags="">spearheaded</w> <w f="99" flags="">spelt</w> @@ -13375,7 +13378,6 @@ <w f="98" flags="">sourced</w> <w f="98" flags="">spaceship</w> <w f="98" flags="">spacing</w> - <w f="98" flags="">spacious</w> <w f="98" flags="">spam</w> <w f="98" flags="">specialising</w> <w f="98" flags="">spectroscopy</w> @@ -14837,7 +14839,6 @@ <w f="95" flags="">Kazakhstan</w> <w f="95" flags="">Kirby</w> <w f="95" flags="">Kumar</w> - <w f="95" flags="">LAN</w> <w f="95" flags="abbreviation">LPGA</w> <w f="95" flags="">Lahore</w> <w f="95" flags="">Lakers</w> @@ -15737,7 +15738,6 @@ <w f="94" flags="">demolish</w> <w f="94" flags="">detonation</w> <w f="94" flags="">dialogues</w> - <w f="94">didst</w> <w f="94" flags="">diminish</w> <w f="94" flags="">din</w> <w f="94" flags="">diner</w> @@ -19291,6 +19291,8 @@ <w f="90" flags="">weir</w> <w f="90">well-being</w> <w f="90" flags="">wettest</w> + <w f="90">when's</w> + <w f="90">where'll</w> <w f="90" flags="">whipped</w> <w f="90" flags="">widowers</w> <w f="90" flags="">winner's</w> @@ -22587,7 +22589,6 @@ <w f="86" flags="">newsroom</w> <w f="86" flags="">nicely</w> <w f="86" flags="">nonviolent</w> - <w f="86" flags="abbreviation">nos</w> <w f="86" flags="">noses</w> <w f="86" flags="">notations</w> <w f="86" flags="">novelization</w> @@ -25625,7 +25626,6 @@ <w f="83" flags="">kilowatts</w> <w f="83" flags="">kindergartens</w> <w f="83" flags="">kingdom's</w> - <w f="83" flags="">kitten</w> <w f="83" flags="">knack</w> <w f="83" flags="">labours</w> <w f="83" flags="">lacquer</w> @@ -26730,7 +26730,6 @@ <w f="82" flags="">keenly</w> <w f="82" flags="">keypad</w> <w f="82" flags="">kidnappings</w> - <w f="82" flags="">kittens</w> <w f="82" flags="">knitted</w> <w f="82" flags="">knuckle</w> <w f="82" flags="">lagged</w> @@ -27165,7 +27164,6 @@ <w f="82" flags="">wonderfully</w> <w f="82" flags="">workable</w> <w f="82" flags="">workmanship</w> - <w f="82" flags="">yew</w> <w f="82" flags="">yin</w> <w f="82" flags="">zig</w> <w f="81" flags="">Aachen</w> @@ -31437,7 +31435,6 @@ <w f="78" flags="">lakeshore</w> <w f="78" flags="">laminar</w> <w f="78" flags="">landforms</w> - <w f="78" flags="">lang</w> <w f="78" flags="">larceny</w> <w f="78" flags="">lard</w> <w f="78" flags="">largemouth</w> @@ -32718,7 +32715,6 @@ <w f="77" flags="">kitsch</w> <w f="77" flags="">knight's</w> <w f="77" flags="">knockouts</w> - <w f="77" flags="">lain</w> <w f="77" flags="">landmines</w> <w f="77" flags="">language's</w> <w f="77" flags="">lapel</w> @@ -33006,7 +33002,6 @@ <w f="77" flags="">sidereal</w> <w f="77" flags="">simulcasted</w> <w f="77" flags="">sinuous</w> - <w f="77" flags="">siting</w> <w f="77" flags="">skips</w> <w f="77" flags="">skylight</w> <w f="77" flags="">slays</w> @@ -37295,6 +37290,7 @@ <w f="73" flags="">Klondike</w> <w f="73" flags="">Kodiak</w> <w f="73" flags="">Kursk</w> + <w f="73">LAX</w> <w f="73" flags="abbreviation">LGPL</w> <w f="73" flags="abbreviation">LMP</w> <w f="73" flags="abbreviation">LSTs</w> @@ -38910,7 +38906,6 @@ <w f="72" flags="">backwardness</w> <w f="72" flags="">baker's</w> <w f="72" flags="">ballrooms</w> - <w f="72" flags="">banc</w> <w f="72" flags="">bane</w> <w f="72" flags="">bangs</w> <w f="72" flags="">banishing</w> @@ -39591,6 +39586,7 @@ <w f="72" flags="">shunning</w> <w f="72" flags="">shunted</w> <w f="72" flags="">shuttle's</w> + <w f="72" flags="">sigh</w> <w f="72" flags="">siltstone</w> <w f="72" flags="">silversmith</w> <w f="72" flags="">singlehandedly</w> @@ -41827,6 +41823,7 @@ <w f="70" flags="">gash</w> <w f="70" flags="">gaudy</w> <w f="70" flags="">gazette</w> + <w f="70">gelato</w> <w f="70" flags="">genealogist</w> <w f="70" flags="">generalship</w> <w f="70" flags="">geopolitics</w> @@ -41879,7 +41876,6 @@ <w f="70" flags="">holdover</w> <w f="70" flags="">homeroom</w> <w f="70" flags="">homunculus</w> - <w f="70" flags="">hoo</w> <w f="70" flags="">howl</w> <w f="70" flags="">huddled</w> <w f="70" flags="">hurtful</w> @@ -44288,6 +44284,7 @@ <w f="68" flags="">axils</w> <w f="68" flags="">axing</w> <w f="68" flags="">azimuthal</w> + <w f="68" flags="">babe</w> <w f="68" flags="">backlight</w> <w f="68" flags="">backplane</w> <w f="68" flags="">backwoods</w> @@ -46064,7 +46061,6 @@ <w f="67" flags="">fuselages</w> <w f="67" flags="">futurism</w> <w f="67" flags="">gaffe</w> - <w f="67" flags="">gage</w> <w f="67" flags="">gallery's</w> <w f="67" flags="">galls</w> <w f="67" flags="">gavel</w> @@ -46493,7 +46489,6 @@ <w f="67" flags="">shined</w> <w f="67" flags="">shipowners</w> <w f="67" flags="">shipper</w> - <w f="67" flags="">shod</w> <w f="67" flags="">shrieking</w> <w f="67" flags="">shrugs</w> <w f="67" flags="">sibilants</w> @@ -52086,7 +52081,6 @@ <w f="63" flags="">gummy</w> <w f="63" flags="">gunfights</w> <w f="63" flags="">gunge</w> - <w f="63" flags="">hake</w> <w f="63" flags="">halftone</w> <w f="63" flags="">halva</w> <w f="63" flags="">handrail</w> @@ -52657,7 +52651,6 @@ <w f="63" flags="">triplane</w> <w f="63" flags="">trotters</w> <w f="63" flags="">truant</w> - <w f="63" flags="">tsars</w> <w f="63" flags="">tuatara</w> <w f="63" flags="">tufa</w> <w f="63" flags="">tummy</w> @@ -53471,7 +53464,6 @@ <w f="62" flags="">coproduct</w> <w f="62" flags="">corbelled</w> <w f="62" flags="">coreligionists</w> - <w f="62" flags="">corm</w> <w f="62" flags="">corms</w> <w f="62" flags="">cornstarch</w> <w f="62" flags="">corrals</w> @@ -56844,7 +56836,6 @@ <w f="60" flags="">longshoreman</w> <w f="60" flags="">longterm</w> <w f="60" flags="">lugger</w> - <w f="60" flags="">lune</w> <w f="60" flags="">madmen</w> <w f="60" flags="">madre</w> <w f="60" flags="">magnesia</w> @@ -58438,6 +58429,7 @@ <w f="59" flags="">majlis</w> <w f="59" flags="">maniacally</w> <w f="59" flags="">mantlet</w> + <w f="59" flags="">manu</w> <w f="59" flags="">mapper</w> <w f="59" flags="">marjoram</w> <w f="59" flags="">marshaling</w> @@ -58772,7 +58764,6 @@ <w f="59" flags="">similitude</w> <w f="59" flags="">singed</w> <w f="59" flags="">sinning</w> - <w f="59" flags="">siring</w> <w f="59" flags="">skein</w> <w f="59" flags="">skin's</w> <w f="59" flags="">skipjack</w> @@ -60312,7 +60303,6 @@ <w f="58" flags="">solvated</w> <w f="58" flags="">songwriter's</w> <w f="58" flags="">sop</w> - <w f="58" flags="">sori</w> <w f="58" flags="">sorority's</w> <w f="58" flags="">sotto</w> <w f="58" flags="">southerner</w> @@ -61371,7 +61361,6 @@ <w f="57" flags="">garrulous</w> <w f="57" flags="">gazebos</w> <w f="57" flags="">gelatine</w> - <w f="57" flags="">geld</w> <w f="57" flags="">gelled</w> <w f="57" flags="">generalise</w> <w f="57" flags="">generalities</w> @@ -62021,7 +62010,6 @@ <w f="57" flags="">unum</w> <w f="57" flags="">upperclassman</w> <w f="57" flags="">urbanites</w> - <w f="57" flags="abbreviation">usr</w> <w f="57" flags="">utility's</w> <w f="57" flags="">vanities</w> <w f="57" flags="">vaqueros</w> @@ -62730,7 +62718,6 @@ <w f="56" flags="">crock</w> <w f="56" flags="">croplands</w> <w f="56" flags="">crosswalks</w> - <w f="56" flags="">culm</w> <w f="56" flags="">curettage</w> <w f="56" flags="">currency's</w> <w f="56" flags="">cursors</w> @@ -63165,7 +63152,6 @@ <w f="56" flags="">nighters</w> <w f="56" flags="">nightspot</w> <w f="56" flags="">nightstick</w> - <w f="56" flags="">nim</w> <w f="56" flags="">ninetieth</w> <w f="56" flags="">nix</w> <w f="56" flags="">nocturne</w> @@ -63630,7 +63616,6 @@ <w f="56" flags="">unread</w> <w f="56" flags="">unrealised</w> <w f="56" flags="">unselected</w> - <w f="56" flags="">unser</w> <w f="56" flags="">unsparing</w> <w f="56" flags="">unsporting</w> <w f="56" flags="">unsupportive</w> @@ -64650,6 +64635,7 @@ <w f="55" flags="">glissandi</w> <w f="55" flags="">gloat</w> <w f="55" flags="">glum</w> + <w f="55" flags="">gnat</w> <w f="55" flags="">gnostics</w> <w f="55" flags="">goannas</w> <w f="55" flags="">goddess's</w> @@ -66199,7 +66185,6 @@ <w f="54" flags="">homeschoolers</w> <w f="54" flags="">horsewoman</w> <w f="54" flags="">horticulturalists</w> - <w f="54" flags="abbreviation">hos</w> <w f="54" flags="">hotlines</w> <w f="54" flags="">hovel</w> <w f="54" flags="">huckleberry</w> @@ -66266,7 +66251,6 @@ <w f="54" flags="">lacewings</w> <w f="54" flags="">ladybird</w> <w f="54" flags="">laser's</w> - <w f="54" flags="abbreviation">lats</w> <w f="54" flags="">leafhoppers</w> <w f="54" flags="">leaper</w> <w f="54" flags="">leapfrogging</w> @@ -66284,7 +66268,6 @@ <w f="54" flags="">llanos</w> <w f="54" flags="">lobules</w> <w f="54" flags="">locksmiths</w> - <w f="54" flags="">loge</w> <w f="54" flags="">logjam</w> <w f="54" flags="">lon</w> <w f="54" flags="">longhaired</w> @@ -70100,7 +70083,6 @@ <w f="52" flags="">virtuality</w> <w f="52" flags="">virus's</w> <w f="52" flags="">vivace</w> - <w f="52" flags="">vive</w> <w f="52" flags="">voicework</w> <w f="52" flags="">volcanology</w> <w f="52" flags="">volleying</w> @@ -70986,7 +70968,6 @@ <w f="51" flags="">kukri</w> <w f="51" flags="">kumquat</w> <w f="51" flags="">kwashiorkor</w> - <w f="51" flags="">lade</w> <w f="51" flags="">lamp's</w> <w f="51" flags="">lampshade</w> <w f="51" flags="">lantana</w> @@ -75079,7 +75060,6 @@ <w f="48" flags="">calved</w> <w f="48" flags="">calypsos</w> <w f="48" flags="">caracaras</w> - <w f="48" flags="">carder</w> <w f="48" flags="">careerist</w> <w f="48" flags="">carny</w> <w f="48" flags="">carotenes</w> @@ -75880,7 +75860,6 @@ <w f="48" flags="">rhomboidal</w> <w f="48" flags="">rills</w> <w f="48" flags="">rivalry's</w> - <w f="48" flags="">rive</w> <w f="48" flags="">romps</w> <w f="48" flags="">router's</w> <w f="48" flags="">rubberised</w> @@ -75970,7 +75949,6 @@ <w f="48" flags="">sorbate</w> <w f="48" flags="nonword">sorta</w> <w f="48" flags="">souffle</w> - <w f="48" flags="">sough</w> <w f="48" flags="">southwardly</w> <w f="48" flags="">spacemen</w> <w f="48" flags="">spanker</w> @@ -77388,7 +77366,6 @@ <w f="47" flags="">shebang</w> <w f="47" flags="">sheepfold</w> <w f="47" flags="">sher</w> - <w f="47" flags="">sherd</w> <w f="47" flags="">shoos</w> <w f="47" flags="">shoplift</w> <w f="47" flags="">shorthaired</w> @@ -78341,7 +78318,6 @@ <w f="46" flags="">freelances</w> <w f="46" flags="">funnelling</w> <w f="46" flags="">fusel</w> - <w f="46" flags="">gad</w> <w f="46" flags="">gaffs</w> <w f="46" flags="">gamemasters</w> <w f="46" flags="">gapes</w> @@ -78690,7 +78666,6 @@ <w f="46">piste</w> <w f="46" flags="">pithead</w> <w f="46" flags="">placekicking</w> - <w f="46" flags="">plage</w> <w f="46" flags="">planchette</w> <w f="46" flags="">playas</w> <w f="46" flags="">playbacks</w> @@ -79927,7 +79902,6 @@ <w f="45" flags="">faery</w> <w f="45" flags="">fairy's</w> <w f="45" flags="">faits</w> - <w f="45" flags="">faller</w> <w f="45" flags="">fallowing</w> <w f="45" flags="">familiarised</w> <w f="45" flags="">fanboys</w> @@ -80032,7 +80006,6 @@ <w f="45" flags="">gym's</w> <w f="45" flags="">hacker's</w> <w f="45" flags="">hallelujah</w> - <w f="45" flags="">hame</w> <w f="45" flags="">hank</w> <w f="45" flags="">hankering</w> <w f="45" flags="">hanky</w> @@ -81576,7 +81549,6 @@ <w f="44" flags="">divestments</w> <w f="44" flags="">do-gooders</w> <w f="44" flags="">documentable</w> - <w f="44" flags="">don</w> <w f="44" flags="">donator</w> <w f="44" flags="">doorposts</w> <w f="44" flags="">doublespeak</w> @@ -84187,7 +84159,6 @@ <w f="42" flags="">anticarcinogenic</w> <w f="42" flags="">antipasto</w> <w f="42" flags="">antlions</w> - <w f="42" flags="">anu</w> <w f="42" flags="">anxiousness</w> <w f="42" flags="">apartness</w> <w f="42" flags="">ape's</w> @@ -85155,7 +85126,6 @@ <w f="42" flags="">washstand</w> <w f="42" flags="">waviness</w> <w f="42" flags="">wayfaring</w> - <w f="42" flags="">weil</w> <w f="42" flags="">wickedest</w> <w f="42" flags="">wiggled</w> <w f="42" flags="">wireworks</w> @@ -85924,7 +85894,6 @@ <w f="41" flags="">henhouse</w> <w f="41" flags="">hereabouts</w> <w f="41" flags="">hereunto</w> - <w f="41" flags="">herm</w> <w f="41">herniation</w> <w f="41">hies</w> <w f="41" flags="">highveld</w> @@ -87433,6 +87402,7 @@ <w f="40" flags="">housemother</w> <w f="40" flags="">houseware</w> <w f="40" flags="">housewife's</w> + <w f="40">how'll</w> <w f="40" flags="">hucksters</w> <w f="40" flags="">humanise</w> <w f="40" flags="">humbles</w> @@ -89171,7 +89141,6 @@ <w f="39" flags="">kedge</w> <w f="39" flags="">keyrings</w> <w f="39" flags="">kibble</w> - <w f="39">kine</w> <w f="39" flags="">kingless</w> <w f="39" flags="">kinkajous</w> <w f="39" flags="">knackered</w> @@ -90108,7 +90077,6 @@ <w f="38" flags="">beanball</w> <w f="38" flags="">bedazzled</w> <w f="38" flags="">bezant</w> - <w f="38" flags="abbreviation">bf</w> <w f="38" flags="">bights</w> <w f="38" flags="australian">bilbies</w> <w f="38" flags="">bilked</w> @@ -90604,7 +90572,6 @@ <w f="38" flags="">selectiveness</w> <w f="38" flags="">selene</w> <w f="38" flags="">selvages</w> - <w f="38" flags="">sere</w> <w f="38" flags="">serf's</w> <w f="38" flags="">serialise</w> <w f="38" flags="">servomotors</w> @@ -93266,7 +93233,6 @@ <w f="36" flags="">laminator</w> <w f="36" flags="">landlessness</w> <w f="36" flags="">launders</w> - <w f="36" flags="">lave</w> <w f="36" flags="">leathern</w> <w f="36" flags="">leeboard</w> <w f="36" flags="">leeched</w> @@ -95133,7 +95099,6 @@ <w f="35" flags="">librates</w> <w f="35" flags="">licitly</w> <w f="35" flags="">lid's</w> - <w f="35" flags="">lief</w> <w f="35" flags="">lifebuoy</w> <w f="35" flags="">lifebuoys</w> <w f="35" flags="">lightering</w> @@ -96892,7 +96857,6 @@ <w f="34" flags="">nonfinancial</w> <w f="34" flags="">noninflammatory</w> <w f="34" flags="">nontarget</w> - <w f="34" flags="">norn</w> <w f="34" flags="">northland</w> <w f="34" flags="">nosebands</w> <w f="34" flags="">novice's</w> @@ -99617,7 +99581,6 @@ <w f="32" flags="">localists</w> <w f="32" flags="">loco's</w> <w f="32" flags="">locomote</w> - <w f="32" flags="">lod</w> <w f="32" flags="">loiters</w> <w f="32" flags="">loquacity</w> <w f="32" flags="">lumpfish</w> @@ -102531,7 +102494,6 @@ <w f="30" flags="">digger's</w> <w f="30" flags="">dignitary's</w> <w f="30" flags="">dilapidations</w> - <w f="30" flags="">dingle</w> <w f="30" flags="">dirties</w> <w f="30" flags="">disagreeably</w> <w f="30" flags="">disbelievingly</w> @@ -104802,7 +104764,6 @@ <w f="28" flags="">lightning's</w> <w f="28" flags="">linkboy</w> <w f="28" flags="">linnets</w> - <w f="28" flags="">lins</w> <w f="28" flags="">lissome</w> <w f="28" flags="">literariness</w> <w f="28" flags="">littles</w> @@ -106823,7 +106784,6 @@ <w f="27" flags="">icemen</w> <w f="27" flags="">icepacks</w> <w f="27" flags="">ideate</w> - <w f="27" flags="abbreviation">ided</w> <w f="27" flags="">idiomorphic</w> <w f="27" flags="">idiot's</w> <w f="27" flags="">illyricum</w> @@ -109554,7 +109514,6 @@ <w f="25" flags="">masticating</w> <w f="25" flags="">mastics</w> <w f="25" flags="">matelots</w> - <w f="25" flags="">maun</w> <w f="25" flags="">maundering</w> <w f="25" flags="">maundy</w> <w f="25" flags="">mealies</w> @@ -111288,7 +111247,6 @@ <w f="23" flags="">awardee's</w> <w f="23" flags="">awarder</w> <w f="23" flags="">axle's</w> - <w f="23">baaed</w> <w f="23" flags="">babs</w> <w f="23" flags="">backbends</w> <w f="23" flags="">backcourts</w> @@ -111866,7 +111824,6 @@ <w f="23" flags="">fibrillations</w> <w f="23" flags="">fieldfares</w> <w f="23" flags="">fiend's</w> - <w f="23" flags="">fifing</w> <w f="23" flags="">fifteen's</w> <w f="23" flags="">filofax</w> <w f="23" flags="">fir's</w> @@ -112047,7 +112004,6 @@ <w f="23" flags="">hellishly</w> <w f="23" flags="">henhouses</w> <w f="23" flags="">heroisms</w> - <w f="23" flags="">hest</w> <w f="23" flags="">hied</w> <w f="23" flags="">high-falutin'</w> <w f="23" flags="">highchair</w> @@ -112756,7 +112712,6 @@ <w f="23" flags="">rambutans</w> <w f="23" flags="">rampion</w> <w f="23" flags="">ranking's</w> - <w f="23" flags="">rankly</w> <w f="23" flags="">rarefactions</w> <w f="23" flags="">rarefy</w> <w f="23" flags="">ratafia</w> @@ -114952,7 +114907,6 @@ <w f="21" flags="">emprise</w> <w f="21" flags="">en's</w> <w f="21" flags="">enamelwork</w> - <w f="21" flags="abbreviation">enc</w> <w f="21" flags="">endangerments</w> <w f="21" flags="">endon</w> <w f="21" flags="">energises</w> @@ -115387,7 +115341,6 @@ <w f="21" flags="">indiscriminating</w> <w f="21" flags="">indological</w> <w f="21" flags="">indology</w> - <w f="21" flags="">indre</w> <w f="21" flags="">indwelt</w> <w f="21" flags="">ineffaceable</w> <w f="21" flags="">ineffectuality</w> @@ -115789,7 +115742,6 @@ <w f="21" flags="">nonvocal</w> <w f="21" flags="">nonvoluntary</w> <w f="21" flags="">northeasterner</w> - <w f="21" flags="">noth</w> <w f="21" flags="">nourisher</w> <w f="21" flags="">novelettish</w> <w f="21" flags="">nucleus's</w> @@ -115798,7 +115750,6 @@ <w f="21" flags="">nuttiest</w> <w f="21" flags="abbreviation">nyx</w> <w f="21" flags="">oarswomen</w> - <w f="21" flags="">oater</w> <w f="21" flags="">obscurest</w> <w f="21" flags="">observantly</w> <w f="21" flags="">obstante</w> @@ -115896,7 +115847,6 @@ <w f="21" flags="">pareira</w> <w f="21" flags="">parenthesised</w> <w f="21" flags="">parenthetic</w> - <w f="21" flags="">parer</w> <w f="21" flags="">parfleche</w> <w f="21" flags="">parser's</w> <w f="21" flags="">parsings</w> @@ -115904,7 +115854,6 @@ <w f="21" flags="">passivism</w> <w f="21" flags="">passkeys</w> <w f="21" flags="">passworded</w> - <w f="21" flags="">pated</w> <w f="21" flags="">pathway's</w> <w f="21" flags="">patrologist</w> <w f="21" flags="">pavement's</w> @@ -116903,7 +116852,6 @@ <w f="21" flags="">weldings</w> <w f="21" flags="">wetland's</w> <w f="21" flags="">wheelchair's</w> - <w f="21" flags="">whets</w> <w f="21" flags="">whiffling</w> <w f="21" flags="">whimbrels</w> <w f="21" flags="">whippoorwill</w> @@ -119044,7 +118992,6 @@ <w f="18" flags="">gambolling</w> <w f="18" flags="">gambrels</w> <w f="18" flags="">gamesmen</w> - <w f="18" flags="">gams</w> <w f="18" flags="">gaoler's</w> <w f="18" flags="">garde's</w> <w f="18" flags="">garnishee</w> @@ -119467,7 +119414,6 @@ <w f="18" flags="">jolliness</w> <w f="18" flags="">jonquils</w> <w f="18" flags="">journalling</w> - <w f="18" flags="australian">jube</w> <w f="18" flags="">jubes</w> <w f="18" flags="">judaizers</w> <w f="18" flags="">judicare</w> @@ -120639,7 +120585,6 @@ <w f="18" flags="">shoebills</w> <w f="18" flags="">shopkeep</w> <w f="18" flags="">shotgunned</w> - <w f="18" flags="">shott</w> <w f="18" flags="">showmen's</w> <w f="18" flags="">shunter's</w> <w f="18" flags="">siccing</w> @@ -121586,7 +121531,6 @@ <w f="15" flags="">Commissar's</w> <w f="15" flags="">Computerworld's</w> <w f="15" flags="">Conger's</w> - <w f="15" flags="">Conni</w> <w f="15" flags="">Conservatorium's</w> <w f="15" flags="">Copernicans</w> <w f="15" flags="">Coralyn</w> @@ -122957,7 +122901,6 @@ <w f="15" flags="">calaboose</w> <w f="15">calcine</w> <w f="15" flags="">calculous</w> - <w f="15" flags="">calked</w> <w f="15" flags="">calks</w> <w f="15" flags="">calligraphists</w> <w f="15" flags="">callouses</w> @@ -134768,6 +134711,7 @@ <w f="10" flags="">wettish</w> <w f="10" flags="">whammies</w> <w f="10" flags="nonword">what'd</w> + <w f="10">what'm</w> <w f="10" flags="">wheaties</w> <w f="10" flags="">wheelbarrow's</w> <w f="10" flags="">wheezers</w> @@ -134790,6 +134734,7 @@ <w f="10" flags="">whoas</w> <w f="10" flags="">whoopers</w> <w f="10" flags="">whopped</w> + <w f="10">why'll</w> <w f="10" flags="">widgeons</w> <w f="10" flags="">widgie</w> <w f="10" flags="">wikipedias</w> @@ -135035,7 +134980,6 @@ <w f="6">weaponry's</w> <w f="6">womb's</w> <w f="6">yearningly</w> - <w f="5" flags="">babe</w> <w f="4" flags="">bandannas</w> <w f="2">Wahhabi</w> <w f="2">acanthuses</w> @@ -144301,7 +144245,6 @@ <w f="1" flags="">beet's</w> <w f="1">beetroot's</w> <w f="1">befogging</w> - <w f="1" flags="">befogs</w> <w f="1" flags="">beggarweed</w> <w f="1" flags="">begird</w> <w f="1" flags="">begirt</w> @@ -145901,7 +145844,6 @@ <w f="1" flags="">dandles</w> <w f="1" flags="">danged</w> <w f="1" flags="">dangler</w> - <w f="1" flags="">dankly</w> <w f="1" flags="">dappers</w> <w f="1" flags="">darer</w> <w f="1" flags="">darkener</w> @@ -146521,7 +146463,6 @@ <w f="1" flags="">duckweed's</w> <w f="1" flags="">dudeen</w> <w f="1" flags="">dudgeons</w> - <w f="1" flags="">duding</w> <w f="1" flags="">dueler</w> <w f="1" flags="">duellers</w> <w f="1" flags="">duellist's</w> @@ -147057,7 +146998,6 @@ <w f="1" flags="">fatefulness</w> <w f="1" flags="">fathead's</w> <w f="1" flags="">fatigue's</w> - <w f="1" flags="">fatly</w> <w f="1" flags="">fatteners</w> <w f="1" flags="">fattish</w> <w f="1" flags="">fatuities</w> @@ -147351,7 +147291,6 @@ <w f="1" flags="">forfeiture's</w> <w f="1" flags="">forgivingly</w> <w f="1" flags="">forgoer</w> - <w f="1" flags="">forker</w> <w f="1" flags="">forkers</w> <w f="1">forkfuls</w> <w f="1" flags="">forlornest</w> @@ -152810,7 +152749,6 @@ <w f="1" flags="">serfage</w> <w f="1" flags="">serfhood</w> <w f="1" flags="">sergeantcy</w> - <w f="1" flags="">serged</w> <w f="1" flags="">serialism's</w> <w f="1" flags="">seriography</w> <w f="1" flags="">sermoning</w> @@ -155277,7 +155215,6 @@ <w f="1" flags="">wheelage</w> <w f="1" flags="">wheelbarrowing</w> <w f="1" flags="">wheelings</w> - <w f="1" flags="">whees</w> <w f="1" flags="">wheezily</w> <w f="1" flags="">whelk's</w> <w f="1" flags="">wherry's</w> @@ -155464,7 +155401,6 @@ <w f="1" flags="">yawps</w> <w f="1" flags="">yayed</w> <w f="1" flags="">yays</w> - <w f="1" flags="">yean</w> <w f="1" flags="">yeaned</w> <w f="1">year-end</w> <w f="1" flags="">yearlies</w> @@ -155572,6 +155508,7 @@ <w f="0" flags="offensive">Kahuna's</w> <w f="0" flags="medical">Kaif's</w> <w f="0" flags="babytalk">Kaka's</w> + <w f="0" flags="">LAN</w> <w f="0" flags="">LP</w> <w f="0" flags="">LR</w> <w f="0" flags="abbreviation">LSAT</w> @@ -155696,6 +155633,7 @@ <w f="0" flags="n">belladonna</w> <w f="0" flags="e">bestial</w> <w f="0" flags="n">bestiality</w> + <w f="0" flags="abbreviation">bf</w> <w f="0" flags="">bimbos</w> <w f="0" flags="r">bitch</w> <w f="0" flags="">bitch's</w> @@ -156008,6 +155946,7 @@ <w f="0" flags="offensive">fuckings</w> <w f="0" flags="offensive">fucks</w> <w f="0" flags="">fwd</w> + <w f="0" flags="">gage</w> <w f="0" flags="n">gangbang</w> <w f="0" flags="n">gangbanged</w> <w f="0" flags="n">gangbanging</w> @@ -156027,7 +155966,6 @@ <w f="0">glandes</w> <w f="0" flags="medical">glans</w> <w f="0">glans's</w> - <w f="0" flags="">gnat</w> <w f="0" flags="nonword,offensive">goddammit</w> <w f="0" flags="offensive">goddamn</w> <w f="0" flags="offensive">goddamned</w> @@ -156548,10 +156486,9 @@ <w f="0" flags="offensive">shittiest</w> <w f="0" flags="offensive">shitting</w> <w f="0" flags="offensive">shitty</w> + <w f="0" flags="">shod</w> <w f="0" flags="n">shrimping</w> - <w f="0" flags="">sigh</w> <w f="0" flags="e">silverback</w> - <w f="0" flags="">sith</w> <w f="0" flags="offensive">skat</w> <w f="0" flags="n">slit</w> <w f="0">slut</w> @@ -156699,7 +156636,6 @@ <w f="0" flags="medical">tribade</w> <w f="0" flags="medical">tribades</w> <w f="0" flags="medical">tribadism</w> - <w f="0" flags="">tun</w> <w f="0" flags="offensive">turd</w> <w f="0" flags="offensive">turds</w> <w f="0" flags="babytalk">twat</w> @@ -156841,6 +156777,7 @@ <w f="0" flags="medical">virginity</w> <w f="0">virginity's</w> <w f="0" flags="babytalk">virgins</w> + <w f="0">vis</w> <w f="0" flags="">voyeur</w> <w f="0" flags="n">voyeurism</w> <w f="0" flags="n">voyeurs</w> @@ -156864,6 +156801,7 @@ <w f="0" flags="n">watersports</w> <w f="0" flags="babytalk">weeing</w> <w f="0" flags="offensive">whang</w> + <w f="0" flags="">whets</w> <w f="0" flags="e">whitey</w> <w f="0" flags="offensive">whore</w> <w f="0" flags="offensive">whore's</w> diff --git a/dictionaries/en_us_wordlist.xml b/dictionaries/en_us_wordlist.xml index b5d49972d..3cafbd786 100644 --- a/dictionaries/en_us_wordlist.xml +++ b/dictionaries/en_us_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="en_US" description="English (US)" date="1338457465" version="14"> +<wordlist locale="en_US" description="English (US)" date="1340038693" version="16"> <w f="222" flags="">the</w> <w f="214" flags="">of</w> <w f="212" flags="">and</w> @@ -29,6 +29,7 @@ <w f="182" flags="">has</w> <w f="181" flags="">but</w> <w f="180" flags="">first</w> + <w f="180" flags="">very</w> <w f="180" flags="">we</w> <w f="179" flags="">one</w> <w f="179" flags="">their</w> @@ -162,7 +163,6 @@ <w f="160" flags="">too</w> <w f="160" flags="n">up</w> <w f="160" flags="">us</w> - <w f="160" flags="">very</w> <w f="160" flags="">won</w> <w f="160" flags="">yes</w> <w f="160" flags="">you're</w> @@ -7458,6 +7458,7 @@ <w f="110" flags="">jumped</w> <w f="110" flags="">keeper</w> <w f="110" flags="">kindergarten</w> + <w f="110" flags="">kitten</w> <w f="110" flags="">knight</w> <w f="110" flags="">lasts</w> <w f="110" flags="">latitude</w> @@ -7896,6 +7897,7 @@ <w f="109" flags="abbreviation">kHz</w> <w f="109" flags="">kernel</w> <w f="109" flags="">kidney</w> + <w f="109" flags="">kittens</w> <w f="109" flags="">knockout</w> <w f="109" flags="">laboratories</w> <w f="109" flags="">lamp</w> @@ -12305,6 +12307,7 @@ <w f="100" flags="">heyday</w> <w f="100" flags="">highlighting</w> <w f="100" flags="">hospitalized</w> + <w f="100">how've</w> <w f="100" flags="">hugely</w> <w f="100" flags="">iPhone</w> <w f="100" flags="">identifiable</w> @@ -13158,6 +13161,7 @@ <w f="99" flags="">snail</w> <w f="99" flags="">snout</w> <w f="99" flags="">socket</w> + <w f="99" flags="">spacious</w> <w f="99" flags="">spawning</w> <w f="99" flags="">spearheaded</w> <w f="99" flags="">spike</w> @@ -13832,7 +13836,6 @@ <w f="98" flags="">sourced</w> <w f="98" flags="">spaceship</w> <w f="98" flags="">spacing</w> - <w f="98" flags="">spacious</w> <w f="98">spake</w> <w f="98" flags="">spam</w> <w f="98" flags="">specialize</w> @@ -15374,7 +15377,6 @@ <w f="95" flags="">Kazakhstan</w> <w f="95" flags="">Kirby</w> <w f="95" flags="">Kumar</w> - <w f="95" flags="">LAN</w> <w f="95" flags="abbreviation">LPGA</w> <w f="95" flags="">Lahore</w> <w f="95" flags="">Lakers</w> @@ -16323,7 +16325,6 @@ <w f="94" flags="">demolish</w> <w f="94" flags="">detonation</w> <w f="94" flags="">dialog</w> - <w f="94">didst</w> <w f="94" flags="">diminish</w> <w f="94" flags="">din</w> <w f="94" flags="">diner</w> @@ -20036,6 +20037,8 @@ <w f="90" flags="">weir</w> <w f="90">well-being</w> <w f="90" flags="">wettest</w> + <w f="90">when's</w> + <w f="90">where'll</w> <w f="90" flags="">whipped</w> <w f="90" flags="">widowers</w> <w f="90" flags="">winner's</w> @@ -23472,7 +23475,6 @@ <w f="86" flags="">newsroom</w> <w f="86" flags="">nicely</w> <w f="86" flags="">nonviolent</w> - <w f="86" flags="abbreviation">nos</w> <w f="86" flags="">noses</w> <w f="86" flags="">notations</w> <w f="86" flags="">novelization</w> @@ -25620,7 +25622,6 @@ <w f="84" flags="">ovate</w> <w f="84" flags="">overcomes</w> <w f="84" flags="">overloaded</w> - <w f="84">overs</w> <w f="84" flags="">pacifism</w> <w f="84" flags="">paintball</w> <w f="84">paraplegics</w> @@ -26631,7 +26632,6 @@ <w f="83" flags="">kilowatts</w> <w f="83" flags="">kindergartens</w> <w f="83" flags="">kingdom's</w> - <w f="83" flags="">kitten</w> <w f="83" flags="">knack</w> <w f="83" flags="">lacquer</w> <w f="83" flags="">laissez</w> @@ -27711,7 +27711,6 @@ <w f="82" flags="">homicides</w> <w f="82" flags="">hoops</w> <w f="82" flags="">hovercraft</w> - <w f="82" flags="abbreviation">hr</w> <w f="82" flags="">humanoids</w> <w f="82" flags="">hummingbird</w> <w f="82" flags="">hump</w> @@ -27777,7 +27776,6 @@ <w f="82" flags="">keenly</w> <w f="82" flags="">keypad</w> <w f="82" flags="">kidnappings</w> - <w f="82" flags="">kittens</w> <w f="82" flags="">knitted</w> <w f="82" flags="">knuckle</w> <w f="82" flags="">lagged</w> @@ -28216,7 +28214,6 @@ <w f="82" flags="">wonderfully</w> <w f="82" flags="">workable</w> <w f="82" flags="">workmanship</w> - <w f="82" flags="">yew</w> <w f="82" flags="">yin</w> <w f="82" flags="">zig</w> <w f="81" flags="">Aachen</w> @@ -32622,7 +32619,6 @@ <w f="78" flags="">lakeshore</w> <w f="78" flags="">laminar</w> <w f="78" flags="">landforms</w> - <w f="78" flags="">lang</w> <w f="78" flags="">larceny</w> <w f="78" flags="">lard</w> <w f="78" flags="">largemouth</w> @@ -33089,7 +33085,6 @@ <w f="78" flags="">whitewash</w> <w f="78" flags="">wholesaler</w> <w f="78" flags="">withering</w> - <w f="78" flags="abbreviation">wo</w> <w f="78" flags="">woodwinds</w> <w f="78" flags="">wrangling</w> <w f="78" flags="">wrest</w> @@ -33952,7 +33947,6 @@ <w f="77" flags="">kitsch</w> <w f="77" flags="">knight's</w> <w f="77" flags="">knockouts</w> - <w f="77" flags="">lain</w> <w f="77" flags="">landmines</w> <w f="77" flags="">language's</w> <w f="77" flags="">lapel</w> @@ -34245,7 +34239,6 @@ <w f="77" flags="">sidereal</w> <w f="77" flags="">simulcasted</w> <w f="77" flags="">sinuous</w> - <w f="77" flags="">siting</w> <w f="77" flags="">skips</w> <w f="77" flags="">skylight</w> <w f="77" flags="">slays</w> @@ -38713,6 +38706,7 @@ <w f="73" flags="">Klondike</w> <w f="73" flags="">Kodiak</w> <w f="73" flags="">Kursk</w> + <w f="73">LAX</w> <w f="73" flags="abbreviation">LGPL</w> <w f="73" flags="abbreviation">LMP</w> <w f="73" flags="abbreviation">LSTs</w> @@ -40386,7 +40380,6 @@ <w f="72" flags="">backwardness</w> <w f="72" flags="">baker's</w> <w f="72" flags="">ballrooms</w> - <w f="72" flags="">banc</w> <w f="72" flags="">bane</w> <w f="72" flags="">bangs</w> <w f="72" flags="">banishing</w> @@ -41072,6 +41065,7 @@ <w f="72" flags="">shunning</w> <w f="72" flags="">shunted</w> <w f="72" flags="">shuttle's</w> + <w f="72" flags="">sigh</w> <w f="72" flags="">signalized</w> <w f="72" flags="">siltstone</w> <w f="72" flags="">silversmith</w> @@ -42718,7 +42712,6 @@ <w f="70" flags="abbreviation">DPI</w> <w f="70" flags="abbreviation">DSE</w> <w f="70" flags="">Daniela</w> - <w f="70" flags="">Darin</w> <w f="70" flags="">Darlene</w> <w f="70" flags="">Darnell</w> <w f="70" flags="">Dawson's</w> @@ -43390,6 +43383,7 @@ <w f="70" flags="">gash</w> <w f="70" flags="">gaudy</w> <w f="70" flags="">gazette</w> + <w f="70">gelato</w> <w f="70" flags="">genealogist</w> <w f="70" flags="">generalship</w> <w f="70" flags="">geopolitics</w> @@ -43442,7 +43436,6 @@ <w f="70" flags="">holdover</w> <w f="70" flags="">homeroom</w> <w f="70" flags="">homunculus</w> - <w f="70" flags="">hoo</w> <w f="70" flags="">howl</w> <w f="70" flags="">huddled</w> <w f="70" flags="">hurtful</w> @@ -45963,6 +45956,7 @@ <w f="68" flags="">axils</w> <w f="68" flags="">axing</w> <w f="68" flags="">azimuthal</w> + <w f="68" flags="">babe</w> <w f="68" flags="">backlight</w> <w f="68" flags="">backplane</w> <w f="68" flags="">backwoods</w> @@ -47635,7 +47629,6 @@ <w f="67" flags="">cultists</w> <w f="67" flags="">curates</w> <w f="67" flags="">curbside</w> - <w f="67" flags="">dag</w> <w f="67" flags="">dainty</w> <w f="67" flags="">dandelion</w> <w f="67" flags="">darkens</w> @@ -47798,7 +47791,6 @@ <w f="67" flags="">fuselages</w> <w f="67" flags="">futurism</w> <w f="67" flags="">gaffe</w> - <w f="67" flags="">gage</w> <w f="67" flags="">gallery's</w> <w f="67" flags="">galls</w> <w f="67" flags="">gavel</w> @@ -48007,7 +47999,6 @@ <w f="67" flags="">mononucleosis</w> <w f="67" flags="">monoplanes</w> <w f="67" flags="">morphologies</w> - <w f="67" flags="">mot</w> <w f="67" flags="">moto</w> <w f="67" flags="">mottling</w> <w f="67" flags="">mozzarella</w> @@ -48238,7 +48229,6 @@ <w f="67" flags="">shined</w> <w f="67" flags="">shipowners</w> <w f="67" flags="">shipper</w> - <w f="67" flags="">shod</w> <w f="67" flags="">shrieking</w> <w f="67" flags="">shrugs</w> <w f="67" flags="">sibilants</w> @@ -53723,7 +53713,6 @@ <w f="63" flags="">autodidact</w> <w f="63" flags="">automates</w> <w f="63" flags="">avoirdupois</w> - <w f="63" flags="">aw</w> <w f="63" flags="">backhoe</w> <w f="63" flags="">backstop</w> <w f="63" flags="">balancer</w> @@ -54035,7 +54024,6 @@ <w f="63" flags="">gummy</w> <w f="63" flags="">gunfights</w> <w f="63" flags="">gunge</w> - <w f="63" flags="">hake</w> <w f="63" flags="">halftone</w> <w f="63" flags="">halva</w> <w f="63" flags="">handrail</w> @@ -54609,7 +54597,6 @@ <w f="63" flags="">triplane</w> <w f="63" flags="">trotters</w> <w f="63" flags="">truant</w> - <w f="63" flags="">tsars</w> <w f="63" flags="">tuatara</w> <w f="63" flags="">tufa</w> <w f="63" flags="">tummy</w> @@ -55454,7 +55441,6 @@ <w f="62" flags="">coproduct</w> <w f="62" flags="">corbelled</w> <w f="62" flags="">coreligionists</w> - <w f="62" flags="">corm</w> <w f="62" flags="">corms</w> <w f="62" flags="">cornstarch</w> <w f="62" flags="">corrals</w> @@ -58924,7 +58910,6 @@ <w f="60" flags="">longshoreman</w> <w f="60" flags="">longterm</w> <w f="60" flags="">lugger</w> - <w f="60" flags="">lune</w> <w f="60" flags="">luteinizing</w> <w f="60" flags="">madmen</w> <w f="60" flags="">madre</w> @@ -60557,6 +60542,7 @@ <w f="59" flags="">majlis</w> <w f="59" flags="">maniacally</w> <w f="59" flags="">mantlet</w> + <w f="59" flags="">manu</w> <w f="59" flags="">mapper</w> <w f="59" flags="">marjoram</w> <w f="59" flags="">mars</w> @@ -60891,7 +60877,6 @@ <w f="59" flags="">similitude</w> <w f="59" flags="">singed</w> <w f="59" flags="">sinning</w> - <w f="59" flags="">siring</w> <w f="59" flags="">skein</w> <w f="59" flags="">skin's</w> <w f="59" flags="">skipjack</w> @@ -62474,7 +62459,6 @@ <w f="58" flags="">solvated</w> <w f="58" flags="">songwriter's</w> <w f="58" flags="">sop</w> - <w f="58" flags="">sori</w> <w f="58" flags="">sorority's</w> <w f="58" flags="">sotto</w> <w f="58" flags="">southerner</w> @@ -63590,7 +63574,6 @@ <w f="57" flags="">garrulous</w> <w f="57" flags="">gazebos</w> <w f="57" flags="">gelatine</w> - <w f="57" flags="">geld</w> <w f="57" flags="">gelled</w> <w f="57" flags="">generalities</w> <w f="57" flags="">genotyping</w> @@ -64239,7 +64222,6 @@ <w f="57" flags="">unum</w> <w f="57" flags="">upperclassman</w> <w f="57" flags="">urbanites</w> - <w f="57" flags="abbreviation">usr</w> <w f="57" flags="">utility's</w> <w f="57" flags="">vanities</w> <w f="57" flags="">vaqueros</w> @@ -64982,7 +64964,6 @@ <w f="56" flags="">crock</w> <w f="56" flags="">croplands</w> <w f="56" flags="">crosswalks</w> - <w f="56" flags="">culm</w> <w f="56" flags="">curettage</w> <w f="56" flags="">currency's</w> <w f="56" flags="">cursors</w> @@ -65433,7 +65414,6 @@ <w f="56" flags="">nighters</w> <w f="56" flags="">nightspot</w> <w f="56" flags="">nightstick</w> - <w f="56" flags="">nim</w> <w f="56" flags="">ninetieth</w> <w f="56" flags="">nix</w> <w f="56" flags="">nocturne</w> @@ -65901,7 +65881,6 @@ <w f="56" flags="">unpronounceable</w> <w f="56" flags="">unread</w> <w f="56" flags="">unselected</w> - <w f="56" flags="">unser</w> <w f="56" flags="">unsparing</w> <w f="56" flags="">unsporting</w> <w f="56" flags="">unsupportive</w> @@ -66977,6 +66956,7 @@ <w f="55" flags="">glissandi</w> <w f="55" flags="">gloat</w> <w f="55" flags="">glum</w> + <w f="55" flags="">gnat</w> <w f="55" flags="">gnostics</w> <w f="55" flags="">goannas</w> <w f="55" flags="">goddess's</w> @@ -68564,7 +68544,6 @@ <w f="54" flags="">homeschoolers</w> <w f="54" flags="">horsewoman</w> <w f="54" flags="">horticulturalists</w> - <w f="54" flags="abbreviation">hos</w> <w f="54" flags="">hotlines</w> <w f="54" flags="">hovel</w> <w f="54" flags="">huckleberry</w> @@ -68635,7 +68614,6 @@ <w f="54" flags="">lacewings</w> <w f="54" flags="">ladybird</w> <w f="54" flags="">laser's</w> - <w f="54" flags="abbreviation">lats</w> <w f="54" flags="">leafhoppers</w> <w f="54" flags="">leaper</w> <w f="54" flags="">leapfrogging</w> @@ -68653,7 +68631,6 @@ <w f="54" flags="">llanos</w> <w f="54" flags="">lobules</w> <w f="54" flags="">locksmiths</w> - <w f="54" flags="">loge</w> <w f="54" flags="">logjam</w> <w f="54" flags="">longhaired</w> <w f="54" flags="">lube</w> @@ -70164,7 +70141,6 @@ <w f="53" flags="">henpecked</w> <w f="53" flags="">herpetologists</w> <w f="53" flags="">hessian</w> - <w f="53" flags="abbreviation">hf</w> <w f="53" flags="">hibernacula</w> <w f="53" flags="">hindbrain</w> <w f="53" flags="">hinging</w> @@ -71459,7 +71435,6 @@ <w f="52" flags="">aquarium's</w> <w f="52" flags="">aquiline</w> <w f="52" flags="">arctangent</w> - <w f="52" flags="">ares</w> <w f="52" flags="">aristocracies</w> <w f="52" flags="">armigerous</w> <w f="52" flags="">armlet</w> @@ -71746,7 +71721,6 @@ <w f="52" flags="">encroaches</w> <w f="52" flags="">enigmas</w> <w f="52" flags="">enigmatically</w> - <w f="52" flags="abbreviation">ens</w> <w f="52" flags="">entrancing</w> <w f="52" flags="">entreaty</w> <w f="52" flags="">enuresis</w> @@ -72555,7 +72529,6 @@ <w f="52" flags="">virtuality</w> <w f="52" flags="">virus's</w> <w f="52" flags="">vivace</w> - <w f="52" flags="">vive</w> <w f="52" flags="">voicework</w> <w f="52" flags="">volcanology</w> <w f="52" flags="">volleying</w> @@ -73475,7 +73448,6 @@ <w f="51" flags="">kukri</w> <w f="51" flags="">kumquat</w> <w f="51" flags="">kwashiorkor</w> - <w f="51" flags="">lade</w> <w f="51" flags="">lamp's</w> <w f="51" flags="">lampshade</w> <w f="51" flags="">lantana</w> @@ -77691,7 +77663,6 @@ <w f="48" flags="">calypsos</w> <w f="48" flags="">caracaras</w> <w f="48" flags="">carburizing</w> - <w f="48" flags="">carder</w> <w f="48" flags="">careerist</w> <w f="48" flags="">carny</w> <w f="48" flags="">carotenes</w> @@ -78487,7 +78458,6 @@ <w f="48" flags="">rhomboidal</w> <w f="48" flags="">rills</w> <w f="48" flags="">rivalry's</w> - <w f="48" flags="">rive</w> <w f="48" flags="">riviera</w> <w f="48" flags="">romps</w> <w f="48" flags="">router's</w> @@ -78584,7 +78554,6 @@ <w f="48" flags="">sorbate</w> <w f="48" flags="nonword">sorta</w> <w f="48" flags="">souffle</w> - <w f="48" flags="">sough</w> <w f="48" flags="">southwardly</w> <w f="48" flags="">spacemen</w> <w f="48" flags="">spanker</w> @@ -78954,7 +78923,6 @@ <w f="47" flags="">Gawain's</w> <w f="47" flags="">Geber</w> <w f="47" flags="">Ghiberti</w> - <w f="47" flags="abbreviation">Gib</w> <w f="47" flags="">Gibsons</w> <w f="47" flags="">Glenora</w> <w f="47" flags="">Golden's</w> @@ -80059,7 +80027,6 @@ <w f="47" flags="">shebang</w> <w f="47" flags="">sheepfold</w> <w f="47" flags="">sher</w> - <w f="47" flags="">sherd</w> <w f="47" flags="">shoos</w> <w f="47" flags="">shoplift</w> <w f="47" flags="">shorthaired</w> @@ -81048,7 +81015,6 @@ <w f="46" flags="">freebooter</w> <w f="46" flags="">freelances</w> <w f="46" flags="">fusel</w> - <w f="46" flags="">gad</w> <w f="46" flags="">gaffs</w> <w f="46" flags="">gamemasters</w> <w f="46" flags="">gapes</w> @@ -81396,7 +81362,6 @@ <w f="46">piste</w> <w f="46" flags="">pithead</w> <w f="46" flags="">placekicking</w> - <w f="46" flags="">plage</w> <w f="46" flags="">planchette</w> <w f="46" flags="">playas</w> <w f="46" flags="">playbacks</w> @@ -82665,7 +82630,6 @@ <w f="45" flags="">factor's</w> <w f="45" flags="">fairy's</w> <w f="45" flags="">faits</w> - <w f="45" flags="">faller</w> <w f="45" flags="">fallowing</w> <w f="45" flags="">fanboys</w> <w f="45" flags="">fancying</w> @@ -82769,7 +82733,6 @@ <w f="45" flags="">gym's</w> <w f="45" flags="">hacker's</w> <w f="45" flags="">hallelujah</w> - <w f="45" flags="">hame</w> <w f="45" flags="">hank</w> <w f="45" flags="">hankering</w> <w f="45" flags="">hanky</w> @@ -84350,7 +84313,6 @@ <w f="44" flags="">divestments</w> <w f="44" flags="">do-gooders</w> <w f="44" flags="">documentable</w> - <w f="44" flags="">don</w> <w f="44" flags="">donator</w> <w f="44" flags="">doorposts</w> <w f="44" flags="">doublespeak</w> @@ -87033,7 +86995,6 @@ <w f="42" flags="">anticarcinogenic</w> <w f="42" flags="">antipasto</w> <w f="42" flags="">antlions</w> - <w f="42" flags="">anu</w> <w f="42" flags="">anxiousness</w> <w f="42" flags="">apartness</w> <w f="42" flags="">ape's</w> @@ -87998,7 +87959,6 @@ <w f="42" flags="">washstand</w> <w f="42" flags="">waviness</w> <w f="42" flags="">wayfaring</w> - <w f="42" flags="">weil</w> <w f="42" flags="">wickedest</w> <w f="42" flags="">wiggled</w> <w f="42" flags="">wireworks</w> @@ -88822,7 +88782,6 @@ <w f="41" flags="">henhouse</w> <w f="41" flags="">hereabouts</w> <w f="41" flags="">hereunto</w> - <w f="41" flags="">herm</w> <w f="41">herniation</w> <w f="41" flags="">highveld</w> <w f="41" flags="">hinter</w> @@ -90380,6 +90339,7 @@ <w f="40" flags="">housemother</w> <w f="40" flags="">houseware</w> <w f="40" flags="">housewife's</w> + <w f="40">how'll</w> <w f="40" flags="">hucksters</w> <w f="40" flags="">humbles</w> <w f="40" flags="">hurling's</w> @@ -92169,7 +92129,6 @@ <w f="39" flags="">kedge</w> <w f="39" flags="">keyrings</w> <w f="39" flags="">kibble</w> - <w f="39">kine</w> <w f="39" flags="">kingless</w> <w f="39" flags="">kinkajous</w> <w f="39" flags="">knot's</w> @@ -93128,7 +93087,6 @@ <w f="38" flags="">beanball</w> <w f="38" flags="">bedazzled</w> <w f="38" flags="">bezant</w> - <w f="38" flags="abbreviation">bf</w> <w f="38" flags="">bights</w> <w f="38" flags="australian">bilbies</w> <w f="38" flags="">bilked</w> @@ -93621,7 +93579,6 @@ <w f="38" flags="">seaboards</w> <w f="38" flags="">selectiveness</w> <w f="38" flags="">selvages</w> - <w f="38" flags="">sere</w> <w f="38" flags="">serf's</w> <w f="38" flags="">servomotors</w> <w f="38" flags="">severability</w> @@ -96359,7 +96316,6 @@ <w f="36" flags="">laminator</w> <w f="36" flags="">landlessness</w> <w f="36" flags="">launders</w> - <w f="36" flags="">lave</w> <w f="36" flags="">leathern</w> <w f="36" flags="">leeboard</w> <w f="36" flags="">leeched</w> @@ -96657,7 +96613,6 @@ <w f="36" flags="">thanksgivings</w> <w f="36" flags="">thereabout</w> <w f="36">thermocouple</w> - <w f="36">thews</w> <w f="36">thyristors</w> <w f="36" flags="">tieback</w> <w f="36" flags="">tinkerers</w> @@ -98264,7 +98219,6 @@ <w f="35" flags="">librates</w> <w f="35" flags="">licitly</w> <w f="35" flags="">lid's</w> - <w f="35" flags="">lief</w> <w f="35" flags="">lifebuoy</w> <w f="35" flags="">lifebuoys</w> <w f="35" flags="">lightering</w> @@ -100031,7 +99985,6 @@ <w f="34" flags="">nonfinancial</w> <w f="34" flags="">noninflammatory</w> <w f="34" flags="">nontarget</w> - <w f="34" flags="">norn</w> <w f="34" flags="">northland</w> <w f="34" flags="">nosebands</w> <w f="34" flags="">novice's</w> @@ -102828,7 +102781,6 @@ <w f="32" flags="">localists</w> <w f="32" flags="">loco's</w> <w f="32" flags="">locomote</w> - <w f="32" flags="">lod</w> <w f="32" flags="">loiters</w> <w f="32" flags="">loquacity</w> <w f="32" flags="">lumpfish</w> @@ -104872,7 +104824,6 @@ <w f="31" flags="">tideway</w> <w f="31" flags="">tintinnabulum</w> <w f="31" flags="">titter</w> - <w f="31">tole</w> <w f="31" flags="">tonsuring</w> <w f="31" flags="">toots</w> <w f="31" flags="">totting</w> @@ -105818,7 +105769,6 @@ <w f="30" flags="">dignitary's</w> <w f="30" flags="">dilapidations</w> <w f="30" flags="">dimerizing</w> - <w f="30" flags="">dingle</w> <w f="30" flags="">dirties</w> <w f="30" flags="">disagreeably</w> <w f="30" flags="">disbelievingly</w> @@ -106861,7 +106811,6 @@ <w f="29">cetacean</w> <w f="29">commutators</w> <w f="29">conventicle</w> - <w f="29">dieing</w> <w f="29">disembowelment</w> <w f="29">embryologist</w> <w f="29">etiologic</w> @@ -106895,7 +106844,6 @@ <w f="29">versicle</w> <w f="29">villus</w> <w f="29">voltmeters</w> - <w f="29">weer</w> <w f="28" flags="">Abelard's</w> <w f="28" flags="">Adeste</w> <w f="28" flags="">Aggie's</w> @@ -108108,7 +108056,6 @@ <w f="28" flags="">linearizable</w> <w f="28" flags="">linkboy</w> <w f="28" flags="">linnets</w> - <w f="28" flags="">lins</w> <w f="28" flags="">lissome</w> <w f="28" flags="">literariness</w> <w f="28" flags="">littles</w> @@ -110154,7 +110101,6 @@ <w f="27" flags="">icemen</w> <w f="27" flags="">icepacks</w> <w f="27" flags="">ideate</w> - <w f="27" flags="abbreviation">ided</w> <w f="27" flags="">idiomorphic</w> <w f="27" flags="">idiot's</w> <w f="27" flags="">illyricum</w> @@ -112906,7 +112852,6 @@ <w f="25" flags="">mastermind's</w> <w f="25" flags="">masticating</w> <w f="25" flags="">mastics</w> - <w f="25" flags="">maun</w> <w f="25" flags="">maundering</w> <w f="25" flags="">maundy</w> <w f="25" flags="">mayer</w> @@ -114693,7 +114638,6 @@ <w f="23" flags="">awardee's</w> <w f="23" flags="">awarder</w> <w f="23" flags="">axle's</w> - <w f="23">baaed</w> <w f="23" flags="">backbends</w> <w f="23" flags="">backcourts</w> <w f="23" flags="">backhanding</w> @@ -115269,7 +115213,6 @@ <w f="23" flags="">fibrillations</w> <w f="23" flags="">fieldfares</w> <w f="23" flags="">fiend's</w> - <w f="23" flags="">fifing</w> <w f="23" flags="">fifteen's</w> <w f="23" flags="">fir's</w> <w f="23" flags="">firecrest</w> @@ -115449,7 +115392,6 @@ <w f="23" flags="technical">hemangioendotheliomas</w> <w f="23" flags="">henhouses</w> <w f="23" flags="">heroisms</w> - <w f="23" flags="">hest</w> <w f="23" flags="">high-falutin'</w> <w f="23" flags="">highchair</w> <w f="23" flags="">highfalutin</w> @@ -116152,7 +116094,6 @@ <w f="23" flags="">rambutans</w> <w f="23" flags="">rampion</w> <w f="23" flags="">ranking's</w> - <w f="23" flags="">rankly</w> <w f="23" flags="">rarefactions</w> <w f="23" flags="">rarefy</w> <w f="23" flags="">ratafia</w> @@ -118399,7 +118340,6 @@ <w f="21" flags="">emprise</w> <w f="21" flags="">en's</w> <w f="21" flags="">enamelwork</w> - <w f="21" flags="abbreviation">enc</w> <w f="21" flags="">endangerments</w> <w f="21" flags="">endon</w> <w f="21" flags="">enfeeble</w> @@ -118833,7 +118773,6 @@ <w f="21" flags="">indiscriminating</w> <w f="21" flags="">indological</w> <w f="21" flags="">indology</w> - <w f="21" flags="">indre</w> <w f="21" flags="">indwelt</w> <w f="21" flags="">ineffaceable</w> <w f="21" flags="">ineffectuality</w> @@ -119221,7 +119160,6 @@ <w f="21" flags="">nonvocal</w> <w f="21" flags="">nonvoluntary</w> <w f="21" flags="">northeasterner</w> - <w f="21" flags="">noth</w> <w f="21" flags="">nourisher</w> <w f="21" flags="">novelettish</w> <w f="21" flags="">nucleus's</w> @@ -119230,7 +119168,6 @@ <w f="21" flags="">nuttiest</w> <w f="21" flags="abbreviation">nyx</w> <w f="21" flags="">oarswomen</w> - <w f="21" flags="">oater</w> <w f="21" flags="">obscurest</w> <w f="21" flags="">observantly</w> <w f="21" flags="">obstante</w> @@ -119322,7 +119259,6 @@ <w f="21" flags="">parches</w> <w f="21" flags="">pareira</w> <w f="21" flags="">parenthetic</w> - <w f="21" flags="">parer</w> <w f="21" flags="">parfleche</w> <w f="21" flags="">parser's</w> <w f="21" flags="">parsings</w> @@ -119330,7 +119266,6 @@ <w f="21" flags="">passivism</w> <w f="21" flags="">passkeys</w> <w f="21" flags="">passworded</w> - <w f="21" flags="">pated</w> <w f="21" flags="">pathway's</w> <w f="21" flags="">patrologist</w> <w f="21" flags="">pavement's</w> @@ -120313,7 +120248,6 @@ <w f="21" flags="">weldings</w> <w f="21" flags="">wetland's</w> <w f="21" flags="">wheelchair's</w> - <w f="21" flags="">whets</w> <w f="21" flags="">whiffling</w> <w f="21" flags="">whimbrels</w> <w f="21" flags="">whippoorwill</w> @@ -122486,7 +122420,6 @@ <w f="18" flags="">galingale</w> <w f="18" flags="">gambrels</w> <w f="18" flags="">gamesmen</w> - <w f="18" flags="">gams</w> <w f="18" flags="">garde's</w> <w f="18" flags="">garnishee</w> <w f="18" flags="">garths</w> @@ -122901,7 +122834,6 @@ <w f="18" flags="">jolliness</w> <w f="18" flags="">jonquils</w> <w f="18" flags="">journalling</w> - <w f="18" flags="australian">jube</w> <w f="18" flags="">jubes</w> <w f="18" flags="">judaizers</w> <w f="18" flags="">judgmentally</w> @@ -124087,7 +124019,6 @@ <w f="18" flags="">shoebills</w> <w f="18" flags="">shopkeep</w> <w f="18" flags="">shotgunned</w> - <w f="18" flags="">shott</w> <w f="18" flags="">showmen's</w> <w f="18" flags="">shunter's</w> <w f="18" flags="">siccing</w> @@ -125044,7 +124975,6 @@ <w f="15" flags="">Commissar's</w> <w f="15" flags="">Computerworld's</w> <w f="15" flags="">Conger's</w> - <w f="15" flags="">Conni</w> <w f="15" flags="">Conservatorium's</w> <w f="15" flags="">Continent's</w> <w f="15" flags="">Copernicans</w> @@ -126138,7 +126068,6 @@ <w f="15" flags="">archenemy's</w> <w f="15" flags="">archery's</w> <w f="15" flags="">ardours</w> - <w f="15" flags="">ards</w> <w f="15" flags="">areaway</w> <w f="15" flags="">arisings</w> <w f="15" flags="">arithmetician</w> @@ -126450,7 +126379,6 @@ <w f="15">calcine</w> <w f="15" flags="">calculous</w> <w f="15" flags="">caliper's</w> - <w f="15" flags="">calked</w> <w f="15" flags="">calks</w> <w f="15" flags="">calligraphists</w> <w f="15" flags="">callowness</w> @@ -127712,7 +127640,6 @@ <w f="15" flags="">hogmanay</w> <w f="15" flags="">hognut</w> <w f="15" flags="">hogweeds</w> - <w f="15" flags="">hoke</w> <w f="15" flags="">holdbacks</w> <w f="15" flags="">homebuild</w> <w f="15" flags="">homeworker</w> @@ -138310,6 +138237,7 @@ <w f="10" flags="">wettish</w> <w f="10" flags="">whammies</w> <w f="10" flags="nonword">what'd</w> + <w f="10">what'm</w> <w f="10" flags="">wheelbarrow's</w> <w f="10" flags="">wheezers</w> <w f="10" flags="">whelm</w> @@ -138331,6 +138259,7 @@ <w f="10" flags="">whoas</w> <w f="10" flags="">whoopers</w> <w f="10" flags="">whopped</w> + <w f="10">why'll</w> <w f="10" flags="">widgeons</w> <w f="10" flags="">widgie</w> <w f="10" flags="">wight's</w> @@ -138607,7 +138536,6 @@ <w f="6">weaponry's</w> <w f="6">womb's</w> <w f="6">yearningly</w> - <w f="5" flags="">babe</w> <w f="4" flags="">bandannas</w> <w f="2">Babels</w> <w f="2">Caucasoids</w> @@ -148018,7 +147946,6 @@ <w f="1" flags="">beet's</w> <w f="1">beetroot's</w> <w f="1">befogging</w> - <w f="1" flags="">befogs</w> <w f="1" flags="">beggarweed</w> <w f="1" flags="">begird</w> <w f="1" flags="">begirt</w> @@ -149608,7 +149535,6 @@ <w f="1" flags="">dandles</w> <w f="1" flags="">danged</w> <w f="1" flags="">dangler</w> - <w f="1" flags="">dankly</w> <w f="1" flags="">dappers</w> <w f="1" flags="">darer</w> <w f="1" flags="">darkener</w> @@ -150229,7 +150155,6 @@ <w f="1" flags="">duckweed's</w> <w f="1" flags="">dudeen</w> <w f="1" flags="">dudgeons</w> - <w f="1" flags="">duding</w> <w f="1" flags="">dueler</w> <w f="1" flags="">duesseldorf</w> <w f="1" flags="">duffels</w> @@ -150768,7 +150693,6 @@ <w f="1" flags="">fatefulness</w> <w f="1" flags="">fathead's</w> <w f="1" flags="">fatigue's</w> - <w f="1" flags="">fatly</w> <w f="1" flags="">fatteners</w> <w f="1" flags="">fattish</w> <w f="1" flags="">fatuities</w> @@ -151066,7 +150990,6 @@ <w f="1" flags="">forfeiture's</w> <w f="1" flags="">forgivingly</w> <w f="1" flags="">forgoer</w> - <w f="1" flags="">forker</w> <w f="1" flags="">forkers</w> <w f="1">forkfuls</w> <w f="1" flags="">forlornest</w> @@ -156536,7 +156459,6 @@ <w f="1" flags="">serfage</w> <w f="1" flags="">serfhood</w> <w f="1" flags="">sergeantcy</w> - <w f="1" flags="">serged</w> <w f="1" flags="">serialism's</w> <w f="1" flags="">serialization's</w> <w f="1" flags="">seriography</w> @@ -159028,7 +158950,6 @@ <w f="1" flags="">wheelage</w> <w f="1" flags="">wheelbarrowing</w> <w f="1" flags="">wheelings</w> - <w f="1" flags="">whees</w> <w f="1" flags="">wheezily</w> <w f="1" flags="">whelk's</w> <w f="1" flags="">wherry's</w> @@ -159214,7 +159135,6 @@ <w f="1" flags="">yawps</w> <w f="1" flags="">yayed</w> <w f="1" flags="">yays</w> - <w f="1" flags="">yean</w> <w f="1" flags="">yeaned</w> <w f="1">year-end</w> <w f="1" flags="">yearlies</w> @@ -159331,6 +159251,7 @@ <w f="0" flags="offensive">Kahuna's</w> <w f="0" flags="medical">Kaif's</w> <w f="0" flags="babytalk">Kaka's</w> + <w f="0" flags="">LAN</w> <w f="0" flags="">LG</w> <w f="0" flags="">LP</w> <w f="0" flags="abbreviation">LSAT</w> @@ -159434,6 +159355,7 @@ <w f="0" flags="">auk</w> <w f="0" flags="medical">autosexing</w> <w f="0" flags="">aver</w> + <w f="0" flags="">aw</w> <w f="0" flags="">awn</w> <w f="0" flags="n">babes</w> <w f="0" flags="medical">baculums</w> @@ -159461,6 +159383,7 @@ <w f="0" flags="e">bestial</w> <w f="0" flags="n">bestiality</w> <w f="0" flags="medical">bestialize</w> + <w f="0" flags="abbreviation">bf</w> <w f="0" flags="">bimbos</w> <w f="0" flags="r">bitch</w> <w f="0" flags="">bitch's</w> @@ -159781,6 +159704,7 @@ <w f="0" flags="offensive">fuckings</w> <w f="0" flags="offensive">fucks</w> <w f="0" flags="">fwd</w> + <w f="0" flags="">gage</w> <w f="0" flags="n">gangbang</w> <w f="0" flags="n">gangbanged</w> <w f="0" flags="n">gangbanging</w> @@ -159800,7 +159724,6 @@ <w f="0">glandes</w> <w f="0" flags="medical">glans</w> <w f="0">glans's</w> - <w f="0" flags="">gnat</w> <w f="0" flags="nonword,offensive">goddammit</w> <w f="0" flags="offensive">goddamn</w> <w f="0" flags="offensive">goddamned</w> @@ -159815,7 +159738,6 @@ <w f="0" flags="medical">gonads</w> <w f="0" flags="medical">gonorrhea</w> <w f="0" flags="medical">gonorrheal</w> - <w f="0">gook</w> <w f="0" flags="e">gooks</w> <w f="0" flags="medical">gossypol</w> <w f="0" flags="medical">gravida</w> @@ -159860,6 +159782,7 @@ <w f="0" flags="offensive">horniness</w> <w f="0" flags="offensive">horny</w> <w f="0" flags="offensive">horseshit</w> + <w f="0" flags="abbreviation">hr</w> <w f="0" flags="offensive">humping</w> <w f="0" flags="n">hustler</w> <w f="0" flags="medical">hymen</w> @@ -160316,10 +160239,9 @@ <w f="0" flags="offensive">shittiest</w> <w f="0" flags="offensive">shitting</w> <w f="0" flags="offensive">shitty</w> + <w f="0" flags="">shod</w> <w f="0" flags="n">shrimping</w> - <w f="0" flags="">sigh</w> <w f="0" flags="e">silverback</w> - <w f="0" flags="">sith</w> <w f="0" flags="offensive">skat</w> <w f="0" flags="n">slit</w> <w f="0">slut</w> @@ -160471,7 +160393,6 @@ <w f="0" flags="medical">tribades</w> <w f="0" flags="medical">tribadism</w> <w f="0" flags="">tty</w> - <w f="0" flags="">tun</w> <w f="0" flags="offensive">turd</w> <w f="0" flags="offensive">turds</w> <w f="0" flags="babytalk">twat</w> @@ -160614,6 +160535,7 @@ <w f="0" flags="medical">virginity</w> <w f="0">virginity's</w> <w f="0" flags="babytalk">virgins</w> + <w f="0">vis</w> <w f="0" flags="">voyeur</w> <w f="0" flags="n">voyeurism</w> <w f="0" flags="n">voyeurs</w> @@ -160639,6 +160561,7 @@ <w f="0" flags="e">wetback</w> <w f="0" flags="e">wetbacks</w> <w f="0" flags="offensive">whang</w> + <w f="0" flags="">whets</w> <w f="0" flags="e">whitey</w> <w f="0" flags="offensive">whore</w> <w f="0" flags="offensive">whore's</w> diff --git a/dictionaries/en_wordlist.xml b/dictionaries/en_wordlist.xml index 85b50dd76..6f594d5a4 100644 --- a/dictionaries/en_wordlist.xml +++ b/dictionaries/en_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="en" description="English" date="1338457502" version="14"> +<wordlist locale="en" description="English" date="1340038727" version="16"> <w f="222" flags="">the</w> <w f="214" flags="">of</w> <w f="212" flags="">and</w> @@ -29,6 +29,7 @@ <w f="182" flags="">has</w> <w f="181" flags="">but</w> <w f="180" flags="">first</w> + <w f="180" flags="">very</w> <w f="180" flags="">we</w> <w f="179" flags="">one</w> <w f="179" flags="">their</w> @@ -162,7 +163,6 @@ <w f="160" flags="">too</w> <w f="160" flags="n">up</w> <w f="160" flags="">us</w> - <w f="160" flags="">very</w> <w f="160" flags="">won</w> <w f="160" flags="">yes</w> <w f="160" flags="">you're</w> @@ -7509,6 +7509,7 @@ <w f="110" flags="">jumped</w> <w f="110" flags="">keeper</w> <w f="110" flags="">kindergarten</w> + <w f="110" flags="">kitten</w> <w f="110" flags="">knight</w> <w f="110" flags="">lasts</w> <w f="110" flags="">latitude</w> @@ -7951,6 +7952,7 @@ <w f="109" flags="abbreviation">kHz</w> <w f="109" flags="">kernel</w> <w f="109" flags="">kidney</w> + <w f="109" flags="">kittens</w> <w f="109" flags="">knockout</w> <w f="109" flags="">laboratories</w> <w f="109" flags="">lamp</w> @@ -12399,6 +12401,7 @@ <w f="100" flags="">heyday</w> <w f="100" flags="">highlighting</w> <w f="100" flags="">hospitalized</w> + <w f="100">how've</w> <w f="100" flags="">hugely</w> <w f="100" flags="">iPhone</w> <w f="100" flags="">identifiable</w> @@ -13260,6 +13263,7 @@ <w f="99" flags="">snail</w> <w f="99" flags="">snout</w> <w f="99" flags="">socket</w> + <w f="99" flags="">spacious</w> <w f="99" flags="">spawning</w> <w f="99" flags="">spearheaded</w> <w f="99" flags="">spelt</w> @@ -13938,7 +13942,6 @@ <w f="98" flags="">sourced</w> <w f="98" flags="">spaceship</w> <w f="98" flags="">spacing</w> - <w f="98" flags="">spacious</w> <w f="98">spake</w> <w f="98" flags="">spam</w> <w f="98" flags="">specialising</w> @@ -15499,7 +15502,6 @@ <w f="95" flags="">Kazakhstan</w> <w f="95" flags="">Kirby</w> <w f="95" flags="">Kumar</w> - <w f="95" flags="">LAN</w> <w f="95" flags="abbreviation">LPGA</w> <w f="95" flags="">Lahore</w> <w f="95" flags="">Lakers</w> @@ -16458,7 +16460,6 @@ <w f="94" flags="">detonation</w> <w f="94" flags="">dialog</w> <w f="94" flags="">dialogues</w> - <w f="94">didst</w> <w f="94" flags="">diminish</w> <w f="94" flags="">din</w> <w f="94" flags="">diner</w> @@ -20230,6 +20231,8 @@ <w f="90" flags="">weir</w> <w f="90">well-being</w> <w f="90" flags="">wettest</w> + <w f="90">when's</w> + <w f="90">where'll</w> <w f="90" flags="">whipped</w> <w f="90" flags="">widowers</w> <w f="90" flags="">winner's</w> @@ -23726,7 +23729,6 @@ <w f="86" flags="">newsroom</w> <w f="86" flags="">nicely</w> <w f="86" flags="">nonviolent</w> - <w f="86" flags="abbreviation">nos</w> <w f="86" flags="">noses</w> <w f="86" flags="">notations</w> <w f="86" flags="">novelization</w> @@ -25907,7 +25909,6 @@ <w f="84" flags="">ovate</w> <w f="84" flags="">overcomes</w> <w f="84" flags="">overloaded</w> - <w f="84">overs</w> <w f="84" flags="">pacifism</w> <w f="84" flags="">paintball</w> <w f="84">paraplegics</w> @@ -26937,7 +26938,6 @@ <w f="83" flags="">kilowatts</w> <w f="83" flags="">kindergartens</w> <w f="83" flags="">kingdom's</w> - <w f="83" flags="">kitten</w> <w f="83" flags="">knack</w> <w f="83" flags="">labours</w> <w f="83" flags="">lacquer</w> @@ -28043,7 +28043,6 @@ <w f="82" flags="">hoops</w> <w f="82" flags="">hospitalised</w> <w f="82" flags="">hovercraft</w> - <w f="82" flags="abbreviation">hr</w> <w f="82" flags="">humanoids</w> <w f="82" flags="">hummingbird</w> <w f="82" flags="">hump</w> @@ -28110,7 +28109,6 @@ <w f="82" flags="">keenly</w> <w f="82" flags="">keypad</w> <w f="82" flags="">kidnappings</w> - <w f="82" flags="">kittens</w> <w f="82" flags="">knitted</w> <w f="82" flags="">knuckle</w> <w f="82" flags="">lagged</w> @@ -28557,7 +28555,6 @@ <w f="82" flags="">wonderfully</w> <w f="82" flags="">workable</w> <w f="82" flags="">workmanship</w> - <w f="82" flags="">yew</w> <w f="82" flags="">yin</w> <w f="82" flags="">zig</w> <w f="81" flags="">Aachen</w> @@ -33049,7 +33046,6 @@ <w f="78" flags="">lakeshore</w> <w f="78" flags="">laminar</w> <w f="78" flags="">landforms</w> - <w f="78" flags="">lang</w> <w f="78" flags="">larceny</w> <w f="78" flags="">lard</w> <w f="78" flags="">largemouth</w> @@ -33522,7 +33518,6 @@ <w f="78" flags="">wholesaler</w> <w f="78" flags="">wikipedia</w> <w f="78" flags="">withering</w> - <w f="78" flags="abbreviation">wo</w> <w f="78" flags="">woodwinds</w> <w f="78" flags="">wrangling</w> <w f="78" flags="">wrest</w> @@ -34400,7 +34395,6 @@ <w f="77" flags="">kitsch</w> <w f="77" flags="">knight's</w> <w f="77" flags="">knockouts</w> - <w f="77" flags="">lain</w> <w f="77" flags="">landmines</w> <w f="77" flags="">language's</w> <w f="77" flags="">lapel</w> @@ -34701,7 +34695,6 @@ <w f="77" flags="">sidereal</w> <w f="77" flags="">simulcasted</w> <w f="77" flags="">sinuous</w> - <w f="77" flags="">siting</w> <w f="77" flags="">skips</w> <w f="77" flags="">skylight</w> <w f="77" flags="">slays</w> @@ -39239,6 +39232,7 @@ <w f="73" flags="">Klondike</w> <w f="73" flags="">Kodiak</w> <w f="73" flags="">Kursk</w> + <w f="73">LAX</w> <w f="73" flags="abbreviation">LGPL</w> <w f="73" flags="abbreviation">LMP</w> <w f="73" flags="abbreviation">LSTs</w> @@ -40945,7 +40939,6 @@ <w f="72" flags="">backwardness</w> <w f="72" flags="">baker's</w> <w f="72" flags="">ballrooms</w> - <w f="72" flags="">banc</w> <w f="72" flags="">bane</w> <w f="72" flags="">bangs</w> <w f="72" flags="">banishing</w> @@ -41649,6 +41642,7 @@ <w f="72" flags="">shunning</w> <w f="72" flags="">shunted</w> <w f="72" flags="">shuttle's</w> + <w f="72" flags="">sigh</w> <w f="72" flags="">signalized</w> <w f="72" flags="">siltstone</w> <w f="72" flags="">silversmith</w> @@ -43336,7 +43330,6 @@ <w f="70" flags="abbreviation">DSE</w> <w f="70" flags="abbreviation">DZ</w> <w f="70" flags="">Daniela</w> - <w f="70" flags="">Darin</w> <w f="70" flags="">Darlene</w> <w f="70" flags="">Darnell</w> <w f="70" flags="">Dawson's</w> @@ -44020,6 +44013,7 @@ <w f="70" flags="">gash</w> <w f="70" flags="">gaudy</w> <w f="70" flags="">gazette</w> + <w f="70">gelato</w> <w f="70" flags="">genealogist</w> <w f="70" flags="">generalship</w> <w f="70" flags="">geopolitics</w> @@ -44073,7 +44067,6 @@ <w f="70" flags="">holdover</w> <w f="70" flags="">homeroom</w> <w f="70" flags="">homunculus</w> - <w f="70" flags="">hoo</w> <w f="70" flags="">howl</w> <w f="70" flags="">huddled</w> <w f="70" flags="">hurtful</w> @@ -46633,6 +46626,7 @@ <w f="68" flags="">axils</w> <w f="68" flags="">axing</w> <w f="68" flags="">azimuthal</w> + <w f="68" flags="">babe</w> <w f="68" flags="">backlight</w> <w f="68" flags="">backplane</w> <w f="68" flags="">backwoods</w> @@ -48341,7 +48335,6 @@ <w f="67" flags="">cultists</w> <w f="67" flags="">curates</w> <w f="67" flags="">curbside</w> - <w f="67" flags="">dag</w> <w f="67" flags="">dainty</w> <w f="67" flags="">dandelion</w> <w f="67" flags="">darkens</w> @@ -48505,7 +48498,6 @@ <w f="67" flags="">fuselages</w> <w f="67" flags="">futurism</w> <w f="67" flags="">gaffe</w> - <w f="67" flags="">gage</w> <w f="67" flags="">gallery's</w> <w f="67" flags="">galls</w> <w f="67" flags="">gavel</w> @@ -48719,7 +48711,6 @@ <w f="67" flags="">mononucleosis</w> <w f="67" flags="">monoplanes</w> <w f="67" flags="">morphologies</w> - <w f="67" flags="">mot</w> <w f="67" flags="">moto</w> <w f="67" flags="">mottling</w> <w f="67" flags="">mozzarella</w> @@ -48955,7 +48946,6 @@ <w f="67" flags="">shined</w> <w f="67" flags="">shipowners</w> <w f="67" flags="">shipper</w> - <w f="67" flags="">shod</w> <w f="67" flags="">shrieking</w> <w f="67" flags="">shrugs</w> <w f="67" flags="">sibilants</w> @@ -54562,7 +54552,6 @@ <w f="63" flags="">autodidact</w> <w f="63" flags="">automates</w> <w f="63" flags="">avoirdupois</w> - <w f="63" flags="">aw</w> <w f="63" flags="">backhoe</w> <w f="63" flags="">backstop</w> <w f="63" flags="">balancer</w> @@ -54883,7 +54872,6 @@ <w f="63" flags="">gummy</w> <w f="63" flags="">gunfights</w> <w f="63" flags="">gunge</w> - <w f="63" flags="">hake</w> <w f="63" flags="">halftone</w> <w f="63" flags="">halva</w> <w f="63" flags="">handrail</w> @@ -55477,7 +55465,6 @@ <w f="63" flags="">triplane</w> <w f="63" flags="">trotters</w> <w f="63" flags="">truant</w> - <w f="63" flags="">tsars</w> <w f="63" flags="">tuatara</w> <w f="63" flags="">tufa</w> <w f="63" flags="">tummy</w> @@ -56344,7 +56331,6 @@ <w f="62" flags="">coproduct</w> <w f="62" flags="">corbelled</w> <w f="62" flags="">coreligionists</w> - <w f="62" flags="">corm</w> <w f="62" flags="">corms</w> <w f="62" flags="">cornstarch</w> <w f="62" flags="">corrals</w> @@ -59888,7 +59874,6 @@ <w f="60" flags="">longshoreman</w> <w f="60" flags="">longterm</w> <w f="60" flags="">lugger</w> - <w f="60" flags="">lune</w> <w f="60" flags="">luteinizing</w> <w f="60" flags="">madmen</w> <w f="60" flags="">madre</w> @@ -61565,6 +61550,7 @@ <w f="59" flags="">majlis</w> <w f="59" flags="">maniacally</w> <w f="59" flags="">mantlet</w> + <w f="59" flags="">manu</w> <w f="59" flags="">mapper</w> <w f="59" flags="">marjoram</w> <w f="59" flags="">mars</w> @@ -61917,7 +61903,6 @@ <w f="59" flags="">similitude</w> <w f="59" flags="">singed</w> <w f="59" flags="">sinning</w> - <w f="59" flags="">siring</w> <w f="59" flags="">skein</w> <w f="59" flags="">skin's</w> <w f="59" flags="">skipjack</w> @@ -63549,7 +63534,6 @@ <w f="58" flags="">solvated</w> <w f="58" flags="">songwriter's</w> <w f="58" flags="">sop</w> - <w f="58" flags="">sori</w> <w f="58" flags="">sorority's</w> <w f="58" flags="">sotto</w> <w f="58" flags="">southerner</w> @@ -64680,7 +64664,6 @@ <w f="57" flags="">garrulous</w> <w f="57" flags="">gazebos</w> <w f="57" flags="">gelatine</w> - <w f="57" flags="">geld</w> <w f="57" flags="">gelled</w> <w f="57" flags="">generalise</w> <w f="57" flags="">generalities</w> @@ -65347,7 +65330,6 @@ <w f="57" flags="">unum</w> <w f="57" flags="">upperclassman</w> <w f="57" flags="">urbanites</w> - <w f="57" flags="abbreviation">usr</w> <w f="57" flags="">utility's</w> <w f="57" flags="">vanities</w> <w f="57" flags="">vaqueros</w> @@ -66109,7 +66091,6 @@ <w f="56" flags="">crock</w> <w f="56" flags="">croplands</w> <w f="56" flags="">crosswalks</w> - <w f="56" flags="">culm</w> <w f="56" flags="">curettage</w> <w f="56" flags="">currency's</w> <w f="56" flags="">cursors</w> @@ -66572,7 +66553,6 @@ <w f="56" flags="">nighters</w> <w f="56" flags="">nightspot</w> <w f="56" flags="">nightstick</w> - <w f="56" flags="">nim</w> <w f="56" flags="">ninetieth</w> <w f="56" flags="">nix</w> <w f="56" flags="">nocturne</w> @@ -67060,7 +67040,6 @@ <w f="56" flags="">unread</w> <w f="56" flags="">unrealised</w> <w f="56" flags="">unselected</w> - <w f="56" flags="">unser</w> <w f="56" flags="">unsparing</w> <w f="56" flags="">unsporting</w> <w f="56" flags="">unsupportive</w> @@ -68168,6 +68147,7 @@ <w f="55" flags="">glissandi</w> <w f="55" flags="">gloat</w> <w f="55" flags="">glum</w> + <w f="55" flags="">gnat</w> <w f="55" flags="">gnostics</w> <w f="55" flags="">goannas</w> <w f="55" flags="">goddess's</w> @@ -69802,7 +69782,6 @@ <w f="54" flags="">homeschoolers</w> <w f="54" flags="">horsewoman</w> <w f="54" flags="">horticulturalists</w> - <w f="54" flags="abbreviation">hos</w> <w f="54" flags="">hotlines</w> <w f="54" flags="">hovel</w> <w f="54" flags="">huckleberry</w> @@ -69873,7 +69852,6 @@ <w f="54" flags="">lacewings</w> <w f="54" flags="">ladybird</w> <w f="54" flags="">laser's</w> - <w f="54" flags="abbreviation">lats</w> <w f="54" flags="">leafhoppers</w> <w f="54" flags="">leaper</w> <w f="54" flags="">leapfrogging</w> @@ -69891,7 +69869,6 @@ <w f="54" flags="">llanos</w> <w f="54" flags="">lobules</w> <w f="54" flags="">locksmiths</w> - <w f="54" flags="">loge</w> <w f="54" flags="">logjam</w> <w f="54" flags="">lon</w> <w f="54" flags="">longhaired</w> @@ -71454,7 +71431,6 @@ <w f="53" flags="">henpecked</w> <w f="53" flags="">herpetologists</w> <w f="53" flags="">hessian</w> - <w f="53" flags="abbreviation">hf</w> <w f="53" flags="">hibernacula</w> <w f="53" flags="">hindbrain</w> <w f="53" flags="">hinging</w> @@ -72784,7 +72760,6 @@ <w f="52" flags="">aquarium's</w> <w f="52" flags="">aquiline</w> <w f="52" flags="">arctangent</w> - <w f="52" flags="">ares</w> <w f="52" flags="">aristocracies</w> <w f="52" flags="">armigerous</w> <w f="52" flags="">armlet</w> @@ -73081,7 +73056,6 @@ <w f="52" flags="">encroaches</w> <w f="52" flags="">enigmas</w> <w f="52" flags="">enigmatically</w> - <w f="52" flags="abbreviation">ens</w> <w f="52" flags="">entrancing</w> <w f="52" flags="">entreaty</w> <w f="52" flags="">enuresis</w> @@ -73927,7 +73901,6 @@ <w f="52" flags="">virtuality</w> <w f="52" flags="">virus's</w> <w f="52" flags="">vivace</w> - <w f="52" flags="">vive</w> <w f="52" flags="">voicework</w> <w f="52" flags="">volcanology</w> <w f="52" flags="">volleying</w> @@ -74866,7 +74839,6 @@ <w f="51" flags="">kukri</w> <w f="51" flags="">kumquat</w> <w f="51" flags="">kwashiorkor</w> - <w f="51" flags="">lade</w> <w f="51" flags="">lamp's</w> <w f="51" flags="">lampshade</w> <w f="51" flags="">lantana</w> @@ -79223,7 +79195,6 @@ <w f="48" flags="">calypsos</w> <w f="48" flags="">caracaras</w> <w f="48" flags="">carburizing</w> - <w f="48" flags="">carder</w> <w f="48" flags="">careerist</w> <w f="48" flags="">carny</w> <w f="48" flags="">carotenes</w> @@ -80061,7 +80032,6 @@ <w f="48" flags="">rhomboidal</w> <w f="48" flags="">rills</w> <w f="48" flags="">rivalry's</w> - <w f="48" flags="">rive</w> <w f="48" flags="">riviera</w> <w f="48" flags="">romps</w> <w f="48" flags="">router's</w> @@ -80159,7 +80129,6 @@ <w f="48" flags="">sorbate</w> <w f="48" flags="nonword">sorta</w> <w f="48" flags="">souffle</w> - <w f="48" flags="">sough</w> <w f="48" flags="">southwardly</w> <w f="48" flags="">spacemen</w> <w f="48" flags="">spanker</w> @@ -80538,7 +80507,6 @@ <w f="47" flags="">Gawain's</w> <w f="47" flags="">Geber</w> <w f="47" flags="">Ghiberti</w> - <w f="47" flags="abbreviation">Gib</w> <w f="47" flags="">Gibsons</w> <w f="47" flags="">Glenora</w> <w f="47" flags="">Golden's</w> @@ -81677,7 +81645,6 @@ <w f="47" flags="">shebang</w> <w f="47" flags="">sheepfold</w> <w f="47" flags="">sher</w> - <w f="47" flags="">sherd</w> <w f="47" flags="">shoos</w> <w f="47" flags="">shoplift</w> <w f="47" flags="">shorthaired</w> @@ -82690,7 +82657,6 @@ <w f="46" flags="">freelances</w> <w f="46" flags="">funnelling</w> <w f="46" flags="">fusel</w> - <w f="46" flags="">gad</w> <w f="46" flags="">gaffs</w> <w f="46" flags="">gamemasters</w> <w f="46" flags="">gapes</w> @@ -83051,7 +83017,6 @@ <w f="46">piste</w> <w f="46" flags="">pithead</w> <w f="46" flags="">placekicking</w> - <w f="46" flags="">plage</w> <w f="46" flags="">planchette</w> <w f="46" flags="">playas</w> <w f="46" flags="">playbacks</w> @@ -84354,7 +84319,6 @@ <w f="45" flags="">faery</w> <w f="45" flags="">fairy's</w> <w f="45" flags="">faits</w> - <w f="45" flags="">faller</w> <w f="45" flags="">fallowing</w> <w f="45" flags="">familiarised</w> <w f="45" flags="">fanboys</w> @@ -84462,7 +84426,6 @@ <w f="45" flags="">gym's</w> <w f="45" flags="">hacker's</w> <w f="45" flags="">hallelujah</w> - <w f="45" flags="">hame</w> <w f="45" flags="">hank</w> <w f="45" flags="">hankering</w> <w f="45" flags="">hanky</w> @@ -86102,7 +86065,6 @@ <w f="44" flags="">divestments</w> <w f="44" flags="">do-gooders</w> <w f="44" flags="">documentable</w> - <w f="44" flags="">don</w> <w f="44" flags="">donator</w> <w f="44" flags="">doorposts</w> <w f="44" flags="">doublespeak</w> @@ -88887,7 +88849,6 @@ <w f="42" flags="">anticarcinogenic</w> <w f="42" flags="">antipasto</w> <w f="42" flags="">antlions</w> - <w f="42" flags="">anu</w> <w f="42" flags="">anxiousness</w> <w f="42" flags="">apartness</w> <w f="42" flags="">ape's</w> @@ -89897,7 +89858,6 @@ <w f="42" flags="">washstand</w> <w f="42" flags="">waviness</w> <w f="42" flags="">wayfaring</w> - <w f="42" flags="">weil</w> <w f="42" flags="">wickedest</w> <w f="42" flags="">wiggled</w> <w f="42" flags="">wireworks</w> @@ -90744,7 +90704,6 @@ <w f="41" flags="">henhouse</w> <w f="41" flags="">hereabouts</w> <w f="41" flags="">hereunto</w> - <w f="41" flags="">herm</w> <w f="41">herniation</w> <w f="41">hies</w> <w f="41" flags="">highveld</w> @@ -92360,6 +92319,7 @@ <w f="40" flags="">housemother</w> <w f="40" flags="">houseware</w> <w f="40" flags="">housewife's</w> + <w f="40">how'll</w> <w f="40" flags="">hucksters</w> <w f="40" flags="">humanise</w> <w f="40" flags="">humbles</w> @@ -94220,7 +94180,6 @@ <w f="39" flags="">kedge</w> <w f="39" flags="">keyrings</w> <w f="39" flags="">kibble</w> - <w f="39">kine</w> <w f="39" flags="">kingless</w> <w f="39" flags="">kinkajous</w> <w f="39" flags="">knackered</w> @@ -95214,7 +95173,6 @@ <w f="38" flags="">beanball</w> <w f="38" flags="">bedazzled</w> <w f="38" flags="">bezant</w> - <w f="38" flags="abbreviation">bf</w> <w f="38" flags="">bights</w> <w f="38" flags="australian">bilbies</w> <w f="38" flags="">bilked</w> @@ -95730,7 +95688,6 @@ <w f="38" flags="">selectiveness</w> <w f="38" flags="">selene</w> <w f="38" flags="">selvages</w> - <w f="38" flags="">sere</w> <w f="38" flags="">serf's</w> <w f="38" flags="">serialise</w> <w f="38" flags="">servomotors</w> @@ -98579,7 +98536,6 @@ <w f="36" flags="">laminator</w> <w f="36" flags="">landlessness</w> <w f="36" flags="">launders</w> - <w f="36" flags="">lave</w> <w f="36" flags="">leathern</w> <w f="36" flags="">leeboard</w> <w f="36" flags="">leeched</w> @@ -98892,7 +98848,6 @@ <w f="36" flags="">thanksgivings</w> <w f="36" flags="">thereabout</w> <w f="36">thermocouple</w> - <w f="36">thews</w> <w f="36">thyristors</w> <w f="36" flags="">tieback</w> <w f="36" flags="">tinkerers</w> @@ -100563,7 +100518,6 @@ <w f="35" flags="">librates</w> <w f="35" flags="">licitly</w> <w f="35" flags="">lid's</w> - <w f="35" flags="">lief</w> <w f="35" flags="">lifebuoy</w> <w f="35" flags="">lifebuoys</w> <w f="35" flags="">lightering</w> @@ -102419,7 +102373,6 @@ <w f="34" flags="">nonfinancial</w> <w f="34" flags="">noninflammatory</w> <w f="34" flags="">nontarget</w> - <w f="34" flags="">norn</w> <w f="34" flags="">northland</w> <w f="34" flags="">nosebands</w> <w f="34" flags="">novice's</w> @@ -105327,7 +105280,6 @@ <w f="32" flags="">localists</w> <w f="32" flags="">loco's</w> <w f="32" flags="">locomote</w> - <w f="32" flags="">lod</w> <w f="32" flags="">loiters</w> <w f="32" flags="">loquacity</w> <w f="32" flags="">lumpfish</w> @@ -107452,7 +107404,6 @@ <w f="31" flags="">tideway</w> <w f="31" flags="">tintinnabulum</w> <w f="31" flags="">titter</w> - <w f="31">tole</w> <w f="31" flags="">tonsuring</w> <w f="31" flags="">toots</w> <w f="31" flags="">totting</w> @@ -108434,7 +108385,6 @@ <w f="30" flags="">dignitary's</w> <w f="30" flags="">dilapidations</w> <w f="30" flags="">dimerizing</w> - <w f="30" flags="">dingle</w> <w f="30" flags="">dirties</w> <w f="30" flags="">disagreeably</w> <w f="30" flags="">disbelievingly</w> @@ -109541,7 +109491,6 @@ <w f="29">colourists</w> <w f="29">commutators</w> <w f="29">conventicle</w> - <w f="29">dieing</w> <w f="29">disembowelment</w> <w f="29">embryologist</w> <w f="29">etiologic</w> @@ -109578,7 +109527,6 @@ <w f="29">versicle</w> <w f="29">villus</w> <w f="29">voltmeters</w> - <w f="29">weer</w> <w f="28" flags="">Abelard's</w> <w f="28" flags="">Adeste</w> <w f="28" flags="">Aggie's</w> @@ -110851,7 +110799,6 @@ <w f="28" flags="">linearizable</w> <w f="28" flags="">linkboy</w> <w f="28" flags="">linnets</w> - <w f="28" flags="">lins</w> <w f="28" flags="">lissome</w> <w f="28" flags="">literariness</w> <w f="28" flags="">littles</w> @@ -112986,7 +112933,6 @@ <w f="27" flags="">icemen</w> <w f="27" flags="">icepacks</w> <w f="27" flags="">ideate</w> - <w f="27" flags="abbreviation">ided</w> <w f="27" flags="">idiomorphic</w> <w f="27" flags="">idiot's</w> <w f="27" flags="">illyricum</w> @@ -115871,7 +115817,6 @@ <w f="25" flags="">masticating</w> <w f="25" flags="">mastics</w> <w f="25" flags="">matelots</w> - <w f="25" flags="">maun</w> <w f="25" flags="">maundering</w> <w f="25" flags="">maundy</w> <w f="25" flags="">mayer</w> @@ -117714,7 +117659,6 @@ <w f="23" flags="">awardee's</w> <w f="23" flags="">awarder</w> <w f="23" flags="">axle's</w> - <w f="23">baaed</w> <w f="23" flags="">babs</w> <w f="23" flags="">backbends</w> <w f="23" flags="">backcourts</w> @@ -118321,7 +118265,6 @@ <w f="23" flags="">fibrillations</w> <w f="23" flags="">fieldfares</w> <w f="23" flags="">fiend's</w> - <w f="23" flags="">fifing</w> <w f="23" flags="">fifteen's</w> <w f="23" flags="">filofax</w> <w f="23" flags="">fir's</w> @@ -118508,7 +118451,6 @@ <w f="23" flags="technical">hemangioendotheliomas</w> <w f="23" flags="">henhouses</w> <w f="23" flags="">heroisms</w> - <w f="23" flags="">hest</w> <w f="23" flags="">hied</w> <w f="23" flags="">high-falutin'</w> <w f="23" flags="">highchair</w> @@ -119250,7 +119192,6 @@ <w f="23" flags="">rambutans</w> <w f="23" flags="">rampion</w> <w f="23" flags="">ranking's</w> - <w f="23" flags="">rankly</w> <w f="23" flags="">rarefactions</w> <w f="23" flags="">rarefy</w> <w f="23" flags="">ratafia</w> @@ -121586,7 +121527,6 @@ <w f="21" flags="">emprise</w> <w f="21" flags="">en's</w> <w f="21" flags="">enamelwork</w> - <w f="21" flags="abbreviation">enc</w> <w f="21" flags="">endangerments</w> <w f="21" flags="">endon</w> <w f="21" flags="">energises</w> @@ -122035,7 +121975,6 @@ <w f="21" flags="">indiscriminating</w> <w f="21" flags="">indological</w> <w f="21" flags="">indology</w> - <w f="21" flags="">indre</w> <w f="21" flags="">indwelt</w> <w f="21" flags="">ineffaceable</w> <w f="21" flags="">ineffectuality</w> @@ -122451,7 +122390,6 @@ <w f="21" flags="">nonvocal</w> <w f="21" flags="">nonvoluntary</w> <w f="21" flags="">northeasterner</w> - <w f="21" flags="">noth</w> <w f="21" flags="">nourisher</w> <w f="21" flags="">novelettish</w> <w f="21" flags="">nucleus's</w> @@ -122460,7 +122398,6 @@ <w f="21" flags="">nuttiest</w> <w f="21" flags="abbreviation">nyx</w> <w f="21" flags="">oarswomen</w> - <w f="21" flags="">oater</w> <w f="21" flags="">obscurest</w> <w f="21" flags="">observantly</w> <w f="21" flags="">obstante</w> @@ -122560,7 +122497,6 @@ <w f="21" flags="">pareira</w> <w f="21" flags="">parenthesised</w> <w f="21" flags="">parenthetic</w> - <w f="21" flags="">parer</w> <w f="21" flags="">parfleche</w> <w f="21" flags="">parser's</w> <w f="21" flags="">parsings</w> @@ -122568,7 +122504,6 @@ <w f="21" flags="">passivism</w> <w f="21" flags="">passkeys</w> <w f="21" flags="">passworded</w> - <w f="21" flags="">pated</w> <w f="21" flags="">pathway's</w> <w f="21" flags="">patrologist</w> <w f="21" flags="">pavement's</w> @@ -123608,7 +123543,6 @@ <w f="21" flags="">weldings</w> <w f="21" flags="">wetland's</w> <w f="21" flags="">wheelchair's</w> - <w f="21" flags="">whets</w> <w f="21" flags="">whiffling</w> <w f="21" flags="">whimbrels</w> <w f="21" flags="">whippoorwill</w> @@ -125867,7 +125801,6 @@ <w f="18" flags="">gambolling</w> <w f="18" flags="">gambrels</w> <w f="18" flags="">gamesmen</w> - <w f="18" flags="">gams</w> <w f="18" flags="">gaoler's</w> <w f="18" flags="">garde's</w> <w f="18" flags="">garnishee</w> @@ -126300,7 +126233,6 @@ <w f="18" flags="">jolliness</w> <w f="18" flags="">jonquils</w> <w f="18" flags="">journalling</w> - <w f="18" flags="australian">jube</w> <w f="18" flags="">jubes</w> <w f="18" flags="">judaizers</w> <w f="18" flags="">judgmentally</w> @@ -127542,7 +127474,6 @@ <w f="18" flags="">shoebills</w> <w f="18" flags="">shopkeep</w> <w f="18" flags="">shotgunned</w> - <w f="18" flags="">shott</w> <w f="18" flags="">showmen's</w> <w f="18" flags="">shunter's</w> <w f="18" flags="">siccing</w> @@ -128543,7 +128474,6 @@ <w f="15" flags="">Commissar's</w> <w f="15" flags="">Computerworld's</w> <w f="15" flags="">Conger's</w> - <w f="15" flags="">Conni</w> <w f="15" flags="">Conservatorium's</w> <w f="15" flags="">Continent's</w> <w f="15" flags="">Copernicans</w> @@ -129661,7 +129591,6 @@ <w f="15" flags="">archenemy's</w> <w f="15" flags="">archery's</w> <w f="15" flags="">ardours</w> - <w f="15" flags="">ards</w> <w f="15" flags="">areaway</w> <w f="15" flags="">argentinean</w> <w f="15" flags="">arisings</w> @@ -129995,7 +129924,6 @@ <w f="15">calcine</w> <w f="15" flags="">calculous</w> <w f="15" flags="">caliper's</w> - <w f="15" flags="">calked</w> <w f="15" flags="">calks</w> <w f="15" flags="">calligraphists</w> <w f="15" flags="">callouses</w> @@ -131334,7 +131262,6 @@ <w f="15" flags="">hogmanay</w> <w f="15" flags="">hognut</w> <w f="15" flags="">hogweeds</w> - <w f="15" flags="">hoke</w> <w f="15" flags="">holdbacks</w> <w f="15" flags="">homebuild</w> <w f="15" flags="">homeworker</w> @@ -142398,6 +142325,7 @@ <w f="10" flags="">wettish</w> <w f="10" flags="">whammies</w> <w f="10" flags="nonword">what'd</w> + <w f="10">what'm</w> <w f="10" flags="">wheaties</w> <w f="10" flags="">wheelbarrow's</w> <w f="10" flags="">wheezers</w> @@ -142420,6 +142348,7 @@ <w f="10" flags="">whoas</w> <w f="10" flags="">whoopers</w> <w f="10" flags="">whopped</w> + <w f="10">why'll</w> <w f="10" flags="">widgeons</w> <w f="10" flags="">widgie</w> <w f="10" flags="">wight's</w> @@ -142709,7 +142638,6 @@ <w f="6">weaponry's</w> <w f="6">womb's</w> <w f="6">yearningly</w> - <w f="5" flags="">babe</w> <w f="4" flags="">bandannas</w> <w f="2">Babels</w> <w f="2">Caucasoids</w> @@ -152281,7 +152209,6 @@ <w f="1" flags="">beet's</w> <w f="1">beetroot's</w> <w f="1">befogging</w> - <w f="1" flags="">befogs</w> <w f="1" flags="">beggarweed</w> <w f="1" flags="">begird</w> <w f="1" flags="">begirt</w> @@ -153959,7 +153886,6 @@ <w f="1" flags="">dandles</w> <w f="1" flags="">danged</w> <w f="1" flags="">dangler</w> - <w f="1" flags="">dankly</w> <w f="1" flags="">dappers</w> <w f="1" flags="">darer</w> <w f="1" flags="">darkener</w> @@ -154617,7 +154543,6 @@ <w f="1" flags="">duckweed's</w> <w f="1" flags="">dudeen</w> <w f="1" flags="">dudgeons</w> - <w f="1" flags="">duding</w> <w f="1" flags="">dueler</w> <w f="1" flags="">duellers</w> <w f="1" flags="">duellist's</w> @@ -155185,7 +155110,6 @@ <w f="1" flags="">fatefulness</w> <w f="1" flags="">fathead's</w> <w f="1" flags="">fatigue's</w> - <w f="1" flags="">fatly</w> <w f="1" flags="">fatteners</w> <w f="1" flags="">fattish</w> <w f="1" flags="">fatuities</w> @@ -155494,7 +155418,6 @@ <w f="1" flags="">forfeiture's</w> <w f="1" flags="">forgivingly</w> <w f="1" flags="">forgoer</w> - <w f="1" flags="">forker</w> <w f="1" flags="">forkers</w> <w f="1">forkfuls</w> <w f="1" flags="">forlornest</w> @@ -161219,7 +161142,6 @@ <w f="1" flags="">serfage</w> <w f="1" flags="">serfhood</w> <w f="1" flags="">sergeantcy</w> - <w f="1" flags="">serged</w> <w f="1" flags="">serialism's</w> <w f="1" flags="">serialization's</w> <w f="1" flags="">seriography</w> @@ -163798,7 +163720,6 @@ <w f="1" flags="">wheelage</w> <w f="1" flags="">wheelbarrowing</w> <w f="1" flags="">wheelings</w> - <w f="1" flags="">whees</w> <w f="1" flags="">wheezily</w> <w f="1" flags="">whelk's</w> <w f="1" flags="">wherry's</w> @@ -163992,7 +163913,6 @@ <w f="1" flags="">yawps</w> <w f="1" flags="">yayed</w> <w f="1" flags="">yays</w> - <w f="1" flags="">yean</w> <w f="1" flags="">yeaned</w> <w f="1">year-end</w> <w f="1" flags="">yearlies</w> @@ -164117,6 +164037,7 @@ <w f="0" flags="offensive">Kahuna's</w> <w f="0" flags="medical">Kaif's</w> <w f="0" flags="babytalk">Kaka's</w> + <w f="0" flags="">LAN</w> <w f="0" flags="">LG</w> <w f="0" flags="">LP</w> <w f="0" flags="">LR</w> @@ -164224,6 +164145,7 @@ <w f="0" flags="">auk</w> <w f="0" flags="medical">autosexing</w> <w f="0" flags="">aver</w> + <w f="0" flags="">aw</w> <w f="0" flags="">awn</w> <w f="0" flags="n">babes</w> <w f="0" flags="medical">baculums</w> @@ -164251,6 +164173,7 @@ <w f="0" flags="e">bestial</w> <w f="0" flags="n">bestiality</w> <w f="0" flags="medical">bestialize</w> + <w f="0" flags="abbreviation">bf</w> <w f="0" flags="">bimbos</w> <w f="0" flags="r">bitch</w> <w f="0" flags="">bitch's</w> @@ -164581,6 +164504,7 @@ <w f="0" flags="offensive">fuckings</w> <w f="0" flags="offensive">fucks</w> <w f="0" flags="">fwd</w> + <w f="0" flags="">gage</w> <w f="0" flags="n">gangbang</w> <w f="0" flags="n">gangbanged</w> <w f="0" flags="n">gangbanging</w> @@ -164600,7 +164524,6 @@ <w f="0">glandes</w> <w f="0" flags="medical">glans</w> <w f="0">glans's</w> - <w f="0" flags="">gnat</w> <w f="0" flags="nonword,offensive">goddammit</w> <w f="0" flags="offensive">goddamn</w> <w f="0" flags="offensive">goddamned</w> @@ -164617,7 +164540,6 @@ <w f="0" flags="medical">gonorrheal</w> <w f="0" flags="medical">gonorrhoea</w> <w f="0" flags="medical">gonorrhoeal</w> - <w f="0">gook</w> <w f="0" flags="e">gooks</w> <w f="0" flags="medical">gossypol</w> <w f="0" flags="medical">gravida</w> @@ -164665,6 +164587,7 @@ <w f="0" flags="offensive">horniness</w> <w f="0" flags="offensive">horny</w> <w f="0" flags="offensive">horseshit</w> + <w f="0" flags="abbreviation">hr</w> <w f="0" flags="offensive">humping</w> <w f="0" flags="n">hustler</w> <w f="0" flags="medical">hymen</w> @@ -165139,10 +165062,9 @@ <w f="0" flags="offensive">shittiest</w> <w f="0" flags="offensive">shitting</w> <w f="0" flags="offensive">shitty</w> + <w f="0" flags="">shod</w> <w f="0" flags="n">shrimping</w> - <w f="0" flags="">sigh</w> <w f="0" flags="e">silverback</w> - <w f="0" flags="">sith</w> <w f="0" flags="offensive">skat</w> <w f="0" flags="n">slit</w> <w f="0">slut</w> @@ -165299,7 +165221,6 @@ <w f="0" flags="medical">tribades</w> <w f="0" flags="medical">tribadism</w> <w f="0" flags="">tty</w> - <w f="0" flags="">tun</w> <w f="0" flags="offensive">turd</w> <w f="0" flags="offensive">turds</w> <w f="0" flags="babytalk">twat</w> @@ -165444,6 +165365,7 @@ <w f="0" flags="medical">virginity</w> <w f="0">virginity's</w> <w f="0" flags="babytalk">virgins</w> + <w f="0">vis</w> <w f="0" flags="">voyeur</w> <w f="0" flags="n">voyeurism</w> <w f="0" flags="n">voyeurs</w> @@ -165470,6 +165392,7 @@ <w f="0" flags="e">wetback</w> <w f="0" flags="e">wetbacks</w> <w f="0" flags="offensive">whang</w> + <w f="0" flags="">whets</w> <w f="0" flags="e">whitey</w> <w f="0" flags="offensive">whore</w> <w f="0" flags="offensive">whore's</w> diff --git a/dictionaries/fr_wordlist.xml b/dictionaries/fr_wordlist.xml index 76a873716..39909885c 100644 --- a/dictionaries/fr_wordlist.xml +++ b/dictionaries/fr_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="fr" description="Français" date="1338184468" version="12" options="french_ligature_processing"> +<wordlist locale="fr" description="Français" date="1339787661" version="15" options="french_ligature_processing"> <w f="209" flags="">de</w> <w f="200" flags="">la</w> <w f="197" flags="">et</w> @@ -19,6 +19,7 @@ <w f="178" flags="">a</w> <w f="178" flags="">il</w> <w f="178" flags="">que</w> + <w f="177" flags="">sur</w> <w f="176" flags="">son</w> <w f="175" flags="">avec</w> <w f="175" flags="">plus</w> @@ -1097,6 +1098,7 @@ <w f="125" flags="">occupe</w> <w f="125" flags="">olympiques</w> <w f="125" flags="">ouvrage</w> + <w f="125">parce que</w> <w f="125" flags="">paroisse</w> <w f="125" flags="">personnel</w> <w f="125" flags="">pression</w> @@ -8152,6 +8154,7 @@ <w f="98" flags="">endémiques</w> <w f="98" flags="">enlevé</w> <w f="98" flags="">environnementale</w> + <w f="98" flags="">es</w> <w f="98" flags="">est-il</w> <w f="98" flags="">exact</w> <w f="98" flags="">examens</w> @@ -8419,7 +8422,6 @@ <w f="98" flags="">vrais</w> <w f="98" flags="">Égypte</w> <w f="98" flags="">Étienne</w> - <w f="98" flags="">ès</w> <w f="98" flags="">écrivant</w> <w f="98" flags="">éleveurs</w> <w f="98" flags="">énergies</w> @@ -12675,6 +12677,7 @@ <w f="90" flags="">Abraham</w> <w f="90" flags="">All-Star</w> <w f="90" flags="">Allen</w> + <w f="90" flags="">Android</w> <w f="90" flags="">Andy</w> <w f="90" flags="">Anvers</w> <w f="90" flags="">Armand</w> @@ -30877,7 +30880,6 @@ <w f="73" flags="">sud-africaines</w> <w f="73" flags="">suffi</w> <w f="73" flags="">supposait</w> - <w f="73" flags="">surement</w> <w f="73" flags="">surnommer</w> <w f="73" flags="">surnommées</w> <w f="73" flags="">surprenantes</w> @@ -64188,7 +64190,6 @@ <w f="56" flags="abbreviation">janv</w> <w f="56" flags="">jardinet</w> <w f="56" flags="">jettera</w> - <w f="56" flags="">jo</w> <w f="56" flags="">jointures</w> <w f="56" flags="">jonglage</w> <w f="56" flags="">jour-même</w> @@ -91408,7 +91409,6 @@ <w f="46" flags="">locustes</w> <w f="46" flags="">logeur</w> <w f="46" flags="">lombalgies</w> - <w f="46" flags="">lon</w> <w f="46" flags="">lorgnant</w> <w f="46" flags="">louveteau</w> <w f="46" flags="">lové</w> @@ -114575,7 +114575,6 @@ <w f="37" flags="">anarchiquement</w> <w f="37" flags="">ancillaires</w> <w f="37" flags="">anda</w> - <w f="37" flags="">android</w> <w f="37" flags="">anesthésiante</w> <w f="37" flags="">anesthésiantes</w> <w f="37" flags="">anglophobe</w> @@ -139003,7 +139002,6 @@ <w f="28" flags="">neurochirurgiens</w> <w f="28" flags="">neurolinguistique</w> <w f="28" flags="">neutralisations</w> - <w f="28" flags="">nic</w> <w f="28" flags="">nidifiant</w> <w f="28" flags="">nivellent</w> <w f="28" flags="">nivelées</w> diff --git a/dictionaries/it_wordlist.xml b/dictionaries/it_wordlist.xml index beb3f6bf1..fea2ace16 100644 --- a/dictionaries/it_wordlist.xml +++ b/dictionaries/it_wordlist.xml @@ -1,4 +1,4 @@ -<wordlist locale="it" description="Italiano" date="1338184542" version="12"> +<wordlist locale="it" description="Italiano" date="1339787744" version="15"> <w f="199" flags="">di</w> <w f="193" flags="">e</w> <w f="189" flags="">il</w> @@ -281,6 +281,7 @@ <w f="136" flags="">sarebbe</w> <w f="136" flags="">sui</w> <w f="135" flags="">agosto</w> + <w f="135" flags="">andare</w> <w f="135" flags="">aprile</w> <w f="135" flags="">avere</w> <w f="135" flags="">avrebbe</w> @@ -422,6 +423,8 @@ <w f="131" flags="">va</w> <w f="130" flags="">Italia</w> <w f="130" flags="">assieme</w> + <w f="130" flags="">buonanotte</w> + <w f="130" flags="">buongiorno</w> <w f="130" flags="">comuni</w> <w f="130" flags="">dallo</w> <w f="130" flags="">dati</w> @@ -448,16 +451,20 @@ <w f="130" flags="">passato</w> <w f="130" flags="">personaggi</w> <w f="130" flags="">piccola</w> + <w f="130" flags="">pizzeria</w> <w f="130" flags="">problemi</w> <w f="130" flags="">proprietà</w> <w f="130" flags="">protagonista</w> <w f="130" flags="">qui</w> <w f="130" flags="">regno</w> + <w f="130" flags="">risate</w> + <w f="130" flags="">ristorante</w> <w f="130" flags="">scritto</w> <w f="130" flags="">spazio</w> <w f="130" flags="">squadre</w> <w f="130" flags="">sta</w> <w f="130" flags="">storico</w> + <w f="130" flags="">super</w> <w f="130" flags="">superiore</w> <w f="130" flags="">tempi</w> <w f="130" flags="">unità</w> @@ -901,7 +908,6 @@ <w f="122" flags="">acqua</w> <w f="122" flags="">acque</w> <w f="122" flags="">all'età</w> - <w f="122" flags="">andare</w> <w f="122" flags="">antico</w> <w f="122" flags="">attuale</w> <w f="122" flags="">autore</w> @@ -1101,6 +1107,7 @@ <w f="120" flags="">caratteristica</w> <w f="120" flags="">centri</w> <w f="120" flags="">certa</w> + <w f="120" flags="">cioccolato</w> <w f="120" flags="">cittadini</w> <w f="120" flags="">coloro</w> <w f="120" flags="">competizione</w> @@ -1563,7 +1570,6 @@ <w f="116" flags="">assai</w> <w f="116" flags="">attore</w> <w f="116" flags="">azione</w> - <w f="116" flags="">banda</w> <w f="116" flags="">bianca</w> <w f="116" flags="">britannica</w> <w f="116" flags="">capace</w> @@ -3199,7 +3205,6 @@ <w f="108" flags="">zampe</w> <w f="107" flags="">Andrea</w> <w f="107" flags="">Cina</w> - <w f="107" flags="">Cristo</w> <w f="107" flags="">Gesù</w> <w f="107" flags="">Inghilterra</w> <w f="107" flags="abbreviation">NBA</w> @@ -4921,7 +4926,6 @@ <w f="102" flags="">rilievi</w> <w f="102" flags="">riportati</w> <w f="102" flags="">rispose</w> - <w f="102" flags="">ristorante</w> <w f="102" flags="">riuscirà</w> <w f="102" flags="">rivalità</w> <w f="102" flags="">rivolto</w> @@ -5143,7 +5147,6 @@ <w f="101" flags="">eventualmente</w> <w f="101" flags="">fabbricato</w> <w f="101" flags="">facilità</w> - <w f="101" flags="">fantasy</w> <w f="101" flags="">farmaco</w> <w f="101" flags="">fauna</w> <w f="101" flags="">favorito</w> @@ -5523,6 +5526,7 @@ <w f="100" flags="">giuria</w> <w f="100" flags="">giuridica</w> <w f="100" flags="">gola</w> + <w f="100" flags="">google</w> <w f="100" flags="">guidò</w> <w f="100" flags="">horror</w> <w f="100" flags="">immigrati</w> @@ -5711,7 +5715,6 @@ <w f="100" flags="">straniera</w> <w f="100" flags="">stretti</w> <w f="100" flags="">suddivisi</w> - <w f="100" flags="">super</w> <w f="100" flags="">svariate</w> <w f="100" flags="">sviluppi</w> <w f="100" flags="">tasse</w> @@ -10174,6 +10177,7 @@ <w f="90" flags="">autorizzato</w> <w f="90" flags="">avvocati</w> <w f="90" flags="">bancarotta</w> + <w f="90" flags="">banda</w> <w f="90" flags="">banditi</w> <w f="90" flags="">basano</w> <w f="90" flags="">basava</w> @@ -10845,7 +10849,6 @@ <w f="89" flags="">chiamavano</w> <w f="89" flags="">cilindrica</w> <w f="89" flags="">cinquant'anni</w> - <w f="89" flags="">cioccolato</w> <w f="89" flags="">cisterna</w> <w f="89" flags="">ciurma</w> <w f="89" flags="">clock</w> @@ -12108,7 +12111,6 @@ <w f="87" flags="">Anthony</w> <w f="87" flags="">Beatrice</w> <w f="87" flags="">Bobby</w> - <w f="87" flags="abbreviation">CIO</w> <w f="87" flags="abbreviation">CT</w> <w f="87" flags="">Cambridge</w> <w f="87" flags="">Cecilia</w> @@ -27991,7 +27993,6 @@ <w f="72" flags="">riportavano</w> <w f="72" flags="">ripropose</w> <w f="72" flags="">risalì</w> - <w f="72" flags="">risate</w> <w f="72" flags="">riscaldare</w> <w f="72" flags="">riscoprire</w> <w f="72" flags="">riscritto</w> @@ -35512,7 +35513,6 @@ <w f="67" flags="">piruvato</w> <w f="67" flags="">pisane</w> <w f="67" flags="">pitagorica</w> - <w f="67" flags="">pizzeria</w> <w f="67" flags="">pizzico</w> <w f="67" flags="">plancton</w> <w f="67" flags="">planimetrico</w> @@ -65079,7 +65079,6 @@ <w f="52" flags="">Suzzara</w> <w f="52" flags="">Svalbard</w> <w f="52" flags="abbreviation">TEC</w> - <w f="52" flags="abbreviation">TEM</w> <w f="52" flags="abbreviation">TFW</w> <w f="52" flags="abbreviation">TVA</w> <w f="52" flags="">Tadeusz</w> @@ -75996,7 +75995,6 @@ <w f="48" flags="">bucolici</w> <w f="48" flags="">bugnate</w> <w f="48" flags="">bungee</w> - <w f="48" flags="">buonanotte</w> <w f="48" flags="">burattinai</w> <w f="48" flags="">burocratizzazione</w> <w f="48" flags="">burqa</w> @@ -82281,7 +82279,6 @@ <w f="46" flags="">gommato</w> <w f="46" flags="">gonfiate</w> <w f="46" flags="">gonfiori</w> - <w f="46" flags="">google</w> <w f="46" flags="">gorgone</w> <w f="46" flags="">graffiato</w> <w f="46" flags="">graffite</w> @@ -92831,7 +92828,6 @@ <w f="42" flags="">brunita</w> <w f="42" flags="abbreviation">btr</w> <w f="42" flags="">bulla</w> - <w f="42" flags="">buongiorno</w> <w f="42" flags="">buonissimi</w> <w f="42" flags="">burlarsi</w> <w f="42" flags="">bustino</w> @@ -138882,7 +138878,6 @@ <w f="27" flags="">Ravegnana</w> <w f="27" flags="">Rifreddo</w> <w f="27" flags="">Righetto</w> - <w f="27" flags="">Risto</w> <w f="27" flags="">Rivanazzano</w> <w f="27" flags="">Roccavione</w> <w f="27" flags="">Romanengo</w> @@ -165969,6 +165964,9 @@ <w f="21" flags="">zuccata</w> <w f="21" flags="">zuccheriere</w> <w f="21" flags="">zuccherose</w> + <w f="20" flags="">Cristo</w> + <w f="20">celestial</w> + <w f="20" flags="">fantasy</w> <w f="18" flags="">Abbateggio</w> <w f="18" flags="">Abbondanzieri</w> <w f="18" flags="">Aconzio</w> diff --git a/java/res/raw/main_de.dict b/java/res/raw/main_de.dict Binary files differindex 1a7b305d6..6122cd3f0 100644 --- a/java/res/raw/main_de.dict +++ b/java/res/raw/main_de.dict diff --git a/java/res/raw/main_en.dict b/java/res/raw/main_en.dict Binary files differindex 516e7d51c..98a9361b5 100644 --- a/java/res/raw/main_en.dict +++ b/java/res/raw/main_en.dict diff --git a/java/res/raw/main_fr.dict b/java/res/raw/main_fr.dict Binary files differindex 17920f0b2..717078c93 100644 --- a/java/res/raw/main_fr.dict +++ b/java/res/raw/main_fr.dict diff --git a/java/res/raw/main_it.dict b/java/res/raw/main_it.dict Binary files differindex 00bbdbe90..82579078c 100644 --- a/java/res/raw/main_it.dict +++ b/java/res/raw/main_it.dict diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 5ddd309c4..cd2d78e4a 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -115,7 +115,7 @@ <string name="note_timestamp_for_researchlog" msgid="1889446857977976026">"Zeitstempel im Protokoll"</string> <string name="notify_recorded_timestamp" msgid="8036429032449612051">"Zeitstempel aufgenommen"</string> <string name="do_not_log_this_session" msgid="413762473641146336">"Nicht protokollieren"</string> - <string name="notify_session_log_deleting" msgid="3299507647764414623">"Protokoll wird gelöscht"</string> + <string name="notify_session_log_deleting" msgid="3299507647764414623">"Protokoll wird gelöscht..."</string> <string name="notify_session_log_deleted" msgid="8687927130100934686">"Protokoll gelöscht"</string> <string name="notify_session_log_not_deleted" msgid="2592908998810755970">"Protokoll NICHT gelöscht"</string> <string name="select_language" msgid="3693815588777926848">"Eingabesprachen"</string> diff --git a/java/res/values-en/whitelist.xml b/java/res/values-en/whitelist.xml index 9612aac5d..262017916 100644 --- a/java/res/values-en/whitelist.xml +++ b/java/res/values-en/whitelist.xml @@ -30,7 +30,6 @@ <item>ill</item> <item>I\'ll</item> - <!-- Following entries came from AutoText the Android keyboard no longer uses. --> <!-- TODO: Trim down more entries by removing ones that get auto-corrected by the Android keyboard's own typing error correction algorithms. --> @@ -63,22 +62,62 @@ <item>been</item> <item>255</item> + <item>bot</item> + <item>not</item> + + <item>255</item> <item>bur</item> <item>but</item> <item>255</item> + <item>cam</item> + <item>can</item> + + <item>255</item> <item>cant</item> <item>can\'t</item> <item>255</item> + <item>dame</item> + <item>same</item> + + <item>255</item> <item>didint</item> <item>didn\'t</item> <item>255</item> + <item>dormer</item> + <item>former</item> + + <item>255</item> + <item>dud</item> + <item>did</item> + + <item>255</item> + <item>fay</item> + <item>day</item> + + <item>255</item> + <item>fife</item> + <item>five</item> + + <item>255</item> + <item>foo</item> + <item>for</item> + + <item>255</item> <item>fora</item> <item>for a</item> <item>255</item> + <item>galled</item> + <item>called</item> + + <item>255</item> + <item>goo</item> + <item>too</item> + + <item>255</item> <item>hed</item> <item>he\'d</item> @@ -91,6 +130,10 @@ <item>here\'s</item> <item>255</item> + <item>hew</item> + <item>new</item> + + <item>255</item> <item>hoe</item> <item>how</item> @@ -115,10 +158,18 @@ <item>how\'ve</item> <item>255</item> + <item>hum</item> + <item>him</item> + + <item>255</item> <item>i</item> <item>I</item> <item>255</item> + <item>ifs</item> + <item>its</item> + + <item>255</item> <item>il</item> <item>I\'ll</item> @@ -139,10 +190,6 @@ <item>it\'s a</item> <item>255</item> - <item>jot</item> - <item>not</item> - - <item>255</item> <item>lets</item> <item>let\'s</item> @@ -151,6 +198,18 @@ <item>ma\'am</item> <item>255</item> + <item>manu</item> + <item>many</item> + + <item>255</item> + <item>mare</item> + <item>made</item> + + <item>255</item> + <item>mew</item> + <item>new</item> + + <item>255</item> <item>mire</item> <item>more</item> @@ -171,14 +230,46 @@ <item>notes</item> <item>255</item> + <item>mow</item> + <item>now</item> + + <item>255</item> + <item>namer</item> + <item>named</item> + + <item>255</item> + <item>nave</item> + <item>have</item> + + <item>255</item> + <item>nee</item> + <item>new</item> + + <item>255</item> + <item>nigh</item> + <item>high</item> + + <item>255</item> <item>nit</item> <item>not</item> <item>255</item> + <item>oft</item> + <item>off</item> + + <item>255</item> <item>os</item> <item>is</item> <item>255</item> + <item>pater</item> + <item>later</item> + + <item>255</item> + <item>rook</item> + <item>took</item> + + <item>255</item> <item>shel</item> <item>she\'ll</item> @@ -187,6 +278,14 @@ <item>shouldn\'t</item> <item>255</item> + <item>sill</item> + <item>will</item> + + <item>255</item> + <item>sown</item> + <item>down</item> + + <item>255</item> <item>thatd</item> <item>that\'d</item> @@ -305,10 +404,6 @@ <item>y\'all</item> <item>255</item> - <item>yo</item> - <item>to</item> - - <item>255</item> <item>youd</item> <item>you\'d</item> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 892abac10..e77a0d04d 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -107,8 +107,8 @@ <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Su tastiera principale"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Su tastiera simboli"</string> <string name="voice_input_modes_off" msgid="3745699748218082014">"Non attivo"</string> - <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic su tastiera principale"</string> - <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic su tastiera simboli"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Microfono su tastiera principale"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Microfono su tastiera simboli"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Comandi vocali disatt."</string> <string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string> <string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string> @@ -147,6 +147,6 @@ <string name="not_now" msgid="6172462888202790482">"Non ora"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Esiste già uno stile di inuput uguale: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string> - <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Impostazioni durata vibrazione alla pressione di un tasto"</string> - <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Impostazioni volume audio alla pressione di un tasto"</string> + <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Durata vibrazione alla pressione tasto"</string> + <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volume audio alla pressione di un tasto"</string> </resources> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index bd3b15052..ad82ff8ca 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -142,7 +142,7 @@ <string name="save" msgid="7646738597196767214">"Hifadhi"</string> <string name="subtype_locale" msgid="8576443440738143764">"Lugha"</string> <string name="keyboard_layout_set" msgid="4309233698194565609">"Mpangilio"</string> - <string name="custom_input_style_note_message" msgid="8826731320846363423">"Unaweza kugeuza kukufaa mfumo wako ma maingizo ili kuwezeshwa kabla ya kuanza kuutumia. Unataka kuuwesha sasa?"</string> + <string name="custom_input_style_note_message" msgid="8826731320846363423">"Mtindo wa ingizo lako maalum unahitaji kuwa umewezeshwa kabla uanze kulitumia. Unataka kuuwesha sasa?"</string> <string name="enable" msgid="5031294444630523247">"Wezesha"</string> <string name="not_now" msgid="6172462888202790482">"Sio sasa"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Mfumo sawa wa maingizo tayari upo: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index e20061d7d..adf51ceeb 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -63,7 +63,7 @@ <integer name="config_long_press_key_timeout">400</integer> <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 --> <integer name="config_long_press_shift_key_timeout">1200</integer> - <integer name="config_ignore_alt_code_key_timeout">700</integer> + <integer name="config_ignore_alt_code_key_timeout">350</integer> <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if false --> <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool> diff --git a/java/res/xml-sw600dp/key_apostrophe.xml b/java/res/xml-sw600dp/key_apostrophe.xml index 0c838db56..2aec34729 100644 --- a/java/res/xml-sw600dp/key_apostrophe.xml +++ b/java/res/xml-sw600dp/key_apostrophe.xml @@ -28,6 +28,16 @@ <Key latin:keyLabel="-" /> </case> + <case + latin:languageCode="fa" + > + <Key + latin:keyLabel="!text/keylabel_for_apostrophe" + latin:keyHintLabel="!text/keyhintlabel_for_apostrophe" + latin:keyLabelFlags="hasPopupHint" + latin:moreKeys="!text/more_keys_for_apostrophe" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </case> <default> <Key latin:keyLabel="!text/keylabel_for_apostrophe" diff --git a/java/res/xml-sw600dp/key_dash.xml b/java/res/xml-sw600dp/key_dash.xml index 118b67f27..b139c29c8 100644 --- a/java/res/xml-sw600dp/key_dash.xml +++ b/java/res/xml-sw600dp/key_dash.xml @@ -34,6 +34,7 @@ <Key latin:keyLabel="." latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics" + latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_arabic_diacritics" latin:keyStyle="hasShiftedLetterHintStyle" /> </case> diff --git a/java/res/xml-sw600dp/rowkeys_farsi2.xml b/java/res/xml-sw600dp/rowkeys_farsi2.xml index 98e0f2186..234f98430 100644 --- a/java/res/xml-sw600dp/rowkeys_farsi2.xml +++ b/java/res/xml-sw600dp/rowkeys_farsi2.xml @@ -29,10 +29,12 @@ latin:keyLabel="س" /> <!-- U+06CC: "ی" ARABIC LETTER FARSI YEH U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE - U+064A: "ي" ARABIC LETTER YEH --> + U+064A: "ي" ARABIC LETTER YEH + U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM + U+0649: "ى" ARABIC LETTER ALEF MAKSURA --> <Key latin:keyLabel="ی" - latin:moreKeys="ئ,ي" /> + latin:moreKeys="ئ,ي,ﯨ|ى" /> <!-- U+0628: "ب" ARABIC LETTER BEH --> <Key latin:keyLabel="ب" /> @@ -42,17 +44,18 @@ <!-- U+0627: "ا" ARABIC LETTER ALEF U+0621: "ء" ARABIC LETTER HAMZA U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE - U+0672: "ٲ" ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE + U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE U+0671: "ٱ" ARABIC LETTER ALEF WASLA - U+0673: "ٳ" ARABIC LETTER ALEF WITH WAVY HAMZA BELOW--> - <!-- TODO: DroidSansArabic lacks the glyph of U+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE --> - <!-- TODO: DroidSansArabic lacks the glyph of U+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW --> + U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW --> <Key latin:keyLabel="ا" - latin:moreKeys="ء,آ,ٲ,ٱ,ٳ" /> - <!-- U+062A: "ت" ARABIC LETTER TEH --> + latin:moreKeys="ء,آ,أ,ٱ,إ" /> + <!-- U+062A: "ت" ARABIC LETTER TEH + U+062B: "ﺙ" ARABIC LETTER THEH + U+0629: "ة": ARABIC LETTER TEH MARBUTA --> <Key - latin:keyLabel="ت" /> + latin:keyLabel="ت" + latin:moreKeys="ث,ة" /> <!-- U+0646: "ن" ARABIC LETTER NOON --> <Key latin:keyLabel="ن" /> diff --git a/java/res/xml-sw600dp/rowkeys_farsi3.xml b/java/res/xml-sw600dp/rowkeys_farsi3.xml index c80c14a55..998ba72d6 100644 --- a/java/res/xml-sw600dp/rowkeys_farsi3.xml +++ b/java/res/xml-sw600dp/rowkeys_farsi3.xml @@ -27,11 +27,12 @@ <!-- U+0637: "ط" ARABIC LETTER TAH --> <Key latin:keyLabel="ط" /> - <!-- U+0632: "ز" ARABIC LETTER ZAIN - U+0698: "ژ" ARABIC LETTER JEH --> + <!-- U+0698: "ژ" ARABIC LETTER JEH --> <Key - latin:keyLabel="ز" - latin:moreKeys="ژ" /> + latin:keyLabel="ژ" /> + <!-- U+0632: "ز" ARABIC LETTER ZAIN --> + <Key + latin:keyLabel="ز" /> <!-- U+0631: "ر" ARABIC LETTER REH --> <Key latin:keyLabel="ر" /> @@ -45,9 +46,11 @@ <Key latin:keyLabel="پ" /> <!-- U+0648: "و" ARABIC LETTER WAW - U+0676: "ٶ" ARABIC LETTER HIGH HAMZA WAW --> - <!-- TODO: DroidSansArabic lacks the glyph of U+0676 ARABIC LETTER HIGH HAMZA WAW --> + U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE --> <Key latin:keyLabel="و" - latin:moreKeys="ٶ" /> + latin:moreKeys="ؤ" /> + <!-- U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE --> + <Key + latin:keyLabel="آ" /> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_symbols2.xml b/java/res/xml-sw600dp/rowkeys_symbols2.xml index 6fe86240c..d7067e0cf 100644 --- a/java/res/xml-sw600dp/rowkeys_symbols2.xml +++ b/java/res/xml-sw600dp/rowkeys_symbols2.xml @@ -21,15 +21,43 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <Key - latin:keyLabel="#" /> + <switch> + <case + latin:languageCode="fa" + > + <!-- U+066C: "٬" ARABIC THOUSANDS SEPARATOR --> + <Key + latin:keyLabel="٬" + latin:keyHintLabel="&" + latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint" + latin:moreKeys="&" /> + </case> + <default> + <Key + latin:keyLabel="#" /> + </default> + </switch> <Key latin:keyStyle="currencyKeyStyle" /> <Key latin:keyLabel="!text/keylabel_for_symbols_percent" latin:moreKeys="!text/more_keys_for_symbols_percent" /> - <Key - latin:keyLabel="&" /> + <switch> + <case + latin:languageCode="fa" + > + <!-- U+066B: "٫" ARABIC DECIMAL SEPARATOR --> + <Key + latin:keyLabel="٫" + latin:keyHintLabel="#" + latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint" + latin:moreKeys="#" /> + </case> + <default> + <Key + latin:keyLabel="&" /> + </default> + </switch> <Key latin:keyLabel="*" latin:moreKeys="!text/more_keys_for_star" /> diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml index 1ce658648..52c2d9329 100644 --- a/java/res/xml-sw600dp/rows_farsi.xml +++ b/java/res/xml-sw600dp/rows_farsi.xml @@ -44,8 +44,6 @@ <include latin:keyboardLayout="@xml/rowkeys_farsi3" latin:keyXPos="4.091%p" /> - <include - latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="enterKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_farsi.xml b/java/res/xml-sw768dp/rows_farsi.xml index 28031bb82..4b4c970fd 100644 --- a/java/res/xml-sw768dp/rows_farsi.xml +++ b/java/res/xml-sw768dp/rows_farsi.xml @@ -52,8 +52,6 @@ <include latin:keyboardLayout="@xml/rowkeys_farsi3" latin:keyXPos="13.829%p" /> - <include - latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="enterKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml index 4584e5c96..bc9ecdf2f 100644 --- a/java/res/xml/keys_less_greater.xml +++ b/java/res/xml/keys_less_greater.xml @@ -21,12 +21,30 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <Key - latin:keyLabel="<" - latin:code="!code/key_less_than" - latin:moreKeys="!text/more_keys_for_less_than" /> - <Key - latin:keyLabel=">" - latin:code="!code/key_greater_than" - latin:moreKeys="!text/more_keys_for_greater_than" /> + <switch> + <case + latin:languageCode="fa" + > + <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> + <Key + latin:keyLabel="«" + latin:code="0x00BB" + latin:moreKeys="!text/more_keys_for_less_than" /> + <Key + latin:keyLabel="»" + latin:code="0x00AB" + latin:moreKeys="!text/more_keys_for_greater_than" /> + </case> + <default> + <Key + latin:keyLabel="<" + latin:code="!code/key_less_than" + latin:moreKeys="!text/more_keys_for_less_than" /> + <Key + latin:keyLabel=">" + latin:code="!code/key_greater_than" + latin:moreKeys="!text/more_keys_for_greater_than" /> + </default> + </switch> </merge> diff --git a/java/res/xml/rowkeys_farsi1.xml b/java/res/xml/rowkeys_farsi1.xml index 81618af77..840b048f7 100644 --- a/java/res/xml/rowkeys_farsi1.xml +++ b/java/res/xml/rowkeys_farsi1.xml @@ -27,32 +27,32 @@ <Key latin:keyLabel="ص" latin:moreKeys="ض,%" - latin:keyHintLabel="1" - latin:additionalMoreKeys="1,۱" /> + latin:keyHintLabel="۱" + latin:additionalMoreKeys="۱,1" /> <!-- U+0642: "ق" ARABIC LETTER QAF U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO --> <Key latin:keyLabel="ق" - latin:keyHintLabel="2" - latin:additionalMoreKeys="2,۲" /> + latin:keyHintLabel="۲" + latin:additionalMoreKeys="۲,2" /> <!-- U+0641: "ف" ARABIC LETTER FEH U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE --> <Key latin:keyLabel="ف" - latin:keyHintLabel="3" - latin:additionalMoreKeys="3,۳" /> + latin:keyHintLabel="۳" + latin:additionalMoreKeys="۳,3" /> <!-- U+063A: "غ" ARABIC LETTER GHAIN U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR --> <Key latin:keyLabel="غ" - latin:keyHintLabel="4" - latin:additionalMoreKeys="4,۴" /> + latin:keyHintLabel="۴" + latin:additionalMoreKeys="۴,4" /> <!-- U+0639: "ع" ARABIC LETTER AIN U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE --> <Key latin:keyLabel="ع" - latin:keyHintLabel="5" - latin:additionalMoreKeys="5,۵" /> + latin:keyHintLabel="۵" + latin:additionalMoreKeys="۵,5" /> <!-- U+0647: "ه" ARABIC LETTER HEH U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM U+0647/U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER @@ -62,30 +62,30 @@ <Key latin:keyLabel="ه" latin:moreKeys="ﻫ|ه‍,هٔ,ة,%" - latin:keyHintLabel="6" - latin:additionalMoreKeys="6,۶" /> + latin:keyHintLabel="۶" + latin:additionalMoreKeys="۶,6" /> <!-- U+062E: "خ" ARABIC LETTER KHAH U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN --> <Key latin:keyLabel="خ" - latin:keyHintLabel="7" - latin:additionalMoreKeys="7,۷" /> + latin:keyHintLabel="۷" + latin:additionalMoreKeys="۷,7" /> <!-- U+062D: "ح" ARABIC LETTER HAH U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT --> <Key latin:keyLabel="ح" - latin:keyHintLabel="8" - latin:additionalMoreKeys="8,۸" /> + latin:keyHintLabel="۸" + latin:additionalMoreKeys="۸,8" /> <!-- U+062C: "ج" ARABIC LETTER JEEM U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE --> <Key latin:keyLabel="ج" - latin:keyHintLabel="9" - latin:additionalMoreKeys="9,۹" /> + latin:keyHintLabel="۹" + latin:additionalMoreKeys="۹,9" /> <!-- U+0686: "چ" ARABIC LETTER TCHEH U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO --> <Key latin:keyLabel="چ" - latin:keyHintLabel="0" - latin:additionalMoreKeys="0,۰" /> + latin:keyHintLabel="۰" + latin:additionalMoreKeys="۰,0" /> </merge> diff --git a/java/res/xml/rowkeys_farsi2.xml b/java/res/xml/rowkeys_farsi2.xml index 77279c60f..21548936e 100644 --- a/java/res/xml/rowkeys_farsi2.xml +++ b/java/res/xml/rowkeys_farsi2.xml @@ -31,10 +31,12 @@ latin:moreKeys="ض" /> <!-- U+06CC: "ی" ARABIC LETTER FARSI YEH U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE - U+064A: "ي" ARABIC LETTER YEH --> + U+064A: "ي" ARABIC LETTER YEH + U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM + U+0649: "ى" ARABIC LETTER ALEF MAKSURA --> <Key latin:keyLabel="ی" - latin:moreKeys="ئ,ي" /> + latin:moreKeys="ئ,ي,ﯨ|ى" /> <!-- U+0628: "ب" ARABIC LETTER BEH --> <Key latin:keyLabel="ب" /> @@ -44,19 +46,18 @@ <!-- U+0627: "ا" ARABIC LETTER ALEF U+0621: "ء" ARABIC LETTER HAMZA U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE - U+0672: "ٲ" ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE + U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE U+0671: "ٱ" ARABIC LETTER ALEF WASLA - U+0673: "ٳ" ARABIC LETTER ALEF WITH WAVY HAMZA BELOW--> - <!-- TODO: DroidSansArabic lacks the glyph of U+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE --> - <!-- TODO: DroidSansArabic lacks the glyph of U+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW --> + U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW --> <Key latin:keyLabel="ا" - latin:moreKeys="ء,آ,ٲ,ٱ,ٳ" /> + latin:moreKeys="ء,آ,أ,ٱ,إ" /> <!-- U+062A: "ت" ARABIC LETTER TEH - U+062B: "ﺙ" ARABIC LETTER THEH --> + U+062B: "ﺙ" ARABIC LETTER THEH + U+0629: "ة": ARABIC LETTER TEH MARBUTA --> <Key latin:keyLabel="ت" - latin:moreKeys="ث" /> + latin:moreKeys="ث,ة" /> <!-- U+0646: "ن" ARABIC LETTER NOON --> <Key latin:keyLabel="ن" /> diff --git a/java/res/xml/rowkeys_farsi3.xml b/java/res/xml/rowkeys_farsi3.xml index 44710e06a..29c35134c 100644 --- a/java/res/xml/rowkeys_farsi3.xml +++ b/java/res/xml/rowkeys_farsi3.xml @@ -44,11 +44,10 @@ <Key latin:keyLabel="پ" /> <!-- U+0648: "و" ARABIC LETTER WAW - U+0676: "ٶ" ARABIC LETTER HIGH HAMZA WAW --> - <!-- TODO: DroidSansArabic lacks the glyph of U+0676 ARABIC LETTER HIGH HAMZA WAW --> + U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE --> <Key latin:keyLabel="و" - latin:moreKeys="ٶ" /> + latin:moreKeys="ؤ" /> <!-- U+06AF: "گ" ARABIC LETTER GAF --> <Key latin:keyLabel="گ" /> diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml index 34b9aa2ee..425e20470 100644 --- a/java/res/xml/rowkeys_symbols2.xml +++ b/java/res/xml/rowkeys_symbols2.xml @@ -21,10 +21,28 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <Key - latin:keyLabel="\@" /> - <Key - latin:keyLabel="\#" /> + <switch> + <case + latin:languageCode="fa" + > + <!-- U+066C: "٬" ARABIC THOUSANDS SEPARATOR + U+066B: "٫" ARABIC DECIMAL SEPARATOR --> + <Key + latin:keyLabel="٬" + latin:keyHintLabel="\@" + latin:moreKeys="\@" /> + <Key + latin:keyLabel="٫" + latin:keyHintLabel="#" + latin:moreKeys="#" /> + </case> + <default> + <Key + latin:keyLabel="\@" /> + <Key + latin:keyLabel="#" /> + </default> + </switch> <Key latin:keyStyle="currencyKeyStyle" /> <Key diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml index 2b2d9a4ea..c89716bc7 100644 --- a/java/res/xml/rowkeys_symbols3.xml +++ b/java/res/xml/rowkeys_symbols3.xml @@ -24,12 +24,30 @@ <Key latin:keyLabel="!text/keylabel_for_symbols_exclamation" latin:moreKeys="!text/more_keys_for_symbols_exclamation" /> - <Key - latin:keyLabel=""" - latin:moreKeys="!text/more_keys_for_double_quote" /> - <Key - latin:keyLabel="\'" - latin:moreKeys="!text/more_keys_for_single_quote" /> + <switch> + <case + latin:languageCode="fa" + > + <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> + <Key + latin:keyLabel="«" + latin:code="0x00BB" + latin:moreKeys="!text/more_keys_for_double_quote" /> + <Key + latin:keyLabel="»" + latin:code="0x00AB" + latin:moreKeys="!text/more_keys_for_single_quote" /> + </case> + <default> + <Key + latin:keyLabel=""" + latin:moreKeys="!text/more_keys_for_double_quote" /> + <Key + latin:keyLabel="\'" + latin:moreKeys="!text/more_keys_for_single_quote" /> + </default> + </switch> <Key latin:keyLabel=":" /> <Key diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java index ba08c593c..70e38fdb0 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java @@ -275,17 +275,6 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat return false; } - @Override - public AccessibilityNodeInfoCompat findAccessibilityFocus(int virtualViewId) { - return createAccessibilityNodeInfo(mAccessibilityFocusedView); - } - - @Override - public AccessibilityNodeInfoCompat accessibilityFocusSearch(int direction, int virtualViewId) { - // Focus search is not currently supported for IMEs. - return null; - } - /** * Sends an accessibility event for the given {@link Key}. * diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 917e233a8..8c218c6d3 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -993,7 +993,7 @@ public final class KeyboardTextsSet { /* ~41 */ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_double_quote">“,”,„,‟,«|»,»|«</string> - /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB", + /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\",\'", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", @@ -1031,8 +1031,8 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>", + /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<", // U+0655: "ٕ" ARABIC HAMZA BELOW // U+0652: "ْ" ARABIC SUKUN // U+0651: "ّ" ARABIC SHADDA @@ -1049,7 +1049,7 @@ public final class KeyboardTextsSet { // U+0640: "ـ" ARABIC TATWEEL // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. /* 56 */ "!fixedColumnOrder!7,\u0655,\u0652,\u0651,\u064C,\u064D,\u064B,\u0654,\u0656,\u0670,\u0653,\u064F,\u0650,\u064E,\u0640\u0640\u0640|\u0640", - /* 57 */ "\u0653", + /* 57 */ "\u064B", // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE /* 58 */ "\u06F1", // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO @@ -1101,14 +1101,16 @@ public final class KeyboardTextsSet { // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK /* 98 */ "\u060C", /* 99 */ "!", /* 100 */ "!,\\,", /* 101 */ "\u061F", /* 102 */ "\u061F,?", - /* 103 */ null, - /* 104 */ null, - /* 105 */ "\u061F,\u061B,!,:,-,/,\',\"", + /* 103 */ "\u060C", + /* 104 */ "\u061F", + /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB", }; /* Language fi: Finnish */ diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java index 7cd9bc2a8..9c3d46e70 100644 --- a/java/src/com/android/inputmethod/latin/Dictionary.java +++ b/java/src/com/android/inputmethod/latin/Dictionary.java @@ -115,4 +115,12 @@ public abstract class Dictionary { public void close() { // empty base implementation } + + /** + * Subclasses may override to indicate that this Dictionary is not yet properly initialized. + */ + + public boolean isInitialized() { + return true; + } } diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java index 1a05fcd86..26c2e637e 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java +++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java @@ -82,8 +82,9 @@ public class DictionaryCollection extends Dictionary { return maxFreq; } - public boolean isEmpty() { - return mDictionaries.isEmpty(); + @Override + public boolean isInitialized() { + return !mDictionaries.isEmpty(); } @Override diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index fc4d1150c..da4a11433 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -122,7 +122,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private int mSpaceState; private SettingsValues mCurrentSettings; - private InputAttributes mInputAttributes; private View mExtractArea; private View mKeyPreviewBackingView; @@ -428,10 +427,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // Note that the calling sequence of onCreate() and onCurrentInputMethodSubtypeChanged() // is not guaranteed. It may even be called at the same time on a different thread. if (null == mPrefs) mPrefs = PreferenceManager.getDefaultSharedPreferences(this); + final InputAttributes inputAttributes = + new InputAttributes(getCurrentInputEditorInfo(), isFullscreenMode()); final RunInLocale<SettingsValues> job = new RunInLocale<SettingsValues>() { @Override protected SettingsValues job(Resources res) { - return new SettingsValues(mPrefs, mInputAttributes, LatinIME.this); + return new SettingsValues(mPrefs, inputAttributes, LatinIME.this); } }; mCurrentSettings = job.runInLocale(mResources, mSubtypeSwitcher.getCurrentSubtypeLocale()); @@ -456,6 +457,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } mIsMainDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(this, subtypeLocale); + if (ProductionFlag.IS_EXPERIMENTAL) { + ResearchLogger.getInstance().initSuggest(mSuggest); + } mUserDictionary = new UserBinaryDictionary(this, localeStr); mIsUserDictionaryAvailable = mUserDictionary.isEnabled(); @@ -671,7 +675,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen updateFullscreenMode(); mLastSelectionStart = editorInfo.initialSelStart; mLastSelectionEnd = editorInfo.initialSelEnd; - mInputAttributes = new InputAttributes(editorInfo, isFullscreenMode()); mApplicationSpecifiedCompletions = null; inputView.closing(); @@ -825,7 +828,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen */ @Override public void onExtractedTextClicked() { - if (isSuggestionsRequested()) return; + if (mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) return; super.onExtractedTextClicked(); } @@ -841,7 +844,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen */ @Override public void onExtractedCursorMovement(int dx, int dy) { - if (isSuggestionsRequested()) return; + if (mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) return; super.onExtractedCursorMovement(dx, dy); } @@ -1446,7 +1449,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } } - if (isSuggestionsRequested()) { + if (mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) { restartSuggestionsOnWordBeforeCursorIfAtEndOfWord(); } } @@ -1491,7 +1494,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // thread here. if (!isComposingWord && (isAlphabet(primaryCode) || mCurrentSettings.isSymbolExcludedFromWordSeparators(primaryCode)) - && isSuggestionsRequested() && + && mCurrentSettings.isSuggestionsRequested(mDisplayOrientation) && !mConnection.isCursorTouchingWord(mCurrentSettings)) { // Reset entirely the composing state anyway, then start composing a new word unless // the character is a single quote. The idea here is, single quote is not a @@ -1573,7 +1576,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen sendKeyCodePoint(primaryCode); if (Keyboard.CODE_SPACE == primaryCode) { - if (isSuggestionsRequested()) { + if (mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) { if (maybeDoubleSpace()) { mSpaceState = SPACE_STATE_DOUBLE; } else if (!isShowingPunctuationList()) { @@ -1624,13 +1627,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen inputView.closing(); } - public boolean isSuggestionsRequested() { - // TODO: move this method to mCurrentSettings - return mCurrentSettings.isSuggestionStripRequestedByTextField() - && (mCurrentSettings.isCorrectionOn() - || mCurrentSettings.isSuggestionStripVisibleInOrientation(mDisplayOrientation)); - } - public boolean isShowingPunctuationList() { if (mSuggestionsView == null) return false; return mCurrentSettings.mSuggestPuncList == mSuggestionsView.getSuggestions(); @@ -1645,7 +1641,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen return false; if (mCurrentSettings.isApplicationSpecifiedCompletionsOn()) return true; - return isSuggestionsRequested(); + return mCurrentSettings.isSuggestionsRequested(mDisplayOrientation); } public void switchToKeyboardView() { @@ -1694,7 +1690,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen public void updateSuggestions() { // Check if we have a suggestion engine attached. - if ((mSuggest == null || !isSuggestionsRequested())) { + if ((mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation))) { if (mWordComposer.isComposingWord()) { Log.w(TAG, "Called updateSuggestions but suggestions were not requested!"); mWordComposer.setAutoCorrection(mWordComposer.getTypedWord()); @@ -1923,7 +1919,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } public void updateBigramPredictions() { - if (mSuggest == null || !isSuggestionsRequested()) + if (mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) return; if (!mCurrentSettings.mBigramPredictionEnabled) { @@ -2222,8 +2218,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final Keyboard keyboard = mKeyboardSwitcher.getKeyboard(); final int keyboardMode = keyboard != null ? keyboard.mId.mMode : -1; p.println(" Keyboard mode = " + keyboardMode); - p.println(" mIsSuggestionsStripRequestedByTextField = " - + mCurrentSettings.isSuggestionStripRequestedByTextField()); + p.println(" mIsSuggestionsSuggestionsRequested = " + + mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)); p.println(" mCorrectionMode=" + mCurrentSettings.mCorrectionMode); p.println(" isComposingWord=" + mWordComposer.isComposingWord()); p.println(" isCorrectionOn=" + mCurrentSettings.isCorrectionOn()); diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java index 5779d99bd..ee596924f 100644 --- a/java/src/com/android/inputmethod/latin/ResearchLogger.java +++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java @@ -51,7 +51,9 @@ import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.UUID; @@ -67,6 +69,7 @@ import java.util.UUID; public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = ResearchLogger.class.getSimpleName(); private static final boolean DEBUG = false; + private static final boolean OUTPUT_ENTIRE_BUFFER = false; // true may disclose private info /* package */ static boolean sIsLogging = false; private static final int OUTPUT_FORMAT_VERSION = 1; private static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode"; @@ -96,10 +99,19 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final int LOGGING_STATE_STOPPING = 2; private boolean mIsPasswordView = false; + // digits entered by the user are replaced with this codepoint. + /* package for test */ static final int DIGIT_REPLACEMENT_CODEPOINT = + Character.codePointAt("\uE000", 0); // U+E000 is in the "private-use area" + // U+E001 is in the "private-use area" + /* package for test */ static final String WORD_REPLACEMENT_STRING = "\uE001"; // set when LatinIME should ignore an onUpdateSelection() callback that // arises from operations in this class private static boolean sLatinIMEExpectingUpdateSelection = false; + // used to check whether words are not unique + private Suggest mSuggest; + private Dictionary mDictionary; + private static class NullOutputStream extends OutputStream { /** {@inheritDoc} */ @Override @@ -314,6 +326,10 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang latinIME.showOptionDialog(builder.create()); } + public void initSuggest(Suggest suggest) { + mSuggest = suggest; + } + private void setIsPasswordView(boolean isPasswordView) { mIsPasswordView = isPasswordView; } @@ -327,125 +343,241 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final String EVENT_TYPE_KEY = "_ty"; private static final Object[] EVENTKEYS_NULLVALUES = {}; + private LogUnit mCurrentLogUnit = new LogUnit(); + + /** + * Buffer a research log event, flagging it as privacy-sensitive. + * + * This event contains potentially private information. If the word that this event is a part + * of is determined to be privacy-sensitive, then this event should not be included in the + * output log. The system waits to output until the containing word is known. + * + * @param keys an array containing a descriptive name for the event, followed by the keys + * @param values an array of values, either a String or Number. length should be one + * less than the keys array + */ + private synchronized void enqueuePotentiallyPrivateEvent(final String[] keys, + final Object[] values) { + assert values.length + 1 == keys.length; + mCurrentLogUnit.addLogAtom(keys, values, true); + } + /** - * Write a description of the event out to the ResearchLog. + * Buffer a research log event, flaggint it as not privacy-sensitive. * - * Runs in the background to avoid blocking the UI thread. + * This event contains no potentially private information. Even if the word that this event + * is privacy-sensitive, this event can still safely be sent to the output log. The system + * waits until the containing word is known so that this event can be written in the proper + * temporal order with other events that may be privacy sensitive. * * @param keys an array containing a descriptive name for the event, followed by the keys * @param values an array of values, either a String or Number. length should be one * less than the keys array */ - private synchronized void writeEvent(final String[] keys, final Object[] values) { + private synchronized void enqueueEvent(final String[] keys, final Object[] values) { assert values.length + 1 == keys.length; + mCurrentLogUnit.addLogAtom(keys, values, false); + } + + private boolean isInDictionary(CharSequence word) { + return (mDictionary != null) && (mDictionary.isValidWord(word)); + } + + /** + * Write out enqueued LogEvents to the log, filtered for privacy. + * + * If word is in the dictionary, then it is not privacy-sensitive and all LogEvents related to + * it can be written to the log. If the word is not in the dictionary, then it may correspond + * to a proper name, which might reveal private information, so neither the word nor any + * information related to the word (e.g. the down/motion/up coordinates) should be revealed. + * These LogEvents have been marked as privacy-sensitive; non privacy-sensitive events are still + * written out. + * + * @param word the word to be checked for inclusion in the dictionary + */ + /* package for test */ synchronized void flushQueue(CharSequence word) { if (isAllowedToLog()) { - mLoggingHandler.post(new Runnable() { - @Override - public void run() { - try { - mJsonWriter.beginObject(); - mJsonWriter.name(CURRENT_TIME_KEY).value(System.currentTimeMillis()); - mJsonWriter.name(UPTIME_KEY).value(SystemClock.uptimeMillis()); - mJsonWriter.name(EVENT_TYPE_KEY).value(keys[0]); - final int length = values.length; - for (int i = 0; i < length; i++) { - mJsonWriter.name(keys[i + 1]); - Object value = values[i]; - if (value instanceof String) { - mJsonWriter.value((String) value); - } else if (value instanceof Number) { - mJsonWriter.value((Number) value); - } else if (value instanceof Boolean) { - mJsonWriter.value((Boolean) value); - } else if (value instanceof CompletionInfo[]) { - CompletionInfo[] ci = (CompletionInfo[]) value; - mJsonWriter.beginArray(); - for (int j = 0; j < ci.length; j++) { - mJsonWriter.value(ci[j].toString()); - } - mJsonWriter.endArray(); - } else if (value instanceof SharedPreferences) { - SharedPreferences prefs = (SharedPreferences) value; - mJsonWriter.beginObject(); - for (Map.Entry<String,?> entry : prefs.getAll().entrySet()) { - mJsonWriter.name(entry.getKey()); - final Object innerValue = entry.getValue(); - if (innerValue == null) { - mJsonWriter.nullValue(); - } else if (innerValue instanceof Boolean) { - mJsonWriter.value((Boolean) innerValue); - } else if (innerValue instanceof Number) { - mJsonWriter.value((Number) innerValue); - } else { - mJsonWriter.value(innerValue.toString()); - } - } - mJsonWriter.endObject(); - } else if (value instanceof Key[]) { - Key[] keys = (Key[]) value; - mJsonWriter.beginArray(); - for (Key key : keys) { - mJsonWriter.beginObject(); - mJsonWriter.name("code").value(key.mCode); - mJsonWriter.name("altCode").value(key.mAltCode); - mJsonWriter.name("x").value(key.mX); - mJsonWriter.name("y").value(key.mY); - mJsonWriter.name("w").value(key.mWidth); - mJsonWriter.name("h").value(key.mHeight); - mJsonWriter.endObject(); - } - mJsonWriter.endArray(); - } else if (value instanceof SuggestedWords) { - SuggestedWords words = (SuggestedWords) value; - mJsonWriter.beginObject(); - mJsonWriter.name("typedWordValid").value(words.mTypedWordValid); - mJsonWriter.name("hasAutoCorrectionCandidate") - .value(words.mHasAutoCorrectionCandidate); - mJsonWriter.name("isPunctuationSuggestions") - .value(words.mIsPunctuationSuggestions); - mJsonWriter.name("allowsToBeAutoCorrected") - .value(words.mAllowsToBeAutoCorrected); - mJsonWriter.name("isObsoleteSuggestions") - .value(words.mIsObsoleteSuggestions); - mJsonWriter.name("isPrediction") - .value(words.mIsPrediction); - mJsonWriter.name("words"); - mJsonWriter.beginArray(); - final int size = words.size(); - for (int j = 0; j < size; j++) { - SuggestedWordInfo wordInfo = words.getWordInfo(j); - mJsonWriter.value(wordInfo.toString()); - } - mJsonWriter.endArray(); - mJsonWriter.endObject(); - } else if (value == null) { - mJsonWriter.nullValue(); - } else { - Log.w(TAG, "Unrecognized type to be logged: " + - (value == null ? "<null>" : value.getClass().getName())); - mJsonWriter.nullValue(); - } + // check for dictionary + if (mDictionary == null && mSuggest != null && mSuggest.hasMainDictionary()) { + mDictionary = mSuggest.getMainDictionary(); + } + mCurrentLogUnit.setIsPrivacySafe(word != null && isInDictionary(word)); + mLoggingHandler.post(mCurrentLogUnit); + mCurrentLogUnit = new LogUnit(); + } + } + + private synchronized void outputEvent(final String[] keys, final Object[] values) { + try { + mJsonWriter.beginObject(); + mJsonWriter.name(CURRENT_TIME_KEY).value(System.currentTimeMillis()); + mJsonWriter.name(UPTIME_KEY).value(SystemClock.uptimeMillis()); + mJsonWriter.name(EVENT_TYPE_KEY).value(keys[0]); + final int length = values.length; + for (int i = 0; i < length; i++) { + mJsonWriter.name(keys[i + 1]); + Object value = values[i]; + if (value instanceof String) { + mJsonWriter.value((String) value); + } else if (value instanceof Number) { + mJsonWriter.value((Number) value); + } else if (value instanceof Boolean) { + mJsonWriter.value((Boolean) value); + } else if (value instanceof CompletionInfo[]) { + CompletionInfo[] ci = (CompletionInfo[]) value; + mJsonWriter.beginArray(); + for (int j = 0; j < ci.length; j++) { + mJsonWriter.value(ci[j].toString()); + } + mJsonWriter.endArray(); + } else if (value instanceof SharedPreferences) { + SharedPreferences prefs = (SharedPreferences) value; + mJsonWriter.beginObject(); + for (Map.Entry<String,?> entry : prefs.getAll().entrySet()) { + mJsonWriter.name(entry.getKey()); + final Object innerValue = entry.getValue(); + if (innerValue == null) { + mJsonWriter.nullValue(); + } else if (innerValue instanceof Boolean) { + mJsonWriter.value((Boolean) innerValue); + } else if (innerValue instanceof Number) { + mJsonWriter.value((Number) innerValue); + } else { + mJsonWriter.value(innerValue.toString()); } + } + mJsonWriter.endObject(); + } else if (value instanceof Key[]) { + Key[] keyboardKeys = (Key[]) value; + mJsonWriter.beginArray(); + for (Key keyboardKey : keyboardKeys) { + mJsonWriter.beginObject(); + mJsonWriter.name("code").value(keyboardKey.mCode); + mJsonWriter.name("altCode").value(keyboardKey.mAltCode); + mJsonWriter.name("x").value(keyboardKey.mX); + mJsonWriter.name("y").value(keyboardKey.mY); + mJsonWriter.name("w").value(keyboardKey.mWidth); + mJsonWriter.name("h").value(keyboardKey.mHeight); mJsonWriter.endObject(); - } catch (IOException e) { - e.printStackTrace(); - Log.w(TAG, "Error in JsonWriter; disabling logging"); - try { - mJsonWriter.close(); - } catch (IllegalStateException e1) { - // assume that this is just the json not being terminated properly. - // ignore - } catch (IOException e1) { - e1.printStackTrace(); - } finally { - mJsonWriter = NULL_JSON_WRITER; - } } + mJsonWriter.endArray(); + } else if (value instanceof SuggestedWords) { + SuggestedWords words = (SuggestedWords) value; + mJsonWriter.beginObject(); + mJsonWriter.name("typedWordValid").value(words.mTypedWordValid); + mJsonWriter.name("hasAutoCorrectionCandidate") + .value(words.mHasAutoCorrectionCandidate); + mJsonWriter.name("isPunctuationSuggestions") + .value(words.mIsPunctuationSuggestions); + mJsonWriter.name("allowsToBeAutoCorrected") + .value(words.mAllowsToBeAutoCorrected); + mJsonWriter.name("isObsoleteSuggestions") + .value(words.mIsObsoleteSuggestions); + mJsonWriter.name("isPrediction") + .value(words.mIsPrediction); + mJsonWriter.name("words"); + mJsonWriter.beginArray(); + final int size = words.size(); + for (int j = 0; j < size; j++) { + SuggestedWordInfo wordInfo = words.getWordInfo(j); + mJsonWriter.value(wordInfo.toString()); + } + mJsonWriter.endArray(); + mJsonWriter.endObject(); + } else if (value == null) { + mJsonWriter.nullValue(); + } else { + Log.w(TAG, "Unrecognized type to be logged: " + + (value == null ? "<null>" : value.getClass().getName())); + mJsonWriter.nullValue(); } - }); + } + mJsonWriter.endObject(); + } catch (IOException e) { + e.printStackTrace(); + Log.w(TAG, "Error in JsonWriter; disabling logging"); + try { + mJsonWriter.close(); + } catch (IllegalStateException e1) { + // assume that this is just the json not being terminated properly. + // ignore + } catch (IOException e1) { + e1.printStackTrace(); + } finally { + mJsonWriter = NULL_JSON_WRITER; + } + } + } + + private static class LogUnit implements Runnable { + private final List<String[]> mKeysList = new ArrayList<String[]>(); + private final List<Object[]> mValuesList = new ArrayList<Object[]>(); + private final List<Boolean> mIsPotentiallyPrivate = new ArrayList<Boolean>(); + private boolean mIsPrivacySafe = false; + + private void addLogAtom(final String[] keys, final Object[] values, + final Boolean isPotentiallyPrivate) { + mKeysList.add(keys); + mValuesList.add(values); + mIsPotentiallyPrivate.add(isPotentiallyPrivate); + } + + void setIsPrivacySafe(boolean isPrivacySafe) { + mIsPrivacySafe = isPrivacySafe; + } + + @Override + public void run() { + final int numAtoms = mKeysList.size(); + for (int atomIndex = 0; atomIndex < numAtoms; atomIndex++) { + if (!mIsPrivacySafe && mIsPotentiallyPrivate.get(atomIndex)) { + continue; + } + final String[] keys = mKeysList.get(atomIndex); + final Object[] values = mValuesList.get(atomIndex); + ResearchLogger.getInstance().outputEvent(keys, values); + } } } + private static int scrubDigitFromCodePoint(int codePoint) { + return Character.isDigit(codePoint) ? DIGIT_REPLACEMENT_CODEPOINT : codePoint; + } + + /* package for test */ static String scrubDigitsFromString(String s) { + StringBuilder sb = null; + final int length = s.length(); + for (int i = 0; i < length; i = s.offsetByCodePoints(i, 1)) { + int codePoint = Character.codePointAt(s, i); + if (Character.isDigit(codePoint)) { + if (sb == null) { + sb = new StringBuilder(length); + sb.append(s.substring(0, i)); + } + sb.appendCodePoint(DIGIT_REPLACEMENT_CODEPOINT); + } else { + if (sb != null) { + sb.appendCodePoint(codePoint); + } + } + } + if (sb == null) { + return s; + } else { + return sb.toString(); + } + } + + private String scrubWord(String word) { + if (mDictionary == null) { + return WORD_REPLACEMENT_STRING; + } + if (mDictionary.isValidWord(word)) { + return word; + } + return WORD_REPLACEMENT_STRING; + } + private static final String[] EVENTKEYS_LATINKEYBOARDVIEW_PROCESSMOTIONEVENT = { "LatinKeyboardViewProcessMotionEvent", "action", "eventTime", "id", "x", "y", "size", "pressure" @@ -469,7 +601,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { actionString, eventTime, id, x, y, size, pressure }; - getInstance().writeEvent(EVENTKEYS_LATINKEYBOARDVIEW_PROCESSMOTIONEVENT, values); + getInstance().enqueuePotentiallyPrivateEvent( + EVENTKEYS_LATINKEYBOARDVIEW_PROCESSMOTIONEVENT, values); } } @@ -478,9 +611,9 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang }; public static void latinIME_onCodeInput(final int code, final int x, final int y) { final Object[] values = { - Keyboard.printableCode(code), x, y + Keyboard.printableCode(scrubDigitFromCodePoint(code)), x, y }; - getInstance().writeEvent(EVENTKEYS_LATINIME_ONCODEINPUT, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_ONCODEINPUT, values); } private static final String[] EVENTKEYS_CORRECTION = { @@ -489,9 +622,9 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static void logCorrection(final String subgroup, final String before, final String after, final int position) { final Object[] values = { - subgroup, before, after, position + subgroup, scrubDigitsFromString(before), scrubDigitsFromString(after), position }; - getInstance().writeEvent(EVENTKEYS_CORRECTION, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_CORRECTION, values); } private static final String[] EVENTKEYS_LATINIME_COMMITCURRENTAUTOCORRECTION = { @@ -500,9 +633,12 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static void latinIME_commitCurrentAutoCorrection(final String typedWord, final String autoCorrection) { final Object[] values = { - typedWord, autoCorrection + scrubDigitsFromString(typedWord), scrubDigitsFromString(autoCorrection) }; - getInstance().writeEvent(EVENTKEYS_LATINIME_COMMITCURRENTAUTOCORRECTION, values); + final ResearchLogger researchLogger = getInstance(); + researchLogger.enqueuePotentiallyPrivateEvent( + EVENTKEYS_LATINIME_COMMITCURRENTAUTOCORRECTION, values); + researchLogger.flushQueue(autoCorrection); } private static final String[] EVENTKEYS_LATINIME_COMMITTEXT = { @@ -510,9 +646,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang }; public static void latinIME_commitText(final CharSequence typedWord) { final Object[] values = { - typedWord.toString() + scrubDigitsFromString(typedWord.toString()) }; - getInstance().writeEvent(EVENTKEYS_LATINIME_COMMITTEXT, values); + final ResearchLogger researchLogger = getInstance(); + researchLogger.enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_COMMITTEXT, values); + researchLogger.flushQueue(typedWord); } private static final String[] EVENTKEYS_LATINIME_DELETESURROUNDINGTEXT = { @@ -522,14 +660,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { length }; - getInstance().writeEvent(EVENTKEYS_LATINIME_DELETESURROUNDINGTEXT, values); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_DELETESURROUNDINGTEXT, values); } private static final String[] EVENTKEYS_LATINIME_DOUBLESPACEAUTOPERIOD = { "LatinIMEDoubleSpaceAutoPeriod" }; public static void latinIME_doubleSpaceAutoPeriod() { - getInstance().writeEvent(EVENTKEYS_LATINIME_DOUBLESPACEAUTOPERIOD, EVENTKEYS_NULLVALUES); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_DOUBLESPACEAUTOPERIOD, EVENTKEYS_NULLVALUES); } private static final String[] EVENTKEYS_LATINIME_ONDISPLAYCOMPLETIONS = { @@ -540,7 +678,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { applicationSpecifiedCompletions }; - getInstance().writeEvent(EVENTKEYS_LATINIME_ONDISPLAYCOMPLETIONS, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_ONDISPLAYCOMPLETIONS, + values); } /* package */ static boolean getAndClearLatinIMEExpectingUpdateSelection() { @@ -561,27 +700,35 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang ic.setSelection(savedSelectionStart, savedSelectionEnd); ic.endBatchEdit(); sLatinIMEExpectingUpdateSelection = true; - Object[] values = new Object[2]; - if (TextUtils.isEmpty(charSequence)) { - values[0] = false; - values[1] = ""; - } else { - if (charSequence.length() > MAX_INPUTVIEW_LENGTH_TO_CAPTURE) { - int length = MAX_INPUTVIEW_LENGTH_TO_CAPTURE; - // do not cut in the middle of a supplementary character - final char c = charSequence.charAt(length - 1); - if (Character.isHighSurrogate(c)) { - length--; - } - final CharSequence truncatedCharSequence = charSequence.subSequence(0, length); - values[0] = true; - values[1] = truncatedCharSequence.toString(); - } else { + final Object[] values = new Object[2]; + if (OUTPUT_ENTIRE_BUFFER) { + if (TextUtils.isEmpty(charSequence)) { values[0] = false; - values[1] = charSequence.toString(); + values[1] = ""; + } else { + if (charSequence.length() > MAX_INPUTVIEW_LENGTH_TO_CAPTURE) { + int length = MAX_INPUTVIEW_LENGTH_TO_CAPTURE; + // do not cut in the middle of a supplementary character + final char c = charSequence.charAt(length - 1); + if (Character.isHighSurrogate(c)) { + length--; + } + final CharSequence truncatedCharSequence = charSequence.subSequence(0, + length); + values[0] = true; + values[1] = truncatedCharSequence.toString(); + } else { + values[0] = false; + values[1] = charSequence.toString(); + } } + } else { + values[0] = true; + values[1] = ""; } - getInstance().writeEvent(EVENTKEYS_LATINIME_ONWINDOWHIDDEN, values); + final ResearchLogger researchLogger = getInstance(); + researchLogger.enqueueEvent(EVENTKEYS_LATINIME_ONWINDOWHIDDEN, values); + researchLogger.flushQueue(null); } } @@ -597,7 +744,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang Integer.toHexString(editorInfo.imeOptions), editorInfo.fieldId, Build.DISPLAY, Build.MODEL, prefs, OUTPUT_FORMAT_VERSION }; - getInstance().writeEvent(EVENTKEYS_LATINIME_ONSTARTINPUTVIEWINTERNAL, values); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_ONSTARTINPUTVIEWINTERNAL, values); } } @@ -631,12 +778,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang word = range.mWord; } } + final ResearchLogger researchLogger = getInstance(); + final String scrubbedWord = researchLogger.scrubWord(word); final Object[] values = { lastSelectionStart, lastSelectionEnd, oldSelStart, oldSelEnd, newSelStart, newSelEnd, composingSpanStart, composingSpanEnd, expectingUpdateSelection, - expectingUpdateSelectionFromLogger, word + expectingUpdateSelectionFromLogger, scrubbedWord }; - getInstance().writeEvent(EVENTKEYS_LATINIME_ONUPDATESELECTION, values); + researchLogger.enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_ONUPDATESELECTION, values); } private static final String[] EVENTKEYS_LATINIME_PERFORMEDITORACTION = { @@ -646,7 +795,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { imeActionNext }; - getInstance().writeEvent(EVENTKEYS_LATINIME_PERFORMEDITORACTION, values); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_PERFORMEDITORACTION, values); } private static final String[] EVENTKEYS_LATINIME_PICKAPPLICATIONSPECIFIEDCOMPLETION = { @@ -657,7 +806,10 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { index, cs, x, y }; - getInstance().writeEvent(EVENTKEYS_LATINIME_PICKAPPLICATIONSPECIFIEDCOMPLETION, values); + final ResearchLogger researchLogger = getInstance(); + researchLogger.enqueuePotentiallyPrivateEvent( + EVENTKEYS_LATINIME_PICKAPPLICATIONSPECIFIEDCOMPLETION, values); + researchLogger.flushQueue(cs.toString()); } private static final String[] EVENTKEYS_LATINIME_PICKSUGGESTIONMANUALLY = { @@ -666,9 +818,13 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static void latinIME_pickSuggestionManually(final String replacedWord, final int index, CharSequence suggestion, int x, int y) { final Object[] values = { - replacedWord, index, suggestion, x, y + scrubDigitsFromString(replacedWord), index, suggestion == null ? null : + scrubDigitsFromString(suggestion.toString()), x, y }; - getInstance().writeEvent(EVENTKEYS_LATINIME_PICKSUGGESTIONMANUALLY, values); + final ResearchLogger researchLogger = getInstance(); + researchLogger.enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_PICKSUGGESTIONMANUALLY, + values); + researchLogger.flushQueue(suggestion.toString()); } private static final String[] EVENTKEYS_LATINIME_PUNCTUATIONSUGGESTION = { @@ -679,14 +835,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { index, suggestion, x, y }; - getInstance().writeEvent(EVENTKEYS_LATINIME_PUNCTUATIONSUGGESTION, values); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_PUNCTUATIONSUGGESTION, values); } private static final String[] EVENTKEYS_LATINIME_REVERTDOUBLESPACEWHILEINBATCHEDIT = { "LatinIMERevertDoubleSpaceWhileInBatchEdit" }; public static void latinIME_revertDoubleSpaceWhileInBatchEdit() { - getInstance().writeEvent(EVENTKEYS_LATINIME_REVERTDOUBLESPACEWHILEINBATCHEDIT, + getInstance().enqueueEvent(EVENTKEYS_LATINIME_REVERTDOUBLESPACEWHILEINBATCHEDIT, EVENTKEYS_NULLVALUES); } @@ -694,7 +850,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang "LatinIMERevertSwapPunctuation" }; public static void latinIME_revertSwapPunctuation() { - getInstance().writeEvent(EVENTKEYS_LATINIME_REVERTSWAPPUNCTUATION, EVENTKEYS_NULLVALUES); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_REVERTSWAPPUNCTUATION, EVENTKEYS_NULLVALUES); } private static final String[] EVENTKEYS_LATINIME_SENDKEYCODEPOINT = { @@ -702,16 +858,16 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang }; public static void latinIME_sendKeyCodePoint(final int code) { final Object[] values = { - code + Keyboard.printableCode(scrubDigitFromCodePoint(code)) }; - getInstance().writeEvent(EVENTKEYS_LATINIME_SENDKEYCODEPOINT, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_SENDKEYCODEPOINT, values); } private static final String[] EVENTKEYS_LATINIME_SWAPSWAPPERANDSPACEWHILEINBATCHEDIT = { "LatinIMESwapSwapperAndSpaceWhileInBatchEdit" }; public static void latinIME_swapSwapperAndSpaceWhileInBatchEdit() { - getInstance().writeEvent(EVENTKEYS_LATINIME_SWAPSWAPPERANDSPACEWHILEINBATCHEDIT, + getInstance().enqueueEvent(EVENTKEYS_LATINIME_SWAPSWAPPERANDSPACEWHILEINBATCHEDIT, EVENTKEYS_NULLVALUES); } @@ -719,14 +875,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang "LatinIMESwitchToKeyboardView" }; public static void latinIME_switchToKeyboardView() { - getInstance().writeEvent(EVENTKEYS_LATINIME_SWITCHTOKEYBOARDVIEW, EVENTKEYS_NULLVALUES); + getInstance().enqueueEvent(EVENTKEYS_LATINIME_SWITCHTOKEYBOARDVIEW, EVENTKEYS_NULLVALUES); } private static final String[] EVENTKEYS_LATINKEYBOARDVIEW_ONLONGPRESS = { "LatinKeyboardViewOnLongPress" }; public static void latinKeyboardView_onLongPress() { - getInstance().writeEvent(EVENTKEYS_LATINKEYBOARDVIEW_ONLONGPRESS, EVENTKEYS_NULLVALUES); + getInstance().enqueueEvent(EVENTKEYS_LATINKEYBOARDVIEW_ONLONGPRESS, EVENTKEYS_NULLVALUES); } private static final String[] EVENTKEYS_LATINKEYBOARDVIEW_SETKEYBOARD = { @@ -738,7 +894,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static void latinKeyboardView_setKeyboard(final Keyboard keyboard) { if (keyboard != null) { final KeyboardId kid = keyboard.mId; - boolean isPasswordView = kid.passwordInput(); + final boolean isPasswordView = kid.passwordInput(); final Object[] values = { KeyboardId.elementIdToName(kid.mElementId), kid.mLocale + ":" + kid.mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET), @@ -758,7 +914,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang keyboard.mOccupiedHeight, keyboard.mKeys }; - getInstance().writeEvent(EVENTKEYS_LATINKEYBOARDVIEW_SETKEYBOARD, values); + getInstance().enqueueEvent(EVENTKEYS_LATINKEYBOARDVIEW_SETKEYBOARD, values); getInstance().setIsPasswordView(isPasswordView); } } @@ -770,14 +926,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { originallyTypedWord }; - getInstance().writeEvent(EVENTKEYS_LATINIME_REVERTCOMMIT, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_LATINIME_REVERTCOMMIT, values); } private static final String[] EVENTKEYS_POINTERTRACKER_CALLLISTENERONCANCELINPUT = { "PointerTrackerCallListenerOnCancelInput" }; public static void pointerTracker_callListenerOnCancelInput() { - getInstance().writeEvent(EVENTKEYS_POINTERTRACKER_CALLLISTENERONCANCELINPUT, + getInstance().enqueueEvent(EVENTKEYS_POINTERTRACKER_CALLLISTENERONCANCELINPUT, EVENTKEYS_NULLVALUES); } @@ -791,10 +947,12 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang if (key != null) { CharSequence outputText = key.mOutputText; final Object[] values = { - Keyboard.printableCode(code), outputText, x, y, ignoreModifierKey, altersCode, - key.isEnabled() + Keyboard.printableCode(scrubDigitFromCodePoint(code)), outputText == null ? null + : scrubDigitsFromString(outputText.toString()), + x, y, ignoreModifierKey, altersCode, key.isEnabled() }; - getInstance().writeEvent(EVENTKEYS_POINTERTRACKER_CALLLISTENERONCODEINPUT, values); + getInstance().enqueuePotentiallyPrivateEvent( + EVENTKEYS_POINTERTRACKER_CALLLISTENERONCODEINPUT, values); } } @@ -806,10 +964,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final boolean withSliding, final boolean ignoreModifierKey) { if (key != null) { final Object[] values = { - Keyboard.printableCode(primaryCode), withSliding, ignoreModifierKey, - key.isEnabled() + Keyboard.printableCode(scrubDigitFromCodePoint(primaryCode)), withSliding, + ignoreModifierKey, key.isEnabled() }; - getInstance().writeEvent(EVENTKEYS_POINTERTRACKER_CALLLISTENERONRELEASE, values); + getInstance().enqueuePotentiallyPrivateEvent( + EVENTKEYS_POINTERTRACKER_CALLLISTENERONRELEASE, values); } } @@ -820,7 +979,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { deltaT, distanceSquared }; - getInstance().writeEvent(EVENTKEYS_POINTERTRACKER_ONDOWNEVENT, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_POINTERTRACKER_ONDOWNEVENT, values); } private static final String[] EVENTKEYS_POINTERTRACKER_ONMOVEEVENT = { @@ -831,7 +990,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { x, y, lastX, lastY }; - getInstance().writeEvent(EVENTKEYS_POINTERTRACKER_ONMOVEEVENT, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_POINTERTRACKER_ONMOVEEVENT, values); } private static final String[] EVENTKEYS_SUDDENJUMPINGTOUCHEVENTHANDLER_ONTOUCHEVENT = { @@ -842,8 +1001,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { me.toString() }; - getInstance().writeEvent(EVENTKEYS_SUDDENJUMPINGTOUCHEVENTHANDLER_ONTOUCHEVENT, - values); + getInstance().enqueuePotentiallyPrivateEvent( + EVENTKEYS_SUDDENJUMPINGTOUCHEVENTHANDLER_ONTOUCHEVENT, values); } } @@ -855,7 +1014,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object[] values = { suggestedWords }; - getInstance().writeEvent(EVENTKEYS_SUGGESTIONSVIEW_SETSUGGESTIONS, values); + getInstance().enqueuePotentiallyPrivateEvent(EVENTKEYS_SUGGESTIONSVIEW_SETSUGGESTIONS, + values); } } @@ -863,6 +1023,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang "UserTimestamp" }; public void userTimestamp() { - getInstance().writeEvent(EVENTKEYS_USER_TIMESTAMP, EVENTKEYS_NULLVALUES); + getInstance().enqueueEvent(EVENTKEYS_USER_TIMESTAMP, EVENTKEYS_NULLVALUES); } } diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index 106cd2c0c..d4317de35 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -178,12 +178,11 @@ public class SettingsValues { // Helper functions to create member values. private static SuggestedWords createSuggestPuncList(final String[] puncs) { - final ArrayList<SuggestedWords.SuggestedWordInfo> puncList = - new ArrayList<SuggestedWords.SuggestedWordInfo>(); + final ArrayList<SuggestedWordInfo> puncList = new ArrayList<SuggestedWordInfo>(); if (puncs != null) { for (final String puncSpec : puncs) { - puncList.add(new SuggestedWords.SuggestedWordInfo( - KeySpecParser.getLabel(puncSpec), SuggestedWordInfo.MAX_SCORE)); + puncList.add(new SuggestedWordInfo(KeySpecParser.getLabel(puncSpec), + SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_HARDCODED)); } } return new SuggestedWords(puncList, @@ -238,8 +237,9 @@ public class SettingsValues { return mInputAttributes.mEditorAction == EditorInfo.IME_ACTION_NEXT; } - public boolean isSuggestionStripRequestedByTextField() { - return mInputAttributes.mIsSettingsSuggestionStripOn; + public boolean isSuggestionsRequested(final int displayOrientation) { + return mInputAttributes.mIsSettingsSuggestionStripOn + && (isCorrectionOn() || isSuggestionStripVisibleInOrientation(displayOrientation)); } public boolean isCorrectionOn() { diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 958b4533b..eb854910d 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -66,7 +66,7 @@ public class Suggest implements Dictionary.WordCallback { private static final boolean DBG = LatinImeLogger.sDBG; - private boolean mHasMainDictionary; + private Dictionary mMainDictionary; private ContactsBinaryDictionary mContactsDict; private WhitelistDictionary mWhiteListDictionary; private final ConcurrentHashMap<String, Dictionary> mUnigramDictionaries = @@ -74,7 +74,7 @@ public class Suggest implements Dictionary.WordCallback { private final ConcurrentHashMap<String, Dictionary> mBigramDictionaries = new ConcurrentHashMap<String, Dictionary>(); - private int mPrefMaxSuggestions = 18; + public static final int MAX_SUGGESTIONS = 18; private static final int PREF_MAX_BIGRAMS = 60; @@ -99,7 +99,7 @@ public class Suggest implements Dictionary.WordCallback { final long startOffset, final long length, final Locale locale) { final Dictionary mainDict = DictionaryFactory.createDictionaryForTest(context, dictionary, startOffset, length /* useFullEditDistance */, false, locale); - mHasMainDictionary = null != mainDict; + mMainDictionary = mainDict; addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, mainDict); addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, mainDict); initWhitelistAndAutocorrectAndPool(context, locale); @@ -130,15 +130,15 @@ public class Suggest implements Dictionary.WordCallback { } public void resetMainDict(final Context context, final Locale locale) { - mHasMainDictionary = false; + mMainDictionary = null; new Thread("InitializeBinaryDictionary") { @Override public void run() { final DictionaryCollection newMainDict = DictionaryFactory.createMainDictionaryFromManager(context, locale); - mHasMainDictionary = null != newMainDict && !newMainDict.isEmpty(); addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, newMainDict); addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, newMainDict); + mMainDictionary = newMainDict; } }.start(); } @@ -146,7 +146,11 @@ public class Suggest implements Dictionary.WordCallback { // The main dictionary could have been loaded asynchronously. Don't cache the return value // of this method. public boolean hasMainDictionary() { - return mHasMainDictionary; + return null != mMainDictionary && mMainDictionary.isInitialized(); + } + + public Dictionary getMainDictionary() { + return mMainDictionary; } public ContactsBinaryDictionary getContactsDictionary() { @@ -218,7 +222,7 @@ public class Suggest implements Dictionary.WordCallback { mIsFirstCharCapitalized = false; mIsAllUpperCase = false; mTrailingSingleQuotesCount = 0; - mSuggestions = new ArrayList<SuggestedWordInfo>(mPrefMaxSuggestions); + mSuggestions = new ArrayList<SuggestedWordInfo>(MAX_SUGGESTIONS); // Treating USER_TYPED as UNIGRAM suggestion for logging now. LatinImeLogger.onAddSuggestedWord("", Suggest.DIC_USER_TYPED, Dictionary.UNIGRAM); @@ -229,7 +233,7 @@ public class Suggest implements Dictionary.WordCallback { getAllBigrams(prevWordForBigram, sEmptyWordComposer); // Nothing entered: return all bigrams for the previous word - int insertCount = Math.min(mBigramSuggestions.size(), mPrefMaxSuggestions); + int insertCount = Math.min(mBigramSuggestions.size(), MAX_SUGGESTIONS); for (int i = 0; i < insertCount; ++i) { addBigramToSuggestions(mBigramSuggestions.get(i)); } @@ -253,7 +257,7 @@ public class Suggest implements Dictionary.WordCallback { mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized(); mIsAllUpperCase = wordComposer.isAllUpperCase(); mTrailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); - mSuggestions = new ArrayList<SuggestedWordInfo>(mPrefMaxSuggestions); + mSuggestions = new ArrayList<SuggestedWordInfo>(MAX_SUGGESTIONS); final String typedWord = wordComposer.getTypedWord(); final String consideredWord = mTrailingSingleQuotesCount > 0 @@ -271,7 +275,7 @@ public class Suggest implements Dictionary.WordCallback { getAllBigrams(prevWordForBigram, wordComposer); if (TextUtils.isEmpty(consideredWord)) { // Nothing entered: return all bigrams for the previous word - int insertCount = Math.min(mBigramSuggestions.size(), mPrefMaxSuggestions); + int insertCount = Math.min(mBigramSuggestions.size(), MAX_SUGGESTIONS); for (int i = 0; i < insertCount; ++i) { addBigramToSuggestions(mBigramSuggestions.get(i)); } @@ -290,7 +294,7 @@ public class Suggest implements Dictionary.WordCallback { if (bigramSuggestionFirstChar == currentChar || bigramSuggestionFirstChar == currentCharUpper) { addBigramToSuggestions(bigramSuggestion); - if (++count > mPrefMaxSuggestions) break; + if (++count > MAX_SUGGESTIONS) break; } } } @@ -336,15 +340,16 @@ public class Suggest implements Dictionary.WordCallback { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } - mSuggestions.add(0, new SuggestedWordInfo( - sb.toString(), SuggestedWordInfo.MAX_SCORE)); + mSuggestions.add(0, new SuggestedWordInfo(sb.toString(), + SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } else { - mSuggestions.add(0, new SuggestedWordInfo( - whitelistedWord, SuggestedWordInfo.MAX_SCORE)); + mSuggestions.add(0, new SuggestedWordInfo(whitelistedWord, + SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } } - mSuggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE)); + mSuggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, + SuggestedWordInfo.KIND_TYPED)); SuggestedWordInfo.removeDups(mSuggestions); final ArrayList<SuggestedWordInfo> suggestionsList; @@ -366,7 +371,7 @@ public class Suggest implements Dictionary.WordCallback { // language, and it will unexpectedly auto-correct. For example, if the user types in // English with no dictionary and has a "Will" in their contact list, "will" would // always auto-correct to "Will" which is unwanted. Hence, no main dict => no auto-correct. - && mHasMainDictionary; + && hasMainDictionary(); boolean autoCorrectionAvailable = hasAutoCorrection; if (correctionMode == CORRECTION_FULL) { @@ -444,7 +449,7 @@ public class Suggest implements Dictionary.WordCallback { prefMaxSuggestions = PREF_MAX_BIGRAMS; } else { suggestions = mSuggestions; - prefMaxSuggestions = mPrefMaxSuggestions; + prefMaxSuggestions = MAX_SUGGESTIONS; } int pos = 0; @@ -496,7 +501,8 @@ public class Suggest implements Dictionary.WordCallback { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } - suggestions.add(pos, new SuggestedWordInfo(sb, score)); + // TODO: figure out what type of suggestion this is + suggestions.add(pos, new SuggestedWordInfo(sb, score, SuggestedWordInfo.KIND_CORRECTION)); if (suggestions.size() > prefMaxSuggestions) { suggestions.remove(prefMaxSuggestions); } else { @@ -512,7 +518,7 @@ public class Suggest implements Dictionary.WordCallback { for (final Dictionary dictionary : dictionaries) { dictionary.close(); } - mHasMainDictionary = false; + mMainDictionary = null; } // TODO: Resolve the inconsistencies between the native auto correction algorithms and diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 497fd3bfa..1ed91fe71 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -91,7 +91,8 @@ public class SuggestedWords { final ArrayList<SuggestedWordInfo> result = new ArrayList<SuggestedWordInfo>(); for (CompletionInfo info : infos) { if (null != info && info.getText() != null) { - result.add(new SuggestedWordInfo(info.getText(), SuggestedWordInfo.MAX_SCORE)); + result.add(new SuggestedWordInfo(info.getText(), SuggestedWordInfo.MAX_SCORE, + SuggestedWordInfo.KIND_APP_DEFINED)); } } return result; @@ -103,7 +104,8 @@ public class SuggestedWords { final CharSequence typedWord, final SuggestedWords previousSuggestions) { final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>(); final HashSet<String> alreadySeen = new HashSet<String>(); - suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE)); + suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, + SuggestedWordInfo.KIND_TYPED)); alreadySeen.add(typedWord.toString()); final int previousSize = previousSuggestions.size(); for (int pos = 1; pos < previousSize; pos++) { @@ -120,16 +122,25 @@ public class SuggestedWords { public static class SuggestedWordInfo { public static final int MAX_SCORE = Integer.MAX_VALUE; + public static final int KIND_TYPED = 0; // What user typed + public static final int KIND_CORRECTION = 1; // Simple correction/suggestion + public static final int KIND_COMPLETION = 2; // Completion (suggestion with appended chars) + public static final int KIND_WHITELIST = 3; // Whitelisted word + public static final int KIND_BLACKLIST = 4; // Blacklisted word + public static final int KIND_HARDCODED = 5; // Hardcoded suggestion, e.g. punctuation + public static final int KIND_APP_DEFINED = 6; // Suggested by the application private final String mWordStr; public final CharSequence mWord; public final int mScore; + public final int mKind; public final int mCodePointCount; private String mDebugString = ""; - public SuggestedWordInfo(final CharSequence word, final int score) { + public SuggestedWordInfo(final CharSequence word, final int score, final int kind) { mWordStr = word.toString(); mWord = word; mScore = score; + mKind = kind; mCodePointCount = mWordStr.codePointCount(0, mWordStr.length()); } diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java index eb47fd517..c672d5126 100644 --- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java +++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java @@ -130,11 +130,11 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> { (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ViewGroup vg = new FrameLayout(getContext()); final View inputView = inflater.inflate(R.layout.input_view, vg); + mLatinIME.onCreateInputMethodInterface().startInput(ic, ei); mLatinIME.setInputView(inputView); mLatinIME.onBindInput(); mLatinIME.onCreateInputView(); mLatinIME.onStartInputView(ei, false); - mLatinIME.onCreateInputMethodInterface().startInput(ic, ei); mInputConnection = ic; mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard(); changeLanguage("en_US"); diff --git a/tools/maketext/res/values-fa/donottranslate-more-keys.xml b/tools/maketext/res/values-fa/donottranslate-more-keys.xml index b34e580e9..3519eea39 100644 --- a/tools/maketext/res/values-fa/donottranslate-more-keys.xml +++ b/tools/maketext/res/values-fa/donottranslate-more-keys.xml @@ -63,13 +63,17 @@ <string name="more_keys_for_symbols_percent">\\%,‰</string> <!-- U+060C: "،" ARABIC COMMA U+061B: "؛" ARABIC SEMICOLON - U+061F: "؟" ARABIC QUESTION MARK --> + U+061F: "؟" ARABIC QUESTION MARK + U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <string name="keylabel_for_tablet_comma">"،"</string> <string name="keyhintlabel_for_tablet_comma">"!"</string> <string name="more_keys_for_tablet_comma">"!,\\,"</string> <string name="keyhintlabel_for_tablet_period">"؟"</string> <string name="more_keys_for_tablet_period">"؟,\?"</string> - <string name="more_keys_for_apostrophe">"؟,؛,!,:,-,/,\',\""</string> + <string name="keylabel_for_apostrophe">،</string> + <string name="keyhintlabel_for_apostrophe">؟</string> + <string name="more_keys_for_apostrophe">"!fixedColumnOrder!4,:,!,؟,؛,-,/,«|»,»|«"</string> <!-- U+061F: "؟" ARABIC QUESTION MARK U+060C: "،" ARABIC COMMA U+061B: "؛" ARABIC SEMICOLON --> @@ -100,11 +104,11 @@ U+201D: "”" RIGHT DOUBLE QUOTATION MARK U+201E: "„" DOUBLE LOW-9 QUOTATION MARK U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK --> - <string name="more_keys_for_less_than">!fixedColumnOrder!3,‹|›,≤|≥,«|»</string> - <string name="more_keys_for_greater_than">!fixedColumnOrder!3,›|‹,≥|≤,»|«</string> + <string name="more_keys_for_less_than">!fixedColumnOrder!3,‹|›,≤|≥,<|></string> + <string name="more_keys_for_greater_than">!fixedColumnOrder!3,›|‹,≥|≤,>|<</string> <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK --> <!-- <string name="more_keys_for_double_quote">“,”,„,‟,«|»,»|«</string> --> - <string name="more_keys_for_double_quote">!fixedColumnOrder!4,“,”,«|»,»|«</string> + <string name="more_keys_for_double_quote">!fixedColumnOrder!4,“,”,\",\'</string> <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK --> <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> --> <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,“,”,«|»,»|«,‘,’,‚,‛</string> |