Знаки вопроса в документе XPS

Я экспериментировал с XPS на C# и использовал этот пример в качестве отправной точки: https://code.msdn.microsoft.com/windowsdesktop/How-to-Edit-XPS-file-in-WPF-724ef6fb

Я немного изменил пример и создал приложение для поиска и замены документов XPS.

Вывод выглядит не очень хорошо:

введите здесь описание изображения

Скопируйте и вставьте вопросительные знаки в редактор, который работает хорошо и дает мне правильные символы.

Теперь я обнаружил, что когда символы отсутствуют в исходном XPS, а новые символы находятся в целевом XPS, их нельзя найти в шрифте (нашел это объяснение здесь: https://stackoverflow.com)./a/28236296/2058139).

Суть проблемы заключается в использовании шрифтов ODTTF в документе XPS. ODTTF — это запутанный подмножественный шрифт, основанный на шрифтах, используемых в исходном документе. Это означает, что вы не можете использовать для замены любой символ, которого не было в исходном документе.

Любое решение для этого?


person rmnblm    schedule 04.11.2015    source источник
comment
Кажется, в нем уже есть поиск/замена. Так что отмените изменения в коде, и пуф, он снова работает.   -  person    schedule 04.11.2015
comment
Я не понимаю вашего ответа. Что именно вы имеете в виду?   -  person rmnblm    schedule 05.11.2015
comment
Приложение, на которое вы ссылались, имело функцию поиска/замены. Если это сработало, то что-то, что вы сделали, сломало его. Отмените ваши изменения, и он снова работает.   -  person    schedule 05.11.2015
comment
Да, замена сработала, потому что файл примера содержал почти все символы. Но попробуйте с персонажем, которого нет в файле, и вы увидите проблему ;-)   -  person rmnblm    schedule 05.11.2015


Ответы (1)


Хорошая новость: вы точно определили свою проблему.

Плохая новость: встроенный ODTTF действительно не содержит необходимых глифов для вашего нового текста. Вам нужно будет вставить новый шрифт. Это ужасный хак, но возможно определить исходный шрифт, который использовался. Если окажется, что тот же самый шрифт установлен, вы можете повторить процесс встраивания шрифта, создав новый ODTTF, содержащий нужные вам глифы. Излишне говорить, что это ужасный хак, который может сильно потерпеть неудачу в нескольких моментах. То, как вы справитесь с ситуацией, будет сильно зависеть от конкретных вариантов использования вашего приложения.

person Jon    schedule 04.11.2015