Patch title: Release 85 bulk changes
Abstract:
File: /pliant/graphic/sample/fontlist.pli
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/graphic/vector/font.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/image/packed.pli"
module "/pliant/graphic/image/antialiasing.pli"
module "/pliant/graphic/filter/io.pli"
module "/pliant/admin/execute.pli"

constant ttf false

function list_available_fonts path
  arg Str path
  var Array:FileInfo files := file_list path extended+recursive
  var Int nb := 0
  for (var Int i) 0 files:size-1
    if files:i:extension=".pfb" and not files:i:is_link
    if (files:i:extension=".pfb" or ttf and files:i:extension=".ttf") and not files:i:is_link
      nb += 1
  var Link:ImagePacked packed :> new ImagePacked
  var Float unit := 5
  var Float unit2 := 2
  var Float dpi := 150
  var Float mm_x := 210
  var Float mm_y := (nb+2)*unit
  packed setup (image_prototype 0 0 mm_x mm_y (cast mm_x/25.4*dpi Int)*4 (cast mm_y/25.4*dpi Int)*4 color_gamut:"rgb") ""
  if (packed setup (image_prototype 0 0 mm_x mm_y (cast mm_x/25.4*dpi Int)*4 (cast mm_y/25.4*dpi Int)*4 color_gamut:"rgb") "")=failure
    console "Failed to create packed image" eol ; return
  var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
  aa bind packed 4
  if (aa bind packed 4 4)=failure
    console "Failed to create anti aliasing image" eol ; return
  var Int count := 0
  var (Dictionary Str Int) filedict ; var Int filedup := 0
  var (Dictionary Str Int) namedict ; var Int namedup := 0
  var Link:Font default :> font_postscript "file:/usr/share/AbiSuite/fonts/n019003l.pfb"
  var Link:Font default :> null map Font
  (var Stream lst) open "file:/tmp/fonts.lst" out+linecache
  for (var Int i) 0 files:size-1
    if files:i:extension=".pfb" and not files:i:is_link
    if (files:i:extension=".pfb" or ttf and files:i:extension=".ttf") and not files:i:is_link
      var Str name := files:i:name_without_path
      if true
        console count "/" nb " (" namedup " " filedup ")   " files:i:name eol
        var Link:Font f :> font_postscript files:i:name
        lst writeline (string f:family)+" "+(string f:name)+" "+(string f:psname)+" "+(string files:i:name)
        count += 1
        var uInt color := .not. 0
        if exists:(namedict first f:name)
          color := color .and. .not. 255*2^8
        if exists:(filedict first name)
          color := color .and. .not. 255*2^16
        default draw string:count packed 1 count*unit unit2 addressof:color
        f draw "H鬨ne comette AVION" packed 5 count*unit unit addressof:color
        if exists:(namedict first f:name)
          namedup += 1
          default draw string:(namedict f:name) packed 75 count*unit unit2 addressof:color
        namedict insert f:name count
        default draw f:family+" / "+f:name+" ("+f:psname+")" packed 80 count*unit unit2 addressof:color
        if exists:(filedict first name)
          filedup += 1
          default draw string:(filedict name) packed 160 count*unit unit2 addressof:color
        filedict insert name count
        default draw files:i:name packed 165 count*unit unit2 addressof:color
        # if count%16=0
        #   aa save "file:/tmp/fonts.png" ""
        var Link:Font f
        if files:i:extension=".pfb"
          f :> font_postscript files:i:name
        else
          var Str temp := file_temporary
          execute "ttf2pt1 -b "+(file_os_name files:i:name)+" "+file_os_name:temp
          f :> font_postscript temp+".pfb"
          file_delete temp ; file_delete temp+".pfb" ; file_delete temp+".afm"
        if exists:f
          lst writeline (string f:family)+" "+(string f:name)+" "+(string f:psname)+" "+(string files:i:name)+" "+f:weight+(shunt f:italic " italic" "")+(shunt f:fixed " fixed" "")
          count += 1
          var uInt color := .not. 0
          if exists:(namedict first f:name)
            color := color .and. .not. 255*2^8
          if exists:(filedict first name)
            color := color .and. .not. 255*2^16
          if not exists:default
            default :> f
          default draw string:count packed 1 count*unit unit2 addressof:color
          f draw "H鬨ne comette AVION" packed 5 count*unit unit addressof:color
          if exists:(namedict first f:name)
            namedup += 1
            default draw string:(namedict f:name) packed 75 count*unit unit2 addressof:color
          namedict insert f:name count
          default draw f:family+" / "+f:name+" ("+f:psname+")" packed 80 count*unit unit2 addressof:color
          if exists:(filedict first name)
            filedup += 1
            default draw string:(filedict name) packed 160 count*unit unit2 addressof:color
          filedict insert name count
          default draw files:i:name packed 165 count*unit unit2 addressof:color
          # if count%16=0
          #   aa save "file:/tmp/fonts.png" ""
        else
          console "failed to load " files:i:name eol
  aa save "file:/tmp/fonts.png" ""

export list_available_fonts