Giter VIP home page Giter VIP logo

prawn-icon's Introduction

Prawn::Icon

Gem Version Build Status Code Climate

Prawn::Icon provides a simple mechanism for rendering icons and icon fonts from within Prawn.

The following icon fonts ship with Prawn::Icon:

Prawn::Icon was originally written by Jesse Doyle.

Installation

Prawn::Icon is distributed via RubyGems. You can install it with the following command:

gem install prawn-icon

Usage

Prawn::Icon was designed to have an API familiar to Prawn. A single icon may be rendered as such:

require 'prawn/icon'

Prawn::Document.generate('icons.pdf') do |pdf|
  pdf.icon 'fas-beer', size: 60
end

produces:

FontAwesome Beer

Inline Icons

You can also provide the inline_format: true option to Prawn::Icon:

require 'prawn/icon'

Prawn::Document.generate('inline_icons.pdf') do |pdf|
  pdf.icon 'Enjoy: <icon size="20" color="AAAAAA">fas-beer</icon>', inline_format: true
end

produces:

FontAwesome Beer Inline

When using inline_format: true, you may supply <icon> tags with color and size attributes.

Use with Prawn::Table

A table_icon method may be called when creating a table's data array to render icons within a table cell:

require 'prawn/icon'
require 'prawn/table'

Prawn::Document.generate('table_icons.pdf') do |pdf|

  data = [
    # Explicit brackets must be used here
    [pdf.table_icon('fas-birthday-cake'), 'Cake'],
    ['is', 'Great!']
  ]

  pdf.table(data) # => (2 x 2 table)
end

Note that the table_icon method supports the inline_format: true option to create multiple icons within a cell.

Specifying Icon Families

Prawn::Icon uses the prefix of an icon key to determine which font family is used to render a particular icon.

Currently supported prefixes include:

How It Works

Prawn::Icon uses a "legend" to map icon keys to unicode characters that respresent a particular icon within the font file.

This legend is a standard .yml file located within the font's directory.

If you wish to fork this repository and add a new font, you'll likely need to supply a corresponding legend file. Please see the current legend files within the data/fonts directory for examples.

Examples

A Rake task is included to generate documents that display each icon and it's corresponding icon key.

The command:

rake legend

should generate these files when run from Prawn::Icon's gem directory.

Contributing

I'll gladly accept pull requests that are well tested for any bug found in Prawn::Icon.

If there is enough demand for including a particular icon font, I will also accept a pull request to include it in Prawn::Icon.

License

Prawn::Icon is licensed under the same terms that are used by Prawn.

You may choose between Matz's terms, the GPLv2, or GPLv3. For details, please see the LICENSE, GPLv2, and GPLv3 files.

prawn-icon's People

Contributors

jessedoyle avatar fale avatar

Watchers

Andy Berzley avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.