ICU4C can be configured to different sizes, based on the functionality that is needed. The largest part of ICU is the data for different countries and charset converters, so the easiest way to reduce the size is to use configuration switches to remove data that is not needed by the particular implementation.
For a description of how to reduce the size of ICU4C, see Customizing ICU's DataLibrary. For corresponding information on ICU4J (including sizes), see How to Modularize ICU4J. The Data Library Customizer can also be used to modularize the data for the latest version of ICU.
Here are the sizes of the main data file, icudt30.dll on Windows, when certain configuration files are removed or renamed.
8.17 MB normal
Here are the sizes of the remaining items that are not easy to remove without editing makefiles, but which can be done if necessary.
354 KB (363,358 bytes) UCA collation (invuca.icu + ucadata.icu + coll/*.res)
If you would like to see other code changes that can be done to make ICU4C smaller, please read the Packaging ICU section of the User's Guide.
If you are only using small portions of ICU, you can link against the static form of the ICU libraries. You need to make sure that you specify the --enable-static configure option when building ICU. Statically linking against ICU will allow the linker to only bring in the code that is being used by your application, but it will make it more difficult to upgrade or share your copy of ICU that you provide with your application.