summaryrefslogtreecommitdiff
path: root/src/lib/render_text.cc
AgeCommit message (Collapse)Author
2026-03-07WIP: ruby2652-rubyCarl Hetherington
2025-12-30Extract text_positions_close().Carl Hetherington
2025-09-26Re-order cairo context scaling and pango layout setup (#2337).Carl Hetherington
This seems to fix problems where letters were scaled individually, but their spacing didn't change (when x scale was applied). Big thanks to user1768761 https://stackoverflow.com/questions/58528024/pangocairo-shows-cluttered-text-when-cairo-context-is-scaled
2025-07-08Fix cut-off subtitle shadows.Carl Hetherington
2025-07-08Make shadow offset proportional to the target size.Carl Hetherington
Otherwise it looks further away in the preview than in in the final DCP (if the preview is smaller).
2025-07-08Add dcp_pixels_to_pixels().Carl Hetherington
2025-07-08Return float from border_width_for_subtitle().Carl Hetherington
We're already using ceil on the return value everywhere we need to, as far as I can see.
2025-07-04White space: render_text.cc.Carl Hetherington
2025-01-05Bump libdcp for raw_convert changes.Carl Hetherington
raw_convert<string> is gone, so here we use fmt::{to_string,format} instead. Other raw_converts now use fast_float.
2024-06-24Fix warning from pango about letter spacing not being an integer.Carl Hetherington
2024-05-30Render subtitles using show_in_cairo_context() instead of ↵Carl Hetherington
add_to_cairo_context(). This helps with #2813 and should fix #2474. We started using add_to_cairo_context() again in 72c3a5f0f32f553a1f8abee2494f31d29b976383 because the rendering looked better. However colour changes within lines cannot easily be rendered using add_to_cairo_context() it seems, as the text is just added as a path and then you can stroke/fill it with a single colour. I hope that this change, which reverts 72c3a5 but also adds some calls to enable hinting and use better anti-aliasing, looks OK. I looked at some white-on-black subs close-up and the hinting seems to help.
2024-03-23pangommconfig.h is not included by pangomm.h on some platforms.Carl Hetherington
2024-03-20Allow building with C++17 and updated libxml++/pangomm/cairomm.Carl Hetherington
2023-09-03Ignore newlines in subtitle text (#2341).Carl Hetherington
2023-08-29Fix vertical alignment of subtitles in some cases (#2569).Carl Hetherington
2023-08-29Fix incorrect horizontal positions when different HPositions are used with ↵Carl Hetherington
one VPosition. Previously if HPosition changed we would still use a single "line" (i.e. Pango layout) for all the text, meaning that HPosition would not be respected.
2023-08-29Cleanup: use some more vector instead of list.Carl Hetherington
2023-06-09Cleanup: whitespace fix.Carl Hetherington
2023-04-09Fix subtitle font handling with in-memory fonts from SMPTE (#2509).v2.16.52Carl Hetherington
Previously we would fail to make a font available if it came from a SMPTE MXF. In that case we have a memory buffer containing the TTF/OTF file but no file; here we add a hack/workaround so that in-memory font files can be used by FontConfig.
2023-02-27Add override_standard to bounding_box().Carl Hetherington
2023-02-27Cleanup: pass required things int {x,y}_position instead of a whole StringText.Carl Hetherington
2023-02-27Add bounding_box().Carl Hetherington
2023-02-27Move the contents of setup_layout() into create_layout() and makeCarl Hetherington
a new setup_layout() which can do some more stuff.
2023-02-27Support the 2014 version of SMPTE 428-7 in render_text.cc and use itCarl Hetherington
when placing subtitles (e.g. SRT). Also default to outputting 2014-era alignment.
2022-12-13Add video_{range,frame_type}.{cc,h} and remove some types.h includes.Carl Hetherington
2022-12-01Escape entities just before Pango rendering (#2382).v2.16.35Carl Hetherington
Previously, text coming out of the player would have things like & escaped to &amp;. This escaping is also done by libxml++ when writing XML, so doing it in the player would mean it was done twice. We do, however, need to escape things before passing them to Pango as otherwise it gives errors and renders nothing for the line. Here we move the escaping to just before the rendering, meaning that in the reset of DoM we should pass unescaped strings around.
2022-11-21Fix subtitle vertical position (#2367).Carl Hetherington
Previously we would not account for the differences in what vertical position means between Interop and SMPTE. For interop, vertical position is the distance from the reference point to the text baseline, whereas for SMPTE it is the distance from the reference point to the top/middle/bottom of the subtitle (depending on the reference). This caused differences between the preview and the DCP for some cases (notably, using SRT/SSA and making Interop DCPs, or converting Interop DCP subs to SMPTE, or vice versa).
2022-07-20Handle vertical alignment of subs correctly wrt the difference between ↵Carl Hetherington
Interop and SMPTE.
2022-07-20Whitespace tweak.Carl Hetherington
2022-07-20Tidy up font rendering for subtitles.Carl Hetherington
Here was use get_ink_extents() rather than get_pixel_size() to find out how big the rendered subtitle will be, then use the x/y values of this extents rectangle to offset the rendering within the image. This allows the removal of some hacks to make accents visible.
2022-06-07Rearrange subtitle font management.Carl Hetherington
With this change each subtitle coming out of the player has a reference to a dcpomatic::Font that belongs to the TextContent. This hopefully solves a few problems which all basically stemmed from the fact that previously the decoders/player were deciding what the font ID in the output DCP would be - they can't do that properly.
2022-06-07Move fontconfig-related code out to a class.Carl Hetherington
2022-06-05Improve accuracy of subtitle font sizing.Carl Hetherington
2022-04-22Use libdcp's warnings.hCarl Hetherington
2021-10-25Fix fade factor calculation when there is no end time.Carl Hetherington
In this case we can't do any fade out.
2021-10-17Basic and slightly inaccurate support for <Space> in subtitles (#2103).v2.15.170Carl Hetherington
Adding horizontal space to a Pango layout is hard, and I think this change probably gets it slightly wrong, but it's a step in the right direction.
2021-10-17Move some functions up the file so we can use them.Carl Hetherington
2021-09-27Check that the image used to make a Cairo::ImageSurface is the right ↵Carl Hetherington
alignment and pixel format.
2021-09-27Remove unused usingCarl Hetherington
2021-09-27Replace aligned bool with enum Alignment.Carl Hetherington
2021-08-01Do all text -> HTML conversion for subtitles in the same place.Carl Hetherington
Previously we would convert > to &gt; then the ampersand to &amp; resulting in &amp;gt;
2021-04-08Remove some old Centos 5 support.Carl Hetherington
2021-04-08Assorted C++11/formatting cleanups.Carl Hetherington
2021-01-21Adapt for libdcp use of enum class.Carl Hetherington
2021-01-07BOOST_FOREACH.Carl Hetherington
2021-01-07std::shared_ptrCarl Hetherington
2021-01-04Check that pango/cairo stuff is created successfully.Carl Hetherington
2020-11-16Fix thinko-ed logic causing all subtitles to be treated as thoughCarl Hetherington
they have borders. This fix will cause some movement of border-less subtitles (in existing projects) within the video frame.
2020-10-12Make use of default_font_file().Carl Hetherington
2020-09-27Go back to add_to_cairo_context rather than show_in_cairo_context.Carl Hetherington
On Linux, at least, doing add_to_cairo_context() fill() add_to_cairo_context() stroke() gives a nicer output than show_in_cairo_context() It's not clear exactly what the difference is, but the anti aliasing looks better and the font outlines basically look smoother. May help with #1815.