frameit 2.4.2 → 2.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51f6e23e8a0eda4b74b3c2088da03c61ef8e98e5
4
- data.tar.gz: 424487c213ded6efd87fb8e3f6dedfe6c090e063
3
+ metadata.gz: 34bc47b3efb69420fd5270e798ba713a9b948af4
4
+ data.tar.gz: 8158ee167427955839b53705c4787102cd104547
5
5
  SHA512:
6
- metadata.gz: 1a4b71cff4333d074dfa1577fae67ca6675b55022e50048222017694856fa3e6af54921d7f210245673e393d77a7d01ba4e6f801dc598ba651aedf4b97cfd1d6
7
- data.tar.gz: 33c0fe594cb17ebf08aa5a2a207eda07f53204fe03181f3b6450869b0958a29a9dfb7ed754984bbc466f5ec2c83f9fde4b6f696eadb328ab774bea4530220c33
6
+ metadata.gz: d0279c2c77228a3e5bae1bbe84c05338864efca6eb13e63c29eae7b50c0f6d7d20b1b873045c7b9ea557fe0fea2451803aba2873b893eed0bad37f8366044498
7
+ data.tar.gz: 9bfde1c00507c0521a440a464d23b9d4d73bebc36525829f65b48edba521ddff4e46f039d4ba8ae6ce1e45d0a62e05c9a20af93fb534d9e8428a638a299a52f8
data/README.md CHANGED
@@ -185,7 +185,7 @@ To define the title and optionally the keyword, put two `.strings` files into th
185
185
 
186
186
  The `keyword.strings` and `title.strings` are standard `.strings` file you already use for your iOS apps, making it easy to use your existing translation service to get localized titles.
187
187
 
188
- **Note:** These `.strings` files **MUST** be utf-16 encoded. If you are having trouble see [issue #49](https://github.com/fastlane/frameit/issues/49)
188
+ **Note:** These `.strings` files **MUST** be utf-16 encoded (UTF-16 LE with BOM). They also must begin with an empty line. If you are having trouble see [issue #49](https://github.com/fastlane/frameit/issues/49)
189
189
 
190
190
 
191
191
  #### Uploading screenshots to iTC
@@ -5,6 +5,8 @@ module Frameit
5
5
  attr_accessor :image # the current image used for editing
6
6
  attr_accessor :top_space_above_device
7
7
 
8
+ FONT_SIZE_REFERENCE_WIDTH = 640.0 # The size of device a, e.g. "12px" is defined for
9
+
8
10
  def frame!(screenshot)
9
11
  self.screenshot = screenshot
10
12
  prepare_image
@@ -172,18 +174,22 @@ module Frameit
172
174
  sum_width = title.width
173
175
  sum_width += keyword.width + keyword_padding if keyword
174
176
 
175
- # Resize the 2 labels if necessary
176
- smaller = 1.0 # default
177
- ratio = (sum_width + keyword_padding * 2) / image.width.to_f
178
- if ratio > 1.0
179
- # too large - resizing now
180
- smaller = (1.0 / ratio)
181
-
182
- UI.message "Text for image #{self.screenshot.path} is quite long, reducing font size by #{(ratio - 1.0).round(2)}" if $verbose
183
-
184
- title.resize "#{(smaller * title.width).round}x"
185
- keyword.resize "#{(smaller * keyword.width).round}x" if keyword
186
- sum_width *= smaller
177
+ # Only resize if we haven't specified a custom font size
178
+ font_size = font_size('title')
179
+ if font_size.nil?
180
+ # Resize the 2 labels if necessary
181
+ smaller = 1.0 # default
182
+ ratio = (sum_width + keyword_padding * 2) / image.width.to_f
183
+ if ratio > 1.0
184
+ # too large - resizing now
185
+ smaller = (1.0 / ratio)
186
+
187
+ UI.message "Text for image #{self.screenshot.path} is quite long, reducing font size by #{(ratio - 1.0).round(2)}" if $verbose
188
+
189
+ title.resize "#{(smaller * title.width).round}x"
190
+ keyword.resize "#{(smaller * keyword.width).round}x" if keyword
191
+ sum_width *= smaller
192
+ end
187
193
  end
188
194
 
189
195
  vertical_padding = vertical_frame_padding
@@ -210,13 +216,13 @@ module Frameit
210
216
  background
211
217
  end
212
218
 
213
- def actual_font_size
219
+ def derived_font_size
214
220
  [@image.width / 10.0].max.round
215
221
  end
216
222
 
217
223
  # The space between the keyword and the title
218
224
  def keyword_padding
219
- (actual_font_size / 2.0).round
225
+ (derived_font_size / 2.0).round
220
226
  end
221
227
 
222
228
  # This will build 2 individual images with the title, which will then be added to the real image
@@ -234,6 +240,7 @@ module Frameit
234
240
  end
235
241
 
236
242
  current_font = font(key)
243
+ custom_font_size = font_size(key)
237
244
  text = fetch_text(key)
238
245
  UI.message "Using #{current_font} as font the #{key} of #{screenshot.path}" if $verbose and current_font
239
246
  UI.message "Adding text '#{text}'" if $verbose
@@ -244,7 +251,12 @@ module Frameit
244
251
  title_image.combine_options do |i|
245
252
  i.font current_font if current_font
246
253
  i.gravity "Center"
247
- i.pointsize actual_font_size
254
+ if custom_font_size
255
+ i.pointsize custom_font_size
256
+ UI.message "Using custom font size #{custom_font_size}" if $verbose
257
+ else
258
+ i.pointsize derived_font_size
259
+ end
248
260
  i.draw "text 0,0 '#{text}'"
249
261
  i.fill fetch_config[key.to_s]['color']
250
262
  end
@@ -316,5 +328,36 @@ module Frameit
316
328
  UI.message "No custom font specified for #{screenshot}, using the default one" if $verbose
317
329
  return nil
318
330
  end
331
+
332
+ def scaled_font_size(font_size)
333
+ font_ratio = font_size / FONT_SIZE_REFERENCE_WIDTH
334
+ return (font_ratio * screenshot.size[0].to_f).round
335
+ end
336
+
337
+ # The fontSize we want to use
338
+ def font_size(key)
339
+ single_font_size = fetch_config[key.to_s]['fontSize']
340
+ return single_font_size if single_font_size
341
+
342
+ fonts = fetch_config[key.to_s]['fonts']
343
+ if fonts
344
+ fonts.each do |font|
345
+ if font['supported']
346
+ font['supported'].each do |language|
347
+ if screenshot.path.include? language
348
+ return scaled_font_size(font["fontSize"])
349
+ end
350
+ end
351
+ else
352
+ # No `supported` array, this will always be true
353
+ UI.message "Found a fontSize with no list of supported languages, using this now" if $verbose
354
+ return scaled_font_size(font["fontSize"])
355
+ end
356
+ end
357
+ end
358
+
359
+ UI.message "No custom fontSize specified for #{screenshot}, using the default one" if $verbose
360
+ return nil
361
+ end
319
362
  end
320
363
  end
@@ -1,3 +1,3 @@
1
1
  module Frameit
2
- VERSION = "2.4.2"
2
+ VERSION = "2.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frameit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-28 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core