Вот ещё один пример (в LO 3.6.0 открывается наполовину русскими буквами, наполовину кракозябрами)
DrawCyr не обрабатывает этот файл (необходима доработка кода).
Я думаю, что дело в данном случае в том, что для шрифтов "GOST Type A" и "GOST Type B" в качестве charset указан 0, т.е. "ANSI".
Вероятно в данных шрифтах что-то было сделано неправильно (например, кириллические глифы размещены в позициях латинских, как периодически бывало в до-юникодных шрифтах).
Правильного способа обрабатывать такие ситуации в libvisio не существует.
Теоретически возможные варианты:
1. Добавить в libvisio поддержку "чёрных списков" для шрифтов (например, всё что заканчивается на " CYR" и эти самые "GOST <что-нибудь>" перекодировать как cp1251). Очевидный недостаток -- будет лажать на недобавленных шрифтах, чтобы не надо было апгрейдить версию на каждую глупость списки видимо надо держать в отдельном файле, парсить его (возможно сохраняя кэшированный результат) и т.д. и т.п.
2. Добавить опцию принудительного перекодирования charset 0 в указанный (или в определяемый по системной локали). Будет лажать если в файле используются несколько битых шрифтов с разными реальными charset, а для второго случая -- на файлах с битыми шрифтами и с charset отличающегося от предполагаемого по системной локали.
3. Прикрутить алгоритм определения кодировки. Как показала предыдущая проверка на примере libcdr -- на коротких текстах (вполне характерных для CDR и VSD) это не cрабатывает.
В настоящий момент у системы "LibreOffice/открывашки файлов" нет внятного механизма, который позволил бы описать в "открывашке" дополнительное взаимодействие с пользователем, такое как вывод сообщений и/или запрос ввода.
В частности по этой причине попытка открыть файл VSD версии младше 6-ой приводит к "неожиданному" результату -- LO делает вид, что это не файл VSD (т.е. предлагает выбрать как что его открывать), хотя правильнее было бы вернуть из libvisio и показать пользователю сообщение "Это файл Visio такой-то версии, эта версия не поддерживается бла-бла-бла и т.п.".
Поэтому DrawCyr продолжит быть полезным при импорте неюникодных файлов "с сюрпризами" (VSD 6, CDR старее 10-ой (?) версии, возможно PUB 97/98).