Bug 44767 - Метод GdipDrawString считает кириллическую 'Р' пробелом и обрезает её в конце строки.
Summary: Метод GdipDrawString считает кириллическую 'Р' пробелом и обрезает её в конце...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: libgdiplus (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-12-29 11:57 MSK by Анатолий Ворончихин
Modified: 2025-11-05 15:15 MSK (History)
5 users (show)

See Also:


Attachments
Вывод работы тестовой программы libgdiplus (27.36 KB, image/png)
2025-11-05 15:02 MSK, Pavel Petrykin
no flags Details
Тестовая программа (1.84 KB, text/x-csharp)
2025-11-05 15:04 MSK, Pavel Petrykin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Анатолий Ворончихин 2022-12-29 11:57:49 MSK
Кириллическая Р в юникоде состоит из двух байт - 32 и 4.
Видимо поэтому метод GdipDrawString считает его пробелом и убирает из конца переданной ему для вывода строки.
Если в StringFormat, передаваемый в метод, добавить флаг MeasureTrailingSpaces,
то буква Р не обрезается.
Этот дефект наблюдается в Alt Linux 9.2, который использует libgdiplus версии 5.6.1, в приложении для Mono.
Comment 1 Pavel Petrykin 2025-11-05 15:02:50 MSK
Created attachment 19995 [details]
Вывод работы тестовой программы libgdiplus

На версии libgdiplus 6.2-alt1 не воспроизводится: без опции MeasureTrailingSpaces русская Р не обрезается. Прилагаю скриншот вывода тестовой программы, содержащий строку нарисованную DrawString с данной опцией и без неё, с выделением символов.
Comment 2 Pavel Petrykin 2025-11-05 15:04:37 MSK
Created attachment 19996 [details]
Тестовая программа

Также прилагаю исходный код тестовой программы.
Comment 3 Pavel Petrykin 2025-11-05 15:15:15 MSK
P9 больше не поддерживается, а в P10 и выше версия 6.2-alt1. В связи с этим закрываю баг.