4.3BSD/usr/contrib/icon/src/lib/bold.icn

#	BOLD(2)
#
#	Produce bold and underscored text for printing
#
#	Ralph E. Griswold
#
#	Last modified 7/24/83
#

procedure bold(s)
   local c
   static labels, trans, max
   initial {
      labels := "1"
      trans := repl("1\b",4)
      max := *labels
      trans := bold(string(&lcase))
      labels := string(&lcase)
      max := *labels
      }
   if *s <= max then
      return map(left(trans,9 * *s),left(labels,*s),s)
   else return bold(left(s,*s - max)) ||
      map(trans,labels,right(s,max))
end

procedure uscore(s)
   static labels, trans, max
   initial {
      labels := "1"
      trans := "_\b1"
      max := *labels
      trans := uscore(string(&lcase))
      labels := string(&lcase)
      max := *labels
      }
   if *s <= max then
      return map(left(trans,3 * *s),left(labels,*s),s)
   else return uscore(left(s,*s - max)) ||
      map(trans,labels,right(s,max))
end