class PDF::Reader::OverlappingRunsFilter

uses slightly offset overlapping characters to achieve a fake ‘bold’ effect.
remove duplicates from a collection of TextRun objects. This can be helpful when a PDF

def self.detect_intersection(sweep_line_status, event_point)

def self.detect_intersection(sweep_line_status, event_point)
  sweep_line_status.each do |open_text_run|
    if open_text_run.text == event_point.run.text &&
        event_point.x >= open_text_run.x &&
        event_point.x <= open_text_run.endx &&
        open_text_run.intersection_area_percent(event_point.run) >= OVERLAPPING_THRESHOLD
      return true
    end
  end
  return false
end

def self.exclude_redundant_runs(runs)

def self.exclude_redundant_runs(runs)
  sweep_line_status = Array.new
  event_point_schedule = Array.new
  to_exclude = []
  runs.each do |run|
    event_point_schedule << EventPoint.new(run.x, run)
    event_point_schedule << EventPoint.new(run.endx, run)
  end
  event_point_schedule.sort! { |a,b| a.x <=> b.x }
  event_point_schedule.each do |event_point|
    run = event_point.run
    if event_point.start?
      if detect_intersection(sweep_line_status, event_point)
        to_exclude << run
      end
      sweep_line_status.push(run)
    else
      sweep_line_status.delete(run)
    end
  end
  runs - to_exclude
end