We can separate each word into letters then assign size per each letter and plot using ggplot2::geom_text:
library(ggplot2) # ggplot2_2.2.0
# data
df1 <- read.table(text ="
Red     30
Brown   12
Black   16
Green   33
Yellow  18
Grey    19
White   11", stringsAsFactors = FALSE)
colnames(df1) <- c("col", "size")
# order based on value of size
df1 <- df1[order(df1$col), ]
# separate into letters add size
datPlot <- 
  do.call(rbind,
  lapply(seq(nrow(df1)), function(i){
    myLetter <- c(".", unlist(strsplit(df1$col[i], split = "")))
    data.frame(myLetter = myLetter,
               size = c(10, rep(df1$size[i], length(myLetter) - 1)))
    }))
# each letter gets a sequential number on x axis, y is fixed to 1
datPlot$x <- seq(nrow(datPlot))
datPlot$y <- 1
# plot text
ggplot(datPlot, aes(x, y, label = myLetter, size = size/3)) +
  geom_text(col = "#F89443") +
  scale_size_identity() +
  theme_void()
