       guard let viewModel = viewModel else { return }
       animateOverlayPercentage(0)
       titleLabel.text = viewModel.title
-      viewModel.context
-        .subscribeNext { [weak self] context in
-          self?.contextLabel.setText(context)
+
+      Observable.combineLatest(viewModel.context, TextStyle.Caption1.rx_font) { ($0, $1) }
+        .subscribeNext { [weak self] (context, font) in
+          guard let context = context else {
+            self?.contextLabel.setText(nil)
+            return
+          }
+          let mutableContext = NSMutableAttributedString(attributedString: context)
+          mutableContext.setFont(font)
+          self?.contextLabel.setText(mutableContext)
         }.addDisposableTo(rx_disposeBag)
-      LinkCardView.statsAttributedString(viewModel.scoreIcon, score: viewModel.score,
-        commentsIcon: viewModel.commentsIcon, comments: viewModel.comments)
+
+      LinkCardView
+        .statsAttributedString(viewModel.scoreIcon, score: viewModel.score,
+          commentsIcon: viewModel.commentsIcon, comments: viewModel.comments,
+          font: TextStyle.Caption1.rx_font)
         .bindTo(statsLabel.rx_attributedText)
         .addDisposableTo(rx_disposeBag)
     }

    let label = UILabel()
    label.numberOfLines = 0
    label.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)
    label.font = UIFont.boldSystemFontOfSize(LinkCardView.titleFontSize)
    Theming.sharedInstance.textColor
      .bindTo(label.rx_textColor)
      .addDisposableTo(self.rx_disposeBag)

  private static func statsAttributedString(scoreIcon: Observable<UIImage>,
                                            score: Observable<NSAttributedString>,
                                            commentsIcon: Observable<UIImage>,
                                            comments: Observable<NSAttributedString>,
                                            font: Observable<UIFont>)
    -> Observable<NSAttributedString?> {
      let commentsIcon = Observable.combineLatest(commentsIcon, font) { ($0, $1) }
        .map { (commentsIcon, font) -> NSAttributedString  in
          let attachment = ImageAttachment(commentsIcon, verticalOffset: font.descender)
          return NSAttributedString(attachment: attachment)
      }
      let scoreIcon = Observable.combineLatest(scoreIcon, font) { ($0, $1) }
        .map { (scoreIcon, font) -> NSAttributedString in
          let attachment = ImageAttachment(scoreIcon, verticalOffset: font.descender)
          return NSAttributedString(attachment: attachment)
      }
      return Observable
