Я сейчас пишу собственную функцию DrawTextEx(), которая поддерживает смайлики. Используя эту функцию, обратный вызов вызывается каждый раз, когда в тексте содержится смайлик, предоставляя возможность вызывающему абоненту заменить текстовый сегмент, содержащий смайлик, на изображение. Например, символы Unicode 0x3DD8 0x00DE, найденные в тексте, будут заменены улыбающимся изображением лица во время рисования текста. На самом деле эта функция работает нормально.Преобразование кода смайлика «HTML-объект» в UTF16 (в C++)
Теперь я хочу реализовать библиотеку изображений со стороны абонента. Я получаю текстовый сегмент, такой как 0x3DD8 0x00DE, в моей функции обратного вызова, и моя идея состоит в том, чтобы использовать этот код в качестве ключа на карте, содержащей все комбинации Юникода, каждый из которых связан со структурой, содержащей изображение для рисования. Я нашел хороший пакет на сайте http://emojione.com/developers/. Все пакеты, доступные на этом сайте, содержат несколько имен файлов, это шестнадцатеричный код. Поэтому я могу перебирать файлы, содержащиеся в пакете, и автоматически создавать свою карту.
Однако я обнаружил, что эти коды являются частью другого стандарта и на самом деле представляют собой набор элементов с названием «объект HTML», которые, по-видимому, используются в веб-разработке, как это видно на веб-сайте http://graphemica.com/%F0%9F%98%80. Поэтому, чтобы иметь возможность использовать эти файлы, мне нужно решение для преобразования значений сущности HTML, содержащихся в их именах, в код UTF16. Например, в случае вышеупомянутого улыбающегося лица мне нужно преобразовать код сущности 0x1f600 HTML в код 0x3DD8 0x00DE UTF16.
Подход грубой силы может состоять в том, чтобы написать карту, которая преобразует эти коды, путем добавления каждого из них в моем коде один за другим. Но поскольку стандарт Unicode содержит в наиболее оптимистичном сценарии более 1800 комбинаций для смайликов, я хочу знать, что существует существующее решение, такое как известный API или функция, которые я могу использовать для выполнения этой работы. Или есть известный трюк? (Как, например, "символ + ('а' - 'A')" для преобразования в верхнем регистре полукокса, чтобы понизить)
С уважением