libass is a portable subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format.

Overview

Build status

Coverity scan build status

libass

libass is a portable subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format. It is mostly compatible with VSFilter.

Get it

See GitHub releases for the latest release 0.15.0 (released 2020-10-27). See the changelog for a detailed list of changes.

Source code is available from our GitHub repository.

Contact

Please use the issue tracker to report bugs or feature requests. We have an IRC channel, too. Talk to us on irc.freenode.net/#libass.

Related Links

The following projects/companies use libass:

Information about the ASS format:

Other ASS/SSA implementations:

Issues
  • fonts_dir on Windows skips fonts with file names that don’t start with ASCII

    fonts_dir on Windows skips fonts with file names that don’t start with ASCII

    I always use mpv as the default player which use libass to render the subtitle. Usually, any fonts those which are put in the directory of the mpv/fonts/ will be correctly used by libass. However, some fonts whose name's first world is CJK cannot be loaded by libass.

    For example, the font 中chinese.tff will not be loaded. But if I change its name to chinese中.tff , everything is OK.

    The original issue posted in mpv project. https://github.com/mpv-player/mpv/issues/8639

    windows 
    opened by hooke007 117
  • Help with integrating libass into Kodi

    Help with integrating libass into Kodi

    I am working on Kodi to convert current subtitles rendering to use LibAss here we have an option to force the subtitles to stay positioned e.g. below the video but I don't know how best to manage it with LibAss, i explain,

    The subtitles parsers now generate each ASS_Event or if loaded as ASS/SSA use selective style override to change style, currently if a user choose to set subtitles on top or below i change the ASS_Style Alignment property. This works good, but, if a subtitle have overrides tag's like {\a5} etc... of course the subtitle will be moved in the specified position

    how i can force to ignore all positions tags like {\a5}? or force in some way the rendering to not change position?

    i have tried also ass_set_line_position but is not useful in this case

    question 
    opened by CastagnaIT 48
  • font: use iconv to handle non-unicode cmap microsoft fonts.

    font: use iconv to handle non-unicode cmap microsoft fonts.

    To resolve #531. In case of non-Unicode cmap fonts, convert unicode code point(a UCS-4 code unit) to corresponding multibyte charset bytes, then assemble those bytes into a uint32_t, assuming those bytes present a prefix-zero-bytes-omitted big-endian integer. Freetype can make use of the converted code point to find correct glyph by non-Unicode cmap.

    It introduces a dependency of libiconv. On Windows, WideCharToMultiByte is available to avoid libiconv if needed.

    And I have just tested this patch on samples from #531 and #575, which covers BIG5 and SHIFT-JIS. For other encodings, I think it should work but I can't confirm. So further testing is needed.

    #531 testing screenshot: fix1

    #575 testing screenshot: fix2

    enhancement compatibility fonts 
    opened by Apache553 45
  • Bidi bracket matching is VSFilter-incompatibile

    Bidi bracket matching is VSFilter-incompatibile

    I opened this issue in the MPV repo and was told to ask here if anyone knows why this happens.

    Using MPV, The line should show up like this: image

    But the line shows up like this: image

    Here is a test file: Test.zip

    Can anyone help me identify the problem? Thank you.

    compatibility bidi 
    opened by OmrSi 35
  • Subtitles suddenly stop now and then

    Subtitles suddenly stop now and then

    There's an anime I'm watching with SMPlayer (which is using libass). Now and then (often after the first half of the video) the subtitles are simply gone. However, when I then restart SMPlayer and rewind a bit the subtitles are often displayed correctly.

    What information would you need to fix that? (or figure out if it's libass' fault)

    opened by CreamyCookie 32
  • complex shaper: avoid font warning for non-printable codepoints

    complex shaper: avoid font warning for non-printable codepoints

    This was performed in two steps (commits):

    • Separate the non-printable simple-shaper detection into a stand-alone function.
    • Reuse this function by the complex shaper.
    opened by avih 31
  • U+2060 (Word Joiner) warns

    U+2060 (Word Joiner) warns "fontselect: failed to find any fallback for font: (sans-serif, 400, 0)"

    I don't know if this is a libass issue or mpv issue, but I'd appreciate your help to recognize the source of the issue and/or the best way to address it.

    Platform: Windows 10 mpv: master libass: d82f999 (2021-05-01)

    Whenever mpv tries to display backslash at the OSD, the backslash IS displayed, but mpv prints a warning.

    Steps to reprodue:

    • run mpv --no-config --force-window --idle
    • press tilde/backtick at the window to open the internal console
    • type show-text foo\bar and press enter (the backslash is correctly taken literally - that's how mpv parsing works)

    Result: foo\bar is displayed at the OSD, and the terminal displays

    [osd/libass] fontselect: failed to find any fallback for font: (sans-serif, 400, 0)
    

    I tried other fonts by adding to the mpv command line e.g. --osd-font=Arial or --osd-font="Comic Sans MS" - with same warning except the different font name at the message (the display font does change visibly).

    mpv does escape \ internally by default for any OSD text by appending U+2060 right after it so that libass doesn't recognize it as a begining of an ass sequence, via this code: https://github.com/mpv-player/mpv/blob/dd4d239bcb151b08eb81b38486515a3e1222e1f5/sub/osd_libass.c#L223-L225

    If I change 0x2060 (Word Joiner) to 0x200B (Zero Width Space) then it seems to behave the same but without the warning - i.e. this seem to fix the issue.

    So I have few questions:

    1. It seems to me that libass tries to find the glyph for U+2060 and fails. Is this a correct behavior? Are fonts expected to have a glyph for this codepoint?
    2. For escaping \ in strings, which should be more correct to use between U+2060 and U+200B ? (i.e. should we change mpv to use U+200B?)
    3. If we do change mpv to use U+200B, could any issue arrise with older versions of libass which would be avoided with U+2060?

    Thanks in advance.

    shaper 
    opened by avih 31
  • Fix wrong font name used when searching in-memory fonts

    Fix wrong font name used when searching in-memory fonts

    • use font->desc.family to search in-memory fonts, otherwise the font will never be found
    • pass 0 for face_index to FT_New_Memory_Face, otherwise the call may fail with Invalid Argument error in FreeType
    invalid fonts 
    opened by pkoshevoy 31
  • directwrite: fix `match_fonts`

    directwrite: fix `match_fonts`

    match_fonts is supposed to add all the fonts with the same family name for fontselect. The previous PR adds only one font, which leads to font with multiple styles cannot be correctly selected.

    fonts regression windows 
    opened by Apache553 29
  • Building ASM on OpenBSD and NetBSD errors on -fPIC being passed to NASM

    Building ASM on OpenBSD and NetBSD errors on -fPIC being passed to NASM

    I have had the ASM disabled in the OpenBSD port for quite awhile as I couldn't get it to build. I tried again with 0.15.1, but it is still not building Ok.

    I am looking around with libtool trying to figure out where the -fPIC -DPIC was added. It's the -fPIC that is causing the error.

    /usr/local/bin/libtool  --tag=CC --mode=compile nasm -DARCH_X86_64=1 -f elf64 -Dprivate_prefix=ass -I./ -o x86/rasterizer.lo x86/rasterizer.asm -prefer-non-pic
    libtool: compile:  nasm -DARCH_X86_64=1 -f elf64 -Dprivate_prefix=ass -I./ x86/rasterizer.asm  -fPIC -DPIC -o x86/.libs/rasterizer.o
    nasm: fatal: unrecognised output format `PIC' - use -hf for a list
    Type nasm -h for help.
    
    build 
    opened by brad0 28
  • another shaper issues in arabic

    another shaper issues in arabic

    hi

    using last mpv in windows (with HarfBuzz)

    libass 1 libass

    libass with the Pointing 1 libass a

    vsfilter 1 vsfilter


    libass 2 libass

    vsfilter 2 vsfilter

    wrong word order because of underline code


    video sample http://www.solidfiles.com/d/9287427ae4/[Devil-Fansub]Hyouka-_11.mkv

    sub + font http://www.solidfiles.com/d/1c8cb1aace/sub_%2B_font.rar

    thanks

    compatibility shaper 
    opened by realfinder 28
  • Arabic with font spacing changed in version 0.16.0

    Arabic with font spacing changed in version 0.16.0

    Screenshots

    This is how it looks in v0.16 with "sub-spacing=0.8" arabic-spacing

    This is how it looks in v0.16 without "sub-spacing=0.8" (This is how it should look, and it looks like this in previous versions like v0.15.2 with and without sub-spacing) arabic-no-spacing

    Description of the issue

    Arabic, could be all RTL languages, subtitles render incorrectly as of the latest update 0.16 if "sub-spacing" is used. Downgrading to the previous version 0.15.2 immediately fixed the issue.

    The screenshots are taken from MPV.

    libass version

    0.16.0

    Is it a regression?

    Recent change, since 0.16.0

    ASS Sample

    No response

    Special Fonts

    The issue doesn't depend on a specific font

    System Information

    OS: (Arch Linux 5.18.3) CPU: (AMD 3600x) GPU: (NVIDIA RTX 2060)

    Log

    No response

    Additional info

    No response

    opened by Yasand123 9
  • Add fuzzing utility

    Add fuzzing utility

    Last commit will be dropped before a merge and included in a follow up patch series. It is included as a preview to illustrate how ASS_FUZZMODE or its alternative FUZZ_CPPFLAGS (better matching FUZZ_LDFLAGS) will affect it.

    This adds the fuzzer used to find the recently fixed UB, e.g. negative fontsize. Having it in the repo simplifies reproducing the issues for others, allows us to utilise it in ART which will be more efficient than profile and no longer requires the start and end times of samples to be known. It can also be used in OSS-Fuzz, which currently has its own fuzzer source producing suspected bogus memory leaks we couldn't reproduce locally (the version here always fully reinitialises and cleans up the library handles, so this shouldn't happen anymore).

    As for the OSS-Fuzz-specific build target, after some experimenting I believe this manual linking is the least ugly way to allow OSS-Fuzz to use the new fuzzer.
    Including the link rules here will also enable us to push fixes (like for the memory leaks) or updates if anything about out build changed without having to go through a CLAed PR in OSS-Fuzz’s repo. It certainly isn't ideal to include OSS-Fuzz-specifics into our build system though, so if you don't like it don't hesitate to say so. We could leave the final link command in OSS-Fuzz’s own build rules.

    For reference, this is how OSS-Fuzz could be updated to make use of these changes (removal of old fuzzer and dict omitted): ossfuzz-diff.txt

    opened by TheOneric 2
  • Rendering: different font display size when use vertical font

    Rendering: different font display size when use vertical font

    Screenshots

    Two sets of screenshots, in order libass and xy-VSFilter

    libass xy-vsf libass_2 xy-vsf_2

    Description of the issue

    Such as screenshots, different font display size when use vertical font. Not all fonts have this problem, the most common is Source Han Sans / Serif, some time ago I found that some fonts also have the problems with this, such as FOT-Seurat (I don‘t know can I upload this font, I can upload if needed). As said in https://github.com/libass/libass/issues/600, libass only merely rotates some glyphs.

    The problem maybe these fonts have different font height values between horizontal and vertical when use VSFilter, such as if display Source Han Sans in same size, then horizontal font height is 46, vertical font height is 126, so need to adjust the font size to 2.74 times. Thanks to my friend for finding this scale ratio.

    In addition, horizontal display also have slightly different.

    I don‘t know which display effect is corret, and how will libass handle this incompatibility, match VSFilter or other ways to correctly handle vertical fonts.

    libass version

    0.15.2

    Is it a regression?

    No

    ASS Sample

    [Script Info]
    ; Script generated by Aegisub 0-dev-72343b7
    ; http://www.aegisub.org/
    Title: Default Aegisub file
    ScriptType: v4.00+
    WrapStyle: 0
    ScaledBorderAndShadow: yes
    PlayResX: 1280
    PlayResY: 720
    YCbCr Matrix: None
    
    [Aegisub Project Garbage]
    Video File: ?dummy:23.976000:50000:3840:2160:6:180:231:
    Video AR Value: 1.777778
    Video Zoom Percent: 0.335185
    
    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,Arial,48,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,2,2,10,10,10,1
    
    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\[email protected] ProN B\fs80\shad0\frz270\an7\pos(512.199,326.188)}フォント
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\fnFOT-Seurat ProN B\fs80\shad0\pos(636.519,391.823)}フォント
    
    [Script Info]
    ; Script generated by Aegisub 0-dev-72343b7
    ; http://www.aegisub.org/
    Title: Default Aegisub file
    ScriptType: v4.00+
    WrapStyle: 0
    ScaledBorderAndShadow: yes
    PlayResX: 1280
    PlayResY: 720
    YCbCr Matrix: None
    
    [Aegisub Project Garbage]
    Video File: ?dummy:23.976000:50000:3840:2160:6:180:231:
    Video AR Value: 1.777778
    Video Zoom Percent: 0.335185
    Active Line: 1
    
    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,Arial,48,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,2,2,10,10,10,1
    
    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\[email protected] Han Sans JP\fs80\shad0\frz270\an7\pos(512.199,326.188)}フォント
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\fnSource Han Sans JP\fs80\shad0\pos(636.519,391.823)}フォント
    

    Special Fonts

    I uploaded or linked to the required font

    System Information

    No response

    Log

    No response

    Additional info

    No response

    compatibility 
    opened by vxzms 0
  • Font metrics differ for negative and large positive fontsizes

    Font metrics differ for negative and large positive fontsizes

    Screenshots

    Only screenshots and sample for negative Fontsizes. @astiob: can you add the "large positive fontsize" sample mentioned on IRC?

    xy-VSFilter (xy-VSFilter bundled in Aegisub r8250, Windows 7, 32-bit binary): aegi-r8250_xy-VSF aegi-r8250_xyVSF__fs+-

    libass since #615 (before it crashed) libass-patched_01 libass-patched_02

    Description of the issue

    For negative fontsizes VSFilter/GDI uses something like the absolute size, but not quite. The rendered size is a bit larger than expected and the difference is larger than just a different rounding direction of the final value. For large positive values apparently something similar happens.

    libass version

    8e80f49ba70d6f16d8f244a7f41dfeee98d416df

    ASS Sample

    Font is version 2.37 of DejaVu Sans

    [Script Info]
    ScriptType: v4.00+
    WrapStyle: 0
    ScaledBorderAndShadow: yes
    YCbCr Matrix: None
    PlayResX: 1280
    PlayResY: 720
    
    Video File: ?dummy:25.000000:40000:1280:720:47:191:225:
    Video AR Value: 1.777778
    
    [Aegisub Project Garbage]
    Video File: ?dummy:25.000000:40000:1280:720:47:191:225:
    Video AR Value: 1.777778
    
    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: sm48,DejaVu Sans,-48,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: sm16,DejaVu Sans,-16,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: sm4,DejaVu Sans,-4,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: sm1,DejaVu Sans,-1,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: Default,DejaVu Sans,100,&H0011FF11,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: s48,DejaVu Sans,48,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: s16,DejaVu Sans,16,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: s4,DejaVu Sans,4,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: s1,DejaVu Sans,1,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,2,8,10,10,10,1
    Style: bordstyle3,DejaVu Sans,42,&H00EEEEEE,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,3,0,0,8,10,10,10,1
    Style: s22,DejaVu Sans,22,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,0,9,10,10,10,1
    Style: sm22,DejaVu Sans,-22,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,4,0,7,10,10,10,1
    
    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:05.00,sm48,,0,0,0,,{\an7}A
    Dialogue: 0,0:00:00.00,0:00:05.00,sm48,,0,0,0,,{\an7}B
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an7}{\fs-48}D
    Dialogue: 0,0:00:00.00,0:00:05.00,sm48,,0,0,0,,{\an7}C
    Dialogue: 0,0:00:00.00,0:00:05.00,sm16,,0,0,0,,{\an7}E
    Dialogue: 0,0:00:00.00,0:00:05.00,sm16,,0,0,0,,{\an7}F
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an7}{\fs-16}G
    Dialogue: 0,0:00:00.00,0:00:05.00,sm16,,0,0,0,,{\an7}H
    Dialogue: 0,0:00:00.00,0:00:05.00,sm4,,0,0,0,,{\an7}I
    Dialogue: 0,0:00:00.00,0:00:05.00,sm4,,0,0,0,,{\an7}J
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an7}{\fs-4}K
    Dialogue: 0,0:00:00.00,0:00:05.00,sm4,,0,0,0,,{\an7}L
    Dialogue: 0,0:00:00.00,0:00:05.00,sm1,,0,0,0,,{\an7}M
    Dialogue: 0,0:00:00.00,0:00:05.00,sm1,,0,0,0,,{\an7}N
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an7}{\fs-1}O
    Dialogue: 0,0:00:00.00,0:00:05.00,sm1,,0,0,0,,{\an7}P
    
    Dialogue: 0,0:00:00.00,0:00:05.00,s48,,0,0,0,,{\an9}A
    Dialogue: 0,0:00:00.00,0:00:05.00,s48,,0,0,0,,{\an9}B
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an9}{\fs48}D
    Dialogue: 0,0:00:00.00,0:00:05.00,s48,,0,0,0,,{\an9}C
    Dialogue: 0,0:00:00.00,0:00:05.00,s16,,0,0,0,,{\an9}E
    Dialogue: 0,0:00:00.00,0:00:05.00,s16,,0,0,0,,{\an9}F
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an9}{\fs16}G
    Dialogue: 0,0:00:00.00,0:00:05.00,s16,,0,0,0,,{\an9}H
    Dialogue: 0,0:00:00.00,0:00:05.00,s4,,0,0,0,,{\an9}I
    Dialogue: 0,0:00:00.00,0:00:05.00,s4,,0,0,0,,{\an9}J
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an9}{\fs4}K
    Dialogue: 0,0:00:00.00,0:00:05.00,s4,,0,0,0,,{\an9}L
    Dialogue: 0,0:00:00.00,0:00:05.00,s1,,0,0,0,,{\an9}M
    Dialogue: 0,0:00:00.00,0:00:05.00,s1,,0,0,0,,{\an9}N
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an9}{\fs1}O
    Dialogue: 0,0:00:00.00,0:00:05.00,s1,,0,0,0,,{\an9}P
    
    Dialogue: 0,0:00:00.00,0:00:15.00,bordstyle3,,0,0,0,,{\an2}Borderstyle=3 Outline=0{test if classic/xy VSF or MPC-HC ISR?}
    
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,Style Neg:
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs-36}W{ 57.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs-22}W{ 26.4}
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs-11}W{  2.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,W
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs+11}W{ -46.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs+22}W{ -70.4}
    Dialogue: 0,0:00:05.01,0:00:10.00,sm22,,0,0,0,,{\fs+36}W{ -101.2}
    
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\an9}Style Pos:
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs-36}W{ -57.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs-22}W{ -26.4}
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs-11}W{  -2.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,W
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs+11}W{ -46.2}
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs+22}W{ -70.4}
    Dialogue: 0,0:00:05.01,0:00:10.00,s22,,0,0,0,,{\fs+36}W{ 101.2}
    
    

    Special Fonts

    I uploaded or linked to the required font

    System Information

    Native CPU-Arch: x86_64 VSFilter System: Windows 7, Aegisub+VSFilter 32-bit binary libass System: glibc-Linux with freetype 2.10.4, fontconfig 2.13.1

    compatibility fonts 
    opened by TheOneric 2
  • Rendering: Drawings without matching font fail to render

    Rendering: Drawings without matching font fail to render

    Screenshots

    While I can't find a way to test this against VSFilter, I was told to file an issue, and this seemed like the most appropriate category.

    correctly rendering subtitles with both text in Gandhi Sans and a red box behind it

    text rendering but not the red box, as font not found

    Description of the issue

    Drawings require their style- or \fn-specified font to be found to render. When running mpv with --sub-font-provider=none, drawings will (apparently) fail to fallback to any font if the specified one isn't muxed, and fail to render anything.

    Example where this could come up: Typesetting done with a style defaulting to Arial, but Arial itself is not muxed in, as it's not actually used in any events (Aegisub's font collector, for instance, will not grab it in this case). Users who don't have Arial installed (or at least, those who have neither Arial nor any other font libass would fall back on in this case) will not see the drawings.

    In addition, I get the following error in the latter (failing) case:

       sub/ass: fontselect: failed to find any fallback with glyph 0x0 for font: (Arial, 400, 0)
    

    libass version

    osd/libass: libass source: commit: ac2ddef8841aa2ff37ca9b83f19f15092d0cacc6

    Is it a regression?

    As far as I am aware, this has always been the case.

    ASS Sample

    Full ASS file used: font-drawing-rendering.ass.txt

    [Script Info]
    ; Script generated by Aegisub 9215, Daydream Cafe Edition [Shinon]
    ; http://www.aegisub.org/
    Title: Default Aegisub file
    ScriptType: v4.00+
    WrapStyle: 0
    ScaledBorderAndShadow: yes
    YCbCr Matrix: None
    PlayResX: 1280
    PlayResY: 720
    
    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,Arial,48,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
    
    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\an5\bord0\shad0\blur1\p1\fscx535\fscy198\pos(644,338)\c&H0000FF&}m 0 0 l 100 0 100 100 0 100
    Dialogue: 1,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\pos(644,382)\fnGandhi Sans\b1}SHOULD HAVE RED\N BACKGROUND MASK
    

    Special Fonts

    The issue doesn't depend on a specific font. The sample uses Gandhi Sans Bold, which can be found for free, for instance at https://www.fontsquirrel.com/fonts/gandhi-sans.

    System Information

    OS: Windows 11

    Log

    Full logs: font-drawing-rendering.log

    Additional info

    I can also upload the entire mkv file (it's just 5 seconds of 1280x720 black screen, the above ASS file, and Gandhi Sans), if this helps.

    compatibility 
    opened by petzku 0
  • Rendering: libass does not use the same font than VSFilter

    Rendering: libass does not use the same font than VSFilter

    Screenshots

    It is useless in this case.

    Description of the issue

    libass does not respect vsfilter font used. Like you can see in the Additional info section, I give what I write in the \b tags and which font is been displayed.

    I test it with AegisubDC 9214 and I use subtitle provider vsfiltermod_textsub and of course, libass.

    Of course, this is only an example. VSFilter does maybe some other choice when x font weight is not installed. In my example, all the possible font weight are available.

    libass version

    AegisubDC 9214

    Is it a regression?

    I don't know

    ASS Sample

    See the MODDED_FONT.zip file

    Special Fonts

    Here are the modded font I used and the .ass: MODDED FONT.zip

    System Information

    OS: Windows 10 CPU: i5-7600

    Additional info

    VSFilter

    \bVALUE --> FONT_WEIGHT

    b0 --> 400 b1 --> 700 b2-b99 --> 400 b100-b149 --> 100 b251-b258 --> 100 b150-b250 --> 200 b351-b358 --> 200 b259-b349 --> 300 b451-b461 --> 300 b350 --> 400 b359-b450 --> 400 b551-b561 --> 400 b462-b550 --> 500 b551-b661 --> 500 b562-b650 --> 600 b751-b758 --> 600 b662-b749 --> 700 b750 --> 800 b759-b850 --> 800 b951-b1050 --> 800 b851-b950 --> 900 b1051-infinite --> 900

    libass

    \bVALUE --> FONT_WEIGHT

    b0 --> 400 b1 --> 700 b2 à b99 --> 400 b100-b149 --> 100 b150-b250 --> 200 b251-b349 --> 300 b350-b450 --> 400 b451-b550 --> 500 b551-b650 --> 600 b651-b749 --> 700 b750-b850 --> 800 b851-infinite --> 900

    compatibility fonts 
    opened by moi15moi 5
Releases(0.16.0)
  • 0.16.0(May 12, 2022)

    This release brings a new ASS_FEATURE_WHOLE_TEXT_LAYOUT API toggle, brings an important API change on (only) Microsoft’s Win32 platform to enable arbirtrary paths to be used rather than only ANSI ones, fixes an incompatibility with FreeType versions >= 2.11.1 on Win32 and brings many more bug and compatibility fixes as well as other improvements.

    API users are highly encouraged to pay special attention to the following points:

    • The documentation has been expanded and multiple errors in it have been fixed. It may be worthwhile to reread the documentation for all functions you are using (or all of it). If you still have questions afterwards or spot an error, please contact us so the docs can be further improved.

    • For those on Win32 only (other platforms do not require special handling of the path’s encoding):

      The new support for arbitrary paths via the new dual encoding used in the majority of our API is mostly backward compatible, i.e. continuing to use fopen ANSI paths works mostly as well (or bad) as before except when there are actual on-disk name collisions. However, the other way around, using the new encoding with older libass binaries, will in general fail unless the paths happen to be pure 7-bit US-ASCII.

      If you want to make use of arbitrary paths but also wish to continue to support older libass versions, you should continue to always use the fopen encoding if ass_library_version() < 0x01502002.

      Technically, this should be accompanied by an increase in the minor soname version, but there is none because the change is Win32-specific and the minor soname version is not even used by the dynamic linker in common MS Windows setups.

    Detailed changes:

    • Fix missing -framework options in libass.pc on macOS
    • Fix missing GDI or DirectWrite options in libass.pc on Win32
    • Fix crashes with fonts missing Postscript names and without one being synthesised by the font provider
    • Fix crashes on negative fontsizes and some overflows
    • Fix a rare memory leak introduced in 0.13.0
    • Fix minimum dependency versions in configure and our pc-file
    • Fix our public headers for use with GCC versions between 3.1.0 and 4.5.0 (was a regression introduced in 0.15.0)
    • x86: Fix potential buffer over-read by 16 bytes with AVX2 assembly when large tiles are not enabled (the default)
    • x86: Fix PIC flags not being interpreted by the assembler, breaking the asm-enabled build setup on NetBSD and OpenBSD. On 32-bit x86, if the toolchain requires PIC objects and relies on compiler defaults to get PIC implicitly, you need to pass --with-pic to configure to ensure NASM always produces PIC objects
    • x86: Fix AVX support not being detected on non-Intel CPUs and some VMs
    • x86: Fix CPUID being used on CPUs not supporting the instruction (<= i486) and the way it is used for CPUs with less than 7 CPUID-leafs which could lead to crashes due to illegal instructions
    • MS Windows-only issue: Fix crashes with FreeType >= 2.11.1 on Win32 when rendering strikethrough or underline
    • Improve \iclip quality
    • Improve quality of very small outlines
    • Switch to wyhash for much better cache performance
    • Propagate ZWJ/ZWNJ effects across glyph run boundaries
    • Do not depend on compiler-specific defines to actually use built assembly
    • Expand documentation and fix mistakes in it
    • configure now errors out if an explicitly requested feature is unavailable
    • MS Windows-only issue: ease linking against static/shared GNU FriBidi
    • Add ASS_FEATURE_WHOLE_TEXT_LAYOUT to apply bidi, shaping and \fay to the entire unsplit event text. The non-portable Encoding=-1 mode always behaves as if the feature were enabled
    • MS Windows-only issue: add support for arbitrary Unicode paths; see documentation of related functions for details
    • Improve VSFilter compatibility
      • Do not treat format lines using Actor in place of Name as custom format lines. The former is used by VSFilter itself, the latter by Aegisub
      • Run bidi and shaping on each glyph run separately by default
      • Match VSFilter’s \fsp effects on bidi and shaping
      • Match VSFilter’s \fay behaviour
      • Support non-Unicode font cmaps when Win32 API or iconv is available and can convert to the relevant encoding
      • Treat empty clip outlines as if everything was outside the clip not inside (was a 0.14.0 regression)
      • Parse integer parameters of override tags more like VSFilter

    This release is signed by the same OpenPGP key as the 0.15.x series of releases. Future releases may be signed with other keys listed in the new MAINTAINERS file.

    Source code(tar.gz)
    Source code(zip)
    libass-0.16.0.tar.gz(538.08 KB)
    libass-0.16.0.tar.gz.asc(228 bytes)
    libass-0.16.0.tar.xz(387.01 KB)
    libass-0.16.0.tar.xz.asc(228 bytes)
  • 0.15.2(Sep 12, 2021)

    This is a bug fix release without API or ABI changes, mainly to fix more known 0.15.0 and 0.15.1 regressions. But as a bonus, it is now possible to build the DirectWrite system font provider for Microsoft’s Universal Windows Platform (UWP).

    Two known minor 0.15.x DirectWrite system font regressions remain:

    • when a font is attached/memory-loaded but a different (non-attached) style of the same font is used by the subtitles (only the attached style[s] will be used; this also affects Core Text since 0.13.0 but not Fontconfig);

    • in the unlikely case that the full name of a system font equals the family name of another system font (only the family name matches will be found).

    Also please note that our IRC channel #libass has moved from freenode.net to Libera.Chat, and all presence on freenode.net has been fully retired.

    Changes:

    • Fix some known 0.15.x regressions:
      • Fix Core Text font fallback failing on some fonts with multiple names
      • Fix DirectWrite failing to look up any but the first loaded variant of system fonts
    • Fix some format string bugs, which could lead to garbled log messages or on some platforms crashes
    • Fix ass_set_fonts_dir failing to load long paths
    • Better handling of control characters that have no associated font glyphs
    • DirectWrite: font lookup is now closer to VSFilter
    • DirectWrite: this font provider can now be built for UWP
    Source code(tar.gz)
    Source code(zip)
    libass-0.15.2.tar.gz(519.06 KB)
    libass-0.15.2.tar.xz(373.08 KB)
  • 0.15.1(May 2, 2021)

    This is purely a bug fix and polish release, with no significant API or ABI changes.

    The only API change is that ass_add_font is now declared to accept const char *. Previously it took only char *, but const has worked in practice since the very first standalone libass release.

    • Fix currently known 0.15.0 regressions:
      • Fix crashing on some ASS files with embedded fonts
      • Fix total font fallback failure with some fonts on Core Text
    • Fix embedded and memory fonts not actually being used unless ass_set_fonts was called after they have been added
    • Fix events assuming the largest xbord-value of a preceding event of the same frame during collision handling
    • Fix \fscx0 and \fscy0 making more text disappear than they should
    • Fix shift in vertical positioning of some right-to-left events with \an4-6, \pos, \move or Scroll effects
    • Fix imprecise output for \be with huge argument
    • Fix the --enable-large-tiles configure switch doing nothing
    • Fix output of ASM-enabled builds deviating from non-ASM builds
    • Fix ASM-builds on Haiku and 32-bit *BSDs
    • Overhaul x86 assembly for better performance and to allow ASM-enabled PIC-builds on 32-bit
    • Reduce temporary allocation in rendering
    • DirectWrite: request fonts on demand for better performance and improved compatibility with external on-demand font activation
    • Log libass version numbers upon renderer startup
    • Accept pointers to const as arguments to ass_add_font
    • Improve VSFilter compatibility:
      • Disregard zero area events in collision handling
      • Do not apply \fsp to vector drawings
      • Fix bug preventing cutting out glyphs from border & shadow with abnormal \fad values (or causing aliasing artifacts in some cases with normal values)
    Source code(tar.gz)
    Source code(zip)
    libass-0.15.1.tar.gz(525.23 KB)
    libass-0.15.1.tar.xz(361.21 KB)
  • 0.15.0(Oct 27, 2020)

    Boo! Three long years in the making due to large internal changes, this long-awaited release brings bug fixes, speed, and a new mechanism for opting into VSFilter-incompatible features:

    • Fix backwards/VSFilter-incompatible font sizes with FreeType 2.10+
    • Improve speed via better caching
    • Require HarfBuzz unconditionally to ensure good shaping for complex scripts
    • ass_set_use_margins(true) now simply places text on the whole screen instead of attempting to tie it to video positioning (set by the margin values) and failing in various ways when margins are used to implement pan & scan in a video player
    • Add ass_track_set_feature() & catch-all ASS_FEATURE_INCOMPATIBLE_EXTENSIONS
    • Add ASS_FEATURE_BIDI_BRACKETS to enable Unicode 6.3+ bracket matching when applying the Unicode Bidirectional Algorithm (incompatible with VSFilter; requires libass built with FriBidi 1.0+)
    • Fix stack overflow on deeply nested \t tags
    • Fix positioning of events with leading line breaks
    • Fix small but nonzero \bord becoming \bord0 (regression in 0.14.0)
    • Measure BorderStyle=4 box padding from glyph border, not from glyph fill
    • Scale everything from script resolution if storage size is not set (including borders and shadows regardless of ScaledBorderAndShadow)
    • Fix the default aspect ratio calculation when neither ass_set_pixel_aspect() nor ass_set_aspect_ratio() is called
    • Multiple fixes for karaoke override tags
    • Handle memory allocation failures better: avoid some crashes and produce images closer to truth
    • Avoid some integer overflows
    • Add internal infrastructure for regression testing
    • Improve VSFilter compatibility:
      • Treat invalid nested \t tags like VSFilter
      • Make \t(T,T,...) at time exactly T use the post-transition values
      • Make lines stack more like they do in VSFilter
      • Default ScaledBorderAndShadow to 0 (like VSFilter), except for subtitles that were produced by old FFmpeg/Libav
      • Make shadow positioning with 3D transforms match VSFilter’s
      • Cut out glyphs from border & shadow in all the same cases as VSFilter
      • Match VSFilter on animated color tags with negative acceleration
      • Fix parsing of some files that VSFilter accepts but libass didn’t by ignoring leading whitespace in each line of an ASS file or CodecPrivate
      • Improve font selection with CoreText
      • Stop faux-bolding fonts that are too bold to get faux bold in VSFilter
      • Ignore leading/trailing spaces when calculating height of nonblank lines
      • Match VSFilter on \fade with large alpha value arguments
      • Stop splitting bitmaps on font substitution
      • Multiple fixes for Banner and Scroll effects
      • Multiple fixes for karaoke override tags
    Source code(tar.gz)
    Source code(zip)
    libass-0.15.0.tar.gz(525.12 KB)
    libass-0.15.0.tar.xz(359.22 KB)
  • 0.14.0(Oct 31, 2017)

    • Brand new, faster and better outline stroker (replaces FreeType stroker)
    • Remove option to use the FreeType rasterizer
    • Fix spots of missing border around self-intersecting shapes
    • Switch from Yasm to NASM for building hand-written assembler code
    • Support Core Text font provider on Mac OS X 10.6 and 10.7
    • Clear font cache in ass_set_fonts(). This fixes potentially incorrect font choices and an occasional crash if this function is called midway through rendering a file.
    Source code(tar.gz)
    Source code(zip)
    libass-0.14.0.tar.gz(485.69 KB)
    libass-0.14.0.tar.xz(347.90 KB)
  • 0.13.7(Jun 3, 2017)

    • Fix invalid memory accesses with BorderStyle=4
    • Fix change detection bug on frame resizes
    • Fix cache bugs with border size
    • Reduce precision of border width in font outline caching
    • Don't treat :;<=>? as hexadecimal digits in color headers
    • Fix parsing of unusual Alignment values in ASS style definitions
    • Fix potential truncation in timestamp parsing
    • Treat negative PlayResX/PlayResY like VSFilter
    • Fixes to parsing of embedded fonts
    • Remove arbitrary bitmap limit (fixes issues with subtitle rendering at 4K)
    • Allow using shadow offset to adjust size of background with BorderStyle=4
    • Fix TrueType/OpenType font collection handling with the DirectWrite backend
    Source code(tar.gz)
    Source code(zip)
    libass-0.13.7.tar.gz(505.76 KB)
    libass-0.13.7.tar.xz(344.48 KB)
  • 0.13.6(Jan 3, 2017)

    • Add Justify style override that changes text justification (left/right/center) without affecting event positioning. This breaks ABI compatibility with prior releases.
    • Fix ass_set_cache_limits() to affect total bitmap cache size including composite bitmap cache.
    • Number parsing fixes
      • Fix illegal read when parsing some numbers in scientific notation with huge exponents.
      • Correctly evaluate numbers in scientific notation with large exponents.
      • Correctly evaluate numbers with many leading zeros.
    • Bug fixes found with fuzzing
      • Fix a small memory leak in the parser.
      • Fix illegal read in the parser on specially crafted input with \t tags.

    Note: this is functionally equivalent to release 0.13.5, but the libtool version number has been increased to account for the ABI break.

    Source code(tar.gz)
    Source code(zip)
    libass-0.13.6.tar.gz(477.17 KB)
    libass-0.13.6.tar.xz(341.93 KB)
  • 0.13.5(Jan 3, 2017)

    Do not use this release. Use 0.13.6.

    This release breaks ABI compatibility, but the libtool version number does not reflect this. Instead, use 0.13.6, which bumps the libtool version number. If you rather need ABI compatibility with releases 0.10.2 to 0.13.4, use 0.13.4.

    See the change log for release 0.13.6.

    Source code(tar.gz)
    Source code(zip)
  • 0.13.4(Oct 4, 2016)

  • 0.13.3(Sep 24, 2016)

  • 0.13.2(Feb 20, 2016)

  • 0.13.1(Dec 1, 2015)

    • Much faster duplicate event check in ass_process_chunk. This can bring a large speedup for embedded subtitles with lots of events. To make this possible, it is now forbidden to combine calls to ass_process_chunk with any other method of manipulating the event list, namely, manual manipulation and calls to ass_process_data, ass_read_memory and ass_read_file.
    • Interpret negative timestamp components as actual negative numbers. This change increases compatibility with VSFilter.
    • Font matching changes for VSFilter compatibility
      • Look up fonts that contain PostScript outlines by their PostScript name instead of their full names. Family names continue to be used for all fonts.
      • Keep spaces in font names
    • Drop support for Fontconfig < 2.10.92 to ensure correct font matching
    • Bug fixes
      • Fix building the assembler code for the x32 ABI (GH #200)
      • Fix static linking against libass through pkg-config when libass uses libiconv
      • Fix some small memory leaks, potential crashes and bad data uses

    In this release only, an old version of GNU Libtool is used in the release tarball, leading to problems building shared libraries for Windows. This is fixed in 0.13.2. This does not affect building from Git.

    Source code(tar.gz)
    Source code(zip)
    libass-0.13.1.tar.gz(431.67 KB)
    libass-0.13.1.tar.xz(311.36 KB)
  • 0.13.0(Oct 3, 2015)

    • Add native font selection backends for OSX (CoreText) and Windows (DirectWrite). You can now run libass without fontconfig on these platforms. This fixes problems with fontconfig behaving badly on these platforms (it could take minutes to scan all system fonts). Even on Linux, this speeds up loading of embedded fonts (such as provided by ass_add_font()). The DirectWrite backend only works on Windows Vista and later. On XP, fontconfig is still needed. libass can be compiled with both DirectWrite and fontconfig, and then it will fallback to fontconfig automatically if DirectWrite is not available at runtime.
    • Add ass_get_available_font_providers() API function.
    • Change the 4th parameter of ass_set_fonts(). This now selects the font provider. This is somewhat backwards compatible with the old behavior, but if you ever passed values other than 0 or 1, your application might break with this libass release.
    • The ass_fonts_update() function now does nothing. It's kept for backward compatibility only.
    • Much faster gaussian blur. This can bring a large speedup with big blurred signs and such.
    • Drop ENCA support
    • Bug fixes
      • Fix compilation of the freetype rasterizer (disabled by default)
      • Fix rendering with some cases of consecutive line breaks (\N\N).
      • Fix some memory allocation failure checks
      • Avoid system locale dependent behavior by reinventing some standard C functions
      • Fix rendering errors with strikes (GH #193)
      • MSVC compilation fixes
    Source code(tar.gz)
    Source code(zip)
    libass-0.13.0.tar.gz(476.63 KB)
    libass-0.13.0.tar.xz(328.25 KB)
  • 0.12.3(Jun 30, 2015)

  • 0.12.2(May 7, 2015)

    • Add extern "C" guards to the public headers for C++ compatibility
    • Improvements to style override API and implementation
    • Bugfixes
      • Fix some rasterizer bugs of unknown severity
      • Fix a broken memset() of unknown severity
      • Make timestamp parsing more lenient, which makes libass accept invalid files accepted by most other ASS parsers
      • Increase compatibility with broken ASS drawings accepted by VSFilter
    Source code(tar.gz)
    Source code(zip)
    libass-0.12.2.tar.gz(443.43 KB)
    libass-0.12.2.tar.xz(305.86 KB)
  • 0.12.1(Jan 7, 2015)

    • Make ASS drawings with an extremely high number of control points work
      This change increases compatibility with VSFilter.
    • Bugfixes
      • Fix a crash when using newer harfbuzz versions (GH #155)
      • Load embedded memory fonts correctly
      • Large shadow offsets rendered incorrectly (GH #142)
      • Fix incorrect closing of last drawing contour
      • Fix issues with undefined behavior in shifts
      • Lots of of malloc() error checking
    Source code(tar.gz)
    Source code(zip)
    libass-0.12.1.tar.gz(424.83 KB)
    libass-0.12.1.tar.xz(304.70 KB)
  • 0.12.0(Oct 22, 2014)

    • Implement fast quad-tree rasterizer in C and SSE2/AVX2 assembly
    • Make \be animatable
    • Add BorderStyle=4 (GH #105)
    • Add selective style override functionality
      • ass_set_selective_style_override()
      • ass_set_selective_style_override_enabled()
    • Support for assembly on DragonFly BSD
    • Bugfixes
      • Various parser fixes
      • Fix premature parser exit on }{ in drawing mode (GH #75)
      • Reset clipping mode on every rectangle clip
      • Improved error handling for FriBidi and FreeType (GH #131)
      • Fix bitmap combining cache
    Source code(tar.gz)
    Source code(zip)
    libass-0.12.0.tar.gz(447.93 KB)
    libass-0.12.0.tar.xz(303.13 KB)
  • 0.11.2(Apr 25, 2014)

  • 0.11.1(Feb 19, 2014)

  • 0.11.0(Feb 18, 2014)

    • Add bitmap run combining/compositing
      This changes the text rendering model and increases compatibility with VSFilter. It may make rendering faster or slower in certain cases.
    • Add AVX/SSE2 implementations for \be and compositing
      This adds yasm as (optional) build dependency.
    • Add ass_library_version() API funcion (GC #113)
    • Add 'profile' program for benchmarks
    • Improve gaussian blur
    • Fix compilation with MSVC 2013
    • Speed up HarfBuzz shaper
    • Speed up cache
    • Notable compatibility bugfixes
      • Reset origin on \fay changes (GC #88)
      • Tons of parser fixes
      • Fix ascender/descender metrics (GH #8)
      • Fix \pbo sign and scaling
      • Don't reset wrap style on \r (GC #116, GH #45)
    • Notable bugfixes:
      • Correctly handle @font advance (GC #94)
      • Disable ligatures for non-zero \fsp
      • Make sure to release vector clip (GH #22)
    Source code(tar.gz)
    Source code(zip)
    libass-0.11.0.tar.gz(414.33 KB)
    libass-0.11.0.tar.xz(282.07 KB)
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support

Vita-Media-Player An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support 1080i output supported on the PSTV natively and on the

Jaylon Gowie 42 May 28, 2022
libelf as part of elfutils has been a major pain in the ass.

libelf in zig libelf as part of elfutils has been a major pain in the ass. All I want to do is make statically compiled programs that use eBPF (libbpf

Matthew Knight 13 Jul 21, 2021
ASS: Audio Stupidly Simple

A single header library for audio decoding and playback

Danny Angelo Carminati Grein 31 Feb 20, 2021
A real-time DirectX 11 renderer. The renderer is named by my girlfriend's english name.

sophia Sophia is a real-time DirectX 11 renderer. It is not quite a rich graphics engine, only packages some low-level DirectX functions and contains

BB 6 Dec 11, 2021
Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X

Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X (probably BSD also). Web Link Website

Arun Narayanankutty 150 Jun 14, 2022
The OpenEXR project provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture industry.

OpenEXR OpenEXR provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the mot

Academy Software Foundation 1.2k Jun 27, 2022
(Simple String Format) is an syntax of format and a library for parse this.

SSFMT (Simple String Format) is an syntax of format and a library for parse this. SSFMT != {fmt} SSFMT is NOT an API/library for parse {fmt} syntax !

null 2 Jan 30, 2022
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

OpenBSD LibreSSL Portable 1.1k Jul 1, 2022
2D and 3D map renderer using OpenGL ES

Tangram ES Tangram ES is a C++ library for rendering 2D and 3D maps from vector data using OpenGL ES. It is a counterpart to Tangram. This repository

Tangram 728 Jun 20, 2022
Niagara UI Renderer | Free Plugin for Unreal Engine 4

Niagara UI Renderer | Free Plugin for Unreal Engine 4 Niagara UI Plugin adds Niagara Particle System Widget that allows you to render Niagara particle

null 122 Jun 5, 2022
Markdown renderer for Dear ImGui using MD4C parser

imgui_md Markdown renderer for Dear ImGui using MD4C parser. C++11 or above imgui_md currently supports the following markdown functionality: Wrapped

Dmitry Mekhontsev 58 Jun 24, 2022
Ultra-lightweight web browser based on Qt Ultralight webview, powered by Ultralight HTML renderer

Qt Ultralight Browser This is an ultra-lightweight web browser powered by the Ultralight web engine embedded in Qt 5 app as a custom webview widget -

niu tech 30 Jun 14, 2022
DOOM BSP renderer for ZenithOS.

Zenith DOOM This project ports the DOOM BSP renderer to Zenith for use in custom games. It includes a zos/ directory in src/ which has includes that e

null 3 Jun 10, 2021
Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Ferhat Geçdoğan 3 Jun 11, 2021
A toy renderer written in C using Vulkan to perform real-time ray tracing research.

This is a toy renderer written in C using Vulkan. It is intentionally minimalist. It has been developed and used for the papers "BRDF Importance Sampl

Christoph Peters 250 Jun 27, 2022
refterm is a reference renderer for monospace terminal displays.

refterm v2 refterm is a reference renderer for monospace terminal displays. It was designed to demonstrate that even in the worst-case scenario - extr

Casey Muratori 1.2k Jun 23, 2022
physically based renderer written in DX12 with image-based lighting, classic deffered and tiled lighting approaches

Features Classical Deferred Renderer Physically Based shading Image Based Lighting BRDF Disney model (Burley + GGX) Tangent space normal mapping Reinh

Alena 35 Jun 2, 2022
2D GPU renderer for dynamic UIs

vger vger is a vector graphics renderer which renders a limited set of primitives, but does so almost entirely on the GPU. Works on iOS and macOS. API

Audulus LLC 115 Jun 21, 2022
PainterEngine is a application/game engine with software renderer,PainterEngine can be transplanted to any platform that supports C

PainterEngine is a application/game engine with software renderer,PainterEngine can be transplanted to any platform that supports C

DBinary 1.4k Jun 28, 2022
Engine-3D is a 3D-Graphics Renderer built from scratch in C++

Engine3D Engine-3D is a 3D-Graphics Renderer built from scratch in C++, as an Undergraduate Computer Engineering Project for 5th Semester, assigned by

Chirag Lamsal 4 Nov 15, 2021
work in progress 3d renderer based on sdl2

work in progress 3d software renderer based on SDL. (Only supports wireframe view for now) Building On Linux, install libsdl2 and then run the folowin

null 4 Sep 12, 2021
Cross-platform version of Heboris C7EX using a hardware-accelerated SDL 2.0 renderer

Heboris C7EX - unofficial version (YGS2K EX) This version contains the source code for Heboris C7EX. It requires a C compiler, SDL 2.0, SDL 2.0 mixer,

Brandon McGriff 9 May 27, 2022
work in progress 3d renderer based on sdl2

work in progress 3d software renderer based on SDL. (Only supports wireframe view for now) Building On Linux, install libsdl2 and then run the folowin

Jayachandra Kasarla 4 Sep 12, 2021
Ipsys Particle System Yey letS go, very cool particle system generator and fast renderer

ipsys - Ipsys Particle System Yey letS go About Ipsys is a piece of software that focuces on running and displaying cool randomly generated particule

Anima Libera 5 May 26, 2022
A modern C++ physically based renderer

The Dakku Renderer Warning: This project is currently under developing and does not guarantee any consistency. About Dakku is a physically based rende

xehoth 6 Apr 15, 2022
Super Simple Scene Renderer

SSSR Super Simple Scene Renderer Feature Rendering path Forward rendering Deferred rendering Physically based rendering GGX Image based lighting Equir

AICDG 5 Dec 9, 2021
A Simple Spectral Renderer

Simple Spectral This is a simple multithreaded spectral pathtracer implementing the algorithm (linear combination of bases) described in our EGSR 2019

Ian Mallett 156 May 13, 2022
High performance physically based renderer in C++11

The Tungsten Renderer About Tungsten is a physically based renderer originally written for the yearly renderer competition at ETH. It simulates full l

Benedikt Bitterli 1.6k Jun 24, 2022
Mitsuba renderer main repository

Mitsuba — Physically Based Renderer http://mitsuba-renderer.org/ About Mitsuba is a research-oriented rendering system in the style of PBRT, from whic

Mitsuba Physically Based Renderer 866 Jun 24, 2022