decompose_codepoints (ActiveSupport::Multibyte::Chars)

    # File lib/active_support/multibyte/chars.rb, line 530
            def decompose_codepoints(type, codepoints)
              codepoints.inject([]) do |decomposed, cp|
                # if it's a hangul syllable starter character
                if HANGUL_SBASE <= cp and cp < HANGUL_SLAST
                  sindex = cp - HANGUL_SBASE
                  ncp = [] # new codepoints
                  ncp << HANGUL_LBASE + sindex / HANGUL_NCOUNT
                  ncp << HANGUL_VBASE + (sindex % HANGUL_NCOUNT) / HANGUL_TCOUNT
                  tindex = sindex % HANGUL_TCOUNT
                  ncp << (HANGUL_TBASE + tindex) unless tindex == 0
                  decomposed.concat ncp
                # if the codepoint is decomposable in with the current decomposition type
                elsif (ncp = UCD.codepoints[cp].decomp_mapping) and (!UCD.codepoints[cp].decomp_type || type == :compatability)
                  decomposed.concat decompose_codepoints(type, ncp.dup)
                else
                  decomposed << cp
                end
              end
            end