не знаю, что я делаю не так, но только краказябры на экране
Причем заметил что таких краказябр даже нету в устанавливаемом фонте Courier.
При замене на Arial или Times внешний вид краказябр соотв. меняется.
Попробуй создавать фонт как System.Drawing.Font font = new System.Drawing.Font(...), и уже потом вытаскивать из него hFont;
// IntPtr fontH = font.ToHfont();
Пример здесь
И всё таки мне кажется что не работает wglUseFontBitmaps с русскими буквами.
У меня получилось только когда я заменил шрифт, в котором на месте латинских букв поставил изображения русских.
Здравствуйте, STC, Вы писали:
STC>Здравствуйте, Sasparella, Вы писали:
S>>Возможно ли используя сабж писать русскими буквами?
S>>Если да, то как?
S>>Саша
STC>Конечно, возможно. STC>Поставь lfCharSet = ANSI_CHARSET и выбери шрифт, который имеет кириллицу, например, lfFaceName = "Courier"
Здравствуйте, burunduk, Вы писали:
B>И всё таки мне кажется что не работает wglUseFontBitmaps с русскими буквами. B>У меня получилось только когда я заменил шрифт, в котором на месте латинских букв поставил изображения русских.
Всё работает, просто вместо ANSI_CHARSET нужно использовать
RUSSIAN_CHARSET, числовое значение 204 (см WinGDI.h).
Проверено работает с wglUseFontBitmaps и wglUseFontOutlines.
А объясните мне пожалуйста вообще смысл этих ANSI_CHARSET, RUSSIAN_CHARSET для unicode-шрифтов. Не понимаю.
Здравствуйте, dammer, Вы писали:
D>Здравствуйте, burunduk, Вы писали:
B>>И всё таки мне кажется что не работает wglUseFontBitmaps с русскими буквами. B>>У меня получилось только когда я заменил шрифт, в котором на месте латинских букв поставил изображения русских.
D>Всё работает, просто вместо ANSI_CHARSET нужно использовать D>RUSSIAN_CHARSET, числовое значение 204 (см WinGDI.h).
D>Проверено работает с wglUseFontBitmaps и wglUseFontOutlines.
Здравствуйте, burunduk, Вы писали:
B>А объясните мне пожалуйста вообще смысл этих ANSI_CHARSET, RUSSIAN_CHARSET для unicode-шрифтов. Не понимаю.
Это так сказать наследие В те времена когда разрабатывался GDI активно использовались в основном шрифты ttf и кодировка ASCII — и в случае с Unicode шрифтом GDI просто получает начертания символов определённого языкового Unicode диапазона.
Character Sets Used by Fonts
All fonts use a character set. A character set contains punctuation marks, numerals, uppercase and lowercase letters, and all other printable characters. Each element of a character set is identified by a number.
Most character sets in use are supersets of the U.S. ASCII character set, which defines characters for the 96 numeric values from 32 through 127. There are five major groups of character sets:
Windows
Unicode
OEM (original equipment manufacturer)
Symbol
Vendor-specific
Windows Character Set
The Windows character set is the most commonly used character set. It is essentially equivalent to the ANSI character set. The blank character is the first character in the Windows character set. It has a hexadecimal value of 0x20 (decimal 32). The last character in the Windows character set has a hexadecimal value of 0xFF (decimal 255).
Unicode Character Set
The Windows character set uses 8 bits to represent each character; therefore, the maximum number of characters that can be expressed using 8 bits is 256 (2^8). This is usually sufficient for Western languages, including the diacritical marks used in French, German, Spanish, and other languages. However, Eastern languages employ thousands of separate characters, which cannot be encoded by using a single-byte coding scheme. With the proliferation of computer commerce, double-byte coding schemes were developed so that characters could be represented in 8-bit, 16-bit, 24-bit, or 32-bit sequences. This requires complicated passing algorithms; even so, using different code sets could yield entirely different results on two different computers.
To address the problem of multiple coding schemes, the Unicode standard for data representation was developed. A 16-bit character coding scheme, Unicode can represent 65,536 (2^16) characters, which is enough to include all languages in computer commerce today, as well as punctuation marks, mathematical symbols, and room for expansion. Unicode establishes a unique code for every character to ensure that character translation is always accurate.
У меня была такая же проблема с wglUseFontOutlines: никак не хотели выводиться русские буквы.
Проблема решилась, когда стал вызывать wglUseFontOutlinesA
Здравствуйте, burunduk, Вы писали:
B>И всё таки мне кажется что не работает wglUseFontBitmaps с русскими буквами. B>У меня получилось только когда я заменил шрифт, в котором на месте латинских букв поставил изображения русских.