skrift 0.1.0 → 0.4.0

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/lib/skrift.rb CHANGED
@@ -1,11 +1,45 @@
1
- GMetrics = Struct.new(:advance_width, :left_side_bearing, :y_offset, :min_width, :min_height)
2
- LMetrics = Struct.new(:ascender, :descender, :line_gap)
3
- Image = Struct.new(:width, :height, :pixels)
4
- Kerning = Struct.new(:x_shift, :y_shift)
5
-
6
- require_relative './skrift/version'
7
- require_relative './skrift/sft'
8
- require_relative './skrift/outline'
9
- require_relative './skrift/raster'
10
- require_relative './skrift/font'
11
- require 'matrix'
1
+ # frozen_string_literal: true
2
+
3
+ module Skrift
4
+ GMetrics = Struct.new(:advance_width, :left_side_bearing, :y_offset, :min_width, :min_height)
5
+ LMetrics = Struct.new(:ascender, :descender, :line_gap)
6
+ Image = Struct.new(:width, :height, :pixels)
7
+ Kerning = Struct.new(:x_shift, :y_shift)
8
+
9
+ # Geometry helpers shared by Font (compound glyphs) and Outline.
10
+ module Geometry
11
+ module_function
12
+
13
+ def midpoint(a, b) = (a + b) * 0.5
14
+
15
+ # Applies an affine linear transformation matrix to a set of points.
16
+ def transform_points(trf, pts)
17
+ pts.each do |pt|
18
+ x, y = pt[0], pt[1]
19
+ pt[0] = trf[0][0] * x + trf[0][1] * y + trf[0][2]
20
+ pt[1] = trf[1][0] * x + trf[1][1] * y + trf[1][2]
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ require_relative "./skrift/version"
27
+ require_relative "./skrift/raster"
28
+ require_relative "./skrift/outline"
29
+ require_relative "./skrift/sft"
30
+ require_relative "./skrift/font"
31
+ require_relative "./skrift/font_set"
32
+ require_relative "./skrift/glyph_cache"
33
+
34
+ # Backwards-compatible aliases. Deprecated: prefer the Skrift:: namespace.
35
+ # These (and Skrift::SFT) will be removed in a future release.
36
+ Skrift::SFT = Skrift::Renderer
37
+ Font = Skrift::Font
38
+ Renderer = Skrift::Renderer
39
+ SFT = Skrift::Renderer
40
+ Outline = Skrift::Outline
41
+ Raster = Skrift::Raster
42
+ Image = Skrift::Image
43
+ GMetrics = Skrift::GMetrics
44
+ LMetrics = Skrift::LMetrics
45
+ Kerning = Skrift::Kerning
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skrift
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vidar Hokstad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2026-06-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -22,15 +22,19 @@ files:
22
22
  - LICENSE.txt
23
23
  - README.md
24
24
  - Rakefile
25
+ - examples/banner.rb
26
+ - examples/banner_boxdrawing.rb
27
+ - examples/banner_shadow.rb
28
+ - examples/glyph_dump.rb
25
29
  - lib/skrift.rb
26
30
  - lib/skrift/font.rb
31
+ - lib/skrift/font_set.rb
32
+ - lib/skrift/glyph_cache.rb
27
33
  - lib/skrift/outline.rb
28
34
  - lib/skrift/raster.rb
29
35
  - lib/skrift/sft.rb
30
36
  - lib/skrift/version.rb
31
37
  - resources/Ubuntu-Regular.ttf
32
- - skrift.gemspec
33
- - test.rb
34
38
  homepage: https://github.com/vidarh/skrift
35
39
  licenses:
36
40
  - ISC
@@ -45,15 +49,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
45
49
  requirements:
46
50
  - - ">="
47
51
  - !ruby/object:Gem::Version
48
- version: 2.7.0
52
+ version: 3.0.0
49
53
  required_rubygems_version: !ruby/object:Gem::Requirement
50
54
  requirements:
51
55
  - - ">="
52
56
  - !ruby/object:Gem::Version
53
57
  version: '0'
54
58
  requirements: []
55
- rubygems_version: 3.1.4
59
+ rubygems_version: 3.4.10
56
60
  signing_key:
57
61
  specification_version: 4
58
- summary: A pure Ruby TruteType font renderer
62
+ summary: A pure Ruby TrueType font renderer
59
63
  test_files: []
data/skrift.gemspec DELETED
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/skrift/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "skrift"
7
- spec.version = Skrift::VERSION
8
- spec.authors = ["Vidar Hokstad"]
9
- spec.email = ["vidar@hokstad.com"]
10
-
11
- spec.summary = "A pure Ruby TruteType font renderer"
12
- #spec.description = "TODO: Write a longer description or delete this line."
13
- spec.homepage = "https://github.com/vidarh/skrift"
14
- spec.license = "ISC"
15
- spec.required_ruby_version = ">= 2.7.0"
16
-
17
- #spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = spec.homepage
21
- #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
22
-
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(__dir__) do
26
- `git ls-files -z`.split("\x0").reject do |f|
27
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
28
- end
29
- end
30
- spec.bindir = "exe"
31
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
- spec.require_paths = ["lib"]
33
-
34
- # Uncomment to register a new dependency of your gem
35
- # spec.add_dependency "example-gem", "~> 1.0"
36
-
37
- # For more information and examples about making a new gem, check out our
38
- # guide at: https://bundler.io/guides/creating_gem.html
39
- end