public String toUnicode(char ch){
        // check bfChar
        if (bfChars != null) {
            char[] tmp = bfChars.get((int) ch);
            if (tmp != null) {
                return String.valueOf(tmp);
            }
        }
        // check bfRange for matches, there may be many ranges to check
        if (bfRange != null) {
            for (CMapRange aBfRange : bfRange) {
                if (aBfRange.inRange(ch)) {
                    return String.valueOf(aBfRange.getCMapValue(ch));
                }
            }
        }
        return String.valueOf(ch);
    }