поддержка ffmpeg drawtext для тибетских шрифтов - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь использовать фильтр drawtext ffmpeg для рендеринга тибетского текста в видео. Но некоторые символы отображаются неправильно.

например:

སྤྱི་ སྟེགས

Ожидаемый результат рендеринга

некоторые символы, которые слишком длинные по вертикали, отображаются неправильно:

Фактический результат рендеринга

и это моя командная строка для генерации вывода :

ffmpeg -i input.mp4 -filter_complex "drawtext=fontsize=80:fontcolor=black:fontfile=himalaya.ttf:shadowx=1:shadowy=1:text='སྤྱི་སྟེགས':x=0:y=0" -c:v libx264 -b:v 400k -c:a copy output.mp4

Шрифт himalaya.ttf (Microsoft Himalaya) является встроенным шрифтом по умолчанию для тибетского языка Windows 10. (см. https://docs.microsoft.com/en-us/typography/font-list/microsoft-himalaya)

Я пробовал text_shaping=1 и text_shaping=0, ни один из них не работает.

Я также пробовал другие тибетские шрифты, проблема та же.

Но все эти шрифты отображаются правильно в других местах, например в веб-браузере.

1 Ответ

0 голосов
/ 19 июня 2020

Это маловероятная ошибка freetype. Я бы сделал ставку на неполную поддержку формирования в самом ffmpeg, я вижу, что он использует функции fribidi, которые, вероятно, работают для Arabi c, но не для всего остального. Вероятно, вам потребуется переключиться на harfbuzz + fribidi или на панорамирование go.

...