fontana 0.0.1.placeholder → 0.0.1.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
 - data/.irbrc +1 -0
 - data/Guardfile +19 -0
 - data/README +18 -0
 - data/README.textile +9 -0
 - data/fontana.gemspec +6 -2
 - data/lib/fontana.rb +4 -2
 - data/lib/fontana/converter.rb +16 -0
 - data/lib/fontana/dragonfly.rb +7 -0
 - data/lib/fontana/dragonfly/encoder.rb +15 -0
 - data/lib/fontana/font.rb +85 -0
 - data/lib/fontana/fontforge.rb +58 -0
 - data/lib/fontana/fontforge/2otf.pe +2 -0
 - data/lib/fontana/fontforge/2svg.pe +2 -0
 - data/lib/fontana/fontforge/2ttf.pe +2 -0
 - data/lib/fontana/fontforge/2woff.pe +2 -0
 - data/lib/fontana/fontforge/info.pe +25 -0
 - data/lib/fontana/fontforge/scripting.txt +8 -0
 - data/lib/fontana/rails.rb +45 -0
 - data/lib/fontana/ttf2eot.rb +34 -0
 - data/lib/fontana/version.rb +1 -1
 - data/spec/dragonfly/encoder_spec.rb +16 -0
 - data/spec/fontana_spec.rb +96 -0
 - data/spec/spec_helper.rb +16 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.eot +0 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.otf +0 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.pdf +0 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.sfd +230942 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.svg +4923 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.ttf +0 -0
 - data/spec/support/fonts/Consola Mono/ConsolaMono.woff +0 -0
 - data/spec/support/fonts/Consola Mono/FONTLOG.txt +107 -0
 - data/spec/support/fonts/Consola Mono/SIL - Open Font License.txt +105 -0
 - data/vendor/ttf2eot-0.0.2-2.patched.tar.gz +0 -0
 - metadata +70 -7
 
    
        data/.irbrc
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            puts "Loading the irb rc file from the current directory"
         
     | 
    
        data/Guardfile
    ADDED
    
    | 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # A sample Guardfile
         
     | 
| 
      
 2 
     | 
    
         
            +
            # More info at https://github.com/guard/guard#readme
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            guard 'rspec', :version => 2 do
         
     | 
| 
      
 5 
     | 
    
         
            +
              watch(%r{^spec/.+_spec\.rb$})
         
     | 
| 
      
 6 
     | 
    
         
            +
              watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
         
     | 
| 
      
 7 
     | 
    
         
            +
              watch('spec/spec_helper.rb')  { "spec" }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              # Rails example
         
     | 
| 
      
 10 
     | 
    
         
            +
              watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
         
     | 
| 
      
 11 
     | 
    
         
            +
              watch(%r{^app/(.*)(\.erb|\.haml)$})                 { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
         
     | 
| 
      
 12 
     | 
    
         
            +
              watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
         
     | 
| 
      
 13 
     | 
    
         
            +
              watch(%r{^spec/support/(.+)\.rb$})                  { "spec" }
         
     | 
| 
      
 14 
     | 
    
         
            +
              watch('config/routes.rb')                           { "spec/routing" }
         
     | 
| 
      
 15 
     | 
    
         
            +
              watch('app/controllers/application_controller.rb')  { "spec/controllers" }
         
     | 
| 
      
 16 
     | 
    
         
            +
              # Capybara request specs
         
     | 
| 
      
 17 
     | 
    
         
            +
              watch(%r{^app/views/(.+)/.*\.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
    
        data/README
    CHANGED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Fontana is a wrapper around several command line utilities for converting fonts to different formats.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Install the required command line utilites if they do not alreay exist on your system.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              brew install ttf2eot
         
     | 
| 
      
 6 
     | 
    
         
            +
              brew install fontforge
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            On Ubuntu the install is not so bad.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              sudo apt-get install fontforge
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              wget https://raw.github.com/mdeering/fontana/master/vendor/ttf2eot-0.0.2-2.patched.tar.gz
         
     | 
| 
      
 13 
     | 
    
         
            +
              tar xvfz ttf2eot-0.0.2-2.patched.tar.gz
         
     | 
| 
      
 14 
     | 
    
         
            +
              cd  ttf2eot-0.0.2-2
         
     | 
| 
      
 15 
     | 
    
         
            +
              make
         
     | 
| 
      
 16 
     | 
    
         
            +
              sudo cp ttf2eot /usr/bin/.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            Much of the wrapper is based on the scripts found here https://github.com/zoltan-dulac/css3FontConverter
         
     | 
    
        data/README.textile
    ADDED
    
    | 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Fontana is a wrapper around several command line utilities for converting fonts to different formats.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Install the required command line utilites if they do not alreay exist on your system.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              brew update
         
     | 
| 
      
 6 
     | 
    
         
            +
              brew install ttf2eot
         
     | 
| 
      
 7 
     | 
    
         
            +
              brew install fontforge
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            Much of the wrapper is based on the scripts found here https://github.com/zoltan-dulac/css3FontConverter
         
     | 
    
        data/fontana.gemspec
    CHANGED
    
    | 
         @@ -14,10 +14,14 @@ Gem::Specification.new do |s| 
     | 
|
| 
       14 
14 
     | 
    
         
             
              s.rubyforge_project = "fontana"
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
       17 
     | 
    
         
            -
              s.test_files    = `git ls-files -- { 
     | 
| 
      
 17 
     | 
    
         
            +
              s.test_files    = `git ls-files -- {spec}/*`.split("\n")
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
       19 
19 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
              s.add_development_dependency 'guard'
         
     | 
| 
      
 22 
     | 
    
         
            +
              s.add_development_dependency 'guard-rspec'
         
     | 
| 
       21 
23 
     | 
    
         
             
              s.add_development_dependency 'rspec'
         
     | 
| 
       22 
     | 
    
         
            -
              s. 
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_development_dependency 'yard'
         
     | 
| 
      
 25 
     | 
    
         
            +
              s.add_development_dependency 'dragonfly'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       23 
27 
     | 
    
         
             
            end
         
     | 
    
        data/lib/fontana.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Fontana
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              module Converter
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                # Converts the font file into the new desired format
         
     | 
| 
      
 6 
     | 
    
         
            +
                #
         
     | 
| 
      
 7 
     | 
    
         
            +
                # @param [Tempfile] file a font file of one of the acceptd font formats
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [Symbol] format a symbol respresenting the expected font format you would like returned
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @return [Tempfile] a temperary file handle to a font in the format that was requested
         
     | 
| 
      
 10 
     | 
    
         
            +
                def convert(file, format)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  file
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/fontana/font.rb
    ADDED
    
    | 
         @@ -0,0 +1,85 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Fontana
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class Font
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(original_font_path)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  raise Errno::ENOENT.new("No such file #{original_font_path}") unless File.file?(original_font_path)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  @original_font_path = original_font_path
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @original_font_type = File.extname(@original_font_path)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  File.open(@original_font_path) { |file| @original_font_file_contents = file.read }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  self
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def to_eot
         
     | 
| 
      
 16 
     | 
    
         
            +
                  return @eot_string unless @eot_string.nil?
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  case @original_font_type
         
     | 
| 
      
 19 
     | 
    
         
            +
                  when '.eot'
         
     | 
| 
      
 20 
     | 
    
         
            +
                    @eot_string = @original_font_file_contents
         
     | 
| 
      
 21 
     | 
    
         
            +
                  when '.ttf'
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @eot_string = TTF2EOT.convert(@original_font_file_contents)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  else
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @eot_string = TTF2EOT.convert(to_ttf)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  @eot_string
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def to_otf
         
     | 
| 
      
 31 
     | 
    
         
            +
                  return @otf_string unless @otf_string.nil?
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  case @original_font_type
         
     | 
| 
      
 34 
     | 
    
         
            +
                  when '.otf'
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @otf_string = @original_font_file_contents
         
     | 
| 
      
 36 
     | 
    
         
            +
                  else
         
     | 
| 
      
 37 
     | 
    
         
            +
                    @otf_string = Fontforge.convert(@original_font_type, @original_font_file_contents, '.otf')
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  @otf_string
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def to_svg
         
     | 
| 
      
 44 
     | 
    
         
            +
                  return @svg_string unless @svg_string.nil?
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  case @original_font_type
         
     | 
| 
      
 47 
     | 
    
         
            +
                  when '.svg'
         
     | 
| 
      
 48 
     | 
    
         
            +
                    @svg_string = @original_font_file_contents
         
     | 
| 
      
 49 
     | 
    
         
            +
                  else
         
     | 
| 
      
 50 
     | 
    
         
            +
                    @svg_string = Fontforge.convert(@original_font_type, @original_font_file_contents, '.svg')
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  @svg_string
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def to_ttf
         
     | 
| 
      
 58 
     | 
    
         
            +
                  return @ttf_string unless @ttf_string.nil?
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  case @original_font_type
         
     | 
| 
      
 61 
     | 
    
         
            +
                  when '.ttf'
         
     | 
| 
      
 62 
     | 
    
         
            +
                    @ttf_string = @original_font_file_contents
         
     | 
| 
      
 63 
     | 
    
         
            +
                  else
         
     | 
| 
      
 64 
     | 
    
         
            +
                    @ttf_string = Fontforge.convert(@original_font_type, @original_font_file_contents, '.ttf')
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  @ttf_string
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                def to_woff
         
     | 
| 
      
 71 
     | 
    
         
            +
                  return @woff_string unless @woff_string.nil?
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                  case @original_font_type
         
     | 
| 
      
 74 
     | 
    
         
            +
                  when '.woff'
         
     | 
| 
      
 75 
     | 
    
         
            +
                    @woff_string = @original_font_file_contents
         
     | 
| 
      
 76 
     | 
    
         
            +
                  else
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @woff_string = Fontforge.convert(@original_font_type, @original_font_file_contents, '.woff')
         
     | 
| 
      
 78 
     | 
    
         
            +
                  end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  @woff_string
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,58 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tempfile'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Fontana
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              class Fontforge
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.convert(input_ext, input_string, output_ext)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  input_file  = create_input_file(input_ext, input_string)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  output_file = setup_output_file output_ext
         
     | 
| 
      
 10 
     | 
    
         
            +
                  run_conversion_command(input_file, output_file, output_ext.split('.').last)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  return_string = readback_output_file(output_file)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  cleanup(input_file)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  cleanup(output_file)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  return_string
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def self.information(font_path)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  run_information_command(font_path).strip
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                private
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def self.cleanup(tempfile)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    tempfile.unlink
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def self.create_input_file(ext, content, filename = 'fontana-fontforge-input')
         
     | 
| 
      
 29 
     | 
    
         
            +
                    tempfile = Tempfile.new([filename, ext])
         
     | 
| 
      
 30 
     | 
    
         
            +
                    tempfile.binmode
         
     | 
| 
      
 31 
     | 
    
         
            +
                    tempfile.write content
         
     | 
| 
      
 32 
     | 
    
         
            +
                    tempfile.close
         
     | 
| 
      
 33 
     | 
    
         
            +
                    tempfile
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  def self.setup_output_file(extension, filename = 'fontana-fontforge-output')
         
     | 
| 
      
 37 
     | 
    
         
            +
                    tempfile = Tempfile.new([filename, extension])
         
     | 
| 
      
 38 
     | 
    
         
            +
                    tempfile.close
         
     | 
| 
      
 39 
     | 
    
         
            +
                    tempfile
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  def self.readback_output_file(output_file)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    output = nil
         
     | 
| 
      
 44 
     | 
    
         
            +
                    File.open(output_file.path, 'rb') { |file| output = file.read }
         
     | 
| 
      
 45 
     | 
    
         
            +
                    output
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  def self.run_conversion_command(input_file, output_file, ext)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    puts "fontforge -script #{File.join(File.dirname(__FILE__), 'fontforge', "2#{ext}.pe")} #{input_file.path} #{output_file.path}"
         
     | 
| 
      
 50 
     | 
    
         
            +
                    puts `fontforge -script #{File.join(File.dirname(__FILE__), 'fontforge', "2#{ext}.pe")} #{input_file.path} #{output_file.path}`
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  def self.run_information_command(input_file_path)
         
     | 
| 
      
 54 
     | 
    
         
            +
                    puts "fontforge -script #{File.join(File.dirname(__FILE__), 'fontforge', "info.pe")} '#{input_file_path}'"
         
     | 
| 
      
 55 
     | 
    
         
            +
                    `fontforge -script #{File.join(File.dirname(__FILE__), 'fontforge', "info.pe")} '#{input_file_path}'`
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Open($1)
         
     | 
| 
      
 2 
     | 
    
         
            +
            Print($fullname, ' ', $weight)
         
     | 
| 
      
 3 
     | 
    
         
            +
            #Print('firstfont')
         
     | 
| 
      
 4 
     | 
    
         
            +
            #Print($firstfont)
         
     | 
| 
      
 5 
     | 
    
         
            +
            #Print('curfont')
         
     | 
| 
      
 6 
     | 
    
         
            +
            #Print($curfont)
         
     | 
| 
      
 7 
     | 
    
         
            +
            #Print('fontname')
         
     | 
| 
      
 8 
     | 
    
         
            +
            #Print($fontname)
         
     | 
| 
      
 9 
     | 
    
         
            +
            #Print('familyname')
         
     | 
| 
      
 10 
     | 
    
         
            +
            #Print($familyname)
         
     | 
| 
      
 11 
     | 
    
         
            +
            #Print('fullname')
         
     | 
| 
      
 12 
     | 
    
         
            +
            #Print($fullname)
         
     | 
| 
      
 13 
     | 
    
         
            +
            #Print('weight')
         
     | 
| 
      
 14 
     | 
    
         
            +
            #Print($weight)
         
     | 
| 
      
 15 
     | 
    
         
            +
            #Print('copyright')
         
     | 
| 
      
 16 
     | 
    
         
            +
            #Print($copyright)
         
     | 
| 
      
 17 
     | 
    
         
            +
            #Print('filename')
         
     | 
| 
      
 18 
     | 
    
         
            +
            #Print($filename)
         
     | 
| 
      
 19 
     | 
    
         
            +
            #Print('fontversion')
         
     | 
| 
      
 20 
     | 
    
         
            +
            #Print($fontversion)
         
     | 
| 
      
 21 
     | 
    
         
            +
            #Print('iscid')
         
     | 
| 
      
 22 
     | 
    
         
            +
            #Print($iscid)
         
     | 
| 
      
 23 
     | 
    
         
            +
            #Print('mmcount')
         
     | 
| 
      
 24 
     | 
    
         
            +
            #Print($mmcount)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            http://fontforge.sourceforge.net/scripting-tutorial.html
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            STDIN
         
     | 
| 
      
 4 
     | 
    
         
            +
            If you wish FontForge to read a script from stdin then you can use "-" as a "filename" for stdin. (If you build FontForge without X11 then fontforge will attempt to read a script file from stdin if none is given on the command line.)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            STDOUT
         
     | 
| 
      
 7 
     | 
    
         
            +
            FONTFORGE_VERBOSE
         
     | 
| 
      
 8 
     | 
    
         
            +
            If you set the environment variable FONTFORGE_VERBOSE (it doesn't need a value, just needs to be set) then FontForge will print scripts to stdout as it executes them.
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'uri'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'dragonfly'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'fontana/dragonfly'
         
     | 
| 
      
 4 
     | 
    
         
            +
            begin
         
     | 
| 
      
 5 
     | 
    
         
            +
              require 'rack/cache'
         
     | 
| 
      
 6 
     | 
    
         
            +
            rescue LoadError => e
         
     | 
| 
      
 7 
     | 
    
         
            +
              puts "Couldn't find rack-cache - make sure you have it in your Gemfile:"
         
     | 
| 
      
 8 
     | 
    
         
            +
              puts "  gem 'rack-cache', :require => 'rack/cache'"
         
     | 
| 
      
 9 
     | 
    
         
            +
              puts " or configure dragonfly manually instead of using 'fontana/rails/fonts'"
         
     | 
| 
      
 10 
     | 
    
         
            +
              raise e
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### The dragonfly app ###
         
     | 
| 
      
 14 
     | 
    
         
            +
            app = Dragonfly[:fonts]
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            app.configure do |c|
         
     | 
| 
      
 17 
     | 
    
         
            +
              c.encoder.register(Fontana::Dragonfly::Encoder)
         
     | 
| 
      
 18 
     | 
    
         
            +
              c.register_mime_type(:eot,  'application/vnd.ms-fontobject')
         
     | 
| 
      
 19 
     | 
    
         
            +
              c.register_mime_type(:otf,  'font/opentype')
         
     | 
| 
      
 20 
     | 
    
         
            +
              c.register_mime_type(:svg,  'image/svg+xml')
         
     | 
| 
      
 21 
     | 
    
         
            +
              c.register_mime_type(:ttf,  'font/ttf')
         
     | 
| 
      
 22 
     | 
    
         
            +
              c.register_mime_type(:woff, 'application/x-font-woff')
         
     | 
| 
      
 23 
     | 
    
         
            +
              c.url_format = '/media-fonts/:job/:basename.:format'
         
     | 
| 
      
 24 
     | 
    
         
            +
              c.log        = ::Rails.logger
         
     | 
| 
      
 25 
     | 
    
         
            +
              c.datastore.root_path   = ::Rails.root.join('public/system/dragonfly', ::Rails.env).to_s
         
     | 
| 
      
 26 
     | 
    
         
            +
              c.datastore.server_root = ::Rails.root.join('public').to_s
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            # app.configure_with(:rails)
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            ### Extend active record ###
         
     | 
| 
      
 32 
     | 
    
         
            +
            if defined?(ActiveRecord::Base)
         
     | 
| 
      
 33 
     | 
    
         
            +
              app.define_macro(ActiveRecord::Base, :font_accessor)
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            ### Insert the middleware ###
         
     | 
| 
      
 37 
     | 
    
         
            +
            rack_cache_already_inserted = Rails.application.config.action_controller.perform_caching && Rails.application.config.action_dispatch.rack_cache
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            Rails.application.middleware.insert 0, Rack::Cache, {
         
     | 
| 
      
 40 
     | 
    
         
            +
              :verbose     => true,
         
     | 
| 
      
 41 
     | 
    
         
            +
              :metastore   => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"), # URI encoded in case of spaces
         
     | 
| 
      
 42 
     | 
    
         
            +
              :entitystore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/body")
         
     | 
| 
      
 43 
     | 
    
         
            +
            } unless rack_cache_already_inserted
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            Rails.application.middleware.insert_after Rack::Cache, Dragonfly::Middleware, :fonts
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tempfile'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Fontana
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              class TTF2EOT
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.convert(input_string)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  input_file  = create_input_file(input_string)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  return_string = run_command(input_file)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  cleanup(input_file)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  return_string
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                private
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def self.cleanup(tempfile)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    tempfile.unlink
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  def self.create_input_file(content, filename = 'fontana-ttf2eot-input')
         
     | 
| 
      
 22 
     | 
    
         
            +
                    tempfile = Tempfile.new([filename, '.ttf'])
         
     | 
| 
      
 23 
     | 
    
         
            +
                    tempfile.write content
         
     | 
| 
      
 24 
     | 
    
         
            +
                    tempfile.close
         
     | 
| 
      
 25 
     | 
    
         
            +
                    tempfile
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def self.run_command(input_file)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    puts "ttf2eot #{input_file.path}"
         
     | 
| 
      
 30 
     | 
    
         
            +
                    `ttf2eot #{input_file.path}`
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
    
        data/lib/fontana/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Fontana::Dragonfly::Encoder do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              describe '#encode' do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                it 'should do nothing if the font is already in the correct format' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  sample_ttf   = font_assets('/Consola Mono/ConsolaMono.ttf')
         
     | 
| 
      
 9 
     | 
    
         
            +
                  temp_ttf     = Dragonfly::TempObject.new(File.new(sample_ttf))
         
     | 
| 
      
 10 
     | 
    
         
            +
                  returned_ttf = Fontana::Dragonfly::Encoder.new.encode(temp_ttf, :ttf)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  Digest::MD5.hexdigest(returned_ttf) ==  Digest::MD5.file( font_assets('/Consola Mono/ConsolaMono.ttf'))
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,96 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Fontana::Font do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              def eot_md5
         
     | 
| 
      
 6 
     | 
    
         
            +
                @eot_md5 ||= Digest::MD5.file(font_assets('Consola Mono/ConsolaMono.eot'))
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              def otf_md5
         
     | 
| 
      
 10 
     | 
    
         
            +
                @otf_md5 ||= Digest::MD5.file(font_assets('Consola Mono/ConsolaMono.otf'))
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def svg_md5
         
     | 
| 
      
 14 
     | 
    
         
            +
                @svg_md5 ||= Digest::MD5.file(font_assets('Consola Mono/ConsolaMono.svg'))
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def ttf_md5
         
     | 
| 
      
 18 
     | 
    
         
            +
                @ttf_md5 ||= Digest::MD5.file(font_assets('Consola Mono/ConsolaMono.ttf'))
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def woff_md5
         
     | 
| 
      
 22 
     | 
    
         
            +
                @woff_md5 ||= Digest::MD5.file(font_assets('Consola Mono/ConsolaMono.woff'))
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              context '#initialize' do
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                it 'should require the path to font file' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  lambda { Fontana::Font.new() }.should raise_error(ArgumentError)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                it 'will assume a string is a path to file and attempt to open it' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  lambda { Fontana::Font.new('/bad/file/path') }.should raise_error(Errno::ENOENT)
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              pending 'font conversions' do
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                [ :eot, :otf, :svg, :ttf, :woff ].each do |file_extension|
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  context "with a #{file_extension} as an original font #to_eot" do
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    it 'will return a string representing the embedded open type font' do
         
     | 
| 
      
 44 
     | 
    
         
            +
                      font = Fontana::Font.new(font_assets("Consola Mono/ConsolaMono.#{file_extension}"))
         
     | 
| 
      
 45 
     | 
    
         
            +
                      Digest::MD5.hexdigest(font.to_eot).should == eot_md5.to_s
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  context "with a #{file_extension} as an original font #to_otf" do
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                    it 'will return a string representing the open type font' do
         
     | 
| 
      
 53 
     | 
    
         
            +
                      pending 'No utility found to convert from eot => otf' if file_extension == :eot
         
     | 
| 
      
 54 
     | 
    
         
            +
                      font = Fontana::Font.new(font_assets("Consola Mono/ConsolaMono.#{file_extension}"))
         
     | 
| 
      
 55 
     | 
    
         
            +
                      Digest::MD5.hexdigest(font.to_otf).should == otf_md5.to_s
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  context "with a #{file_extension} as an original font #to_svg" do
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                    it 'will return a string representing the scalable vector graphic font' do
         
     | 
| 
      
 64 
     | 
    
         
            +
                      pending 'No utility found to convert from eot => svg' if file_extension == :eot
         
     | 
| 
      
 65 
     | 
    
         
            +
                      font = Fontana::Font.new(font_assets("Consola Mono/ConsolaMono.#{file_extension}"))
         
     | 
| 
      
 66 
     | 
    
         
            +
                      Digest::MD5.hexdigest(font.to_svg).should == svg_md5.to_s
         
     | 
| 
      
 67 
     | 
    
         
            +
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                  context "with a #{file_extension} as an original font #to_ttf" do
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                    it 'will return a string representing the true type font' do
         
     | 
| 
      
 75 
     | 
    
         
            +
                      pending 'No utility found to convert from eot => ttf' if file_extension == :eot
         
     | 
| 
      
 76 
     | 
    
         
            +
                      font = Fontana::Font.new(font_assets("Consola Mono/ConsolaMono.#{file_extension}"))
         
     | 
| 
      
 77 
     | 
    
         
            +
                      Digest::MD5.hexdigest(font.to_ttf).should == ttf_md5.to_s
         
     | 
| 
      
 78 
     | 
    
         
            +
                    end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                  context "with a #{file_extension} as an original font #to_woff" do
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                    it 'will return a string representing the web open font format font' do
         
     | 
| 
      
 85 
     | 
    
         
            +
                      pending 'No utility found to convert from eot => woff' if file_extension == :eot
         
     | 
| 
      
 86 
     | 
    
         
            +
                      font = Fontana::Font.new(font_assets("Consola Mono/ConsolaMono.#{file_extension}"))
         
     | 
| 
      
 87 
     | 
    
         
            +
                      Digest::MD5.hexdigest(font.to_woff).should == woff_md5.to_s
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                  end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            end
         
     |