Bug 44767

Summary: Метод GdipDrawString считает кириллическую 'Р' пробелом и обрезает её в конце строки.
Product: Sisyphus Reporter: Анатолий Ворончихин <aev2000>
Component: libgdiplusAssignee: Anton Farygin <rider>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aev2000, mike, petrykinpa, protvin, rider
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
Вывод работы тестовой программы libgdiplus
none
Тестовая программа none

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. В связи с этим закрываю баг.