code: public int getCharFromName(int choice, String name)
      {
          // checks for illegal arguments
          if (choice >= UCharacterNameChoice.CHAR_NAME_CHOICE_COUNT ||
              name == null || name.length() == 0) {
              return -1;
          }
  
          // try extended names first
          int result = getExtendedChar(name.toLowerCase(Locale.ENGLISH), choice);
          if (result >= -1) {
              return result;
          }
  
          String upperCaseName = name.toUpperCase(Locale.ENGLISH);
          // try algorithmic names first, if fails then try group names
          // int result = getAlgorithmChar(choice, uppercasename);
  
          if (choice == UCharacterNameChoice.UNICODE_CHAR_NAME ||
              choice == UCharacterNameChoice.EXTENDED_CHAR_NAME
          ) {
              int count = 0;
              if (m_algorithm_ != null) {
                  count = m_algorithm_.length;
              }
              for (count --; count >= 0; count --) {
                  result = m_algorithm_[count].getChar(upperCaseName);
                  if (result >= 0) {
                      return result;
                  }
              }
          }
  
          if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
              result = getGroupChar(upperCaseName,
                                    UCharacterNameChoice.UNICODE_CHAR_NAME);
              if (result == -1) {
                  result = getGroupChar(upperCaseName,
                                        UCharacterNameChoice.CHAR_NAME_ALIAS);
              }
          }
          else {
              result = getGroupChar(upperCaseName, choice);
          }
          return result;
      }
docs: Find a character by its name and return its code point value
  @param choice selector to indicate if argument name is a Unicode 1.0
  or the most current version
  @param name the name to search for
  @return code point