How to use Cairo PNGs in R Markdown

Use knitr options, not the YAML header.

You can use knitr options to change the type of a specific device (Yihui's recommendation):

knitr::opts_chunk$set(dev.args = list(png = list(type = "cairo")))

Alternately, you could do it conditionally based on the output:

if (!knitr::is_latex_output()) {
  knitr::opts_chunk$set(dpi = 300, dev.args = list(type = "cairo"))
})

I've used this on a couple of documents now. Note: I've only used this for documents doing rmarkdown::render(...) from the R command line.