Преобразование индексов глифа в символ Unicode - PullRequest
1 голос
/ 15 июня 2011

Я работаю над образцом драйвера принтера.В этом примере я подключаюсь к вызову DrvTextOut ().когда вызывается обратный вызов, я получаю текст в виде индексов глифа.я хочу преобразовать эти индексы Glyph в символы Unicode.

, пожалуйста, дайте мне знать, как преобразовать его.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Если вы имеете в виду, что вам нужно разобраться со случаем, когда STROBJ-> flAccel имеет установленный SO_GLYPHINDEX_TEXTOUT, то посмотрите этот ответ здесь от Бобби Маттаппалли от Microsoft:

http://www.winvistatips.com/glyph-handles-drvtextout-t183048.html

Не всегда отображение 1: 1 между индексами глифов и характером коды и наоборот. Это особенно верно с международным наборы символов, такие как иврит, арабский и т.д.

Так что, как только вы получите это как SO_GLYPHINDEX_TEXTOUT, ваш водитель должен обрабатывать сам глиф вместо пытаясь преобразовать его обратно в Unicode.

1 голос
/ 15 июня 2011

В общем случае ответ «вы не можете».В PDF, например, у вас может быть встроенная карта символов, которая позволяет вам искать символы, соответствующие глифам (например, если вы использовали пакет cmap с pdfLaTeX для создания PDF), но глифы являются частными для шрифта, иможет быть много символов, которые используются для одного и того же символа, и наоборот, благодаря волшебству таблиц GSUB.

Если вы действительно отчаялись, и имеют доступ к шрифту ввопрос, вы можете попытаться создать карту символов самостоятельно из файла шрифта, но вам лучше знать, какой шрифт вы сейчас просматриваете.

Редактировать: Я думаю, ваш вопрос помечен плохо;Вы имеете в виду эту функцию ?Возможно, структура FONTOBJ , которой вы уже владеете, предоставляет какую-то карту символов шрифта, я бы не знал.

...