Как определить наличие символа в шрифте?

Тема в разделе "WASM.WIN32", создана пользователем weiv, 27 фев 2005.

  1. weiv

    weiv New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2003
    Сообщения:
    25
    Адрес:
    Новосибирск
    Допустим я прочитал unicode текстовый файл.

    Причем в нем содержатся символы на нескольких языках.

    Чтобы потом отображать символы в окне буду использовать

    TextOutW. Но перед тем как рисовать конкретный символ,

    мне нужно узнать, есть ли он в текущем шрифте,

    выбранном в контекст устройтва. А если нет,

    то мне нужно перебрать все шрифты и искать

    в них - есть ли этот символ.



    Вопрос: как мне определить, содержит ли шрифт

    заданный unicode-символ?



    Знаю, что есть функция GetTextCharsetInfo, которая

    заполняет структуру FONTSIGNATURE. Но что мне дадут

    эти unicode subranges? Как я по ним узнаю все-таки

    есть ли заданный символ в этом шрифте?
     
  2. weiv

    weiv New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2003
    Сообщения:
    25
    Адрес:
    Новосибирск
    Ладно. Вроде я понял все сам.

    В структуре FONTSIGNATURE есть поле fsUsb, точнее это массив DWORD fsUsb[4].



    Каждый бит в fsUsb определяет один диапазон символов.

    Например, бит 9 говорит, что в выбранном шрифте есть символы из диапазона 0400 - 04FF (Cyrillic), бит 11 - символы из диапазона 0590 - 05FF (Basic Hebrew).

    Это все содержится в таблице Unicode Subset Bitfields.



    Просто в моем Win32 Programmer's Reference не было этой таблицы, а в MSDN на сайте msdn.microsoft.com она оказалась.
     
  3. Foamplast

    Foamplast New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2003
    Сообщения:
    80
    Адрес:
    Russia
    Ставь MSDN на 3-х CD.