You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: fonts.rb
    path of file: ./repos/hexapdf/lib/hexapdf/cli
    
    the code of the file until where you have to start completion: # -*- encoding: utf-8; frozen_string_literal: true -*-
#
#--
# This file is part of HexaPDF.
#
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
# Copyright (C) 2014-2024 Thomas Leitner
#
# HexaPDF is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License version 3 as
# published by the Free Software Foundation with the addition of the
# following permission added to Section 15 as permitted in Section 7(a):
# FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
# THOMAS LEITNER, THOMAS LEITNER DISCLAIMS THE WARRANTY OF NON
# INFRINGEMENT OF THIRD PARTY RIGHTS.
#
# HexaPDF is distributed in the hope t
    
      def execute(pdf) #:nodoc:
        with_document(pdf, password: @password) do |doc|
          printf("%5s %-40s %-12s %-10s %-3s %-3s %8s %9s\n",
                 "page", "name", "type", "encoding", "emb", "sub", "size", "oid")
          puts("-" * 97)
          each_font(doc) do |pindex, font|
            font_type = case font[:Subtype]
                        when :Type1
                          if font.embedded? && font[:FontDescriptor][:FontFile3]
                            "Type 1C"
                          else
                            "Type 1"
                          end
                        when :Type3 then "Type 3"
                        when :TrueType then "TrueType"
                        when :Type0
                          if font.descendant_font[:Subtype] == :CIDFontType0
                            "CID CFF"
                          else
                            "CID TrueType"
                          end
                        else
                          "Unknown"
                        end