fontisan 0.1.0 → 0.2.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.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +529 -65
  3. data/Gemfile +1 -0
  4. data/LICENSE +5 -1
  5. data/README.adoc +1301 -275
  6. data/Rakefile +27 -2
  7. data/benchmark/variation_quick_bench.rb +47 -0
  8. data/docs/EXTRACT_TTC_MIGRATION.md +549 -0
  9. data/fontisan.gemspec +4 -1
  10. data/lib/fontisan/binary/base_record.rb +22 -1
  11. data/lib/fontisan/cli.rb +309 -0
  12. data/lib/fontisan/collection/builder.rb +260 -0
  13. data/lib/fontisan/collection/offset_calculator.rb +227 -0
  14. data/lib/fontisan/collection/table_analyzer.rb +204 -0
  15. data/lib/fontisan/collection/table_deduplicator.rb +241 -0
  16. data/lib/fontisan/collection/writer.rb +306 -0
  17. data/lib/fontisan/commands/base_command.rb +8 -1
  18. data/lib/fontisan/commands/convert_command.rb +291 -0
  19. data/lib/fontisan/commands/export_command.rb +161 -0
  20. data/lib/fontisan/commands/info_command.rb +40 -6
  21. data/lib/fontisan/commands/instance_command.rb +295 -0
  22. data/lib/fontisan/commands/ls_command.rb +113 -0
  23. data/lib/fontisan/commands/pack_command.rb +241 -0
  24. data/lib/fontisan/commands/subset_command.rb +245 -0
  25. data/lib/fontisan/commands/unpack_command.rb +338 -0
  26. data/lib/fontisan/commands/validate_command.rb +178 -0
  27. data/lib/fontisan/commands/variable_command.rb +30 -1
  28. data/lib/fontisan/config/collection_settings.yml +56 -0
  29. data/lib/fontisan/config/conversion_matrix.yml +212 -0
  30. data/lib/fontisan/config/export_settings.yml +66 -0
  31. data/lib/fontisan/config/subset_profiles.yml +100 -0
  32. data/lib/fontisan/config/svg_settings.yml +60 -0
  33. data/lib/fontisan/config/validation_rules.yml +149 -0
  34. data/lib/fontisan/config/variable_settings.yml +99 -0
  35. data/lib/fontisan/config/woff2_settings.yml +77 -0
  36. data/lib/fontisan/constants.rb +69 -0
  37. data/lib/fontisan/converters/conversion_strategy.rb +96 -0
  38. data/lib/fontisan/converters/format_converter.rb +259 -0
  39. data/lib/fontisan/converters/outline_converter.rb +936 -0
  40. data/lib/fontisan/converters/svg_generator.rb +244 -0
  41. data/lib/fontisan/converters/table_copier.rb +117 -0
  42. data/lib/fontisan/converters/woff2_encoder.rb +416 -0
  43. data/lib/fontisan/converters/woff_writer.rb +391 -0
  44. data/lib/fontisan/error.rb +203 -0
  45. data/lib/fontisan/export/exporter.rb +262 -0
  46. data/lib/fontisan/export/table_serializer.rb +255 -0
  47. data/lib/fontisan/export/transformers/font_to_ttx.rb +172 -0
  48. data/lib/fontisan/export/transformers/head_transformer.rb +96 -0
  49. data/lib/fontisan/export/transformers/hhea_transformer.rb +59 -0
  50. data/lib/fontisan/export/transformers/maxp_transformer.rb +63 -0
  51. data/lib/fontisan/export/transformers/name_transformer.rb +63 -0
  52. data/lib/fontisan/export/transformers/os2_transformer.rb +121 -0
  53. data/lib/fontisan/export/transformers/post_transformer.rb +51 -0
  54. data/lib/fontisan/export/ttx_generator.rb +527 -0
  55. data/lib/fontisan/export/ttx_parser.rb +300 -0
  56. data/lib/fontisan/font_loader.rb +121 -12
  57. data/lib/fontisan/font_writer.rb +301 -0
  58. data/lib/fontisan/formatters/text_formatter.rb +102 -0
  59. data/lib/fontisan/glyph_accessor.rb +503 -0
  60. data/lib/fontisan/hints/hint_converter.rb +177 -0
  61. data/lib/fontisan/hints/postscript_hint_applier.rb +185 -0
  62. data/lib/fontisan/hints/postscript_hint_extractor.rb +254 -0
  63. data/lib/fontisan/hints/truetype_hint_applier.rb +71 -0
  64. data/lib/fontisan/hints/truetype_hint_extractor.rb +162 -0
  65. data/lib/fontisan/loading_modes.rb +113 -0
  66. data/lib/fontisan/metrics_calculator.rb +277 -0
  67. data/lib/fontisan/models/collection_font_summary.rb +52 -0
  68. data/lib/fontisan/models/collection_info.rb +76 -0
  69. data/lib/fontisan/models/collection_list_info.rb +37 -0
  70. data/lib/fontisan/models/font_export.rb +158 -0
  71. data/lib/fontisan/models/font_summary.rb +48 -0
  72. data/lib/fontisan/models/glyph_outline.rb +343 -0
  73. data/lib/fontisan/models/hint.rb +233 -0
  74. data/lib/fontisan/models/outline.rb +664 -0
  75. data/lib/fontisan/models/table_sharing_info.rb +40 -0
  76. data/lib/fontisan/models/ttx/glyph_order.rb +31 -0
  77. data/lib/fontisan/models/ttx/tables/binary_table.rb +67 -0
  78. data/lib/fontisan/models/ttx/tables/head_table.rb +74 -0
  79. data/lib/fontisan/models/ttx/tables/hhea_table.rb +74 -0
  80. data/lib/fontisan/models/ttx/tables/maxp_table.rb +55 -0
  81. data/lib/fontisan/models/ttx/tables/name_table.rb +45 -0
  82. data/lib/fontisan/models/ttx/tables/os2_table.rb +157 -0
  83. data/lib/fontisan/models/ttx/tables/post_table.rb +50 -0
  84. data/lib/fontisan/models/ttx/ttfont.rb +49 -0
  85. data/lib/fontisan/models/validation_report.rb +203 -0
  86. data/lib/fontisan/open_type_collection.rb +156 -2
  87. data/lib/fontisan/open_type_font.rb +296 -10
  88. data/lib/fontisan/optimizers/charstring_rewriter.rb +161 -0
  89. data/lib/fontisan/optimizers/pattern_analyzer.rb +308 -0
  90. data/lib/fontisan/optimizers/stack_tracker.rb +246 -0
  91. data/lib/fontisan/optimizers/subroutine_builder.rb +134 -0
  92. data/lib/fontisan/optimizers/subroutine_generator.rb +207 -0
  93. data/lib/fontisan/optimizers/subroutine_optimizer.rb +107 -0
  94. data/lib/fontisan/outline_extractor.rb +423 -0
  95. data/lib/fontisan/subset/builder.rb +268 -0
  96. data/lib/fontisan/subset/glyph_mapping.rb +215 -0
  97. data/lib/fontisan/subset/options.rb +142 -0
  98. data/lib/fontisan/subset/profile.rb +152 -0
  99. data/lib/fontisan/subset/table_subsetter.rb +461 -0
  100. data/lib/fontisan/svg/font_face_generator.rb +278 -0
  101. data/lib/fontisan/svg/font_generator.rb +264 -0
  102. data/lib/fontisan/svg/glyph_generator.rb +168 -0
  103. data/lib/fontisan/svg/view_box_calculator.rb +137 -0
  104. data/lib/fontisan/tables/cff/cff_glyph.rb +176 -0
  105. data/lib/fontisan/tables/cff/charset.rb +282 -0
  106. data/lib/fontisan/tables/cff/charstring.rb +905 -0
  107. data/lib/fontisan/tables/cff/charstring_builder.rb +322 -0
  108. data/lib/fontisan/tables/cff/charstrings_index.rb +162 -0
  109. data/lib/fontisan/tables/cff/dict.rb +351 -0
  110. data/lib/fontisan/tables/cff/dict_builder.rb +242 -0
  111. data/lib/fontisan/tables/cff/encoding.rb +274 -0
  112. data/lib/fontisan/tables/cff/header.rb +102 -0
  113. data/lib/fontisan/tables/cff/index.rb +237 -0
  114. data/lib/fontisan/tables/cff/index_builder.rb +170 -0
  115. data/lib/fontisan/tables/cff/private_dict.rb +284 -0
  116. data/lib/fontisan/tables/cff/top_dict.rb +236 -0
  117. data/lib/fontisan/tables/cff.rb +487 -0
  118. data/lib/fontisan/tables/cff2/blend_operator.rb +240 -0
  119. data/lib/fontisan/tables/cff2/charstring_parser.rb +591 -0
  120. data/lib/fontisan/tables/cff2/operand_stack.rb +232 -0
  121. data/lib/fontisan/tables/cff2.rb +341 -0
  122. data/lib/fontisan/tables/cvar.rb +242 -0
  123. data/lib/fontisan/tables/fvar.rb +2 -2
  124. data/lib/fontisan/tables/glyf/compound_glyph.rb +483 -0
  125. data/lib/fontisan/tables/glyf/compound_glyph_resolver.rb +136 -0
  126. data/lib/fontisan/tables/glyf/curve_converter.rb +343 -0
  127. data/lib/fontisan/tables/glyf/glyph_builder.rb +450 -0
  128. data/lib/fontisan/tables/glyf/simple_glyph.rb +382 -0
  129. data/lib/fontisan/tables/glyf.rb +235 -0
  130. data/lib/fontisan/tables/gvar.rb +270 -0
  131. data/lib/fontisan/tables/hhea.rb +124 -0
  132. data/lib/fontisan/tables/hmtx.rb +287 -0
  133. data/lib/fontisan/tables/hvar.rb +191 -0
  134. data/lib/fontisan/tables/loca.rb +322 -0
  135. data/lib/fontisan/tables/maxp.rb +192 -0
  136. data/lib/fontisan/tables/mvar.rb +185 -0
  137. data/lib/fontisan/tables/name.rb +99 -30
  138. data/lib/fontisan/tables/variation_common.rb +346 -0
  139. data/lib/fontisan/tables/vvar.rb +234 -0
  140. data/lib/fontisan/true_type_collection.rb +156 -2
  141. data/lib/fontisan/true_type_font.rb +297 -11
  142. data/lib/fontisan/utilities/brotli_wrapper.rb +159 -0
  143. data/lib/fontisan/utilities/checksum_calculator.rb +18 -0
  144. data/lib/fontisan/utils/thread_pool.rb +134 -0
  145. data/lib/fontisan/validation/checksum_validator.rb +170 -0
  146. data/lib/fontisan/validation/consistency_validator.rb +197 -0
  147. data/lib/fontisan/validation/structure_validator.rb +198 -0
  148. data/lib/fontisan/validation/table_validator.rb +158 -0
  149. data/lib/fontisan/validation/validator.rb +152 -0
  150. data/lib/fontisan/variable/axis_normalizer.rb +215 -0
  151. data/lib/fontisan/variable/delta_applicator.rb +313 -0
  152. data/lib/fontisan/variable/glyph_delta_processor.rb +218 -0
  153. data/lib/fontisan/variable/instancer.rb +344 -0
  154. data/lib/fontisan/variable/metric_delta_processor.rb +282 -0
  155. data/lib/fontisan/variable/region_matcher.rb +208 -0
  156. data/lib/fontisan/variable/static_font_builder.rb +213 -0
  157. data/lib/fontisan/variable/table_updater.rb +219 -0
  158. data/lib/fontisan/variation/blend_applier.rb +199 -0
  159. data/lib/fontisan/variation/cache.rb +298 -0
  160. data/lib/fontisan/variation/cache_key_builder.rb +162 -0
  161. data/lib/fontisan/variation/converter.rb +268 -0
  162. data/lib/fontisan/variation/data_extractor.rb +86 -0
  163. data/lib/fontisan/variation/delta_applier.rb +266 -0
  164. data/lib/fontisan/variation/delta_parser.rb +228 -0
  165. data/lib/fontisan/variation/inspector.rb +275 -0
  166. data/lib/fontisan/variation/instance_generator.rb +273 -0
  167. data/lib/fontisan/variation/interpolator.rb +231 -0
  168. data/lib/fontisan/variation/metrics_adjuster.rb +318 -0
  169. data/lib/fontisan/variation/optimizer.rb +418 -0
  170. data/lib/fontisan/variation/parallel_generator.rb +150 -0
  171. data/lib/fontisan/variation/region_matcher.rb +221 -0
  172. data/lib/fontisan/variation/subsetter.rb +463 -0
  173. data/lib/fontisan/variation/table_accessor.rb +105 -0
  174. data/lib/fontisan/variation/validator.rb +345 -0
  175. data/lib/fontisan/variation/variation_context.rb +211 -0
  176. data/lib/fontisan/version.rb +1 -1
  177. data/lib/fontisan/woff2/directory.rb +257 -0
  178. data/lib/fontisan/woff2/header.rb +101 -0
  179. data/lib/fontisan/woff2/table_transformer.rb +163 -0
  180. data/lib/fontisan/woff2_font.rb +712 -0
  181. data/lib/fontisan/woff_font.rb +483 -0
  182. data/lib/fontisan.rb +120 -0
  183. data/scripts/compare_stack_aware.rb +187 -0
  184. data/scripts/measure_optimization.rb +141 -0
  185. metadata +205 -4
data/.rubocop_todo.yml CHANGED
@@ -1,83 +1,149 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2025-11-08 05:30:55 UTC using RuboCop version 1.81.7.
3
+ # on 2025-12-17 08:44:35 UTC using RuboCop version 1.81.7.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 7
10
- # This cop supports safe autocorrection (--autocorrect).
11
- # Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation.
12
- Bundler/OrderedGems:
13
- Exclude:
14
- - 'Gemfile'
15
-
16
9
  # Offense count: 1
17
10
  # Configuration parameters: Severity.
18
11
  Gemspec/RequiredRubyVersion:
19
12
  Exclude:
20
13
  - 'fontisan.gemspec'
21
14
 
22
- # Offense count: 2
15
+ # Offense count: 3
23
16
  # This cop supports safe autocorrection (--autocorrect).
24
17
  # Configuration parameters: EnforcedStyle, IndentationWidth.
25
18
  # SupportedStyles: with_first_argument, with_fixed_indentation
26
19
  Layout/ArgumentAlignment:
27
20
  Exclude:
28
- - 'lib/fontisan/tables/cmap.rb'
21
+ - 'spec/fontisan/loading_modes_spec.rb'
22
+ - 'spec/fontisan/variation/validator_spec.rb'
23
+ - 'spec/integration/outline_conversion_spec.rb'
29
24
 
30
25
  # Offense count: 2
31
26
  # This cop supports safe autocorrection (--autocorrect).
32
- # Configuration parameters: EnforcedStyle, IndentationWidth.
33
- # SupportedStyles: with_first_element, with_fixed_indentation
34
- Layout/ArrayAlignment:
27
+ Layout/ElseAlignment:
35
28
  Exclude:
36
- - 'spec/fontisan/commands/base_command_spec.rb'
29
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
30
+ - 'lib/fontisan/subset/table_subsetter.rb'
37
31
 
38
- # Offense count: 1
32
+ # Offense count: 2
39
33
  # This cop supports safe autocorrection (--autocorrect).
40
- # Configuration parameters: EnforcedStyleAlignWith.
41
- # SupportedStylesAlignWith: either, start_of_block, start_of_line
42
- Layout/BlockAlignment:
34
+ Layout/EmptyLineAfterGuardClause:
43
35
  Exclude:
44
- - 'spec/fontisan/commands/base_command_spec.rb'
36
+ - 'lib/fontisan/open_type_font.rb'
37
+ - 'lib/fontisan/true_type_font.rb'
45
38
 
46
- # Offense count: 1
39
+ # Offense count: 2
40
+ # This cop supports safe autocorrection (--autocorrect).
41
+ # Configuration parameters: EnforcedStyleAlignWith, Severity.
42
+ # SupportedStylesAlignWith: keyword, variable, start_of_line
43
+ Layout/EndAlignment:
44
+ Exclude:
45
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
46
+ - 'lib/fontisan/subset/table_subsetter.rb'
47
+
48
+ # Offense count: 6
49
+ # This cop supports safe autocorrection (--autocorrect).
50
+ # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
51
+ Layout/ExtraSpacing:
52
+ Exclude:
53
+ - 'lib/fontisan/loading_modes.rb'
54
+ - 'spec/fontisan/variation/delta_parser_spec.rb'
55
+ - 'spec/fontisan/variation/validator_spec.rb'
56
+
57
+ # Offense count: 24
47
58
  # This cop supports safe autocorrection (--autocorrect).
48
- Layout/BlockEndNewline:
59
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
60
+ # SupportedStyles: special_inside_parentheses, consistent, align_brackets
61
+ Layout/FirstArrayElementIndentation:
49
62
  Exclude:
50
- - 'spec/fontisan/commands/base_command_spec.rb'
63
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
64
+ - 'spec/fontisan/variation/delta_parser_spec.rb'
65
+ - 'spec/fontisan/variation/optimizer_spec.rb'
66
+ - 'spec/fontisan/variation/validator_spec.rb'
67
+
68
+ # Offense count: 4
69
+ # This cop supports safe autocorrection (--autocorrect).
70
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
71
+ # SupportedStyles: special_inside_parentheses, consistent, align_braces
72
+ Layout/FirstHashElementIndentation:
73
+ Exclude:
74
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
75
+ - 'spec/fontisan/variation/subsetter_spec.rb'
51
76
 
52
77
  # Offense count: 2
53
78
  # This cop supports safe autocorrection (--autocorrect).
54
79
  # Configuration parameters: Width, AllowedPatterns.
55
80
  Layout/IndentationWidth:
56
81
  Exclude:
57
- - 'spec/fontisan/commands/base_command_spec.rb'
82
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
83
+ - 'lib/fontisan/subset/table_subsetter.rb'
58
84
 
59
- # Offense count: 94
85
+ # Offense count: 908
60
86
  # This cop supports safe autocorrection (--autocorrect).
61
87
  # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
62
88
  # URISchemes: http, https
63
89
  Layout/LineLength:
64
90
  Enabled: false
65
91
 
66
- # Offense count: 4
92
+ # Offense count: 1
67
93
  # This cop supports safe autocorrection (--autocorrect).
68
- # Configuration parameters: AllowInHeredoc.
69
- Layout/TrailingWhitespace:
94
+ # Configuration parameters: EnforcedStyle.
95
+ # SupportedStyles: symmetrical, new_line, same_line
96
+ Layout/MultilineMethodCallBraceLayout:
70
97
  Exclude:
71
- - 'lib/fontisan/tables/cmap.rb'
72
- - 'spec/fontisan/commands/base_command_spec.rb'
98
+ - 'spec/fontisan/variation/validator_spec.rb'
73
99
 
74
- # Offense count: 3
100
+ # Offense count: 2
101
+ # This cop supports safe autocorrection (--autocorrect).
102
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
103
+ # SupportedStyles: aligned, indented, indented_relative_to_receiver
104
+ Layout/MultilineMethodCallIndentation:
105
+ Exclude:
106
+ - 'lib/fontisan/tables/name.rb'
107
+
108
+ # Offense count: 2
109
+ # This cop supports safe autocorrection (--autocorrect).
110
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
111
+ # SupportedStyles: aligned, indented
112
+ Layout/MultilineOperationIndentation:
113
+ Exclude:
114
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
115
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
116
+
117
+ # Offense count: 20
75
118
  # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
76
119
  Lint/DuplicateBranch:
77
120
  Exclude:
78
121
  - 'lib/fontisan/commands/base_command.rb'
122
+ - 'lib/fontisan/commands/convert_command.rb'
79
123
  - 'lib/fontisan/commands/dump_table_command.rb'
124
+ - 'lib/fontisan/converters/outline_converter.rb'
125
+ - 'lib/fontisan/export/ttx_generator.rb'
126
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
127
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
128
+ - 'lib/fontisan/models/hint.rb'
129
+ - 'lib/fontisan/models/outline.rb'
130
+ - 'lib/fontisan/tables/cff.rb'
80
131
  - 'lib/fontisan/tables/name.rb'
132
+ - 'lib/fontisan/validation/validator.rb'
133
+ - 'lib/fontisan/variable/glyph_delta_processor.rb'
134
+ - 'lib/fontisan/variable/metric_delta_processor.rb'
135
+
136
+ # Offense count: 2
137
+ Lint/DuplicateMethods:
138
+ Exclude:
139
+ - 'lib/fontisan/tables/glyf.rb'
140
+ - 'lib/fontisan/woff2_font.rb'
141
+
142
+ # Offense count: 2
143
+ # This cop supports unsafe autocorrection (--autocorrect-all).
144
+ Lint/DuplicateRequire:
145
+ Exclude:
146
+ - 'lib/fontisan.rb'
81
147
 
82
148
  # Offense count: 1
83
149
  # This cop supports safe autocorrection (--autocorrect).
@@ -91,113 +157,350 @@ Lint/FloatComparison:
91
157
  Exclude:
92
158
  - 'lib/fontisan/tables/post.rb'
93
159
 
94
- # Offense count: 47
160
+ # Offense count: 3
161
+ Lint/IneffectiveAccessModifier:
162
+ Exclude:
163
+ - 'lib/fontisan/models/outline.rb'
164
+ - 'lib/fontisan/models/ttx/tables/binary_table.rb'
165
+
166
+ # Offense count: 1
167
+ Lint/StructNewOverride:
168
+ Exclude:
169
+ - 'lib/fontisan/optimizers/pattern_analyzer.rb'
170
+
171
+ # Offense count: 2
172
+ # This cop supports safe autocorrection (--autocorrect).
173
+ # Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
174
+ Lint/UnusedBlockArgument:
175
+ Exclude:
176
+ - 'lib/fontisan/tables/cff2/charstring_parser.rb'
177
+ - 'spec/fontisan/converters/format_converter_spec.rb'
178
+
179
+ # Offense count: 8
180
+ # This cop supports safe autocorrection (--autocorrect).
181
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
182
+ # NotImplementedExceptions: NotImplementedError
183
+ Lint/UnusedMethodArgument:
184
+ Exclude:
185
+ - 'lib/fontisan/commands/instance_command.rb'
186
+ - 'lib/fontisan/converters/outline_converter.rb'
187
+ - 'lib/fontisan/font_loader.rb'
188
+ - 'lib/fontisan/tables/cff2/charstring_parser.rb'
189
+ - 'lib/fontisan/utilities/brotli_wrapper.rb'
190
+ - 'lib/fontisan/variation/table_accessor.rb'
191
+
192
+ # Offense count: 9
193
+ # This cop supports safe autocorrection (--autocorrect).
194
+ Lint/UselessAssignment:
195
+ Exclude:
196
+ - 'lib/fontisan/converters/outline_converter.rb'
197
+ - 'lib/fontisan/hints/truetype_hint_applier.rb'
198
+ - 'lib/fontisan/models/hint.rb'
199
+ - 'lib/fontisan/tables/cff2/charstring_parser.rb'
200
+ - 'spec/fontisan/utils/thread_pool_spec.rb'
201
+ - 'spec/fontisan/variation/optimizer_spec.rb'
202
+
203
+ # Offense count: 354
95
204
  # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
96
205
  Metrics/AbcSize:
97
206
  Enabled: false
98
207
 
99
- # Offense count: 3
208
+ # Offense count: 24
100
209
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
101
210
  # AllowedMethods: refine
102
211
  Metrics/BlockLength:
103
- Max: 67
212
+ Max: 88
104
213
 
105
- # Offense count: 14
214
+ # Offense count: 169
106
215
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
107
216
  Metrics/CyclomaticComplexity:
108
- Exclude:
109
- - 'lib/fontisan/commands/info_command.rb'
110
- - 'lib/fontisan/commands/unicode_command.rb'
111
- - 'lib/fontisan/font_loader.rb'
112
- - 'lib/fontisan/formatters/text_formatter.rb'
113
- - 'lib/fontisan/open_type_font.rb'
114
- - 'lib/fontisan/tables/fvar.rb'
115
- - 'lib/fontisan/tables/gpos.rb'
116
- - 'lib/fontisan/tables/gsub.rb'
117
- - 'lib/fontisan/tables/name.rb'
118
- - 'lib/fontisan/tables/post.rb'
119
- - 'spec/fontisan/tables/post_spec.rb'
217
+ Enabled: false
120
218
 
121
- # Offense count: 42
219
+ # Offense count: 533
122
220
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
123
221
  Metrics/MethodLength:
124
- Max: 37
222
+ Max: 126
125
223
 
126
- # Offense count: 3
127
- # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
224
+ # Offense count: 13
225
+ # Configuration parameters: CountKeywordArgs.
128
226
  Metrics/ParameterLists:
129
227
  Max: 39
228
+ MaxOptionalParameters: 4
130
229
 
131
- # Offense count: 7
230
+ # Offense count: 109
132
231
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
133
232
  Metrics/PerceivedComplexity:
233
+ Enabled: false
234
+
235
+ # Offense count: 17
236
+ # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
237
+ # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
238
+ Naming/MethodParameterName:
134
239
  Exclude:
135
- - 'lib/fontisan/tables/gpos.rb'
136
- - 'lib/fontisan/tables/gsub.rb'
137
- - 'lib/fontisan/tables/name.rb'
138
- - 'spec/fontisan/tables/post_spec.rb'
240
+ - 'lib/fontisan/optimizers/subroutine_optimizer.rb'
241
+ - 'lib/fontisan/tables/cff2/blend_operator.rb'
242
+ - 'lib/fontisan/tables/glyf/curve_converter.rb'
243
+ - 'lib/fontisan/variation/optimizer.rb'
139
244
 
140
- # Offense count: 2
245
+ # Offense count: 57
141
246
  # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
142
247
  # SupportedStyles: snake_case, normalcase, non_integer
143
248
  # AllowedIdentifiers: TLS1_1, TLS1_2, capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
144
249
  Naming/VariableNumber:
145
250
  Exclude:
251
+ - 'lib/fontisan/models/ttx/tables/os2_table.rb'
252
+ - 'lib/fontisan/subset/table_subsetter.rb'
253
+ - 'lib/fontisan/tables/cff/charset.rb'
254
+ - 'lib/fontisan/tables/cff/encoding.rb'
146
255
  - 'lib/fontisan/tables/cmap.rb'
256
+ - 'lib/fontisan/tables/glyf.rb'
257
+ - 'lib/fontisan/tables/glyf/compound_glyph.rb'
258
+ - 'lib/fontisan/tables/glyf/glyph_builder.rb'
259
+ - 'lib/fontisan/tables/glyf/simple_glyph.rb'
260
+ - 'spec/fontisan/collection/table_deduplicator_spec.rb'
261
+ - 'spec/fontisan/tables/cff/charset_spec.rb'
262
+ - 'spec/fontisan/tables/glyf/glyph_builder_spec.rb'
263
+ - 'spec/fontisan/tables/glyf_spec.rb'
264
+ - 'spec/fontisan/tables/hmtx_spec.rb'
265
+ - 'spec/fontisan/tables/maxp_spec.rb'
147
266
 
148
- # Offense count: 15
267
+ # Offense count: 21
149
268
  # Configuration parameters: MinSize.
150
269
  Performance/CollectionLiteralInLoop:
151
270
  Exclude:
271
+ - 'lib/fontisan/collection/builder.rb'
272
+ - 'lib/fontisan/hints/postscript_hint_applier.rb'
152
273
  - 'lib/fontisan/open_type_font.rb'
274
+ - 'lib/fontisan/tables/cff/charstring.rb'
275
+ - 'lib/fontisan/tables/cff2.rb'
153
276
  - 'lib/fontisan/true_type_font.rb'
277
+ - 'lib/fontisan/variation/validator.rb'
154
278
  - 'spec/fontisan/cli_spec.rb'
155
279
  - 'spec/fontisan/commands/glyphs_command_spec.rb'
156
280
  - 'spec/fontisan/commands/info_command_spec.rb'
157
281
  - 'spec/fontisan/commands/tables_command_spec.rb'
158
282
 
159
- # Offense count: 1
283
+ # Offense count: 8
284
+ # This cop supports unsafe autocorrection (--autocorrect-all).
285
+ Performance/TimesMap:
286
+ Exclude:
287
+ - 'benchmark/variation_quick_bench.rb'
288
+ - 'lib/fontisan/tables/cff2.rb'
289
+ - 'spec/fontisan/utils/thread_pool_spec.rb'
290
+ - 'spec/fontisan/variation/cache_spec.rb'
291
+ - 'spec/fontisan/variation/parallel_generator_spec.rb'
292
+
293
+ # Offense count: 22
294
+ RSpec/AnyInstance:
295
+ Exclude:
296
+ - 'spec/fontisan/converters/format_converter_spec.rb'
297
+ - 'spec/fontisan/validation/validator_spec.rb'
298
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
299
+ - 'spec/fontisan/variation/parallel_generator_spec.rb'
300
+ - 'spec/integration/format_conversion_spec.rb'
301
+
302
+ # Offense count: 57
160
303
  # Configuration parameters: Prefixes, AllowedPatterns.
161
304
  # Prefixes: when, with, without
162
305
  RSpec/ContextWording:
163
306
  Exclude:
164
307
  - 'spec/fontisan/commands/scripts_command_spec.rb'
308
+ - 'spec/fontisan/loading_modes_spec.rb'
309
+ - 'spec/fontisan/optimizers/charstring_rewriter_spec.rb'
310
+ - 'spec/fontisan/optimizers/pattern_analyzer_spec.rb'
311
+ - 'spec/fontisan/optimizers/subroutine_builder_spec.rb'
312
+ - 'spec/fontisan/subset/glyph_mapping_spec.rb'
313
+ - 'spec/fontisan/subset/options_spec.rb'
314
+ - 'spec/fontisan/tables/cff/dict_spec.rb'
315
+ - 'spec/fontisan/tables/cff/encoding_spec.rb'
316
+ - 'spec/fontisan/tables/glyf/curve_converter_spec.rb'
317
+ - 'spec/fontisan/tables/hmtx_spec.rb'
318
+ - 'spec/integration/format_conversion_spec.rb'
319
+ - 'spec/integration/outline_conversion_spec.rb'
320
+
321
+ # Offense count: 12
322
+ # Configuration parameters: IgnoredMetadata.
323
+ RSpec/DescribeClass:
324
+ Exclude:
325
+ - '**/spec/features/**/*'
326
+ - '**/spec/requests/**/*'
327
+ - '**/spec/routing/**/*'
328
+ - '**/spec/system/**/*'
329
+ - '**/spec/views/**/*'
330
+ - 'spec/benchmarks/subroutine_optimization_benchmark.rb'
331
+ - 'spec/fontisan/lazy_loading_spec.rb'
332
+ - 'spec/fontisan/loading_modes_spec.rb'
333
+ - 'spec/integration/collection_management_spec.rb'
334
+ - 'spec/integration/font_subsetting_spec.rb'
335
+ - 'spec/integration/font_validation_spec.rb'
336
+ - 'spec/integration/format_conversion_spec.rb'
337
+ - 'spec/integration/glyph_outline_extraction_spec.rb'
338
+ - 'spec/integration/outline_conversion_spec.rb'
339
+ - 'spec/integration/round_trip_validation_simple_spec.rb'
340
+ - 'spec/integration/round_trip_validation_spec.rb'
341
+ - 'spec/integration/woff2_conversion_spec.rb'
165
342
 
166
- # Offense count: 76
343
+ # Offense count: 758
167
344
  # Configuration parameters: CountAsOne.
168
345
  RSpec/ExampleLength:
169
346
  Max: 66
170
347
 
348
+ # Offense count: 4
349
+ # This cop supports safe autocorrection (--autocorrect).
350
+ RSpec/ExpectActual:
351
+ Exclude:
352
+ - '**/spec/routing/**/*'
353
+ - 'spec/fontisan/commands/subset_command_spec.rb'
354
+ - 'spec/fontisan/subset/builder_spec.rb'
355
+ - 'spec/fontisan/utils/thread_pool_spec.rb'
356
+ - 'spec/fontisan/variation/validator_spec.rb'
357
+
358
+ # Offense count: 1
359
+ RSpec/IdenticalEqualityAssertion:
360
+ Exclude:
361
+ - 'spec/fontisan/utils/thread_pool_spec.rb'
362
+
363
+ # Offense count: 27
364
+ # Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
365
+ RSpec/IndexedLet:
366
+ Exclude:
367
+ - 'spec/fontisan/collection/builder_spec.rb'
368
+ - 'spec/fontisan/collection/offset_calculator_spec.rb'
369
+ - 'spec/fontisan/collection/table_analyzer_spec.rb'
370
+ - 'spec/fontisan/collection/table_deduplicator_spec.rb'
371
+ - 'spec/fontisan/collection/writer_spec.rb'
372
+ - 'spec/fontisan/commands/pack_command_spec.rb'
373
+ - 'spec/fontisan/commands/unpack_command_spec.rb'
374
+ - 'spec/fontisan/optimizers/charstring_rewriter_spec.rb'
375
+ - 'spec/fontisan/optimizers/subroutine_builder_spec.rb'
376
+ - 'spec/fontisan/optimizers/subroutine_optimizer_spec.rb'
377
+
378
+ # Offense count: 3
379
+ # Configuration parameters: AssignmentOnly.
380
+ RSpec/InstanceVariable:
381
+ Exclude:
382
+ - 'spec/fontisan/optimizers/subroutine_builder_spec.rb'
383
+
171
384
  # Offense count: 1
385
+ # This cop supports safe autocorrection (--autocorrect).
386
+ RSpec/IteratedExpectation:
387
+ Exclude:
388
+ - 'spec/fontisan/tables/glyf_spec.rb'
389
+
390
+ # Offense count: 2
391
+ # This cop supports safe autocorrection (--autocorrect).
392
+ RSpec/LeadingSubject:
393
+ Exclude:
394
+ - 'spec/fontisan/variation/blend_applier_spec.rb'
395
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
396
+
397
+ # Offense count: 15
398
+ # Configuration parameters: EnforcedStyle.
399
+ # SupportedStyles: have_received, receive
400
+ RSpec/MessageSpies:
401
+ Exclude:
402
+ - 'spec/fontisan/collection/builder_spec.rb'
403
+ - 'spec/fontisan/commands/pack_command_spec.rb'
404
+ - 'spec/fontisan/commands/unpack_command_spec.rb'
405
+ - 'spec/fontisan/glyph_accessor_spec.rb'
406
+ - 'spec/fontisan/metrics_calculator_spec.rb'
407
+ - 'spec/fontisan/subset/builder_spec.rb'
408
+ - 'spec/fontisan/woff2_font_spec.rb'
409
+
410
+ # Offense count: 4
172
411
  RSpec/MultipleDescribes:
173
412
  Exclude:
413
+ - 'spec/fontisan/loading_modes_spec.rb'
174
414
  - 'spec/fontisan/models/table_info_spec.rb'
415
+ - 'spec/fontisan/utils/thread_pool_spec.rb'
416
+ - 'spec/fontisan/variation/cache_spec.rb'
175
417
 
176
- # Offense count: 151
418
+ # Offense count: 1092
177
419
  RSpec/MultipleExpectations:
178
- Max: 16
420
+ Max: 22
179
421
 
180
- # Offense count: 1
422
+ # Offense count: 106
423
+ # Configuration parameters: AllowSubject.
424
+ RSpec/MultipleMemoizedHelpers:
425
+ Max: 13
426
+
427
+ # Offense count: 3
181
428
  # Configuration parameters: AllowedGroups.
182
429
  RSpec/NestedGroups:
183
430
  Max: 4
184
431
 
185
432
  # Offense count: 7
433
+ # Configuration parameters: AllowedPatterns.
434
+ # AllowedPatterns: ^expect_, ^assert_
435
+ RSpec/NoExpectationExample:
436
+ Exclude:
437
+ - 'spec/benchmarks/subroutine_optimization_benchmark.rb'
438
+
439
+ # Offense count: 23
440
+ # This cop supports unsafe autocorrection (--autocorrect-all).
441
+ RSpec/ReceiveMessages:
442
+ Exclude:
443
+ - 'spec/fontisan/variation/optimizer_spec.rb'
444
+ - 'spec/fontisan/variation/parallel_generator_spec.rb'
445
+ - 'spec/fontisan/variation/subsetter_spec.rb'
446
+ - 'spec/fontisan/variation/validator_spec.rb'
447
+
448
+ # Offense count: 9
186
449
  RSpec/RepeatedExample:
187
450
  Exclude:
451
+ - 'spec/fontisan/metrics_calculator_spec.rb'
188
452
  - 'spec/fontisan/tables/os2_spec.rb'
189
453
 
454
+ # Offense count: 6
455
+ # Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
456
+ # SupportedInflectors: default, active_support
457
+ RSpec/SpecFilePathFormat:
458
+ Exclude:
459
+ - '**/spec/routing/**/*'
460
+ - 'spec/fontisan/tables/cff/charstring_builder_spec.rb'
461
+ - 'spec/fontisan/tables/cff/charstring_spec.rb'
462
+ - 'spec/fontisan/tables/glyf/curve_converter_spec.rb'
463
+ - 'spec/fontisan/tables/glyf/glyph_builder_spec.rb'
464
+ - 'spec/fontisan/variation/converter_spec.rb'
465
+ - 'spec/fontisan/woff2/header_spec.rb'
466
+
467
+ # Offense count: 1
468
+ RSpec/SpecFilePathSuffix:
469
+ Exclude:
470
+ - 'spec/benchmarks/subroutine_optimization_benchmark.rb'
471
+
190
472
  # Offense count: 1
473
+ RSpec/StubbedMock:
474
+ Exclude:
475
+ - 'spec/fontisan/woff2_font_spec.rb'
476
+
477
+ # Offense count: 10
478
+ RSpec/SubjectStub:
479
+ Exclude:
480
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
481
+
482
+ # Offense count: 4
483
+ # This cop supports unsafe autocorrection (--autocorrect-all).
484
+ RSpec/VerifiedDoubleReference:
485
+ Exclude:
486
+ - 'spec/fontisan/variation/parallel_generator_spec.rb'
487
+
488
+ # Offense count: 221
489
+ # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
490
+ RSpec/VerifiedDoubles:
491
+ Enabled: false
492
+
493
+ # Offense count: 2
191
494
  Rake/MethodDefinitionInTask:
192
495
  Exclude:
193
496
  - 'Rakefile'
194
497
 
195
- # Offense count: 1
498
+ # Offense count: 2
196
499
  Security/Open:
197
500
  Exclude:
198
501
  - 'Rakefile'
199
502
 
200
- # Offense count: 1
503
+ # Offense count: 10
201
504
  # This cop supports safe autocorrection (--autocorrect).
202
505
  # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, AllowedMethods, AllowedPatterns, AllowBracesOnProceduralOneLiners, BracesRequiredMethods.
203
506
  # SupportedStyles: line_count_based, semantic, braces_for_chaining, always_braces
@@ -206,12 +509,173 @@ Security/Open:
206
509
  # AllowedMethods: lambda, proc, it
207
510
  Style/BlockDelimiters:
208
511
  Exclude:
209
- - 'spec/fontisan/commands/base_command_spec.rb'
512
+ - 'spec/fontisan/lazy_loading_spec.rb'
513
+ - 'spec/fontisan/loading_modes_spec.rb'
210
514
 
211
515
  # Offense count: 2
516
+ # This cop supports unsafe autocorrection (--autocorrect-all).
517
+ Style/CombinableLoops:
518
+ Exclude:
519
+ - 'lib/fontisan/collection/offset_calculator.rb'
520
+ - 'lib/fontisan/font_writer.rb'
521
+
522
+ # Offense count: 6
523
+ # This cop supports safe autocorrection (--autocorrect).
524
+ # Configuration parameters: EnforcedStyle, AllowComments.
525
+ # SupportedStyles: empty, nil, both
526
+ Style/EmptyElse:
527
+ Exclude:
528
+ - 'lib/fontisan/converters/outline_converter.rb'
529
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
530
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
531
+ - 'spec/integration/outline_conversion_spec.rb'
532
+
533
+ # Offense count: 17
212
534
  # This cop supports safe autocorrection (--autocorrect).
213
535
  # Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, Mode, AllowedMethods, AllowedPatterns.
214
536
  # SupportedStyles: annotated, template, unannotated
215
537
  Style/FormatStringToken:
216
538
  Exclude:
217
539
  - 'lib/fontisan/formatters/text_formatter.rb'
540
+ - 'scripts/measure_optimization.rb'
541
+
542
+ # Offense count: 3
543
+ # This cop supports unsafe autocorrection (--autocorrect-all).
544
+ # Configuration parameters: AllowedReceivers.
545
+ # AllowedReceivers: Thread.current
546
+ Style/HashEachMethods:
547
+ Exclude:
548
+ - 'lib/fontisan/subset/table_subsetter.rb'
549
+ - 'spec/fontisan/subset/glyph_mapping_spec.rb'
550
+
551
+ # Offense count: 2
552
+ # Configuration parameters: MinBranchesCount.
553
+ Style/HashLikeCase:
554
+ Exclude:
555
+ - 'lib/fontisan/commands/unpack_command.rb'
556
+ - 'lib/fontisan/models/validation_report.rb'
557
+
558
+ # Offense count: 2
559
+ # This cop supports unsafe autocorrection (--autocorrect-all).
560
+ Style/IdenticalConditionalBranches:
561
+ Exclude:
562
+ - 'lib/fontisan/models/hint.rb'
563
+
564
+ # Offense count: 3
565
+ # This cop supports unsafe autocorrection (--autocorrect-all).
566
+ # Configuration parameters: EnforcedStyle.
567
+ # SupportedStyles: literals, strict
568
+ Style/MutableConstant:
569
+ Exclude:
570
+ - 'lib/fontisan/hints/postscript_hint_applier.rb'
571
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
572
+
573
+ # Offense count: 1
574
+ # This cop supports safe autocorrection (--autocorrect).
575
+ Style/NegatedIfElseCondition:
576
+ Exclude:
577
+ - 'lib/fontisan/converters/outline_converter.rb'
578
+
579
+ # Offense count: 1
580
+ # This cop supports safe autocorrection (--autocorrect).
581
+ Style/NestedTernaryOperator:
582
+ Exclude:
583
+ - 'lib/fontisan/font_loader.rb'
584
+
585
+ # Offense count: 2
586
+ # This cop supports safe autocorrection (--autocorrect).
587
+ Style/ParallelAssignment:
588
+ Exclude:
589
+ - 'spec/fontisan/variation/blend_applier_spec.rb'
590
+
591
+ # Offense count: 1
592
+ # This cop supports safe autocorrection (--autocorrect).
593
+ Style/RedundantAssignment:
594
+ Exclude:
595
+ - 'spec/fontisan/variation/subsetter_spec.rb'
596
+
597
+ # Offense count: 10
598
+ # This cop supports unsafe autocorrection (--autocorrect-all).
599
+ # Configuration parameters: SafeForConstants.
600
+ Style/RedundantFetchBlock:
601
+ Exclude:
602
+ - 'spec/fontisan/variation/cache_spec.rb'
603
+
604
+ # Offense count: 24
605
+ # This cop supports safe autocorrection (--autocorrect).
606
+ Style/RedundantFreeze:
607
+ Exclude:
608
+ - 'lib/fontisan/constants.rb'
609
+
610
+ # Offense count: 1
611
+ # This cop supports unsafe autocorrection (--autocorrect-all).
612
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
613
+ # AllowedMethods: present?, blank?, presence, try, try!
614
+ Style/SafeNavigation:
615
+ Exclude:
616
+ - 'lib/fontisan/subset/table_subsetter.rb'
617
+
618
+ # Offense count: 5
619
+ # This cop supports safe autocorrection (--autocorrect).
620
+ Style/StderrPuts:
621
+ Exclude:
622
+ - 'lib/fontisan/commands/instance_command.rb'
623
+
624
+ # Offense count: 3
625
+ # This cop supports safe autocorrection (--autocorrect).
626
+ # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
627
+ # SupportedStyles: single_quotes, double_quotes
628
+ Style/StringLiterals:
629
+ Exclude:
630
+ - 'benchmark/variation_quick_bench.rb'
631
+
632
+ # Offense count: 67
633
+ # This cop supports safe autocorrection (--autocorrect).
634
+ # Configuration parameters: EnforcedStyleForMultiline.
635
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
636
+ Style/TrailingCommaInArguments:
637
+ Exclude:
638
+ - 'lib/fontisan/commands/base_command.rb'
639
+ - 'lib/fontisan/converters/outline_converter.rb'
640
+ - 'lib/fontisan/hints/hint_converter.rb'
641
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
642
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
643
+ - 'lib/fontisan/optimizers/subroutine_generator.rb'
644
+ - 'lib/fontisan/tables/cff2.rb'
645
+ - 'lib/fontisan/tables/name.rb'
646
+ - 'spec/fontisan/converters/format_converter_spec.rb'
647
+ - 'spec/fontisan/tables/cff2/blend_operator_spec.rb'
648
+ - 'spec/fontisan/variation/converter_spec.rb'
649
+ - 'spec/fontisan/variation/interpolator_spec.rb'
650
+ - 'spec/fontisan/variation/metrics_adjuster_spec.rb'
651
+ - 'spec/fontisan/variation/subsetter_spec.rb'
652
+ - 'spec/fontisan/variation/validator_spec.rb'
653
+
654
+ # Offense count: 34
655
+ # This cop supports safe autocorrection (--autocorrect).
656
+ # Configuration parameters: EnforcedStyleForMultiline.
657
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
658
+ Style/TrailingCommaInArrayLiteral:
659
+ Exclude:
660
+ - 'lib/fontisan/hints/postscript_hint_applier.rb'
661
+ - 'spec/fontisan/variation/blend_applier_spec.rb'
662
+ - 'spec/fontisan/variation/cache_spec.rb'
663
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
664
+ - 'spec/fontisan/variation/delta_parser_spec.rb'
665
+ - 'spec/fontisan/variation/optimizer_spec.rb'
666
+ - 'spec/fontisan/variation/parallel_generator_spec.rb'
667
+ - 'spec/fontisan/variation/validator_spec.rb'
668
+
669
+ # Offense count: 33
670
+ # This cop supports safe autocorrection (--autocorrect).
671
+ # Configuration parameters: EnforcedStyleForMultiline.
672
+ # SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
673
+ Style/TrailingCommaInHashLiteral:
674
+ Exclude:
675
+ - 'lib/fontisan/hints/postscript_hint_extractor.rb'
676
+ - 'lib/fontisan/hints/truetype_hint_extractor.rb'
677
+ - 'lib/fontisan/loading_modes.rb'
678
+ - 'spec/fontisan/variation/blend_applier_spec.rb'
679
+ - 'spec/fontisan/variation/delta_applier_spec.rb'
680
+ - 'spec/fontisan/variation/subsetter_spec.rb'
681
+ - 'spec/fontisan/variation/validator_spec.rb'