summaryrefslogtreecommitdiffstats
path: root/libass/ass_font.c
Commit message (Collapse)AuthorAgeFilesLines
* Render NBSP (\h) as normal spaceGrigori Goronzy2009-09-161-0/+3
| | | | | | Many fonts don't have a non-breaking space (NBSP) character and this can cause problems when these glyphs are substituted. Render them like a regular space.
* Improve and fix outline strikerGrigori Goronzy2009-08-151-10/+31
| | | | | | Exit early if no striking is needed; make sure to strike in reverse direction for non-truetype font and use the usual return value convention (0 == no errors).
* Add glyph emboldening fallbackGrigori Goronzy2009-08-121-0/+22
| | | | | | | Fallback to embolden manually with FreeType in case a bold face was requested, but no bold variant is available. The glyphs are slightly emboldened (much less than FT_GlyphSlot_Embolden would do) and the metrics are not touched at all.
* Rename typedefs (breaks API)Grigori Goronzy2009-08-061-22/+22
| | | | | | Rename all typedefs from the convention foo_bar_t, which can possibly conflict with POSIX types, to FooBar (and ASS_FooBar for public API typedefs). Fix formatting and stray comments while at it.
* Remove shift vector in ass_render_eventGrigori Goronzy2009-07-251-2/+4
| | | | | | | The shift is not calculated when fetching a glyph anymore. Instead, it is calculated right before rasterizing a glyph. Remove the shift vector and make get_outline_glyph, the glyph cache and ass_font_set_transform work without supplying a shift vector.
* Check for table availability when striking a glyphGrigori Goronzy2009-07-201-2/+2
| | | | | | | | The glyph striker (underline/strike-through) did not check for table availability, possibly accessing a NULL pointer. Change this to only strike the glyph if the table with the appropriate information is available. Currently there is no fallback for fonts without the required information.
* Font metrics: prefer OS/2 table for ascender/descenderGrigori Goronzy2009-07-201-4/+10
| | | | | | If possible, use ascender/descender from the OS/2 TTF table. This is another try to get libass to match VSFilter in regard to vertical font metrics.
* Tweak font metrics to match Windows GDIGrigori Goronzy2009-07-171-2/+3
| | | | | Try to change ascender/descender calculation to be more compatible with Windows GDI and consequently, VSFilter.
* Message callback funtionalityGrigori Goronzy2009-07-111-13/+19
| | | | | | | | | | | Introduce functionality for providing a message callback that is used for passing messages to the controlling application instead of simply printing them to standard output. The function pointer to the callback is stored in the ass_library_t instance. ass_msg needs access to it, so in many places the library instance needs to be passed around now. The default behavior is the old one: messages of MSGL_INFO or lower are printed to the standard output, prefixed with "[ass]".
* Replace string defines with real stringsGrigori Goronzy2009-07-111-13/+12
| | | | | | Instead of referencing string defines from help_mp.h, use the strings directly in ass_msg. Consequently, help_mp.h is useless and can be deleted.
* Support for underline and strikethroughGrigori Goronzy2009-07-071-1/+85
| | | | | | | | | | | | | | | | | Add support for the underline (\u) and strikethrough/strikeout (\s) properties. This is a bit tricky, since FreeType doesn't offer any method of adding the lines, so you have to draw them yourself. libass uses various information from TrueType tables to get position and size of the lines, does a few simple consistency checks (some fonts might be broken) and if everything is alright, adds new contours for the lines. Sometimes, rendering errors can occur: - Currently, kerning isn't taken into account, which means the lines can overlap a little, leading to small optical glitches. - Some (broken) fonts use the wrong winding direction. In this case, the FreeType stroker will only consider the added lines to be "outside" and only stroke the line instead of the whole glyph.
* Fix strdup() string leaksGrigori Goronzy2009-06-271-0/+3
| | | | | On two occassions strings where strdup()'ed but never freed. Fix these two small memory leaks.
* Include ass_utils.h instead of mputils.hGrigori Goronzy2009-06-271-1/+0
|
* Cosmetics: fix a few remaining declarationsGrigori Goronzy2009-06-271-1/+1
| | | | | Fix formatting of a few remaining declarations missed in the first cleanup.
* Rename mp_msg to ass_msgGrigori Goronzy2009-06-271-8/+8
|
* Reindent all source code.greg2009-06-201-242/+266
| | | | | | | | | | | | | | | Reindent complete source code (*.c, *.h) with indent, the exact command line being: indent -kr -i4 -bap -nut -l76 *.c *.h From now on, new code should use (more or less) K&R style, only spaces and no tabs, 4 spaces indent width. Avoid long lines. Fix function declaration pointer spacing. Remove spaces that were added to many function declarations by indent, like some_func(foo_t * bar). Fix indenting of macros in ass.c
* Remove cache globals; move cache data into a separate cache_store structgreg2009-06-191-3/+3
| | | | that is part of ass_renderer.
* Add a missing check for a NULL return value.eugeni2009-06-161-0/+2
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29367 b3059339-0415-0410-9bf9-f77b7e298cf2
* whitespace cosmetics: Remove all trailing whitespace.diego2009-05-131-9/+9
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29305 b3059339-0415-0410-9bf9-f77b7e298cf2
* Treat -font/-subfont as Fontconfig pattern in libass.eugeni2009-03-081-1/+2
| | | | | | Patch by Adrian Stutz (adrian sttz ch). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28895 b3059339-0415-0410-9bf9-f77b7e298cf2
* Rename font-related preprocessor directives.diego2008-08-071-1/+1
| | | | | | | Switch them from a HAVE_ to a CONFIG_ prefix. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27425 b3059339-0415-0410-9bf9-f77b7e298cf2
* Speak of libass instead of MPlayer in the libass license headers.diego2008-05-141-4/+4
| | | | | | | | We already use LIBASS_ prefixes for the multiple inclusion guards. Thus libass can be considered separate enough to warrant this. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26770 b3059339-0415-0410-9bf9-f77b7e298cf2
* Use standard license header.diego2008-05-131-16/+18
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26755 b3059339-0415-0410-9bf9-f77b7e298cf2
* Do not try to guess font metrics based on its bounding box.eugeni2008-01-121-8/+2
| | | | | | | | | It was originally a workaround for fonts with bad ascender/descender values, but it breaks display of some otherwise valid fonts (bugzilla 987), so reverted. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25688 b3059339-0415-0410-9bf9-f77b7e298cf2
* Cosmetics: fix indentation after last commit.eugeni2007-10-251-6/+6
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24856 b3059339-0415-0410-9bf9-f77b7e298cf2
* Check return value of add_face.eugeni2007-10-251-0/+2
| | | | | | | | | This fixes segfault when reselecting fonts and the new font could not be loaded (because of a bad font file, or too many font faces already loaded). Patch by Glen Nakamura, glen at imodulo dot com. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24855 b3059339-0415-0410-9bf9-f77b7e298cf2
* Don't apply windows-like font scaling if hhea or os2 tables contain invalideugeni2007-08-031-2/+6
| | | | | | | metrics. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24003 b3059339-0415-0410-9bf9-f77b7e298cf2
* Workaround for fonts with zero ascender/descender in horizontal header.eugeni2007-08-031-0/+20
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24002 b3059339-0415-0410-9bf9-f77b7e298cf2
* Factor out common code from ass_font_new and ass_font_reselect.eugeni2007-08-031-58/+46
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24001 b3059339-0415-0410-9bf9-f77b7e298cf2
* More simple and correct font reselection.eugeni2007-08-031-11/+3
| | | | | | | | | Since ass_font_t contains a list of font faces, there is no need to select the face with maximum charset coverage each time. It is enough to select any face with the required glyph. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24000 b3059339-0415-0410-9bf9-f77b7e298cf2
* Fix #if condition.eugeni2007-05-201-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23358 b3059339-0415-0410-9bf9-f77b7e298cf2
* FT_Request_Size does not exist in FreeType 2.1.*. Fallback to FT_Set_Char_Size.eugeni2007-05-201-0/+4
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23357 b3059339-0415-0410-9bf9-f77b7e298cf2
* Correct font size in libass.eugeni2007-05-191-5/+26
| | | | | | | | | Values from TrueType OS/2 table are used to reproduce VSFilter behaviour. Magic 0.8 multiplier and scaling for the fractional part of font size are not needed anymore. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23346 b3059339-0415-0410-9bf9-f77b7e298cf2
* Support fractional font sizes.eugeni2007-05-141-6/+8
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23318 b3059339-0415-0410-9bf9-f77b7e298cf2
* Limit ass_font_set_transform to nonrotating transformations.eugeni2007-05-141-12/+18
| | | | | | | | Rotations are not needed here (they are performed in transform3d) and they disable autohinter. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23317 b3059339-0415-0410-9bf9-f77b7e298cf2
* In ass_font_new, allocate temporary ass_font_t on stack and return the pointereugeni2007-05-031-19/+17
| | | | | | | | | | | to cache-owned copy. This fixes leaked ass_font_t struct. Without this, font pointers obtained from ass_font_new() and ass_font_cache_find() were different, and bitmaps rendered with the first one could not be located in the cache later. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23230 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add -ass-hinting option for setting font hinting method.eugeni2007-04-271-2/+10
| | | | | | | | | It is possible to separately configure hinting for scaled and unscaled osd. The default is native hinter for unscaled osd (only vo_gl at this point), no hinting for vf_ass. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23152 b3059339-0415-0410-9bf9-f77b7e298cf2
* Select the first charmap in the font, if FreeType did not autoselect any.eugeni2007-02-151-1/+11
| | | | | | | This happens, for example, with fonts only having an Apple Roman charmap. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22228 b3059339-0415-0410-9bf9-f77b7e298cf2
* Update some comments.eugeni2006-12-171-0/+31
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21646 b3059339-0415-0410-9bf9-f77b7e298cf2
* Cosmetics: fix indentation.eugeni2006-12-161-15/+15
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21636 b3059339-0415-0410-9bf9-f77b7e298cf2
* Keep reselected fonts in an array, adding new ones to the end. Glypheugeni2006-12-161-26/+54
| | | | | | | | | | | | lookup prefers earlier opened fonts. This way glyph lookup is stable, which means that: - cache cleanup is never required after font reselecting; - a single unrecognized char won't change the appearance of all the others. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21635 b3059339-0415-0410-9bf9-f77b7e298cf2
* Avoid storing font file path and index in ass_font_t.eugeni2006-12-161-12/+8
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21634 b3059339-0415-0410-9bf9-f77b7e298cf2
* FT_Set_Transform is fast enough to be called once for each glyph.eugeni2006-12-161-15/+7
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21632 b3059339-0415-0410-9bf9-f77b7e298cf2
* Avoid "pointer targets differ in signedness" warnings.eugeni2006-12-161-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21631 b3059339-0415-0410-9bf9-f77b7e298cf2
* Move ascender, descender, and kerning computation to ass_font.c.eugeni2006-12-161-0/+32
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21630 b3059339-0415-0410-9bf9-f77b7e298cf2
* Open embedded fonts directly from memory.eugeni2006-12-031-1/+21
| | | | | | | | | FontConfig 2.4.2 (released yesterday) supports scanning fonts with FcFreeTypeQueryFace without writing them to disk. With earlier FontConfig versions, the old mechanism is used. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21476 b3059339-0415-0410-9bf9-f77b7e298cf2
* Keep embedded fonts in ass_library_t and perform actual disk writeeugeni2006-12-031-0/+2
| | | | | | | | in fontconfig initialization. This is required for some fontconfig-related improvements. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21474 b3059339-0415-0410-9bf9-f77b7e298cf2
* If a glyph is not found in the current font, switch to another one.eugeni2006-11-281-0/+55
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21367 b3059339-0415-0410-9bf9-f77b7e298cf2
* Skip glyphs with char code < 0x20.eugeni2006-11-281-0/+3
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21366 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add FT_Library to ass_font_t.eugeni2006-11-281-0/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21365 b3059339-0415-0410-9bf9-f77b7e298cf2
* Move ass_font_desc_t and ass_font_t declarations to ass_font.h.eugeni2006-11-271-0/+2
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21337 b3059339-0415-0410-9bf9-f77b7e298cf2
* Cosmetics: reindent.eugeni2006-11-271-9/+9
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21336 b3059339-0415-0410-9bf9-f77b7e298cf2
* Don't call FT_Set_Transform/FT_Set_Pixel_Sizes if values have not changed.eugeni2006-11-271-0/+10
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21335 b3059339-0415-0410-9bf9-f77b7e298cf2
* Move ass_font_t allocation to ass_font.h.eugeni2006-11-271-3/+12
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21333 b3059339-0415-0410-9bf9-f77b7e298cf2
* Initialize font size with 0.eugeni2006-11-271-0/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21330 b3059339-0415-0410-9bf9-f77b7e298cf2
* Remove obsolete "no_more_font_messages" hack.eugeni2006-11-261-5/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21295 b3059339-0415-0410-9bf9-f77b7e298cf2
* Move fonts-related code to a separate file.eugeni2006-11-261-0/+139
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21293 b3059339-0415-0410-9bf9-f77b7e298cf2