ICU-21555 fix typos for D, E and F found in the repo

See #1714
diff --git a/docs/userguide/format_parse/messages/examples.md b/docs/userguide/format_parse/messages/examples.md
index 52b0448..ff97c81 100644
--- a/docs/userguide/format_parse/messages/examples.md
+++ b/docs/userguide/format_parse/messages/examples.md
@@ -255,7 +255,7 @@
             sb = mf.format(objectsToFormat, sb, fp);
             System.out.println(sb.toString());
         }catch(IllegalArgumentException e){
-            System.out.println("Exception during formating of type :" +e);
+            System.out.println("Exception during formatting of type :" +e);
         }
     }
 
diff --git a/icu4c/source/common/pluralmap.h b/icu4c/source/common/pluralmap.h
index 2a14a07..41ab1d9 100644
--- a/icu4c/source/common/pluralmap.h
+++ b/icu4c/source/common/pluralmap.h
@@ -62,7 +62,7 @@
  * A Map of plural categories to values. It maintains ownership of the
  * values.
  *
- * Type T is the value type. T must provide the followng:
+ * Type T is the value type. T must provide the following:
  * 1) Default constructor
  * 2) Copy constructor
  * 3) Assignment operator
diff --git a/icu4c/source/common/ruleiter.h b/icu4c/source/common/ruleiter.h
index 28e2ca5..09af129 100644
--- a/icu4c/source/common/ruleiter.h
+++ b/icu4c/source/common/ruleiter.h
@@ -94,7 +94,7 @@
      * position.
      * @param text the text to be iterated
      * @param sym the symbol table, or null if there is none.  If sym is null,
-     * then variables will not be deferenced, even if the PARSE_VARIABLES
+     * then variables will not be dereferenced, even if the PARSE_VARIABLES
      * option is set.
      * @param pos upon input, the index of the next character to return.  If a
      * variable has been dereferenced, then pos will <em>not</em> increment as
diff --git a/icu4c/source/common/ucnv2022.cpp b/icu4c/source/common/ucnv2022.cpp
index 1726440..4110cb8 100644
--- a/icu4c/source/common/ucnv2022.cpp
+++ b/icu4c/source/common/ucnv2022.cpp
@@ -527,7 +527,7 @@
                     ucnv_loadSharedData("ksc_5601", &stackPieces, &stackArgs, errorCode);
             }
 
-            /* set the function pointers to appropriate funtions */
+            /* set the function pointers to appropriate functions */
             cnv->sharedData=(UConverterSharedData*)(&_ISO2022JPData);
             uprv_strcpy(myConverterData->locale,"ja");
 
@@ -578,7 +578,7 @@
                 setInitialStateToUnicodeKR(cnv, myConverterData);
                 setInitialStateFromUnicodeKR(cnv, myConverterData);
 
-                /* set the function pointers to appropriate funtions */
+                /* set the function pointers to appropriate functions */
                 cnv->sharedData=(UConverterSharedData*)&_ISO2022KRData;
                 uprv_strcpy(myConverterData->locale,"ko");
             }
@@ -605,7 +605,7 @@
                 ucnv_loadSharedData("cns-11643-1992", &stackPieces, &stackArgs, errorCode);
 
 
-            /* set the function pointers to appropriate funtions */
+            /* set the function pointers to appropriate functions */
             cnv->sharedData=(UConverterSharedData*)&_ISO2022CNData;
             uprv_strcpy(myConverterData->locale,"cn");
 
diff --git a/icu4c/source/common/ucnv_lmb.cpp b/icu4c/source/common/ucnv_lmb.cpp
index 41317d1..44f93be 100644
--- a/icu4c/source/common/ucnv_lmb.cpp
+++ b/icu4c/source/common/ucnv_lmb.cpp
@@ -149,7 +149,7 @@
 These are used in various ways.
 
 We reserve a few special single byte values for common control 
-characters. These are in the same place as their ANSI eqivalents for speed.
+characters. These are in the same place as their ANSI equivalents for speed.
 */
                      
 #define ULMBCS_HT    0x09   /* Fixed control char - Horizontal Tab */
diff --git a/icu4c/source/common/ucnvisci.cpp b/icu4c/source/common/ucnvisci.cpp
index ffb8c7a..b091447 100644
--- a/icu4c/source/common/ucnvisci.cpp
+++ b/icu4c/source/common/ucnvisci.cpp
@@ -1164,7 +1164,7 @@
  *  Post context
  *  i)  ATR : Attribute code is used to declare the font and script switching.
  *      Currently we only switch scripts and font codes consumed without generating an error
- *  ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
+ *  ii) EXT : Extension code is used to declare switching to Sanskrit and for obscure,
  *      obsolete characters
  *  Pre context
  *  i)  Halant: if preceeded by a halant then it is a explicit halant
diff --git a/icu4c/source/common/uloc_tag.cpp b/icu4c/source/common/uloc_tag.cpp
index 1235081..f4d38a2 100644
--- a/icu4c/source/common/uloc_tag.cpp
+++ b/icu4c/source/common/uloc_tag.cpp
@@ -1612,7 +1612,7 @@
     }
 
     if (pKwds) {
-        const char *pBcpKey = NULL;     /* u extenstion key subtag */
+        const char *pBcpKey = NULL;     /* u extension key subtag */
         const char *pBcpType = NULL;    /* beginning of u extension type subtag(s) */
         int32_t bcpKeyLen = 0;
         int32_t bcpTypeLen = 0;
diff --git a/icu4c/source/common/unicode/unifunct.h b/icu4c/source/common/unicode/unifunct.h
index 7d31af7..4827941 100644
--- a/icu4c/source/common/unicode/unifunct.h
+++ b/icu4c/source/common/unicode/unifunct.h
@@ -93,7 +93,7 @@
      *
      * <p>Concrete subclasses of UnicodeFunctor should use the macro
      *    UOBJECT_DEFINE_RTTI_IMPLEMENTATION from uobject.h to
-     *    provide definitios getStaticClassID and getDynamicClassID.
+     *    provide definitions getStaticClassID and getDynamicClassID.
      *
      * @return The class ID for this object. All objects of a given
      * class have the same class ID.  Objects of other classes have
diff --git a/icu4c/source/common/unifiedcache.h b/icu4c/source/common/unifiedcache.h
index a31998d..4102473 100644
--- a/icu4c/source/common/unifiedcache.h
+++ b/icu4c/source/common/unifiedcache.h
@@ -293,8 +293,8 @@
    void flush() const;
 
    /**
-    * Configures at what point evcition of unused entries will begin.
-    * Eviction is triggered whenever the number of evictable keys exeeds
+    * Configures at what point eviction of unused entries will begin.
+    * Eviction is triggered whenever the number of evictable keys exceeds
     * BOTH count AND (number of in-use items) * (percentageOfInUseItems / 100).
     * Once the number of unused entries drops below one of these,
     * eviction ceases. Because eviction happens incrementally,
@@ -315,7 +315,7 @@
     * settings.
     *
     * If a client already holds references to many different unique values
-    * in the cache such that the number of those unique values far exeeds
+    * in the cache such that the number of those unique values far exceeds
     * "count" then the cache may not be able to maintain this maximum.
     * However, if this happens, the cache still guarantees that the number of
     * unused entries will remain only a small percentage of the total cache
diff --git a/icu4c/source/common/ustr_wcs.cpp b/icu4c/source/common/ustr_wcs.cpp
index 89d0762..1a6ea23 100644
--- a/icu4c/source/common/ustr_wcs.cpp
+++ b/icu4c/source/common/ustr_wcs.cpp
@@ -106,7 +106,7 @@
         if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR){
             tempBuf = saveBuf;
             
-            /* we dont have enough room on the stack grow the buffer */
+            /* we don't have enough room on the stack grow the buffer */
             int32_t newCapacity = 2 * srcLength;
             if(newCapacity <= tempBufCapacity) {
                 newCapacity = _BUFFER_CAPACITY_MULTIPLIER * tempBufCapacity;
@@ -132,7 +132,7 @@
     /* done with conversion null terminate the char buffer */
     if(count>=tempBufCapacity){
         tempBuf = saveBuf;
-        /* we dont have enough room on the stack grow the buffer */
+        /* we don't have enough room on the stack grow the buffer */
         if(!u_growAnyBufferFromStatic(stackBuffer,(void**) &tempBuf, &tempBufCapacity, 
                 count+1, count, 1)) {
             goto cleanup;
@@ -334,7 +334,7 @@
         
     }else{
         /* here the source is not null terminated 
-         * so it may have nulls embeded and we need to
+         * so it may have nulls embedded and we need to
          * do some extra processing 
          */
         int32_t remaining =cStackCap;
diff --git a/icu4c/source/common/utext.cpp b/icu4c/source/common/utext.cpp
index d79f814..55245b3 100644
--- a/icu4c/source/common/utext.cpp
+++ b/icu4c/source/common/utext.cpp
@@ -1046,7 +1046,7 @@
 
     //
     // Dispatch to the appropriate action for a
-    //   Backwards Diretion iteration request.
+    //   Backwards Direction iteration request.
     //
     if (ix==ut->chunkNativeStart) {
         // Check for normal sequential iteration cases first.
diff --git a/icu4c/source/common/uvector.cpp b/icu4c/source/common/uvector.cpp
index fd53c60..f41d560 100644
--- a/icu4c/source/common/uvector.cpp
+++ b/icu4c/source/common/uvector.cpp
@@ -539,7 +539,7 @@
  *    required by uprv_sortArray().  This is handled by passing the
  *    the UVector sort function pointer via the context pointer to a
  *    sortArray() comparator function, which can then call back to
- *    the original user functtion.
+ *    the original user function.
  *
  *    An additional twist is that it's not safe to pass a pointer-to-function
  *    as  a (void *) data pointer, so instead we pass a (data) pointer to a
diff --git a/icu4c/source/i18n/coll.cpp b/icu4c/source/i18n/coll.cpp
index 7b87b41..5eed804 100644
--- a/icu4c/source/i18n/coll.cpp
+++ b/icu4c/source/i18n/coll.cpp
@@ -604,7 +604,7 @@
 /**
 * Default constructor.
 * Constructor is different from the old default Collator constructor.
-* The task for determing the default collation strength and normalization mode
+* The task for determining the default collation strength and normalization mode
 * is left to the child class.
 */
 Collator::Collator()
diff --git a/icu4c/source/i18n/decNumber.cpp b/icu4c/source/i18n/decNumber.cpp
index 42d00a0..a7ee057 100644
--- a/icu4c/source/i18n/decNumber.cpp
+++ b/icu4c/source/i18n/decNumber.cpp
@@ -3831,7 +3831,7 @@
 /*                                                                    */
 /* Addition, especially x=x+1, is speed-critical.                     */
 /* The static buffer is larger than might be expected to allow for    */
-/* calls from higher-level funtions (notable exp).                    */
+/* calls from higher-level functions (notable exp).                    */
 /* ------------------------------------------------------------------ */
 static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
                             const decNumber *rhs, decContext *set,
@@ -4247,7 +4247,7 @@
 /* long subtractions.  These are acc and var1 respectively.           */
 /* var1 is a copy of the lhs coefficient, var2 is the rhs coefficient.*/
 /* The static buffers may be larger than might be expected to allow   */
-/* for calls from higher-level funtions (notable exp).                */
+/* for calls from higher-level functions (notable exp).                */
 /* ------------------------------------------------------------------ */
 static decNumber * decDivideOp(decNumber *res,
                                const decNumber *lhs, const decNumber *rhs,
diff --git a/icu4c/source/i18n/gregoimp.h b/icu4c/source/i18n/gregoimp.h
index aec33c4..c49d32d 100644
--- a/icu4c/source/i18n/gregoimp.h
+++ b/icu4c/source/i18n/gregoimp.h
@@ -86,7 +86,7 @@
      * 0 <= remainder < divisor.
      *
      * Works around edge-case bugs.  Handles pathological input
-     * (divident >> divisor) reasonably.
+     * (dividend >> divisor) reasonably.
      *
      * Calling with a divisor <= 0 is disallowed.
      */
diff --git a/icu4c/source/i18n/indiancal.cpp b/icu4c/source/i18n/indiancal.cpp
index 9d9df58..7bba7f5 100644
--- a/icu4c/source/i18n/indiancal.cpp
+++ b/icu4c/source/i18n/indiancal.cpp
@@ -208,7 +208,7 @@
    //month is 0 based; converting it to 1-based 
    int32_t imonth;
 
-    // If the month is out of range, adjust it into range, and adjust the extended eyar accordingly
+    // If the month is out of range, adjust it into range, and adjust the extended year accordingly
    if (month < 0 || month > 11) {
       eyear += (int32_t)ClockMath::floorDivide(month, 12, month);
    }
diff --git a/icu4c/source/i18n/nfrule.cpp b/icu4c/source/i18n/nfrule.cpp
index a9b84ed..e5823bb 100644
--- a/icu4c/source/i18n/nfrule.cpp
+++ b/icu4c/source/i18n/nfrule.cpp
@@ -115,7 +115,7 @@
     // we know we're making at least one rule, so go ahead and
     // new it up and initialize its basevalue and divisor
     // (this also strips the rule descriptor, if any, off the
-    // descripton string)
+    // description string)
     NFRule* rule1 = new NFRule(rbnf, description, status);
     /* test for NULL */
     if (rule1 == 0) {
diff --git a/icu4c/source/i18n/rbnf.cpp b/icu4c/source/i18n/rbnf.cpp
index 17319fb..d50edd2 100644
--- a/icu4c/source/i18n/rbnf.cpp
+++ b/icu4c/source/i18n/rbnf.cpp
@@ -1501,7 +1501,7 @@
     }
 
     // start by stripping the trailing whitespace from all the rules
-    // (this is all the whitespace follwing each semicolon in the
+    // (this is all the whitespace following each semicolon in the
     // description).  This allows us to look for rule-set boundaries
     // by searching for ";%" without having to worry about whitespace
     // between the ; and the %
diff --git a/icu4c/source/i18n/regexcmp.h b/icu4c/source/i18n/regexcmp.h
index f3cfa6e..a6e6066 100644
--- a/icu4c/source/i18n/regexcmp.h
+++ b/icu4c/source/i18n/regexcmp.h
@@ -228,7 +228,7 @@
                                                      //   in this string while being scanned.
 };
 
-// Constant values to be pushed onto fSetOpStack while scanning & evalueating [set expressions]
+// Constant values to be pushed onto fSetOpStack while scanning & evaluating [set expressions]
 //   The high 16 bits are the operator precedence, and the low 16 are a code for the operation itself.
 
 enum SetOperations {
diff --git a/icu4c/source/i18n/simpletz.cpp b/icu4c/source/i18n/simpletz.cpp
index 02dafb7..a7bc710 100644
--- a/icu4c/source/i18n/simpletz.cpp
+++ b/icu4c/source/i18n/simpletz.cpp
@@ -585,7 +585,7 @@
         dayOfWeek = (int8_t)(1 + (dayOfWeek % 7)); // dayOfWeek is one-based
         if (dayOfMonth > monthLen) {
             dayOfMonth = 1;
-            /* When incrementing the month, it is desirible to overflow
+            /* When incrementing the month, it is desirable to overflow
              * from DECEMBER to DECEMBER+1, since we use the result to
              * compare against a real month. Wraparound of the value
              * leads to bug 4173604. */
diff --git a/icu4c/source/i18n/timezone.cpp b/icu4c/source/i18n/timezone.cpp
index 918d508..e46437b 100644
--- a/icu4c/source/i18n/timezone.cpp
+++ b/icu4c/source/i18n/timezone.cpp
@@ -1691,7 +1691,7 @@
         const UChar *tzids = ures_getStringByKey(zones, region, &len, &tmperr); // use tmperr, because
                                                                                 // regional mapping is optional
         if (U_SUCCESS(tmperr)) {
-            // first ID delimited by space is the defasult one
+            // first ID delimited by space is the default one
             const UChar *end = u_strchr(tzids, (UChar)0x20);
             if (end == NULL) {
                 id.setTo(tzids, -1);
diff --git a/icu4c/source/i18n/udat.cpp b/icu4c/source/i18n/udat.cpp
index ba44710..63e6bae 100644
--- a/icu4c/source/i18n/udat.cpp
+++ b/icu4c/source/i18n/udat.cpp
@@ -34,7 +34,7 @@
 /**
  * Verify that fmt is a SimpleDateFormat. Invalid error if not.
  * @param fmt the UDateFormat, definitely a DateFormat, maybe something else
- * @param status error code, will be set to failure if there is a familure or the fmt is NULL.
+ * @param status error code, will be set to failure if there is a failure or the fmt is NULL.
  */
 static void verifyIsSimpleDateFormat(const UDateFormat* fmt, UErrorCode *status) {
    if(U_SUCCESS(*status) &&
@@ -1247,7 +1247,7 @@
 /**
  * Verify that fmt is a RelativeDateFormat. Invalid error if not.
  * @param fmt the UDateFormat, definitely a DateFormat, maybe something else
- * @param status error code, will be set to failure if there is a familure or the fmt is NULL.
+ * @param status error code, will be set to failure if there is a failure or the fmt is NULL.
  */
 static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *status) {
    if(U_SUCCESS(*status) &&
diff --git a/icu4c/source/i18n/umsg.cpp b/icu4c/source/i18n/umsg.cpp
index 9a5344e..0d9e86e 100644
--- a/icu4c/source/i18n/umsg.cpp
+++ b/icu4c/source/i18n/umsg.cpp
@@ -68,7 +68,7 @@
 {
     va_list    ap;
     int32_t actLen;        
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     // start vararg processing
     va_start(ap, status);
 
@@ -89,7 +89,7 @@
                     UErrorCode  *status)
 
 {
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status);
     int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status);
     umsg_close(fmt);
@@ -108,7 +108,7 @@
 {
     va_list    ap;
     int32_t actLen;
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     // start vararg processing
     va_start(ap, status);
 
@@ -130,7 +130,7 @@
                             UErrorCode  *status)
 
 {
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,parseError,status);
     int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status);
     umsg_close(fmt);
@@ -152,7 +152,7 @@
                 ...)
 {
     va_list    ap;
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
 
     // start vararg processing
     va_start(ap, status);
@@ -171,7 +171,7 @@
                 va_list     ap,
                 UErrorCode  *status)
 {
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status);
     int32_t count = 0;
     umsg_vparse(fmt,source,sourceLength,&count,ap,status);
@@ -190,7 +190,7 @@
 {
     va_list    ap;
 
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
 
     // start vararg processing
     va_start(ap, status);
@@ -209,7 +209,7 @@
                          UParseError *error,
                          UErrorCode* status)
 {
-    //argument checking defered to subsequent method calls
+    //argument checking deferred to subsequent method calls
     UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,error,status);
     int32_t count = 0;
     umsg_vparse(fmt,source,sourceLength,&count,ap,status);
@@ -369,8 +369,8 @@
 {
     va_list    ap;
     int32_t actLen;  
-    //argument checking defered to last method call umsg_vformat which
-    //saves time when arguments are valid and we dont care when arguments are not
+    //argument checking deferred to last method call umsg_vformat which
+    //saves time when arguments are valid and we don't care when arguments are not
     //since we return an error anyway
 
     
@@ -490,8 +490,8 @@
             ...)
 {
     va_list    ap;
-    //argument checking defered to last method call umsg_vparse which
-    //saves time when arguments are valid and we dont care when arguments are not
+    //argument checking deferred to last method call umsg_vparse which
+    //saves time when arguments are valid and we don't care when arguments are not
     //since we return an error anyway
 
     // start vararg processing
diff --git a/icu4c/source/i18n/unicode/coll.h b/icu4c/source/i18n/unicode/coll.h
index c750711..f8f1c81 100644
--- a/icu4c/source/i18n/unicode/coll.h
+++ b/icu4c/source/i18n/unicode/coll.h
@@ -1094,7 +1094,7 @@
     /**
     * Default constructor.
     * Constructor is different from the old default Collator constructor.
-    * The task for determing the default collation strength and normalization
+    * The task for determining the default collation strength and normalization
     * mode is left to the child class.
     * @stable ICU 2.0
     */
diff --git a/icu4c/source/i18n/unicode/dtitvinf.h b/icu4c/source/i18n/unicode/dtitvinf.h
index 3b26085..f9379cd 100644
--- a/icu4c/source/i18n/unicode/dtitvinf.h
+++ b/icu4c/source/i18n/unicode/dtitvinf.h
@@ -406,7 +406,7 @@
      * and the best match skeleton.
      *
      * TODO (xji): set field weight or
-     *             isolate the funtionality in DateTimePatternGenerator
+     *             isolate the functionality in DateTimePatternGenerator
      * @param  skeleton               input skeleton
      * @param  bestMatchDistanceInfo  the difference between input skeleton
      *                                and best match skeleton.
diff --git a/icu4c/source/i18n/unicode/numfmt.h b/icu4c/source/i18n/unicode/numfmt.h
index 61fb59d..513d160 100644
--- a/icu4c/source/i18n/unicode/numfmt.h
+++ b/icu4c/source/i18n/unicode/numfmt.h
@@ -16,7 +16,7 @@
 *   04/17/97    aliu        Changed DigitCount to int per code review.
 *    07/20/98    stephen        JDK 1.2 sync up. Added scientific support.
 *                            Changed naming conventions to match C++ guidelines
-*                            Derecated Java style constants (eg, INTEGER_FIELD)
+*                            Deprecated Java style constants (eg, INTEGER_FIELD)
 ********************************************************************************
 */
 
diff --git a/icu4c/source/i18n/unicode/rbnf.h b/icu4c/source/i18n/unicode/rbnf.h
index 85d8f5b..17d2f30 100644
--- a/icu4c/source/i18n/unicode/rbnf.h
+++ b/icu4c/source/i18n/unicode/rbnf.h
@@ -108,7 +108,7 @@
  * <p>In these rules, the <em>base value</em> is spelled out explicitly and set off from the
  * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable
  * to all numbers from its own base value to one less than the next rule's base value. The
- * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the fomatter to
+ * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the formatter to
  * isolate the number's ones digit, format it using this same set of rules, and place the
  * result at the position of the &quot;&gt;&gt;&quot; token. Text in brackets is omitted if
  * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24
diff --git a/icu4c/source/i18n/unicode/smpdtfmt.h b/icu4c/source/i18n/unicode/smpdtfmt.h
index 3296c6b..9a5a83b 100644
--- a/icu4c/source/i18n/unicode/smpdtfmt.h
+++ b/icu4c/source/i18n/unicode/smpdtfmt.h
@@ -756,7 +756,7 @@
      * names of the months), but not to provide the pattern.
      * <P>
      * A numbering system override is a string containing either the name of a known numbering system,
-     * or a set of field and numbering system pairs that specify which fields are to be formattied with
+     * or a set of field and numbering system pairs that specify which fields are to be formatted with
      * the alternate numbering system.  For example, to specify that all numeric fields in the specified
      * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override
      * as "thai".  To specify that just the year portion of the date be formatted using Hebrew numbering,
@@ -797,7 +797,7 @@
      * names of the months), but not to provide the pattern.
      * <P>
      * A numbering system override is a string containing either the name of a known numbering system,
-     * or a set of field and numbering system pairs that specify which fields are to be formattied with
+     * or a set of field and numbering system pairs that specify which fields are to be formatted with
      * the alternate numbering system.  For example, to specify that all numeric fields in the specified
      * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override
      * as "thai".  To specify that just the year portion of the date be formatted using Hebrew numbering,
diff --git a/icu4c/source/i18n/unicode/udat.h b/icu4c/source/i18n/unicode/udat.h
index 2963e55..25e171f 100644
--- a/icu4c/source/i18n/unicode/udat.h
+++ b/icu4c/source/i18n/unicode/udat.h
@@ -1566,7 +1566,7 @@
 
 /**
 * Count the number of particular symbols for an UDateFormat.
-* This function is most useful as for detemining the loop termination condition
+* This function is most useful as for determining the loop termination condition
 * for calls to {@link #udat_getSymbols }.
 * @param fmt The formatter to query.
 * @param type The type of symbols to count.  One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS,
diff --git a/icu4c/source/i18n/usearch.cpp b/icu4c/source/i18n/usearch.cpp
index d0628a1..8372fda 100644
--- a/icu4c/source/i18n/usearch.cpp
+++ b/icu4c/source/i18n/usearch.cpp
@@ -987,7 +987,7 @@
 * Note this is the initial boundary check. If the potential match
 * starts or ends with composite characters, the accents in those
 * characters will be determined later.
-* Not doing backwards iteration here, since discontiguos contraction for
+* Not doing backwards iteration here, since discontiguous contraction for
 * backwards collation element iterator, use up too many characters.
 * E.g. looking for \u030A ring in \u01FA A ring above and acute,
 * should fail since there is a acute at the end of \u01FA
diff --git a/icu4c/source/i18n/vtzone.cpp b/icu4c/source/i18n/vtzone.cpp
index 2df9116..83a7c1e 100644
--- a/icu4c/source/i18n/vtzone.cpp
+++ b/icu4c/source/i18n/vtzone.cpp
@@ -479,7 +479,7 @@
                 goto rruleParseError;
             }
         } else if (attr.compare(ICAL_BYMONTHDAY, -1) == 0) {
-            // Note: BYMONTHDAY may contain multiple days delimitted by comma
+            // Note: BYMONTHDAY may contain multiple days delimited by comma
             //
             // A value of BYMONTHDAY could be negative, for example, -1 means
             // the last day in a month
diff --git a/icu4c/source/layoutex/layout/ParagraphLayout.h b/icu4c/source/layoutex/layout/ParagraphLayout.h
index ce3f7e5..518f96f 100644
--- a/icu4c/source/layoutex/layout/ParagraphLayout.h
+++ b/icu4c/source/layoutex/layout/ParagraphLayout.h
@@ -377,7 +377,7 @@
      *        Unicode code points.
      *
      * @param localeRuns is a pointer to a <code>LocaleRuns</code> object representing locale runs.
-     *        The <code>Locale</code> objects are used to determind the language of the text. If this
+     *        The <code>Locale</code> objects are used to determine the language of the text. If this
      *        pointer is <code>NULL</code> the default locale will be used for all of the text. 
      *
      * @param paragraphLevel is the directionality of the paragraph, as in the UBiDi object.
diff --git a/icu4c/source/layoutex/layout/playout.h b/icu4c/source/layoutex/layout/playout.h
index a9a21e7..cf24ce5 100644
--- a/icu4c/source/layoutex/layout/playout.h
+++ b/icu4c/source/layoutex/layout/playout.h
@@ -77,7 +77,7 @@
  *        Unicode code points.
  *
  * @param localeRuns is a pointer to a <code>pl_localeRuns</code> object representing locale runs.
- *        The <code>Locale</code> objects are used to determind the language of the text. If this
+ *        The <code>Locale</code> objects are used to determine the language of the text. If this
  *        pointer is <code>NULL</code> the default locale will be used for all of the text. 
  *
  * @param paragraphLevel is the directionality of the paragraph, as in the UBiDi object.
diff --git a/icu4c/source/samples/ucnv/convsamp.cpp b/icu4c/source/samples/ucnv/convsamp.cpp
index 2d6d0c1..7347d05 100644
--- a/icu4c/source/samples/ucnv/convsamp.cpp
+++ b/icu4c/source/samples/ucnv/convsamp.cpp
@@ -270,7 +270,7 @@
   What is the best way to determine the buffer size?
 
      The 'buffersize' is in bytes of input.
-    For a given converter, divinding this by the minimum char size
+    For a given converter, dividing this by the minimum char size
     give you the maximum number of Unicode characters that could be
     expected for a given number of input bytes.
      see: ucnv_getMinCharSize()
diff --git a/icu4c/source/samples/udata/writer.c b/icu4c/source/samples/udata/writer.c
index 05dd2fc..a5b3a96 100644
--- a/icu4c/source/samples/udata/writer.c
+++ b/icu4c/source/samples/udata/writer.c
@@ -58,7 +58,7 @@
 };
 
 
-/* Excersise: add writing out other data types */
+/* Exercise: add writing out other data types */
 /* see icu/source/tools/toolutil/unewdata.h    */
 /* for other possibilities                     */
 
diff --git a/icu4c/source/test/cintltst/citertst.c b/icu4c/source/test/cintltst/citertst.c
index 5ffc714..6c77111 100644
--- a/icu4c/source/test/cintltst/citertst.c
+++ b/icu4c/source/test/cintltst/citertst.c
@@ -1090,7 +1090,7 @@
             while (ce != UCOL_NULLORDER) {
                 if (ce != ucol_next(iter, &status) ||
                     U_FAILURE(status)) {
-                    log_err("Discontiguos contraction test mismatch\n");
+                    log_err("Discontiguous contraction test mismatch\n");
                     return;
                 }
                 ce = ucol_next(resultiter, &status);
diff --git a/icu4c/source/test/cintltst/citertst.h b/icu4c/source/test/cintltst/citertst.h
index 5673e8f..af30c85 100644
--- a/icu4c/source/test/cintltst/citertst.h
+++ b/icu4c/source/test/cintltst/citertst.h
@@ -82,7 +82,7 @@
 */
 static void TestSmallBuffer(void);
 /**
-* Tests the discontiguos contractions
+* Tests the discontiguous contractions
 */
 static void TestDiscontiguos(void);
 /**
diff --git a/icu4c/source/test/cintltst/creststn.c b/icu4c/source/test/cintltst/creststn.c
index ed044db..f36b201 100644
--- a/icu4c/source/test/cintltst/creststn.c
+++ b/icu4c/source/test/cintltst/creststn.c
@@ -519,7 +519,7 @@
     /* if everything is working correctly, the size of this string */
     /* should be 7. Everything else is a wrong answer, esp. 3 and 6*/
 
-    strcpy(action, "getting and testing of string with embeded zero");
+    strcpy(action, "getting and testing of string with embedded zero");
     res = ures_getByKey(theBundle, "zerotest", res, &status);
     CONFIRM_ErrorCode(status, U_ZERO_ERROR);
     CONFIRM_INT_EQ(ures_getType(res), URES_STRING);
diff --git a/icu4c/source/test/cintltst/custrtrn.c b/icu4c/source/test/cintltst/custrtrn.c
index 895022e..615cdbf 100644
--- a/icu4c/source/test/cintltst/custrtrn.c
+++ b/icu4c/source/test/cintltst/custrtrn.c
@@ -1239,7 +1239,7 @@
         free(uDest);
         
        
-        /* test with embeded nulls */
+        /* test with embedded nulls */
         uSrc = src16WithNulls;
         uSrcLen = sizeof(src16WithNulls)/2;
         wDestLen =0;
diff --git a/icu4c/source/test/cintltst/utexttst.c b/icu4c/source/test/cintltst/utexttst.c
index 8c70f0e..8f3974c 100644
--- a/icu4c/source/test/cintltst/utexttst.c
+++ b/icu4c/source/test/cintltst/utexttst.c
@@ -57,7 +57,7 @@
  *            This is not intended to be a complete test of the API functionality.  That is
  *            in the C++ intltest program.
  *            This test is intended to check that everything can be accessed and built in 
- *            a pure C enviornment.
+ *            a pure C environment.
  */
 
 
diff --git a/icu4c/source/test/intltest/apicoll.cpp b/icu4c/source/test/intltest/apicoll.cpp
index ef4f167..2130d40 100644
--- a/icu4c/source/test/intltest/apicoll.cpp
+++ b/icu4c/source/test/intltest/apicoll.cpp
@@ -804,11 +804,11 @@
     coliter->reset();
     coliter->setText(*chariter, success);
     if(!U_FAILURE(success)){
-        errln("Expeceted error");
+        errln("Expected error");
     }
     iterator1->setText((UnicodeString)"hello there", success);
     if(!U_FAILURE(success)){
-        errln("Expeceted error");
+        errln("Expected error");
     }
 
     delete chariter;
diff --git a/icu4c/source/test/intltest/csdetest.cpp b/icu4c/source/test/intltest/csdetest.cpp
index 4068df3..d285f0a 100644
--- a/icu4c/source/test/intltest/csdetest.cpp
+++ b/icu4c/source/test/intltest/csdetest.cpp
@@ -396,7 +396,7 @@
     conf = ucsdet_getConfidence(match, &status);
 
     if (strcmp(name, "UTF-16LE") != 0) {
-        errln("Enconding detection failure for UTF-16LE: got %s", name);
+        errln("Encoding detection failure for UTF-16LE: got %s", name);
         return;
     }
 
diff --git a/icu4c/source/test/intltest/itrbnfp.cpp b/icu4c/source/test/intltest/itrbnfp.cpp
index ba1fba7..62e97fa 100644
--- a/icu4c/source/test/intltest/itrbnfp.cpp
+++ b/icu4c/source/test/intltest/itrbnfp.cpp
@@ -104,7 +104,7 @@
   // these rules would throw exceptions when formatting, if we could throw exceptions
   const char* exceptrules[] = {
     "10:", // formatting any value with a one's digit will fail
-    "11: << x", // formating a multiple of 10 causes rollback rule to fail
+    "11: << x", // formatting a multiple of 10 causes rollback rule to fail
     "%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
 
     NULL,
diff --git a/icu4c/source/test/intltest/regextst.cpp b/icu4c/source/test/intltest/regextst.cpp
index 13fb4db..bf6922b 100644
--- a/icu4c/source/test/intltest/regextst.cpp
+++ b/icu4c/source/test/intltest/regextst.cpp
@@ -5461,7 +5461,7 @@
 }
 
 // Bug 9283
-//   This test is checking for the existance of any supplemental characters that case-fold
+//   This test is checking for the existence of any supplemental characters that case-fold
 //   to a bmp character.
 //
 //   At the time of this writing there are none. If any should appear in a subsequent release
diff --git a/icu4c/source/test/intltest/restsnew.cpp b/icu4c/source/test/intltest/restsnew.cpp
index 5d25dd1..724139f 100644
--- a/icu4c/source/test/intltest/restsnew.cpp
+++ b/icu4c/source/test/intltest/restsnew.cpp
@@ -1101,7 +1101,7 @@
     /* if everything is working correctly, the size of this string */
     /* should be 7. Everything else is a wrong answer, esp. 3 and 6*/
 
-    strcpy(action, "getting and testing of string with embeded zero");
+    strcpy(action, "getting and testing of string with embedded zero");
     ResourceBundle res = theBundle.get("zerotest", status);
     CONFIRM_UErrorCode(status, U_ZERO_ERROR);
     CONFIRM_EQ(res.getType(), URES_STRING);
diff --git a/icu4c/source/test/intltest/tchcfmt.h b/icu4c/source/test/intltest/tchcfmt.h
index 057971c..544ec5f 100644
--- a/icu4c/source/test/intltest/tchcfmt.h
+++ b/icu4c/source/test/intltest/tchcfmt.h
@@ -50,7 +50,7 @@
                       double v2, const char* str2,
                       double v3, const char* str3);
     /** 
-     *    runs tests in local funtions:
+     *    runs tests in local functions:
      **/
     void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
 };
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index b877db5..4b1b348 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -544,57 +544,57 @@
     
     any = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, NULL, NULL, ec);
     if (U_FAILURE(ec)) {
-        dataerrln("Failed to create enumration for ANY");
+        dataerrln("Failed to create enumeration for ANY");
         goto cleanup;
     }
 
     canonical = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for CANONICAL");
+        errln("Failed to create enumeration for CANONICAL");
         goto cleanup;
     }
 
     canonicalLoc = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, NULL, NULL, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for CANONICALLOC");
+        errln("Failed to create enumeration for CANONICALLOC");
         goto cleanup;
     }
 
     any_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, "US", NULL, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for ANY_US");
+        errln("Failed to create enumeration for ANY_US");
         goto cleanup;
     }
 
     canonical_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, "US", NULL, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for CANONICAL_US");
+        errln("Failed to create enumeration for CANONICAL_US");
         goto cleanup;
     }
 
     canonicalLoc_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, "US", NULL, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for CANONICALLOC_US");
+        errln("Failed to create enumeration for CANONICALLOC_US");
         goto cleanup;
     }
 
     rawOffset = (-5)*60*60*1000;
     any_W5 = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for ANY_W5");
+        errln("Failed to create enumeration for ANY_W5");
         goto cleanup;
     }
 
     any_CA_W5 = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, "CA", &rawOffset, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for ANY_CA_W5");
+        errln("Failed to create enumeration for ANY_CA_W5");
         goto cleanup;
     }
 
     rawOffset = 14*60*60*1000;
     any_US_E14 = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, "US", &rawOffset, ec);
     if (U_FAILURE(ec)) {
-        errln("Failed to create enumration for ANY_US_E14");
+        errln("Failed to create enumeration for ANY_US_E14");
         goto cleanup;
     }
 
diff --git a/icu4c/source/tools/gencfu/gencfu.cpp b/icu4c/source/tools/gencfu/gencfu.cpp
index 541b78e..073ddef 100644
--- a/icu4c/source/tools/gencfu/gencfu.cpp
+++ b/icu4c/source/tools/gencfu/gencfu.cpp
@@ -21,10 +21,10 @@
 //       options:   -v         verbose
 //                  -? or -h   help
 //
-//   The input rule filew is are plain text files containing confusable character
+//   The input rule file are plain text files containing confusable character
 //    definitions in the input format defined by Unicode UAX39 for the files
 //    confusables.txt.  This source (.txt) format
-//    is also accepted direaccepted by ICU spoof detedtors.  The
+//    is also accepted by ICU spoof detectors. The
 //    files must be encoded in utf-8 format, with or without a BOM.
 //
 //   The script used to compile confusablesWholeScript.txt into the CFU file
diff --git a/icu4c/source/tools/genrb/genrb.cpp b/icu4c/source/tools/genrb/genrb.cpp
index 6f3a13a..a9b60b9 100644
--- a/icu4c/source/tools/genrb/genrb.cpp
+++ b/icu4c/source/tools/genrb/genrb.cpp
@@ -564,7 +564,7 @@
 
     u_cleanup();
 
-    /* Dont return warnings as a failure */
+    /* Don't return warnings as a failure */
     if (U_SUCCESS(status)) {
         return 0;
     }
diff --git a/icu4c/source/tools/genrb/wrtjava.cpp b/icu4c/source/tools/genrb/wrtjava.cpp
index f1eb229..1ee2f5f 100644
--- a/icu4c/source/tools/genrb/wrtjava.cpp
+++ b/icu4c/source/tools/genrb/wrtjava.cpp
@@ -15,7 +15,7 @@
 *   Date        Name        Description
 *   01/11/02    Ram         Creation.
 *   02/12/08    Spieth      Fix errant 'new Object[][]{' insertion
-*   02/19/08    Spieth      Removed ICUListResourceBundle dependancy
+*   02/19/08    Spieth      Removed ICUListResourceBundle dependency
 *******************************************************************************
 */
 
diff --git a/icu4c/source/tools/pkgdata/pkgtypes.h b/icu4c/source/tools/pkgdata/pkgtypes.h
index 3297d0a..8ae1ec4 100644
--- a/icu4c/source/tools/pkgdata/pkgtypes.h
+++ b/icu4c/source/tools/pkgdata/pkgtypes.h
@@ -36,7 +36,7 @@
 
 
 /*
- * write CharList 'l' into stream 's' using deliminter 'delim' (delim can be NULL). quoted: -1 remove, 0 as is, 1 add quotes
+ * write CharList 'l' into stream 's' using delimiter 'delim' (delim can be NULL). quoted: -1 remove, 0 as is, 1 add quotes
  */
 const char *pkg_writeCharList(FileStream *s, CharList *l, const char *delim, int32_t quoted);
 
diff --git a/icu4c/source/tools/toolutil/flagparser.cpp b/icu4c/source/tools/toolutil/flagparser.cpp
index 464d6be..65513f3 100644
--- a/icu4c/source/tools/toolutil/flagparser.cpp
+++ b/icu4c/source/tools/toolutil/flagparser.cpp
@@ -64,7 +64,7 @@
             }
 
             if ((int32_t)uprv_strlen(buffer) == (currentBufferSize - 1) && buffer[currentBufferSize-2] != '\n') {
-                /* Allocate more space for buffer if it didnot read the entrire line */
+                /* Allocate more space for buffer if it did not read the entire line */
                 allocateMoreSpace = TRUE;
                 T_FileStream_rewind(f);
                 break;
diff --git a/icu4c/source/tools/toolutil/ucmstate.cpp b/icu4c/source/tools/toolutil/ucmstate.cpp
index ed1afb9..1ff2d7d 100644
--- a/icu4c/source/tools/toolutil/ucmstate.cpp
+++ b/icu4c/source/tools/toolutil/ucmstate.cpp
@@ -101,7 +101,7 @@
             end=start;
         }
 
-        /* determine the state entrys for this range */
+        /* determine the state entry for this range */
         if(*s!=':' && *s!='.') {
             /* the default is: final state with valid entries */
             entry=MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_16, 0);
diff --git a/icu4c/source/tools/toolutil/xmlparser.cpp b/icu4c/source/tools/toolutil/xmlparser.cpp
index 5a03856..918b061 100644
--- a/icu4c/source/tools/toolutil/xmlparser.cpp
+++ b/icu4c/source/tools/toolutil/xmlparser.cpp
@@ -592,7 +592,7 @@
     mAmps.reset(s);
     // See the initialization for the regex matcher mAmps.
     //    Which entity we've matched is determined by which capture group has content,
-    //      which is flaged by start() of that group not being -1.
+    //      which is flagged by start() of that group not being -1.
     while (mAmps.find()) {
         if (mAmps.start(1, status) != -1) {
             replacement.setTo((UChar)x_AMP);
diff --git a/icu4j/build.xml b/icu4j/build.xml
index 54cd8f1..c430d1f 100644
--- a/icu4j/build.xml
+++ b/icu4j/build.xml
@@ -425,7 +425,7 @@
 
     <target name="secure" depends="icu4jJar" description="(Deprecated)Build ICU4J API and test classes for running the ICU4J test suite with Java security manager enabled"/>
 
-    <!-- Check to see if JVM_OPTIONS enviroment variable is set. This can be use to set the heap size. -->
+    <!-- Check to see if JVM_OPTIONS environment variable is set. This can be use to set the heap size. -->
     <property name="env.JVM_OPTIONS" value=""/>
     <property name="jvm_options" value="${env.JVM_OPTIONS}"/>
 
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
index 6c4f07b..aa03689 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -455,7 +455,7 @@
                // of 1,000.  This prevents us from getting "onze cents cent
                // vingt-deux" ("eleven hundred one hundred twenty-two").
         + "    1100>: onze cents[ >>];\n"
-               // at 1,200, we go back to formating in thousands, so we
+               // at 1,200, we go back to formatting in thousands, so we
                // repeat the rule for 1,000
         + "    1200: mille >>;\n"
                // at 2,000, the multiplier is added
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
index 6d5a2b6..b4ae25c 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
@@ -141,7 +141,7 @@
      */
     @Override
     protected final void implOnUnmappableCharacter(CodingErrorAction newAction) {
-        // dont run infinitely
+        // don't run infinitely
         if (unmappableCharacterCalled)
             return;
 
@@ -156,7 +156,7 @@
     }
 
     /**
-     * Sets the callback encoder method and context to be used if an illegal sequence is encounterd.
+     * Sets the callback encoder method and context to be used if an illegal sequence is encountered.
      * You would normally call this twice to set both the malform and unmappable error. In this case,
      * newContext should remain the same since using a different newContext each time will negate the last
      * one used.
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
index 8d4914c..3a109fa 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
@@ -119,7 +119,7 @@
                              * - If any of the non-initial bytes could be the start of a character,
                              *   we stop the illegal sequence before the first one of those.
                              */
-                            isEmptySegment = false; /* different error here, reset this to avoid spurious furture error */
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious future error */
                             err = CoderResult.malformedForLength(1);
                             toUBytesArray[0] = UCNV_TILDE;
                             if (isStateDBCS ? (0x21 <= mySourceChar && mySourceChar <= 0x7e) : mySourceChar <= 0x7f) {
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
index ca490af..224409e 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
@@ -801,7 +801,7 @@
      * Post context
      * i) ATR : Attribute code is used to declare the font and script switching.
      *    Currently we only switch scripts and font codes consumed without generating an error
-     * ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
+     * ii) EXT : Extension code is used to declare switching to Sanskrit and for obscure,
      *     obsolete characters
      * Pre context
      * i) Halant: if preceeded by a halant then it is a explicit halant
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
index c8d385e..a939727 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
@@ -953,7 +953,7 @@
              * 2. Look up group in table & try that (could b
              *     A) Unicode group
              *     B) control group
-             *     C) national encodeing
+             *     C) national encoding
              *        or ambiguous SBCS or MBCS group (on to step 4...)
              * 3. If its ambiguous, try this order:
              *     A) The optimization group
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
index 8da0352..b3397ae 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -5087,7 +5087,7 @@
                         }while((++c&0xf) != 0);
 
                     } else {
-                        c+=16;   /* emplty stage3 block */
+                        c+=16;   /* empty stage3 block */
                     }
                 }
             } else {
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
index 3813645..7217ba0 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
@@ -210,7 +210,7 @@
             char trail = (char) (((toUBytesArray[2 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | ((toUBytesArray[3 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK)));
 
             if (!UTF16.isTrailSurrogate(trail)) {
-                // pretend like we didnt read the last 2 bytes
+                // pretend like we didn't read the last 2 bytes
                 toULength = 2;
                 source.position(source.position() - 2);
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
index 373f18e..ce03f98 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
@@ -62,7 +62,7 @@
             }
             if (isSet(startDates[eraIdx])) {
                 throw new ICUException(
-                        "Dupulicated era rule for rule key:" + eraIdxStr + " in era rule data for " + calType.getId());
+                        "Duplicated era rule for rule key:" + eraIdxStr + " in era rule data for " + calType.getId());
             }
 
             boolean hasName = true;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
index 2bdd900..5e98165 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
@@ -95,7 +95,7 @@
      * position.
      * @param text the text to be iterated
      * @param sym the symbol table, or null if there is none.  If sym is null,
-     * then variables will not be deferenced, even if the PARSE_VARIABLES
+     * then variables will not be dereferenced, even if the PARSE_VARIABLES
      * option is set.
      * @param pos upon input, the index of the next character to return.  If a
      * variable has been dereferenced, then pos will <em>not</em> increment as
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
index d1bd994..19ad400 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
@@ -462,7 +462,7 @@
     /**
      * Private method returning LocaleDisplayNames instance for the locale of this
      * instance. Because LocaleDisplayNames is only used for generic
-     * location formant and partial location format, the LocaleDisplayNames
+     * location format and partial location format, the LocaleDisplayNames
      * is instantiated lazily.
      *
      * @return the instance of LocaleDisplayNames for the locale of this object.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
index e095237..6eae61cc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
@@ -1069,7 +1069,7 @@
      * which has pre-defined interval pattern in resource file.
      *
      * TODO (xji): set field weight or
-     *             isolate the funtionality in DateTimePatternGenerator
+     *             isolate the functionality in DateTimePatternGenerator
      * @param  inputSkeleton        input skeleton
      * @return 0, if there is exact match for input skeleton
      *         1, if there is only field width difference between
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
index f9431b5..5c95c2d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -965,7 +965,7 @@
         if (sep.length() == 1) {
             this.monetarySeparator = sep.charAt(0);
         } else {
-            // Use default decimap separator character as fallbacl
+            // Use default decimal separator character as fallback
             this.monetarySeparator = DEF_DECIMAL_SEPARATOR;
         }
     }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
index c5a0e19..6c2a096 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
@@ -1703,7 +1703,7 @@
      *  <li>{@link #NFC}    - Unicode canonical decompositiion
      *                        followed by canonical composition.
      *  <li>{@link #NFKC}   - Unicode compatibility decompositiion
-     *                        follwed by canonical composition.
+     *                        followed by canonical composition.
      *  <li>{@link #NFD}    - Unicode canonical decomposition
      *  <li>{@link #NFKD}   - Unicode compatibility decomposition.
      *  <li>{@link #NONE}   - Do nothing but return characters
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
index 8ebc31b..e1a1ab8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
@@ -248,7 +248,7 @@
          * Returns the 'functionally equivalent' locale with respect to plural rules. Calling PluralRules.forLocale with
          * the functionally equivalent locale, and with the provided locale, returns rules that behave the same. <br>
          * All locales with the same functionally equivalent locale have plural rules that behave the same. This is not
-         * exaustive; there may be other locales whose plural rules behave the same that do not have the same equivalent
+         * exhaustive; there may be other locales whose plural rules behave the same that do not have the same equivalent
          * locale.
          *
          * @param locale
@@ -2432,7 +2432,7 @@
      * locale, and with the provided locale, returns rules that behave the same.
      * <br>
      * All locales with the same functionally equivalent locale have
-     * plural rules that behave the same.  This is not exaustive;
+     * plural rules that behave the same.  This is not exhaustive;
      * there may be other locales whose plural rules behave the same
      * that do not have the same equivalent locale.
      *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
index cc4b820..292bd91 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -1702,7 +1702,7 @@
         initLocalizations(localizations);
 
         // start by stripping the trailing whitespace from all the rules
-        // (this is all the whitespace follwing each semicolon in the
+        // (this is all the whitespace following each semicolon in the
         // description).  This allows us to look for rule-set boundaries
         // by searching for ";%" without having to worry about whitespace
         // between the ; and the %
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
index 89548db..ce3bd88 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
@@ -263,7 +263,7 @@
 
         c4 = floorDivide(julianDay - jdEpochOffset, 1461, r4);
 
-        // exteded year
+        // extended year
         fields[0] = 4 * c4 + (r4[0]/365 - r4[0]/1460); // 4 * <number of 4year cycle> + <years within the last cycle>
 
         int doy = (r4[0] == 1460) ? 365 : (r4[0] % 365); // days in present year
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
index 9117acb..aa76c02 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
@@ -703,7 +703,7 @@
 //////////////////////
 
     /**
-     * Return true if the current time for this Calendar is in Daylignt
+     * Return true if the current time for this Calendar is in Daylight
      * Savings Time.
      */
     boolean inDaylightTime() {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
index d8732a8..6d27049 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
@@ -1058,7 +1058,7 @@
      *
      *  or
      *
-     * null on any error cases, for exmaple, FREQ=YEARLY is not available
+     * null on any error cases, for example, FREQ=YEARLY is not available
      *
      * When UNTIL attribute is available, the time will be set to until[0],
      * otherwise, MIN_TIME
diff --git a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
index d344baf..f4c792a 100644
--- a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
+++ b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -2252,7 +2252,7 @@
                 public void run() {
                     // commented out since the mehtods on
                     // Charset API are supposed to be thread
-                    // safe ... to test it we dont sync
+                    // safe ... to test it we don't sync
 
                     // synchronized(charset){
                    while (!interrupted()) {
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
index 36a25bd..2298ab8 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
@@ -612,7 +612,7 @@
                     int ce = resultiter.next();
                     while (ce != CollationElementIterator.NULLORDER) {
                         if (ce != iter.next()) {
-                            errln("Discontiguos contraction test mismatch at"
+                            errln("Discontiguous contraction test mismatch at"
                                   + count);
                             return;
                         }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
index ebc44fb..d0d2b50 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
@@ -3801,7 +3801,7 @@
         assertEquals("Initial joule", "joule", joule.getIdentifier());
 
         // "Invalid prefix" test not needed: in Java we cannot pass a
-        // non-existant enum instance. (In C++ an int can be typecast.)
+        // non-existent enum instance. (In C++ an int can be typecast.)
 
         MeasureUnit unit = joule.withPrefix(MeasureUnit.MeasurePrefix.HECTO);
         assertEquals("Joule with hecto prefix", "hectojoule", unit.getIdentifier());
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
index ad8cfde..3de6ced 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
@@ -1802,7 +1802,7 @@
     }
 
     /**
-     * 4241880: Decimal format doesnt round a double properly when the number is less than 1
+     * 4241880: Decimal format doesn't round a double properly when the number is less than 1
      */
     @Test
     public void test4241880() {
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
index 564a69e..2588ad4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -69,7 +69,7 @@
             ">>",
             ">>>",
             "10:", // formatting any value with a one's digit will fail
-            "11: << x", // formating a multiple of 10 causes rollback rule to fail
+            "11: << x", // formatting a multiple of 10 causes rollback rule to fail
             "%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
         };
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
index 1ff44bd..48222fb 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
@@ -1383,7 +1383,7 @@
                    // of 1,000.  This prevents us from getting "onze cents cent
                    // vingt-deux" ("eleven hundred one hundred twenty-two").
                 "1100>: onze cents[ >>];\n" +
-                   // at 1,200, we go back to formating in thousands, so we
+                   // at 1,200, we go back to formatting in thousands, so we
                    // repeat the rule for 1,000
                 "1200: mille >>;\n" +
                    // at 2,000, the multiplier is added
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
index f44992c..ac8dc34 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
@@ -934,7 +934,7 @@
                currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
             }else if( type == Node.ELEMENT_NODE){
                 if(name.equals(BINSOURCE)){
-                    // loop to pickup internal-file/extenal-file element
+                    // loop to pickup internal-file/external-file element
                     continue;
                 }else if(name.equals(NOTE)){
                     // save the note values
diff --git a/tools/cldr/build.xml b/tools/cldr/build.xml
index de2cdc6..29418ea 100644
--- a/tools/cldr/build.xml
+++ b/tools/cldr/build.xml
@@ -23,7 +23,7 @@
              with Ant, this is messier than it should be. All we are saying here is:
              "Use the property if explicitly set, otherwise use the environment variable."
              We cannot just set the property to the environment variable, since expansion
-             fails for non existant properties, and you are left with a literal value of
+             fails for non existent properties, and you are left with a literal value of
              "${env.CLDR_DIR}". -->
         <condition property="cldrDir" value="${env.CLDR_DIR}">
             <isset property="env.CLDR_DIR"/>
diff --git a/tools/cldr/cldr-to-icu/build-icu-data.xml b/tools/cldr/cldr-to-icu/build-icu-data.xml
index b0fafe3..22f8780 100644
--- a/tools/cldr/cldr-to-icu/build-icu-data.xml
+++ b/tools/cldr/cldr-to-icu/build-icu-data.xml
@@ -24,7 +24,7 @@
              with Ant, this is messier than it should be. All we are saying here is:
              "Use the property if explicitly set, otherwise use the environment variable."
              We cannot just set the property to the environment variable, since expansion
-             fails for non existant properties, and you are left with a literal value of
+             fails for non existent properties, and you are left with a literal value of
              "${env.CLDR_DATA_DIR}". -->
         <condition property="cldrDataDir" value="${env.CLDR_DATA_DIR}">
             <isset property="env.CLDR_DATA_DIR"/>
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
index 886c014..be3e70c 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
@@ -302,7 +302,7 @@
         // generate list automatically (rather than having a hard coded list in the type) but
         // https://unicode.org/reports/tr35/tr35-general.html#ExemplarSyntax
         // makes it quite clear that this is infeasible, since there are many equivalent
-        // representations of the examplar characters that could appear in the value
+        // representations of the exemplar characters that could appear in the value
         // (e.g. "[a b ... z]", "[a-z]", "[{a} {b} ... {z}]")
         private CldrValue getExemplarValue(CldrPath path) {
             StringBuilder exemplarList = new StringBuilder("[");
diff --git a/tools/scripts/bldicures.py b/tools/scripts/bldicures.py
index 920c977..68ab34a 100755
--- a/tools/scripts/bldicures.py
+++ b/tools/scripts/bldicures.py
@@ -142,7 +142,7 @@
     print gens
 
 if (args.verbose>3):
-    print "TODO: dependency tracking. For now, dont' care"
+    print "TODO: dependency tracking. For now, don't care"
 
 for gen in gens:
     item = gens[gen]
diff --git a/tools/unicodetools/com/ibm/rbm/RBImporter.java b/tools/unicodetools/com/ibm/rbm/RBImporter.java
index 724a5b9..6f9fe15 100644
--- a/tools/unicodetools/com/ibm/rbm/RBImporter.java
+++ b/tools/unicodetools/com/ibm/rbm/RBImporter.java
@@ -277,7 +277,7 @@
         return markTranslatedCheck.isSelected();
     }
 	
-    // Returns whether or not a group of name non-existant in the active bundle is created
+    // Returns whether or not a group of name non-existent in the active bundle is created
 	
     protected boolean getDefaultGroupCreation() {
         return createGroupsCheck.isSelected();