#11549: Ffmpeg fontconfig broken on windows?
-------------------------------------+------------------------------------
             Reporter:  mytait       |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  avfilter
              Version:  unspecified  |               Resolution:
             Keywords:  drawtext     |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+------------------------------------
Description changed by mytait:

Old description:

> Summary of the bug:
>
> the drawtext command will not find a font on windows in V7.x unless the
> font file is provided. as per documentation that is only necessary "if
> the fontconfig support is disabled." (and if you need your own font file
> of course)
>
> normally even not providing a font works as there is a default value.  On
> windows v7.x it does not anymore. (tested on 7.0.1 and 7.1.1
>
> in linux and macos it works as expected just providing the font name e.g.
> "Times New Roman" or "arial". Also windows V5.x works as expected.
>

>
> How to reproduce:
> create a text file named test.mkv and then draw a text on it
> {{{
> % ffmpeg -y -f lavfi -i color=c=white:s=1280x720:r=30 -f lavfi -i
> anullsrc=r=44100:cl=stereo -t 10 -c:v libx264 -c:a aac test.mkv
>
> % ffmpeg -y -i test.mkv -vf "drawtext=font='arial':text='test'" out.mkv
> Input #0, matroska,webm, from 'test.mkv':
>   Metadata:
>     ENCODER         : Lavf61.7.100
>   Duration: 00:00:10.02, start: -0.023000, bitrate: 16 kb/s
>   Stream #0:0: Video: h264 (High), yuv420p(tv, progressive), 1280x720
> [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 1k tbn
>       Metadata:
>         ENCODER         : Lavc61.19.101 libx264
>         DURATION        : 00:00:10.000000000
>   Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp
>       Metadata:
>         ENCODER         : Lavc61.19.101 aac
>         DURATION        : 00:00:10.023000000
> Fontconfig error: Cannot load default config file: No such file: (null)
>
> }}}
>

> This works:
> {{{
> ffmpeg -y -i test.mkv -vf
> "drawtext=fontfile=C\\:/Windows/fonts/arial.ttf:text='test'" out.mkv
> }}}
>

> but providing a font everytime breaks the elegancy of the former command
> being OS independent (only providing the font name and not filename with
> path)
>
> the used version have all the required options as per documentation:
> --enable-libfreetype  --enable-libharfbuzz  --enable-libfontconfig
> --enable-libfribidi
>
> {{{
> ffmpeg version 7.0.1-full_build-www.gyan.dev Copyright (c) 2000-2024 the
> FFmpeg developers
>   built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
>   configuration: --enable-gpl --enable-version3 --enable-static
> --disable-w32threads --disable-autodetect --enable-fontconfig --enable-
> iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib
> --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-
> libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-
> libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-
> libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d
> --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2
> --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl
> --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-
> libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-
> libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf
> --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-
> dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-
> libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc
> --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio
> --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-
> libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-
> libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2
> --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-
> libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-
> libbs2b --enable-libflite --enable-libmysofa --enable-librubberband
> --enable-libsoxr --enable-chromaprint
>   libavutil      59.  8.100 / 59.  8.100
>   libavcodec     61.  3.100 / 61.  3.100
>   libavformat    61.  1.100 / 61.  1.100
>   libavdevice    61.  1.100 / 61.  1.100
>   libavfilter    10.  1.100 / 10.  1.100
>   libswscale      8.  1.100 /  8.  1.100
>   libswresample   5.  1.100 /  5.  1.100
>   libpostproc    58.  1.100 / 58.  1.100
>
> }}}
>
> {{{
> ffmpeg version 7.1.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the
> FFmpeg developers
>   built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
>   configuration: --enable-gpl --enable-version3 --enable-shared
> --disable-w32threads --disable-autodetect --enable-fontconfig --enable-
> iconv --enable-gnutls --enable-lcms2 --enable-libxml2 --enable-gmp
> --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-
> librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth
> --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-
> libdvdread --enable-sdl2 --enable-libaribb24 --enable-libaribcaption
> --enable-libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-
> libquirc --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-
> libqrencode --enable-librav1e --enable-libsvtav1 --enable-libvvenc
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2
> --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl
> --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r
> --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-
> liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg
> --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-
> d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-
> nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan
> --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme
> --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb
> --enable-libmp3lame --enable-libshine --enable-libtheora --enable-
> libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc
> --enable-libgsm --enable-liblc3 --enable-libopencore-amrnb --enable-
> libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-
> libbs2b --enable-libflite --enable-libmysofa --enable-librubberband
> --enable-libsoxr --enable-chromaprint
>   libavutil      59. 39.100 / 59. 39.100
>   libavcodec     61. 19.101 / 61. 19.101
>   libavformat    61.  7.100 / 61.  7.100
>   libavdevice    61.  3.100 / 61.  3.100
>   libavfilter    10.  4.100 / 10.  4.100
>   libswscale      8.  3.100 /  8.  3.100
>   libswresample   5.  3.100 /  5.  3.100
>   libpostproc    58.  3.100 / 58.  3.100
> }}}

New description:

 Summary of the bug:

 the drawtext command will not find a font on windows in V7.x unless the
 font file is provided. as per documentation that is only necessary "if the
 fontconfig support is disabled." (and if you need your own font file of
 course)

 normally providing a high level font name (font='arial') or even not
 providing a font works as there is a default value.  On windows v7.x it
 does not anymore. (tested on 7.0.1 and 7.1.1

 in linux and macos it works as expected just providing the font name e.g.
 "Times New Roman" or "arial". Also windows V5.x works as expected.



 How to reproduce:
 create a text file named test.mkv and then draw a text on it
 {{{
 % ffmpeg -y -f lavfi -i color=c=white:s=1280x720:r=30 -f lavfi -i
 anullsrc=r=44100:cl=stereo -t 10 -c:v libx264 -c:a aac test.mkv

 % ffmpeg -y -i test.mkv -vf "drawtext=text='test'" out.mkv
 Input #0, matroska,webm, from 'test.mkv':
   Metadata:
     ENCODER         : Lavf61.7.100
   Duration: 00:00:10.02, start: -0.023000, bitrate: 16 kb/s
   Stream #0:0: Video: h264 (High), yuv420p(tv, progressive), 1280x720 [SAR
 1:1 DAR 16:9], 30 fps, 30 tbr, 1k tbn
       Metadata:
         ENCODER         : Lavc61.19.101 libx264
         DURATION        : 00:00:10.000000000
   Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp
       Metadata:
         ENCODER         : Lavc61.19.101 aac
         DURATION        : 00:00:10.023000000
 Fontconfig error: Cannot load default config file: No such file: (null)

 }}}


 This works:
 {{{
 ffmpeg -y -i test.mkv -vf
 "drawtext=fontfile=C\\:/Windows/fonts/arial.ttf:text='test'" out.mkv
 }}}


 but providing a font everytime breaks the elegancy of the former command
 being OS independent (only providing the font name and not filename with
 path)

 the used version have all the required options as per documentation:
 --enable-libfreetype  --enable-libharfbuzz  --enable-libfontconfig
 --enable-libfribidi

 {{{
 ffmpeg version 7.0.1-full_build-www.gyan.dev Copyright (c) 2000-2024 the
 FFmpeg developers
   built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-static --disable-
 w32threads --disable-autodetect --enable-fontconfig --enable-iconv
 --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma
 --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt
 --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray
 --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption
 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd
 --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp
 --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve
 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg
 --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r
 --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-
 liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-
 amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va
 --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec
 --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan
 --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme
 --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb
 --enable-libmp3lame --enable-libshine --enable-libtheora --enable-
 libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc
 --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-
 libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-
 libflite --enable-libmysofa --enable-librubberband --enable-libsoxr
 --enable-chromaprint
   libavutil      59.  8.100 / 59.  8.100
   libavcodec     61.  3.100 / 61.  3.100
   libavformat    61.  1.100 / 61.  1.100
   libavdevice    61.  1.100 / 61.  1.100
   libavfilter    10.  1.100 / 10.  1.100
   libswscale      8.  1.100 /  8.  1.100
   libswresample   5.  1.100 /  5.  1.100
   libpostproc    58.  1.100 / 58.  1.100

 }}}

 {{{
 ffmpeg version 7.1.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the
 FFmpeg developers
   built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-shared --disable-
 w32threads --disable-autodetect --enable-fontconfig --enable-iconv
 --enable-gnutls --enable-lcms2 --enable-libxml2 --enable-gmp --enable-
 bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist
 --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth
 --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread
 --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-
 libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc
 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-libqrencode
 --enable-librav1e --enable-libsvtav1 --enable-libvvenc --enable-libwebp
 --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve
 --enable-libxvid --enable-libaom --enable-libjxl --enable-libvpx --enable-
 mediafoundation --enable-libass --enable-frei0r --enable-libfreetype
 --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-
 libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-
 llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va
 --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-
 vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-
 opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-
 libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-
 libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc
 --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-liblc3
 --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-
 libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-
 libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
   libavutil      59. 39.100 / 59. 39.100
   libavcodec     61. 19.101 / 61. 19.101
   libavformat    61.  7.100 / 61.  7.100
   libavdevice    61.  3.100 / 61.  3.100
   libavfilter    10.  4.100 / 10.  4.100
   libswscale      8.  3.100 /  8.  3.100
   libswresample   5.  3.100 /  5.  3.100
   libpostproc    58.  3.100 / 58.  3.100
 }}}

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11549#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to