ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π’Ρ‹Π²ΠΎΠ΄ тСкста

Π›Π΅ΠΊΡ†ΠΈΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для задания Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° контСкста устройства. Если установлСн Ρ€Π΅ΠΆΠΈΠΌ заполнСния Ρ„ΠΎΠ½Π° OPAQUE (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), Ρ‚ΠΎ Π΄Π»Ρ заполнСния Ρ„ΠΎΠ½Π° ΠΏΠΎΠ΄ тСкстом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ„ΠΎΠ½ΠΎΠΌ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΊΠΈΡΡ‚ΡŒΡŽ. Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΎΠ½ ΠΏΠΎΠ΄ тСкстом Π½Π΅ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ TRANSPARENT (ΠΏΡ€ΠΈ этом Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π’Ρ‹Π²ΠΎΠ΄ тСкста (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’Ρ‹Π²ΠΎΠ΄ тСкста.

ΠžΡΠ½ΠΎΠ²Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста.

Одно ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств Windows Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ Π»Π΅Π³ΠΊΠΎΠΌ использовании большого количСства Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… высококачСствСнных ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². На ΡΡ‚ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ².

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ срСдствами Π²Ρ‹Π²ΠΎΠ΄Π° тСкста. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ:

BOOL TextOut (hDC, nXStart, nYStart, lpsString, wLength);

Π­Ρ‚Π° функция осущСствляСт Π²Ρ‹Π²ΠΎΠ΄ строки тСкста, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ lpsString, Π΄Π»ΠΈΠ½ΠΎΠΉ wLength символов, начиная с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (nXStart, nYStart) Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ контСкстС устройства hDC.

Π­Ρ‚ΠΎ самая простая функция, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π°Ρ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Windows. Однако Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ опрСдСляСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ†Π²Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ тСкста задаСтся трСмя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ контСкста устройства: Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ тСкста, Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π° ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ заполнСния Ρ„ΠΎΠ½Π°. Π Π°Π½Π΅Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ рассматривали эти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ‹ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Для манипуляций с ΡΡ‚ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

COLORREF SetTextColor (hDC, crColor);

COLORREF GetTextColor (hDC);

COLORREF SetBkColor (hDC, crColor);

COLORREF GetBkColor (hDC);

int SetBkMode (hDC, nMode);

int GetBkMode (hDC);

Для задания Ρ†Π²Π΅Ρ‚Π° символов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция SetTextColor (), которая устанавливаСт Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ†Π²Π΅Ρ‚Π° символов блиТайший чистый Ρ†Π²Π΅Ρ‚, доступный Π½Π° ΡƒΡΡ‚ройствС.

Для задания Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° контСкста устройства. Если установлСн Ρ€Π΅ΠΆΠΈΠΌ заполнСния Ρ„ΠΎΠ½Π° OPAQUE (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), Ρ‚ΠΎ Π΄Π»Ρ заполнСния Ρ„ΠΎΠ½Π° ΠΏΠΎΠ΄ тСкстом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ„ΠΎΠ½ΠΎΠΌ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΊΠΈΡΡ‚ΡŒΡŽ. Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΎΠ½ ΠΏΠΎΠ΄ тСкстом Π½Π΅ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ TRANSPARENT (ΠΏΡ€ΠΈ этом Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ «Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°» игнорируСтся).

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста задаСтся Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ позиция. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ этой Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π΅ Ρ‚Π°ΠΊ-Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΡΡ‚ΠΈΠΌ, Π½Π°ΠΌ придСтся ввСсти нСсколько Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…ΡΡ для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° символов ΠΈ ΡΡ‚Ρ€ΠΎΠΊ.

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΡΠ²ΠΎΠ΅ΠΉ ячСйкС Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ расстоянии ΠΎΡ‚ Π²ΡΠ΅Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π³Ρ€Π°Π½ΠΈΡ†. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ характСристики символов, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция:

BOOL GetTextMetrics (hDC, lpTEXTMETRIC);

Π­Ρ‚Π° функция заполняСт структуру TEXTMETRIC ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ примСняСмом ΡˆΡ€ΠΈΡ„Ρ‚Π΅. БСйчас ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ поля этой структуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ символов. Для этого ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ символов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ проставлСны Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ TEXTMETRIC. ПозТС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ полям этой структуры.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π° Π²Ρ‹ΡΠΎΡ‚Ρƒ строки ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ сумму Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² tmHeight ΠΈ tmExternalLeading, Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ всСгда Π±Ρ‹Π» нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ.

НСсколько слоТнСС получаСтся с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ символа ΠΈ Π΄Π»ΠΈΠ½Ρ‹ строки. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Windows ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ с Ρ„иксированной ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ символа (fixed pitch), Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ (variable pitch) ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: максимальная ΡˆΠΈΡ€ΠΈΠ½Π° символа tmMaxCharWidth ΠΈ ΡΡ€Π΅Π΄Π½ΡΡ ΡˆΠΈΡ€ΠΈΠ½Π° символа tmAveCharWidth.

Однако ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Π΅ΠΈΠΌΠΈ этими характСристиками ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ максимальной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ сильно Π·Π°Π²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° ΡΡ€Π΅Π΄Π½ΡΡ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΡƒΡŽ сторону. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΎΠ½Π° Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк английского Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкста, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для вычислСния срСднСй ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ частоты встрСчаСмости английских символов.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ строки ΠΊΠ°ΠΊ Π² Π²Ρ‹ΡΠΎΡ‚Ρƒ, Ρ‚Π°ΠΊ ΠΈ Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ:

DWORD GetTextExtent (hDC, lpsString, wLength);

BOOL GetTextExtentPoint (hDC, lpsString, wLength, lpSize);

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ строки, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π»ΠΈΠ±ΠΎ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ слова (Π² ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌ словС хранится ΡˆΠΈΡ€ΠΈΠ½Π°, Π² ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌ — высота строки), Π»ΠΈΠ±ΠΎ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ Ρ‚ΠΈΠΏΠ° SIZE, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅. ВмСсто структуры SIZE ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована структура POINT, (Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π°Π»ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). ОбС эти структуры ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

Однако Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшоС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΠΎΠ³Π΄Π° вычисляСтся высота строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ значСния высот ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π’Π°ΡˆΠ° строка состоит ΠΈΠ· Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… символов, Ρ‚ΠΎ Π΅Π΅ Π²Ρ‹ΡΠΎΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнно мСньшС, Ρ‡Π΅ΠΌ полная высота знакомСста.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа. (НапримСр, Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ для пСрСмСщСния ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ выдСлСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста.) Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

BOOL GetCharWidth (hDC, uFirstChar, uLastChar, lpnWidths);

BOOL GetCharABCWidth (hDC, uFirstChar, uLastChar, lpABC);

Ѐункция GetCharWidth () опрСдСляСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа, входящСго Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚ uFirstChar Π΄ΠΎ uLastChar ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ lpnWidths.

Ѐункция GetCharABCWidth () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TrueType ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ структур Ρ‚ΠΈΠΏΠ° ABC, смысл ΠΏΠΎΠ»Π΅ΠΉ поясним рисунком:

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut () (ΠΈΠ»ΠΈ ExtTextOut ()), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ GDI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся «Ρ€Π΅ΠΆΠΈΠΌ выравнивания тСкста». Он ΡƒΡΡ‚анавливаСтся ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

UINT SetTextAlign (hDC, nAlign);

UINT GetTextAlign (hDC);

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ строку тСкста ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ указанная Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° строки. Однако с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTextAlign () Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ½ΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ выравнивания.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nAlign ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ задаСтся:

ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.

ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ.

TA_LEFT (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

TA_TOP (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

TA_CENTER.

TA_BASELINE.

TA_RIGHT.

TA_BOTTOM.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅ΠΆΠΈΠΌΠ° выравнивания ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· вычислСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ строки самим, Π° ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° Windows.

Для этого сущСствуСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ выравнивания TA_UPDATECP ΠΈ TA_NOUPDATECP (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ TA_UPDATECP, Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° Π²ΠΌΠ΅ΡΡ‚ΠΎ Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ контСкста устройства «ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ». ПослС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° эта тСкущая Ρ‚ΠΎΡ‡ΠΊΠ° пСрСмСщаСтся Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ тСкста.

Для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ установки Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ со ΡΡ‚Ρ€ΠΎΠΊΠΈ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ) Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ:

DWORD MoveTo (hDC, nX, nY);

Π’-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, Π½Π° Π²Ρ‹Π²ΠΎΠ΄ тСкста Π²Π»ΠΈΡΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ контСкста устройства, Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строк. Для этого GDI содСрТит Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ словами ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Π°Ρ функция.

int SetTextCharacterExtra (hDC, nExtraSpace);

устанавливаСт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сосСдними символами. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ «Ρ€Π°Π·Ρ€ΡΠ΄ΠΈΡ‚ΡŒ» строку ΠΈΠ»ΠΈ слово Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π΅Π΅ Π΄Π»ΠΈΠ½Π° оказалась Ρ€Π°Π²Π½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅.

Вторая функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для задания ΡˆΠΈΡ€ΠΈΠ½Ρ‹ символов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для раздСлСния слов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ содСрТит символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся «ΡΠΈΠΌΠ²ΠΎΠ»-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ» (Break Char). Какой символ являСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ поля. tmBreakChar структуры TEXTMETRIC, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для Ρ€Π°Π·Π½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны Ρ€Π°Π·Π½Ρ‹Π΅ символы-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΡ€ΠΎΠ±Π΅Π».

int SetTextJustification (hDC, nExtraSpace, cBreakChars);

Π­Ρ‚Π° функция измСняСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ символа-раздСлитСля Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ cBreakChars, встрСчСнных Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π½Π° nExtraSpace Π΅Π΄ΠΈΠ½ΠΈΡ†.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста.

РассмотрСнная функция TextOut () являСтся ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ. Π£ Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. НапримСр, ΠΎΠ½Π° Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Ρ‚ΠΈΠΏΠ° табуляции, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ тСкста.

Если строка тСкста содСрТит символы табуляции, Ρ‚ΠΎ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

LONG TabbedTextOut (.

hDC, nXStart, nYStart, lpsString, wLength, cTabStops, lpnTabPositions, nTabOrigin);

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 5 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut (), Π° Ρ‚Ρ€ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpnTabPositions содСрТит массив x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходит остановка табулятора. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ упорядочСн Π² Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ порядкС. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ cTabStops Π·Π°Π΄Π°Π΅Ρ‚ число Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

Π•ΡΡ‚ΡŒ Π΄Π²Π΅ особСнности Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Ссли ΠΎΠ±Π° ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ 0, Ρ‚ΠΎ Ρ‚абулятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 8 срСдних ΡˆΠΈΡ€ΠΈΠ½ символов.

Ссли массив содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ число N (ΠΈ cTabStops Ρ€Π°Π²Π½ΠΎ 1), Ρ‚ΠΎ Ρ‚абулятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ N Π΅Π΄ΠΈΠ½ΠΈΡ†.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nTabOrigin ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ, начиная ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ полоТСния табулятора. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки.

Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ввСсти Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ строки, содСрТащСй символы табуляции:

DWORD GetTabbedTextExtent (hDC, lpsString, wLength, cTabStops, lpnTabPositions);

Однако эта функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° nTabOrigin, поэтому Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TabbedTextOut (…).

БущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π°Ρ Π²Ρ‹Π²ΠΎΠ΄ строки тСкста ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами строки:

BOOL ExtTextOut (hDC, nXStart, nYStart, fuOption, lpRect, lpsString, wLength, lpnDx);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ hDC, nXStart, nYStart, lpsString ΠΈ wLength ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut (). Π”Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° fuOption ΠΈ lpRect Π·Π°Π΄Π°ΡŽΡ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ осущСствляСтся Π²Ρ‹Π²ΠΎΠ΄ тСкста ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ использования этого ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

Если fuOption Ρ€Π°Π²Π½ΠΎ ETO_OPAQUE, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°; Ссли fuOption Ρ€Π°Π²Π½ΠΎ ETO_CLIPPED, Ρ‚ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста. Оба ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° fuOption ΠΈ lpRect ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ 0, Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся.

ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpnDx ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΌΠ°ΡΡΠΈΠ² Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ символом строки ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° Π½ΠΈΠΌ. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NULL, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся стандартныС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ.

Ѐункция.

int DrawText (hDC, lpszString, wLength, lpRect, fuFormat);

осущСствляСт Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, осущСствляя ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ форматирования тСкста. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ-ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut (), Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Ρ€Π°Π²Π½ΠΎΠΉ -1, Ρ‚ΠΎΠ³Π΄Π° Windows Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это asciiz строка (ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°ΡΡΡ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ) ΠΈ ΡΠ°ΠΌ вычислит Π΅Π΅ Π΄Π»ΠΈΠ½Ρƒ.

Π”Π²Π° послСдних ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° размСщСния тСкста Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ fuFormat ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π»Π°Π³ΠΈ:

DT_CENTER.

DT_LEFT.

DT_RIGHT.

Π·Π°Π΄Π°ΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ выравнивания тСкста ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.

DT_SINGLELINE.

ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ тСкст Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС.

DT_VCENTER.

DT_TOP.

DT_BOTTOM.

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с DT_SINGLELINE ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ строки тСкста ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ.

DT_WORDBREAK.

Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ (Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ) слова.

DT_EXPANDTABS.

Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ символы табуляции. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ табулятор Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ 8 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

DT_TABSTOP.

Π·Π°Π΄Π°Π΅Ρ‚ шаг табуляции. Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚ содСрТит число символов Π² ΠΎΠ΄Π½ΠΎΠΌ шагС табулятора.

ВсС описанныС Π½ΠΈΠΆΠ΅ Ρ„Π»Π°Π³ΠΈ нСсовмСстимы с Ρ„Π»Π°Π³ΠΎΠΌ DT_TABSTOP:

DT_EXTERNALLEADING.

Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² Π²Ρ‹ΡΠΎΡ‚Ρƒ строки пропуск ΠΌΠ΅ΠΆΠ΄Ρƒ строк. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ся.

DT_NOCLIP.

выполняСт Π²Ρ‹Π²ΠΎΠ΄ игнорируя ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π­Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ускоряСт процСсс Π²Ρ‹Π²ΠΎΠ΄Π°.

DT_NOPREFIX.

ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ прСфикса & ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ символа. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прСфикс & ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉ символ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ && - ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ &.

DT_CALCRECT.

Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вычисляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Π½Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСт Π²Ρ‹Π²ΠΎΠ΄Π°. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DT_SINGLELINE, Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся ΡˆΠΈΡ€ΠΈΠ½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π° Π΅ΡΠ»ΠΈ тСкст многострочный, Ρ‚ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ся высота, достаточная для размСщСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста ΠΏΡ€ΠΈ фиксированной ΡˆΠΈΡ€ΠΈΠ½Π΅.

ПослСдняя рассматриваСмая Π½Π°ΠΌΠΈ функция для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ. Она часто примСняСтся систСмой отобраТСния мСню для указания нСдоступных ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… сСрым Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Для этого ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ достаточноС число Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΉ сСрого Ρ†Π²Π΅Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, монохроматичСскиС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹). Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‹Π²ΠΎΠ΄ Π»ΠΈΠ½ΠΈΠΈ Π½Π΅ Ρ‡ΠΈΡΡ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, Π° ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΌ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ†Π²Π΅Ρ‚Π° тСкста Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чистый Ρ†Π²Π΅Ρ‚, Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Основная идСя Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

BOOL GrayString (hDC, hBrush, lpfnDraw, lParam, cChars, nX, nY, nWidth, nHeight);

тСкст выводится Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ контСкст устройства, ассоциированный с Π±Π΅Π»Ρ‹ΠΌ Π±ΠΈΡ‚ΠΌΠ°ΠΏΠΎΠΌ выполняСтся опСрация OR ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ тСкстом ΠΈ ΠΊΠΈΡΡ‚ΡŒΡŽ, состоящСй ΠΈΠ· Ρ‡Π΅Ρ€Π½Ρ‹Ρ… ΠΈ Π±Π΅Π»Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΠΎΠΌ порядкС (Ѐункция PatBlt (), ROP ΠΊΠΎΠ΄ Ρ€Π°Π²Π΅Π½ 0xFA0089 (DPo)).

ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ΠΌΠ°ΠΏ пСрСносится Π½Π° ΠΊΠΎΠ½Ρ‚Скст-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ BitBlt () с ROP-ΠΊΠΎΠ΄ΠΎΠΌ 0xB8074A (PSDPxax), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

((destination ^ pattern) & source) ^ pattern.

Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС пиксСлы контСкста-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π΅Π»Ρ‹ΠΌ пиксСлам созданного Π±ΠΈΡ‚ΠΌΠ°ΠΏΠ°, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ, Π° Π²ΡΠ΅ пиксСлы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ пиксСлам Π±ΠΈΡ‚ΠΌΠ°ΠΏΠ°, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Ρ‹ ΠΊΠΈΡΡ‚ΡŒΡŽ, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ hBrush Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GrayString ().

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

hDC — контСкст-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ изобраТСния;

lpfnDraw — функция, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π°Ρ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ контСкст устройства. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NULL, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся TextOut (), ΠΈΠ½Π°Ρ‡Π΅ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ адрСс связанной с Π²Π°ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (см. ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ MakeProcInstance ()), ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

BOOL CALLBACK GrayStringProc (hDC, lpParam, cChars) {.

// drawing text.

return 1;}.

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ lParam ΠΈ cChars ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GrayString (); hDC ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ контСкст устройства. Π’Ρ‹Π²ΠΎΠ΄ Π½Π°Π΄ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0,0;

Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅ 0, Ссли всС Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GrayString ().

lParam — Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpfnDraw Ρ€Π°Π²Π΅Π½ NULL, Ρ‚ΠΎ lParam являСтся дальним ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡƒΡŽ строку символов, ΠΈΠ½Π°Ρ‡Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ GrayStringProc ();

cChars — число символов Π² Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строкС;

nX ΠΈ nY — позиция для Π²Ρ‹Π²ΠΎΠ΄Π°.

nWidth — Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ создаваСмого ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚ΠΌΠ°ΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ nHeight — ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ строку.

НСкоторыС особСнности примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GrayString ():

контСкст-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ изобраТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ MM_TEXT.

Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ контСкста-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΠ• ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ контСкст устройства, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

Ссли cChars Ρ€Π°Π²Π½ΠΎ 0, Ρ‚ΠΎ GrayString () ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ lParam являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° asciiz строку (ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°ΡΡΡ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ) ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ Π΅Π΅ Π΄Π»ΠΈΠ½Ρƒ Ссли nWidth ΠΈ nHeight Ρ€Π°Π²Π½Ρ‹ 0, Ρ‚ΠΎ GrayString () Π±ΡƒΠ΄Π΅Ρ‚ сам Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±ΠΈΡ‚ΠΌΠ°ΠΏΠ° для строки, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ lParam ΠΈ cChars.

Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ достаточноС число ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠ² сСрого для Π²Ρ‹Π²ΠΎΠ΄Π° сСрых строк. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (GrayString () ΠΈΠ»ΠΈ TextOut () с ΡΠ΅Ρ€Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ тСкста), воспользовавшись Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

rgbGrayText= GetSysColor (COLOR_GRAYTEXT);

Ссли rgbGrayText Ρ€Π°Π²Π½ΠΎ 0 (Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚), Ρ‚ΠΎ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GrayString (), ΠΈΠ½Π°Ρ‡Π΅ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрый Ρ†Π²Π΅Ρ‚ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ TextOut ():

SetTextColor (hDC, rgbGrayText); …

Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹.

ПослС изучСния основных срСдств Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Скстом ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ дальнСйший ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ понятным, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ классификации ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² Π² Windows. ΠŸΡ€ΠΈ рассмотрСнии Π΄Π°Π½Π½ΠΎΠΉ классификации слСдуСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ Π΅Π΅ ΡƒΡΠ»ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ типографичСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ². Π’ Π½Π°ΡΡ‚оящСС врСмя Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ общСпринятой систСмы классификации ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах классификации. (Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, italic ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚, Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ курсив ΠΈΠ»ΠΈ ΡƒΠ·ΠΊΠΈΠΉ ΡˆΡ€ΠΈΡ„Ρ‚, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ Ρ‚ΠΎΠ»Ρ‰Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ…).

ВсС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π² Windows ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ устройства ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ GDI.

Π‘ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ устройств ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΎΡ‡Π΅Π½ΡŒ спСцифичныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ ΠΈΡ… ΡΠ²ΠΎΠΉΡΡ‚Π²Π° ТСстко ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ возмоТностями Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. ОсновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠΌ Π½Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ… GDI.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² GDI.

Для ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² GDI ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ нСсколько ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… особСнности ΡˆΡ€ΠΈΡ„Ρ‚Π°.

ΠΏΠΎ Π½Π°ΠΊΠ»ΠΎΠ½Ρƒ символов:

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΈΠΏΡ‹ Slanted ΠΈ Italic ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ примСняСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Italic для обозначСния всякого Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

ΠΏΠΎ ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов:

ВсС символы ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ символами (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡˆΡ€ΠΈΡ„Ρ‚ ΠΏΠΈΡˆΡƒΡ‰Π΅ΠΉ машинки). Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ символами.

По ΡˆΠΈΡ€ΠΈΠ½Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для отобраТСния символа:

Π’ ΠΈΠ½Ρ‹Ρ… систСмах классификации эту характСристику ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΊ ΡˆΠΈΡ€ΠΈΠ½Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ…. Вакая характСристика называСтся ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡˆΡ€ΠΈΡ„Ρ‚Π°. Fixed Stroke ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚Π½ΠΎΡΡ‚ΡŒ 1:1, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚Π½ΠΎΡΡ‚ΡŒ соотвСтствуСт 4:5, срСдний контраст — 1:2 ΠΈ Ρ‚. Π΄.

По ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ символов:

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ засСчСк Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ — ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрпСндикулярны ΡˆΡ‚Ρ€ΠΈΡ…Π°ΠΌ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ ΠΏΠΎΠ΄ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ, ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΡΠΎΠΏΡ€ΡΠ³Π°Ρ‚ΡŒΡΡ с ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠΌ (со ΡΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π±Π΅Π·), ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

ΠΏΠΎ «ΠΆΠΈΡ€Π½ΠΎΡΡ‚ΠΈ» символов:

Π­Ρ‚ΠΎΡ‚ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ «Π²Π΅ΡΠΎΠΌ» символов, ΠΏΡ€ΠΈ этом говорят ΠΎΠ± ΠΎΡΠΎΠ±ΠΎ Π»Π΅Π³ΠΊΠΈΡ…, Π»Π΅Π³ΠΊΠΈΡ…, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΏΡ€. ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ…. ΠžΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΠΎ ΡΡ€Π΅Π΄Π½Π΅ΠΌΡƒ количСству Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹Ρ… (Ρ‡Π΅Ρ€Π½Ρ‹Ρ…) Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, Π΄Π»ΠΈΠ½ΠΎΠΉ 1000 Ρ‚ΠΎΡ‡Π΅ΠΊ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΡΠ²Π»ΡΡŽΡ‚ΡΡ 400 (Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚) ΠΈ 700 ΠΈΠ»ΠΈ 800 (ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚) ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ символов. Π Π°Π·ΠΌΠ΅Ρ€ опрСдСляСтся высотой символа, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, говорят ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π΅ высотой 12 Ρ‚ΠΎΡ‡Π΅ΠΊ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚ΠΈΠΏΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ 8−10 Ρ‚ΠΎΡ‡Π΅ΠΊ, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ 6 ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ, 12 ΠΈ Π±ΠΎΠ»Π΅Π΅, ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ этими Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ слСдуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ остороТно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана явно нСдостаточно для качСствСнного изобраТСния примСняСмых Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΡˆΡ€ΠΈΡ„Ρ‚Π° (6−10 Ρ‚ΠΎΡ‡Π΅ΠΊ).

По ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ для дисплССв прСдусмотрСна ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ характСристика, называСмая «Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ дюйм». Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½ логичСский дюйм соотвСтствуСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1.4−1.5 ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ. ΠŸΡ€ΠΈ использовании логичСского дюйма вмСсто Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ изобраТСния всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ нСсколько компСнсируСт Π½ΠΈΠ·ΠΊΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ экрана.

Когда ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ устройства, Ρ‚ΠΎ ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ систСму MM_TWIPS, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ соотвСтствуСт 1/20 Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ (1/1440 дюйма). Π­Ρ‚Π° систСма Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ примСняСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ. Однако ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΠΊΡ€Π°Π½ΠΎΠΌ эта систСма ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ логичСский дюйм вмСсто физичСского. Для этого Π½Π°ΠΌ придСтся самим ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ систСму ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚:

// установим систСму ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ с Π½Π΅ΡΠ±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

// ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΠΈ коэффициСнтами ΠΏΠΎ ΠΎΡΡΠΌ.

SetMapMode (hDC, MM_ANISOTROPIC);

// Π² ΠΎΠ΄Π½ΠΎΠΌ логичСском дюймС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ, 1440 Ρ‚ΠΎΡ‡Π΅ΠΊ.

// поэтому 1440 логичСским Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌ.

SetWindowExt (hDC, 1440, 1440);

// Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ физичСских Π΅Π΄., сколько.

// ΠΈΡ… Π½Π°Ρ…одится Π² ΠΎΠ΄Π½ΠΎΠΌ логичСском дюймС.

SetViewportExt (hDC, GetDeviceCaps (hDC, LOGPIXELSX), GetDeviceCaps (hDC, LOGPIXELSY));

Π’Π°ΠΊΡƒΡŽ систСму ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… WYSIWYG Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ.

Одним ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² являСтся Ρ‚ΠΈΠΏ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт возмоТности Π΅Π³ΠΎ примСнСния Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… устройствах. Π’ Windows ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ дСлятся Π½Π° Ρ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Поясним основныС различия ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²:

РастровыС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· ΡΠ΅Π±Ρ Π½Π°Π±ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… символов. ΠžΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΡΠ°ΠΌΡ‹ΠΌ высоким качСством тСкста, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ разрабатываСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

НСдостатками ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΡˆΡ€ΠΈΡ„Ρ‚Π° (числом прСдоставлСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π±ΠΈΡ‚ΠΌΠ°ΠΏΠΎΠ²), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ символов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ число Ρ€Π°Π·, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΈ этом тСряСтся качСство, ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Ρ… строк тСкста.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° программная рСализация Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Ρ… ΠΈ ΠΆΠΈΡ€Π½Ρ‹Ρ… Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡΡ‚ройствах, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±ΠΌΠ΅Π½ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ (ΠΏΠ»ΠΎΡ‚Ρ‚Π΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Π½Ρ‹Π΅ устройства Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ растровых ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². ВслСдствиС этого, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, примСняСмыС для дисплСя, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π΅, хотя эти устройства ΠΈΠΌΠ΅ΡŽΡ‚ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ способности.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹:

ΠžΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ символ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ сопрягаСмых Π»ΠΈΠ½ΠΈΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ для Π²Ρ‹Π²ΠΎΠ΄Π° символа трСбуСтся прорисовка всСх Π»ΠΈΠ½ΠΈΠΉ, Ρ‚ΠΎ ΡΡ‚ΠΎ самыС ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹.

Достоинством являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° символов любого Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Однако качСство ΡˆΡ€ΠΈΡ„Ρ‚Π° достаточно высокоС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ срСдних Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… символов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… символов ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ «ΡΠ»ΠΈΠΏΠ°Ρ‚ΡŒΡΡ», Π° Π΄Π»Ρ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… символов становится Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ ΠΈΡ… ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° — Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΈΠ΄Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ нарисованы (Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ€Π°Π²Π½Π° 1 Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ устройства).

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Π²ΠΈΠ΄Π΅ всСй строки, Ρ‚Π°ΠΊ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ созданиС Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Ρ… ΠΈ ΠΆΠΈΡ€Π½Ρ‹Ρ… Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠΉ.

Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° Π»ΡŽΠ±Ρ‹Ρ… графичСских устройствах. Π­Ρ‚ΠΎ СдинствСнный Π²ΠΈΠ΄ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², примСняСмый Π½Π° ΠΏΠ»ΠΎΡ‚Ρ‚Π΅Ρ€Π°Ρ….

TrueType ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹:

Π­Ρ‚ΠΎ самыС слоТныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Windows. Они ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ основной Π²ΠΈΠ΄ очСртания символа, состоящСго ΠΈΠ· ΠΏΡ€ΡΠΌΡ‹Ρ… ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ½ΠΈ содСрТат ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½ΡƒΠΆΠ½ΡƒΡŽ для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ символов с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ искаТСниями ΠΎΠ±Ρ€Π°Π·Π°.

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ сначала подготавливаСтся растровый ΠΎΠ±Ρ€Π°Π· Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π° Π·Π°Ρ‚Π΅ΠΌ осущСствляСтся Π²Ρ‹Π²ΠΎΠ΄ тСкста. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°ΡΡ‚Ρ€ΠΎΠ²Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ растровых ΠΎΠ±Ρ€Π°Π·ΠΎΠ² символов.

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ символов нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° качСство нСвысокоС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ автоматичСская гСнСрация качСствСнных Π±ΠΈΡ‚ΠΌΠ°ΠΏΠΎΠ² ΠΌΠ°Π»ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ΠŸΡ€ΠΈ этом TrueType ΡˆΡ€ΠΈΡ„Ρ‚ часто замСняСтся Π½Π° Ρ€Π°ΡΡ‚Ρ€ΠΎΠ²Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΌΠ°Π»ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Small Fonts). Π’ΠΎ Π²ΡΠ΅Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях это самыС качСствСнныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ получСния качСствСнного ΡˆΡ€ΠΈΡ„Ρ‚Π° любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Π΅Π»Π°Π΅Ρ‚ TrueType ΡˆΡ€ΠΈΡ„Ρ‚ самым примСняСмым Π² WYSIWYG Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

TrueType ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Π΅ строки тСкста.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ TrueType ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΠΈΡ€Π½Ρ‹Π΅ ΠΈ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Π΅ начСртания, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ TrueType ΡˆΡ€ΠΈΡ„Ρ‚ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ разрабатываСтся Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… экзСмплярах: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ, Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΌ, ΠΆΠΈΡ€Π½ΠΎΠΌ ΠΈ Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΌ-ΠΆΠΈΡ€Π½ΠΎΠΌ. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡΡ‚ройствах, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±ΠΌΠ΅Π½ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ.

TrueType ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² Π΅Ρ‰Π΅ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ символами. ΠŸΡ€ΠΈ этом Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°Ρ€Ρ‹ символов (kerning pairs) ΠΈ Π΄Π»Ρ Π½ΠΈΡ… Π·Π°Π΄Π°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ смСщСниС (ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅), для получСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ качСствСнного тСкста. Π—Π°Π΄Π°Π½ΠΈΠ΅ «ΠΊΠ΅Ρ€Π½ΠΈΠ½Π³Π°» осущСствляСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ваТнСйший ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ классификации ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² связан с Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ символов Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Windows Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π»ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ многоязычных срСд. БчитаСтся, Ρ‡Ρ‚ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ².

ΠŸΡ€ΠΈ этом ΠΏΠΎΠ΄ ANSI подразумСваСтся Ρ‚Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°, которая принята Π² Π΄Π°Π½Π½ΠΎΠΉ вСрсии Windows. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, ANSI сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь Π² Π°Π½Π³Π»ΠΎΡΠ·Ρ‹Ρ‡Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Windows. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС русификаторы Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ANSI Π½Π° ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ русскиС Π±ΡƒΠΊΠ²Ρ‹. ΠŸΡ€ΠΈ этом, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Windows, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ всС Ρ€Π°Π²Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ANSI. Π’ Ρ€ΡƒΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Windows русскиС Π±ΡƒΠΊΠ²Ρ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСста с 192 ΠΏΠΎ 255 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Аналогично, ΠΏΠΎΠ΄ OEM подразумСваСтся кодовая Ρ‚Π°Π±Π»ΠΈΡ†Π°, принятая Π² DOS. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это 437 кодовая Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, для русификации DOS примСняСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π“ΠžΠ‘Π’, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° 866 кодовая Ρ‚Π°Π±Π»ΠΈΡ†Π° (Π²Ρ…ΠΎΠ΄ΠΈΠ»Π° Π² ΡΠΎΡΡ‚Π°Π² MS DOS 4.0 распространяСмом Π½Π° Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π‘Π‘Π‘Π ).

Кодовая Ρ‚Π°Π±Π»ΠΈΡ†Π° SYMBOL Π² Windows ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚, состоящий ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π½Π΅-Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹Ρ… символов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ стрСлок, ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΊ ΠΈ ΠΏΡ€. ΠΈ послСдняя кодовая Ρ‚Π°Π±Π»ΠΈΡ†Π° SHIFTJIS ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ спСцифичноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, рассчитанноС Π½Π° ΡΠΏΠΎΠ½ΡΠΊΡƒΡŽ Π°Π·Π±ΡƒΠΊΡƒ KANJI. Π’ ΡΡ‚ΠΎΠΉ Π°Π·Π±ΡƒΠΊΠ΅ прСдусмотрСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ· Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ