Try to improve font rendering on Windows by using freetype for pango/cairo.
[dcpomatic.git] / src / lib / render_text.cc
index 673078347980e9012b93ce8a2ef6858ab9649b72..7ae7d91524ddd3d6a03b2eb90cac8d4f8507172f 100644 (file)
@@ -51,11 +51,11 @@ static FcConfig* fc_config = 0;
 static list<pair<FontFiles, string> > fc_config_fonts;
 
 string
-marked_up (list<SubtitleString> subtitles, int target_height, float fade_factor)
+marked_up (list<StringText> subtitles, int target_height, float fade_factor)
 {
        string out;
 
-       BOOST_FOREACH (SubtitleString const & i, subtitles) {
+       BOOST_FOREACH (StringText const & i, subtitles) {
                out += "<span ";
                if (i.italic()) {
                        out += "style=\"italic\" ";
@@ -91,7 +91,7 @@ set_source_rgba (Cairo::RefPtr<Cairo::Context> context, dcp::Colour colour, floa
  *  at the same time and with the same fade in/out.
  */
 static PositionImage
-render_line (list<SubtitleString> subtitles, list<shared_ptr<Font> > fonts, dcp::Size target, DCPTime time, int frame_rate)
+render_line (list<StringText> subtitles, list<shared_ptr<Font> > fonts, dcp::Size target, DCPTime time, int frame_rate)
 {
        /* XXX: this method can only handle italic / bold changes mid-line,
           nothing else yet.
@@ -244,11 +244,6 @@ render_line (list<SubtitleString> subtitles, list<shared_ptr<Font> > fonts, dcp:
        layout->set_alignment (Pango::ALIGN_LEFT);
 
        context->set_line_width (1);
-       context->set_antialias (Cairo::ANTIALIAS_GRAY);
-       Cairo::FontOptions fo;
-       context->get_font_options (fo);
-       fo.set_antialias (Cairo::ANTIALIAS_GRAY);
-       context->set_font_options (fo);
 
        /* Compute fade factor */
        float fade_factor = 1;
@@ -365,12 +360,12 @@ render_line (list<SubtitleString> subtitles, list<shared_ptr<Font> > fonts, dcp:
  *  @param frame_rate DCP frame rate.
  */
 list<PositionImage>
-render_text (list<SubtitleString> subtitles, list<shared_ptr<Font> > fonts, dcp::Size target, DCPTime time, int frame_rate)
+render_text (list<StringText> subtitles, list<shared_ptr<Font> > fonts, dcp::Size target, DCPTime time, int frame_rate)
 {
-       list<SubtitleString> pending;
+       list<StringText> pending;
        list<PositionImage> images;
 
-       BOOST_FOREACH (SubtitleString const & i, subtitles) {
+       BOOST_FOREACH (StringText const & i, subtitles) {
                if (!pending.empty() && fabs (i.v_position() - pending.back().v_position()) > 1e-4) {
                        images.push_back (render_line (pending, fonts, target, time, frame_rate));
                        pending.clear ();