compass-fontcustom 1.3.0 → 1.3.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -2
- data/README.md +5 -7
- data/Rakefile +1 -0
- data/compass-fontcustom.gemspec +2 -1
- data/lib/compass/fontcustom.rb +13 -6
- data/lib/compass/fontcustom/deprecations.rb +16 -0
- data/lib/compass/fontcustom/font_importer.rb +5 -0
- data/lib/compass/fontcustom/glyph_map.rb +18 -22
- data/lib/compass/fontcustom/patches.rb +3 -0
- data/lib/compass/fontcustom/sass_extensions.rb +22 -19
- data/lib/compass/fontcustom/templates/stylesheet.scss.erb +1 -2
- data/lib/compass/fontcustom/util.rb +13 -0
- data/lib/compass/fontcustom/version.rb +1 -1
- data/stylesheets/_fontcustom.scss +1 -4
- data/test/unit/font_importer_test.rb +9 -7
- metadata +21 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebb1130d663a53b726f45e3259849477a741fea4
|
4
|
+
data.tar.gz: af69d9bad9a3e45454f9a7239730206d37a7ba04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f98cc4f1877cf321100f66c06ff06e0bda8771f01a78bebb55ad3555f9a4f199dc65fb138417c25add27b5bc7866cf63b66ab3e90acae53f911e4cb2276a3967
|
7
|
+
data.tar.gz: db70ce3ef495da6710cb8d5a1f0c5dc1c426af0afba8432c0469068423ab67bad16345d5d2d56735bb3141b97afa8b4df4897362f860cd30eb735c5b91a49e49
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
**1.3.1** Minor release
|
4
|
+
|
5
|
+
- Use FontCustom's codepoints when regenerating fonts to add/remove glyphs -- #19
|
6
|
+
- Fixed an issue picking up the wrong font filename -- #18
|
7
|
+
- Dropped Ruby 1.9 support
|
8
|
+
- Testing on all Ruby 2.x versions
|
9
|
+
- Deprecated options `fontcustom_fonts_path` in favor of `fontcustom_options`
|
10
|
+
|
3
11
|
**1.3.0** Major release
|
4
12
|
|
5
13
|
- Bundles Fontcustom 1.3.0 -- #10
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -3,14 +3,12 @@
|
|
3
3
|
[](https://travis-ci.org/glaszig/compass-fontcustom)
|
4
4
|
[](http://badge.fury.io/rb/compass-fontcustom)
|
5
5
|
[](https://coveralls.io/r/glaszig/compass-fontcustom)
|
6
|
-
[](https://bitdeli.com/free "Bitdeli Badge")
|
7
|
-
[](https://coderwall.com/glaszig)
|
8
6
|
|
9
7
|
This is my attempt of integrating [Font Custom](http://fontcustom.com) with [Compass](http://compass-style.org).
|
10
8
|
|
11
9
|
## Requirements
|
12
10
|
|
13
|
-
|
11
|
+
Tested on Ruby 2.0, 2.1, 2.2, 2.3 and 2.4.
|
14
12
|
You'll need to have fontforge and the [WOFF font toolset](http://people.mozilla.com/~jkew/woff) installed as outlined in the Font Custom [installation instructions](http://fontcustom.com/#installation).
|
15
13
|
|
16
14
|
## Installation
|
@@ -32,12 +30,12 @@ And then execute:
|
|
32
30
|
Compass::Fontcustom adds the following configuration options to Compass.
|
33
31
|
Just add these to your project's `config/compass.rb`.
|
34
32
|
|
35
|
-
- `fontcustom_hash`
|
36
|
-
Enables/disables Fontcustom file name hashing.
|
37
33
|
- `fontcustom_input_paths`
|
38
34
|
Array of paths where to search for SVG files to build custom fonts from.
|
39
|
-
- `
|
40
|
-
|
35
|
+
- `fontcustom_discard_manifest`
|
36
|
+
Boolean to configure to delete the manifest file after each run.
|
37
|
+
- `fontcustom_options`
|
38
|
+
A hash to pass native options to FontCustom.
|
41
39
|
|
42
40
|
## Usage
|
43
41
|
|
data/Rakefile
CHANGED
data/compass-fontcustom.gemspec
CHANGED
@@ -18,12 +18,13 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.0'
|
22
22
|
|
23
23
|
spec.add_dependency "compass", "~> 1.0.1"
|
24
24
|
spec.add_dependency "fontcustom", "~> 1.3.3"
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.3"
|
27
|
+
spec.add_development_dependency "test-unit"
|
27
28
|
spec.add_development_dependency "rake"
|
28
29
|
spec.add_development_dependency "pry"
|
29
30
|
end
|
data/lib/compass/fontcustom.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require "compass"
|
2
2
|
require "compass/fontcustom/version"
|
3
|
+
require "compass/fontcustom/util"
|
3
4
|
require "compass/fontcustom/compass"
|
4
5
|
require "compass/fontcustom/sass_extensions"
|
5
6
|
require "compass/fontcustom/glyph_map"
|
6
7
|
require "compass/fontcustom/font_importer"
|
8
|
+
require "compass/fontcustom/patches"
|
9
|
+
require "compass/fontcustom/deprecations"
|
7
10
|
|
8
11
|
module Compass
|
9
12
|
# This module registers the gem as a Compass framework source,
|
@@ -12,10 +15,6 @@ module Compass
|
|
12
15
|
base_directory = File.expand_path('../../../', __FILE__)
|
13
16
|
Compass::Frameworks.register('fontcustom', :path => base_directory)
|
14
17
|
|
15
|
-
Compass::Configuration.add_configuration_property(:fontcustom_hash, "enables/disables fontcustom file name hashing") do
|
16
|
-
true
|
17
|
-
end
|
18
|
-
|
19
18
|
Compass::Configuration.add_configuration_property(:fontcustom_input_paths, "Array of paths where to search for SVG files to build custom fonts from") do
|
20
19
|
if defined? Rails
|
21
20
|
Rails.application.config.assets.paths
|
@@ -24,8 +23,16 @@ module Compass
|
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
|
-
Compass::Configuration.add_configuration_property(:fontcustom_fonts_path, "Path to put generated font files in")
|
28
|
-
|
26
|
+
Compass::Configuration.add_configuration_property(:fontcustom_fonts_path, "(Deprecated) Path to put generated font files in")
|
27
|
+
|
28
|
+
Compass::Configuration.add_configuration_property(:fontcustom_options,
|
29
|
+
'Options passed to fontcustom when generating fonts') do
|
30
|
+
{}
|
31
|
+
end
|
32
|
+
|
33
|
+
Compass::Configuration.add_configuration_property(:fontcustom_discard_manifest,
|
34
|
+
'Remove manifest each time after fonts are compiled') do
|
35
|
+
false
|
29
36
|
end
|
30
37
|
|
31
38
|
Sass.load_paths << FontImporter.new
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Compass
|
2
|
+
module Fontcustom
|
3
|
+
module Deprecations
|
4
|
+
def fontcustom_fonts_path= value
|
5
|
+
warn "WARNING: fontcustom_fonts_path is deprecated. Prefer to use Compass' fonts_path."
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
[ Compass::Configuration::FileData,
|
10
|
+
Compass::Configuration::Data
|
11
|
+
].each do |m|
|
12
|
+
m.send :include, Deprecations
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -39,38 +39,34 @@ module Compass
|
|
39
39
|
|
40
40
|
# Starts the Fontcustom font generator to write font files to disk.
|
41
41
|
def generate
|
42
|
-
args = self.class.config.generator_options || {}
|
43
|
-
|
44
|
-
|
45
|
-
:
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
:fonts => []
|
50
|
-
)
|
51
|
-
::Fontcustom::Base.new(args).compile
|
42
|
+
args = (self.class.config.generator_options || {}).
|
43
|
+
merge(output: output_dir, quiet: true, fonts: []).
|
44
|
+
merge(Compass.configuration.fontcustom_options).
|
45
|
+
merge(font_name: @name, input: path)
|
46
|
+
@fontcustom = ::Fontcustom::Base.new(args)
|
47
|
+
@fontcustom.compile
|
48
|
+
File.delete(@fontcustom.manifest.manifest) if Compass.configuration.fontcustom_discard_manifest
|
52
49
|
end
|
53
50
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
51
|
+
def fonts
|
52
|
+
if @fontcustom
|
53
|
+
@fontcustom.manifest.get(:fonts).each_with_object({}) do |font, result|
|
54
|
+
result[File.extname(font)[1..-1].to_sym] = font
|
55
|
+
end
|
56
|
+
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
60
|
-
|
59
|
+
def glyphs
|
60
|
+
@fontcustom.manifest.get :glyphs
|
61
61
|
end
|
62
62
|
|
63
63
|
def to_s
|
64
64
|
@name.to_s
|
65
65
|
end
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
glob = File.join output_dir, "#{self.name}*"
|
71
|
-
Dir[glob]
|
72
|
-
end
|
73
|
-
|
67
|
+
def output_dir
|
68
|
+
Compass.configuration.fontcustom_fonts_path || Compass.configuration.fonts_path
|
69
|
+
end
|
74
70
|
end
|
75
71
|
end
|
76
72
|
end
|
@@ -8,21 +8,22 @@ module Compass
|
|
8
8
|
|
9
9
|
# Font type format mappings used in css font-face declarations.
|
10
10
|
# @see #glyph_font_sources
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
FONT_TYPE_OPTIONS = {
|
12
|
+
eot: {format: 'embedded-opentype', postfix: '?#iefix'},
|
13
|
+
woff: {format: 'woff'},
|
14
|
+
ttf: {format: 'truetype'},
|
15
|
+
svg: {format: 'svg', postfix: '#%{font_name}'}
|
16
16
|
}
|
17
17
|
|
18
18
|
# Returns `:before` pseudo class styles for the letter at `index` of the font.
|
19
19
|
#
|
20
|
-
# @param
|
20
|
+
# @param map [Compass::Fontcustom::GlyphMap] a glyph map
|
21
|
+
# @param glyph [String] glyph name
|
21
22
|
# @return [Sass::Script::String]
|
22
|
-
def glyph(
|
23
|
-
|
24
|
-
|
25
|
-
Sass::Script::String.new
|
23
|
+
def glyph(map, glyph)
|
24
|
+
# Name transform should be implemented as in FontCustom
|
25
|
+
glyph = map.glyphs[Util.sanitize_symbol(glyph).to_sym]
|
26
|
+
Sass::Script::String.new "'\\#{glyph[:codepoint]}'"
|
26
27
|
end
|
27
28
|
Sass::Script::Functions.declare :letter, [:index]
|
28
29
|
|
@@ -42,9 +43,14 @@ module Compass
|
|
42
43
|
def glyph_font_sources(map)
|
43
44
|
map.generate
|
44
45
|
src = []
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
|
47
|
+
fonts = map.fonts
|
48
|
+
|
49
|
+
FONT_TYPE_OPTIONS.each do |font_type, options|
|
50
|
+
if font = fonts[font_type]
|
51
|
+
url = glyph_font_type_url("#{font}#{options[:postfix]}" % {font_name: map.name})
|
52
|
+
src << "#{url} format('#{options[:format]}')"
|
53
|
+
end
|
48
54
|
end
|
49
55
|
Sass::Script::String.new src.join ", "
|
50
56
|
end
|
@@ -71,16 +77,13 @@ module Compass
|
|
71
77
|
# Helper method. Returns a `Sass::Script::Functions#font_url for the font of `type` in `map`.
|
72
78
|
#
|
73
79
|
# @return [String]
|
74
|
-
def glyph_font_type_url(
|
75
|
-
|
76
|
-
file_name = "#{map.filename}.#{type}"
|
77
|
-
font_file = Sass::Script::String.new file_name
|
80
|
+
def glyph_font_type_url(file_path)
|
81
|
+
font_file = Sass::Script::String.new File.basename(file_path)
|
78
82
|
font_url(font_file).value
|
79
83
|
end
|
80
84
|
|
81
85
|
def sanitize_symbol(name)
|
82
|
-
|
83
|
-
Sass::Script::String.new sanitized
|
86
|
+
Sass::Script::String.new Util.sanitize_symbol name.value
|
84
87
|
end
|
85
88
|
Sass::Script::Functions.declare :sanitize_symbol, [:name]
|
86
89
|
|
@@ -15,6 +15,5 @@ $<%= name %>-glyphs: glyph-map("<%= uri %>");
|
|
15
15
|
|
16
16
|
@mixin <%= name %>-glyph($glyph-name) {
|
17
17
|
@extend #{$<%= name %>-font-base-class};
|
18
|
-
|
19
|
-
&:before { content: glyph($index); }
|
18
|
+
&:before { content: glyph($<%= name %>-glyphs, $glyph-name); }
|
20
19
|
}
|
@@ -16,14 +16,11 @@
|
|
16
16
|
@mixin glyphs($map, $glyph-names, $base-class: false) {
|
17
17
|
$name: glyph-font-name($map);
|
18
18
|
@each $glyph-name in $glyph-names {
|
19
|
-
|
20
|
-
$index: index($glyph-names, $glyph-name);
|
21
19
|
$class_name: "icon-#{$name}-#{sanitize-symbol($glyph-name)}";
|
22
20
|
|
23
21
|
.#{$class_name} {
|
24
22
|
@if $base-class { @extend #{$base-class}; }
|
25
|
-
&:before { content: glyph($
|
23
|
+
&:before { content: glyph($map, $glyph-name); }
|
26
24
|
}
|
27
|
-
|
28
25
|
}
|
29
26
|
}
|
@@ -18,9 +18,11 @@ class FontImporterTest < Test::Unit::TestCase
|
|
18
18
|
SCSS
|
19
19
|
Compass.add_configuration(config, "fontcustom_config")
|
20
20
|
|
21
|
-
Compass::Fontcustom::GlyphMap.configure do |
|
22
|
-
|
21
|
+
Compass::Fontcustom::GlyphMap.configure do |c|
|
22
|
+
c.generator_options = { :debug => false }
|
23
23
|
end
|
24
|
+
|
25
|
+
Compass.configuration.fontcustom_options = {}
|
24
26
|
end
|
25
27
|
|
26
28
|
def teardown
|
@@ -57,16 +59,16 @@ class FontImporterTest < Test::Unit::TestCase
|
|
57
59
|
def test_should_skip_file_name_hashes_if_option_is_set
|
58
60
|
fontname = 'myfont'
|
59
61
|
|
60
|
-
Compass.configuration.
|
62
|
+
Compass.configuration.fontcustom_options[:no_hash] = true
|
61
63
|
|
62
64
|
css = render <<-SCSS
|
63
65
|
@import "#{fontname}/*.svg";
|
64
66
|
@include all-myfont-glyphs;
|
65
67
|
SCSS
|
66
68
|
|
67
|
-
assert File.
|
68
|
-
assert File.
|
69
|
-
assert File.
|
69
|
+
assert File.exist? File.join(Compass.configuration.fonts_path, 'myfont.svg')
|
70
|
+
assert File.exist? File.join(Compass.configuration.fonts_path, 'myfont.ttf')
|
71
|
+
assert File.exist? File.join(Compass.configuration.fonts_path, 'myfont.woff')
|
70
72
|
|
71
73
|
assert css =~ %r{.#{fontname}-font}, "base font class missing"
|
72
74
|
assert css =~ %r{.icon-#{fontname}-c}i, "icon c css class missing"
|
@@ -78,7 +80,7 @@ class FontImporterTest < Test::Unit::TestCase
|
|
78
80
|
def test_glyph_mixin
|
79
81
|
fontname = 'myfont'
|
80
82
|
|
81
|
-
Compass.configuration.
|
83
|
+
Compass.configuration.fontcustom_options[:no_hash] = true
|
82
84
|
|
83
85
|
css = render <<-SCSS
|
84
86
|
@import "#{fontname}/*.svg";
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compass-fontcustom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glaszig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: compass
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: test-unit
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,10 +110,13 @@ files:
|
|
96
110
|
- lib/compass/fontcustom.rb
|
97
111
|
- lib/compass/fontcustom/compass.rb
|
98
112
|
- lib/compass/fontcustom/configurable.rb
|
113
|
+
- lib/compass/fontcustom/deprecations.rb
|
99
114
|
- lib/compass/fontcustom/font_importer.rb
|
100
115
|
- lib/compass/fontcustom/glyph_map.rb
|
116
|
+
- lib/compass/fontcustom/patches.rb
|
101
117
|
- lib/compass/fontcustom/sass_extensions.rb
|
102
118
|
- lib/compass/fontcustom/templates/stylesheet.scss.erb
|
119
|
+
- lib/compass/fontcustom/util.rb
|
103
120
|
- lib/compass/fontcustom/version.rb
|
104
121
|
- stylesheets/_fontcustom.scss
|
105
122
|
- test/fixtures/myfont/C.svg
|
@@ -121,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
138
|
requirements:
|
122
139
|
- - ">="
|
123
140
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
141
|
+
version: '2.0'
|
125
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
143
|
requirements:
|
127
144
|
- - ">="
|
@@ -129,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
146
|
version: '0'
|
130
147
|
requirements: []
|
131
148
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.6.8
|
133
150
|
signing_key:
|
134
151
|
specification_version: 4
|
135
152
|
summary: Integrates Fontcustom with Compass
|