thinreports 0.6.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/.yardopts +1 -0
  2. data/README.rdoc +100 -0
  3. data/Rakefile +10 -0
  4. data/doc/yardoc_templates/default/layout/html/footer.erb +10 -0
  5. data/lib/thinreports.rb +11 -0
  6. data/lib/thinreports/core.rb +20 -0
  7. data/lib/thinreports/core/errors.rb +58 -0
  8. data/lib/thinreports/core/events.rb +71 -0
  9. data/lib/thinreports/core/ext.rb +5 -0
  10. data/lib/thinreports/core/ext/array.rb +19 -0
  11. data/lib/thinreports/core/ext/hash.rb +19 -0
  12. data/lib/thinreports/core/ext/object.rb +25 -0
  13. data/lib/thinreports/core/format.rb +14 -0
  14. data/lib/thinreports/core/format/base.rb +93 -0
  15. data/lib/thinreports/core/format/builder.rb +65 -0
  16. data/lib/thinreports/core/ordered_hash.rb +39 -0
  17. data/lib/thinreports/core/page.rb +91 -0
  18. data/lib/thinreports/core/shape.rb +53 -0
  19. data/lib/thinreports/core/shape/base.rb +16 -0
  20. data/lib/thinreports/core/shape/base/interface.rb +38 -0
  21. data/lib/thinreports/core/shape/base/internal.rb +60 -0
  22. data/lib/thinreports/core/shape/basic.rb +15 -0
  23. data/lib/thinreports/core/shape/basic/format.rb +26 -0
  24. data/lib/thinreports/core/shape/basic/interface.rb +57 -0
  25. data/lib/thinreports/core/shape/basic/internal.rb +29 -0
  26. data/lib/thinreports/core/shape/list.rb +25 -0
  27. data/lib/thinreports/core/shape/list/configuration.rb +33 -0
  28. data/lib/thinreports/core/shape/list/events.rb +30 -0
  29. data/lib/thinreports/core/shape/list/format.rb +72 -0
  30. data/lib/thinreports/core/shape/list/manager.rb +209 -0
  31. data/lib/thinreports/core/shape/list/page.rb +118 -0
  32. data/lib/thinreports/core/shape/list/page_state.rb +40 -0
  33. data/lib/thinreports/core/shape/list/section_format.rb +32 -0
  34. data/lib/thinreports/core/shape/list/section_interface.rb +48 -0
  35. data/lib/thinreports/core/shape/list/section_internal.rb +29 -0
  36. data/lib/thinreports/core/shape/list/store.rb +34 -0
  37. data/lib/thinreports/core/shape/manager.rb +14 -0
  38. data/lib/thinreports/core/shape/manager/format.rb +28 -0
  39. data/lib/thinreports/core/shape/manager/internal.rb +87 -0
  40. data/lib/thinreports/core/shape/manager/target.rb +85 -0
  41. data/lib/thinreports/core/shape/tblock.rb +16 -0
  42. data/lib/thinreports/core/shape/tblock/format.rb +36 -0
  43. data/lib/thinreports/core/shape/tblock/formatter.rb +32 -0
  44. data/lib/thinreports/core/shape/tblock/formatter/basic.rb +38 -0
  45. data/lib/thinreports/core/shape/tblock/formatter/datetime.rb +21 -0
  46. data/lib/thinreports/core/shape/tblock/formatter/number.rb +49 -0
  47. data/lib/thinreports/core/shape/tblock/formatter/padding.rb +43 -0
  48. data/lib/thinreports/core/shape/tblock/interface.rb +52 -0
  49. data/lib/thinreports/core/shape/tblock/internal.rb +70 -0
  50. data/lib/thinreports/core/shape/text.rb +15 -0
  51. data/lib/thinreports/core/shape/text/format.rb +25 -0
  52. data/lib/thinreports/core/shape/text/interface.rb +16 -0
  53. data/lib/thinreports/core/shape/text/internal.rb +17 -0
  54. data/lib/thinreports/core/utils.rb +48 -0
  55. data/lib/thinreports/generator.rb +30 -0
  56. data/lib/thinreports/generator/base.rb +49 -0
  57. data/lib/thinreports/generator/pdf.rb +63 -0
  58. data/lib/thinreports/generator/pdf/document.rb +171 -0
  59. data/lib/thinreports/generator/pdf/document/draw_shape.rb +74 -0
  60. data/lib/thinreports/generator/pdf/document/font.rb +59 -0
  61. data/lib/thinreports/generator/pdf/document/graphics.rb +42 -0
  62. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +92 -0
  63. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +132 -0
  64. data/lib/thinreports/generator/pdf/document/graphics/image.rb +51 -0
  65. data/lib/thinreports/generator/pdf/document/graphics/text.rb +130 -0
  66. data/lib/thinreports/generator/pdf/document/parse_color.rb +51 -0
  67. data/lib/thinreports/generator/pdf/document/parse_svg.rb +102 -0
  68. data/lib/thinreports/generator/pdf/drawer.rb +16 -0
  69. data/lib/thinreports/generator/pdf/drawer/base.rb +56 -0
  70. data/lib/thinreports/generator/pdf/drawer/list.rb +39 -0
  71. data/lib/thinreports/generator/pdf/drawer/list_section.rb +46 -0
  72. data/lib/thinreports/generator/pdf/drawer/page.rb +101 -0
  73. data/lib/thinreports/generator/pdf/prawn_ext.rb +36 -0
  74. data/lib/thinreports/generator/pxd.rb +75 -0
  75. data/lib/thinreports/generator/pxd/helper.rb +33 -0
  76. data/lib/thinreports/generator/pxd/list_renderer.rb +58 -0
  77. data/lib/thinreports/generator/pxd/page_renderer.rb +75 -0
  78. data/lib/thinreports/layout.rb +17 -0
  79. data/lib/thinreports/layout/base.rb +78 -0
  80. data/lib/thinreports/layout/configuration.rb +27 -0
  81. data/lib/thinreports/layout/format.rb +77 -0
  82. data/lib/thinreports/layout/version.rb +43 -0
  83. data/lib/thinreports/report.rb +31 -0
  84. data/lib/thinreports/report/base.rb +160 -0
  85. data/lib/thinreports/report/events.rb +32 -0
  86. data/lib/thinreports/report/internal.rb +131 -0
  87. data/resources/fonts/IPA_Font_License_Agreement_v1.0.txt +117 -0
  88. data/resources/fonts/ipag.ttf +0 -0
  89. data/resources/fonts/ipagp.ttf +0 -0
  90. data/resources/fonts/ipam.ttf +0 -0
  91. data/resources/fonts/ipamp.ttf +0 -0
  92. data/tasks/clean.rake +6 -0
  93. data/tasks/doc.rake +13 -0
  94. data/tasks/test.rake +18 -0
  95. data/test/unit/core/ext/array_spec.rb +29 -0
  96. data/test/unit/core/ext/hash_spec.rb +29 -0
  97. data/test/unit/core/ext/object_spec.rb +30 -0
  98. data/test/unit/core/format/test_base.rb +148 -0
  99. data/test/unit/core/format/test_builder.rb +114 -0
  100. data/test/unit/core/ordered_hash_spec.rb +51 -0
  101. data/test/unit/core/shape/base/test_interface.rb +52 -0
  102. data/test/unit/core/shape/base/test_internal.rb +109 -0
  103. data/test/unit/core/shape/basic/test_format.rb +59 -0
  104. data/test/unit/core/shape/basic/test_interface.rb +70 -0
  105. data/test/unit/core/shape/basic/test_internal.rb +42 -0
  106. data/test/unit/core/shape/list/test_configuration.rb +52 -0
  107. data/test/unit/core/shape/list/test_events.rb +28 -0
  108. data/test/unit/core/shape/list/test_format.rb +71 -0
  109. data/test/unit/core/shape/list/test_page.rb +10 -0
  110. data/test/unit/core/shape/list/test_page_state.rb +31 -0
  111. data/test/unit/core/shape/list/test_section_format.rb +46 -0
  112. data/test/unit/core/shape/list/test_section_interface.rb +52 -0
  113. data/test/unit/core/shape/list/test_section_internal.rb +30 -0
  114. data/test/unit/core/shape/list/test_store.rb +41 -0
  115. data/test/unit/core/shape/manager/test_format.rb +40 -0
  116. data/test/unit/core/shape/manager/test_internal.rb +137 -0
  117. data/test/unit/core/shape/manager/test_target.rb +109 -0
  118. data/test/unit/core/shape/tblock/formatter/test_basic.rb +24 -0
  119. data/test/unit/core/shape/tblock/formatter/test_datetime.rb +47 -0
  120. data/test/unit/core/shape/tblock/formatter/test_number.rb +76 -0
  121. data/test/unit/core/shape/tblock/formatter/test_padding.rb +72 -0
  122. data/test/unit/core/shape/tblock/test_format.rb +125 -0
  123. data/test/unit/core/shape/tblock/test_formatter.rb +28 -0
  124. data/test/unit/core/shape/tblock/test_interface.rb +40 -0
  125. data/test/unit/core/shape/tblock/test_internal.rb +139 -0
  126. data/test/unit/core/shape/text/test_format.rb +73 -0
  127. data/test/unit/core/shape/text/test_internal.rb +21 -0
  128. data/test/unit/core/test_events.rb +91 -0
  129. data/test/unit/core/test_shape.rb +35 -0
  130. data/test/unit/core/utils_spec.rb +56 -0
  131. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +103 -0
  132. data/test/unit/generator/pdf/document/test_font.rb +54 -0
  133. data/test/unit/generator/pdf/document/test_graphics.rb +43 -0
  134. data/test/unit/generator/pdf/document/test_parse_color.rb +30 -0
  135. data/test/unit/generator/test_base.rb +51 -0
  136. data/test/unit/helper.rb +37 -0
  137. data/test/unit/layout/test_base.rb +92 -0
  138. data/test/unit/layout/test_configuration.rb +46 -0
  139. data/test/unit/layout/test_format.rb +104 -0
  140. data/test/unit/layout/test_version.rb +62 -0
  141. data/test/unit/report/test_base.rb +187 -0
  142. data/test/unit/report/test_events.rb +22 -0
  143. data/test/unit/report/test_internal.rb +234 -0
  144. data/test/unit/test_layout.rb +12 -0
  145. data/test/unit/test_report.rb +30 -0
  146. metadata +218 -0
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+
3
+ module ThinReports
4
+ module Layout
5
+
6
+ # @private
7
+ module Version
8
+ REQUIRED_RULES = ["== #{ThinReports::VERSION}"]
9
+
10
+ # @param [String] version
11
+ # @return [Boolean]
12
+ def self.compatible?(version)
13
+ compare(version, *REQUIRED_RULES)
14
+ end
15
+
16
+ # @param [String] base
17
+ # @param [Array<String>] rules
18
+ # @return [Boolean]
19
+ def self.compare(base, *rules)
20
+ rules.all? do |rule|
21
+ op, ver = rule.split(' ')
22
+ comparable_version(base).send(op.to_sym, comparable_version(ver))
23
+ end
24
+ end
25
+
26
+ # @return [String]
27
+ def self.required_rules_inspect
28
+ '(' + REQUIRED_RULES.join(' and ') + ')'
29
+ end
30
+
31
+ # @param [String] version
32
+ # @return [String]
33
+ def self.comparable_version(version)
34
+ if version =~ /pre/
35
+ version.sub(/pre(\d*)$/) { $1 == '' ? '1' : $1 }
36
+ else
37
+ "#{version}.99"
38
+ end
39
+ end
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+
3
+ module ThinReports
4
+
5
+ module Report
6
+ # @see ThinReports::Report::Base#initialize
7
+ def self.new(*args)
8
+ Base.new(*args)
9
+ end
10
+
11
+ # @see ThinReports::Report::Base#create
12
+ def self.create(*args, &block)
13
+ Base.create(*args, &block)
14
+ end
15
+
16
+ # @see ThinReports::Report::Base#generate
17
+ def self.generate(*args, &block)
18
+ Base.generate(*args, &block)
19
+ end
20
+
21
+ # @see ThinReports::Report::Base#generate_file
22
+ def self.generate_file(*args, &block)
23
+ Base.generate_file(*args, &block)
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ require 'thinreports/report/base'
30
+ require 'thinreports/report/internal'
31
+ require 'thinreports/report/events'
@@ -0,0 +1,160 @@
1
+ # coding: utf-8
2
+
3
+ module ThinReports
4
+ module Report
5
+
6
+ class Base
7
+ # @return [ThinReports::Report::Internal]
8
+ # @private
9
+ attr_reader :internal
10
+
11
+ class << self
12
+ # @param options (see #initialize)
13
+ # @yield [report]
14
+ # @yieldparam [ThinReports::Report::Base] report
15
+ # @return [ThinReports::Report::Base]
16
+ def create(options = {}, &block)
17
+ unless block_given?
18
+ raise ArgumentError, '#create requires a block'
19
+ end
20
+ report = new(options)
21
+ block_exec_on(report, &block)
22
+ report.finalize
23
+
24
+ report
25
+ end
26
+
27
+ # @param [Symbol] type
28
+ # @param [Hash] options
29
+ # @option options [Hash] :report Options for Report (see #initialize)
30
+ # @option options [Hash] :generator Options for Generator.
31
+ # @yield (see #create)
32
+ # @return [String]
33
+ def generate(type, options = {}, &block)
34
+ init_generate_params(options, &block)
35
+
36
+ create(options[:report], &block).generate(type, options[:generator])
37
+ end
38
+
39
+ # @param [Symbol] type
40
+ # @param [String] filename
41
+ # @param options (see #generate)
42
+ # @yield (see #create)
43
+ def generate_file(type, filename, options = {}, &block)
44
+ init_generate_params(options, &block)
45
+
46
+ create(options[:report], &block).
47
+ generate_file(type, filename, options[:generator])
48
+ end
49
+
50
+ private
51
+
52
+ # @param (see #generate)
53
+ # @private
54
+ def init_generate_params(options, &block)
55
+ unless block_given?
56
+ raise ArgumentError, '#generate or #generate_file requires a block'
57
+ end
58
+ options[:report] ||= {}
59
+ options[:generator] ||= {}
60
+ end
61
+ end
62
+
63
+ # @param [Hash] options
64
+ # @option options [String, nil] :layout (nil)
65
+ def initialize(options = {})
66
+ @internal = Report::Internal.new(self, options)
67
+ end
68
+
69
+ # @param [String] path of layout-file.
70
+ # @param [Hash] options
71
+ # @option options [Boolean] :default (true)
72
+ # @option options [Symbol] :id (nil)
73
+ # @yield [config,]
74
+ # @yieldparam [ThinReports::Layout::Configuration] config
75
+ def use_layout(layout, options = {}, &block)
76
+ internal.register_layout(layout, options, &block)
77
+ end
78
+
79
+ # @param [Hash] options
80
+ # @option options [String, Symbol] :layout (nil)
81
+ # @yield [page,]
82
+ # @yieldparam [ThinReports::Core::Page] page
83
+ # @return [ThinReports::Core::Page]
84
+ def start_new_page(options = {}, &block)
85
+ unless layout = internal.load_layout(options[:layout])
86
+ raise ThinReports::Errors::NoRegisteredLayoutFound
87
+ end
88
+
89
+ page = internal.add_page(layout.init_new_page(self))
90
+ block_exec_on(page, &block)
91
+ end
92
+
93
+ # @param [Hash] options
94
+ # @option options [Boolean] :count (true)
95
+ # @return [ThinReports::Core::BlankPage]
96
+ def add_blank_page(options = {})
97
+ internal.add_page(Core::BlankPage.new(options[:count]))
98
+ end
99
+ alias_method :blank_page, :add_blank_page
100
+
101
+ # @param [Symbol, nil] id Return the default layout
102
+ # if nil (see #default_layout).
103
+ # @return [ThinReports::Layout::Base]
104
+ def layout(id = nil)
105
+ if id
106
+ internal.layout_registry[id] ||
107
+ raise(ThinReports::Errors::UnknownLayoutId)
108
+ else
109
+ internal.default_layout
110
+ end
111
+ end
112
+
113
+ # @return [ThinReports::Layout::Base]
114
+ def default_layout
115
+ internal.default_layout
116
+ end
117
+
118
+ # @param [Symbol] type
119
+ # @param options (see ThinReports::Generator)
120
+ # @return [String]
121
+ def generate(type, options = {})
122
+ ThinReports::Generator.new(type, self, options).generate
123
+ end
124
+
125
+ # @param type (see #generate)
126
+ # @param [String] filename
127
+ # @param options (see #generate)
128
+ def generate_file(type, filename, options = {})
129
+ ThinReports::Generator.new(type, self, options).generate_file(filename)
130
+ end
131
+
132
+ # @return [ThinReports::Report::Events]
133
+ def events
134
+ internal.events
135
+ end
136
+
137
+ # @return [ThinReports::Core::Page, nil]
138
+ def page
139
+ internal.page
140
+ end
141
+
142
+ # @return [Integer]
143
+ def page_count
144
+ internal.page_count
145
+ end
146
+
147
+ # @private
148
+ def finalize
149
+ internal.finalize
150
+ end
151
+
152
+ # @return [Boolean]
153
+ # @private
154
+ def finalized?
155
+ internal.finalized?
156
+ end
157
+ end
158
+
159
+ end
160
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+
3
+ module ThinReports
4
+ module Report
5
+
6
+ class Events < Core::Events
7
+ def initialize
8
+ super(:page_create,
9
+ :generate)
10
+ end
11
+
12
+ class Event < ThinReports::Core::Events::Event
13
+ # @return [ThinReports::Core::Page, nil]
14
+ attr_reader :page
15
+
16
+ # @return [Array<ThinReports::Core::Page>]
17
+ attr_reader :pages
18
+
19
+ # @return [ThinReports::Report::Base]
20
+ alias_method :report, :target
21
+
22
+ def initialize(type, target, page = nil, pages = nil)
23
+ super(type, target)
24
+
25
+ @page = page
26
+ @pages = pages
27
+ end
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,131 @@
1
+ # coding: utf-8
2
+
3
+ module ThinReports
4
+ module Report
5
+
6
+ # @private
7
+ class Internal
8
+ attr_reader :pages
9
+ attr_reader :page
10
+ attr_reader :page_count
11
+ attr_reader :default_layout
12
+ attr_reader :layout_registry
13
+ attr_reader :events
14
+
15
+ # @param [ThinReports::Report::Base] report
16
+ # @param options (see ThinReports::Report::Base#initialize)
17
+ def initialize(report, options)
18
+ @report = report
19
+ # Default layout
20
+ @default_layout = prepare_layout(options[:layout])
21
+
22
+ @layout_registry = {}
23
+ @finalized = false
24
+ @pages = []
25
+ @page = nil
26
+ @page_count = 0
27
+
28
+ @events = Report::Events.new
29
+ end
30
+
31
+ # @see ThinReports::Report::Base#use_layout
32
+ def register_layout(layout, options = {}, &block)
33
+ layout = if options.empty? || options[:default]
34
+ if @default_layout
35
+ raise ArgumentError, 'The default layout is already set.'
36
+ end
37
+ @default_layout = init_layout(layout)
38
+ else
39
+ id = options[:id].to_sym
40
+
41
+ if layout_registry.key?(id)
42
+ raise ArgumentError, "Id :#{id} is already in use."
43
+ end
44
+ layout_registry[id] = init_layout(layout, id)
45
+ end
46
+ layout.config(&block)
47
+ end
48
+
49
+ def add_page(new_page)
50
+ finalize_current_page
51
+ insert_page(new_page)
52
+ end
53
+
54
+ def copy_page
55
+ finalize_current_page(:at => :copy)
56
+ insert_page(page.copy)
57
+ end
58
+
59
+ def finalize
60
+ unless finalized?
61
+ finalize_current_page
62
+ @finalized = true
63
+
64
+ # Dispatch event on before generate.
65
+ events.dispatch(Report::Events::Event.new(:generate,
66
+ @report, nil, pages))
67
+ end
68
+ end
69
+
70
+ def finalized?
71
+ @finalized
72
+ end
73
+
74
+ def load_layout(layout)
75
+ return @default_layout if layout.nil?
76
+
77
+ case layout
78
+ when Symbol
79
+ layout_registry[layout]
80
+ when String
81
+ prepare_layout(layout)
82
+ else
83
+ raise ArgumentError, 'Invalid argument for layout.'
84
+ end
85
+ end
86
+
87
+ private
88
+
89
+ def insert_page(new_page)
90
+ @pages << new_page
91
+
92
+ if new_page.count?
93
+ @page_count += 1
94
+ new_page.no = @page_count
95
+ end
96
+ # Dispatch event on +before+ page create.
97
+ # But do not dispatch if page is blank-page.
98
+ unless new_page.blank?
99
+ events.dispatch(Report::Events::Event.new(:page_create,
100
+ @report,
101
+ new_page))
102
+ end
103
+ @page = new_page
104
+ end
105
+
106
+ # @param (see ThinReports::Core::Page#finalize)
107
+ def finalize_current_page(options = {})
108
+ page.finalize(options) unless page.blank?
109
+ end
110
+
111
+ def prepare_layout(layout)
112
+ return nil if layout.nil?
113
+
114
+ case layout
115
+ when String
116
+ init_layout(layout)
117
+ # @note Currently not used. Since 0.6.0?
118
+ when ThinReports::Layout::Base
119
+ layout
120
+ else
121
+ raise ArgumentError, 'Invalid argument for layout.'
122
+ end
123
+ end
124
+
125
+ def init_layout(filename, id = nil)
126
+ ThinReports::Layout.new(filename, :id => id)
127
+ end
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,117 @@
1
+ --------------------------------------------------
2
+ IPA Font License Agreement v1.0 <Japanese/English>
3
+ --------------------------------------------------
4
+
5
+ IPAフォントライセンスv1.0
6
+
7
+ 許諾者は、この使用許諾(以下「本契約」といいます。)に定める条件の下で、許諾プログラム(1条に定義するところによります。)を提供します。受領者(1条に定義するところによります。)が、許諾プログラムを使用し、複製し、または頒布する行為、その他、本契約に定める権利の利用を行った場合、受領者は本契約に同意したものと見なします。
8
+
9
+
10
+ 第1条 用語の定義
11
+
12
+ 本契約において、次の各号に掲げる用語は、当該各号に定めるところによります。
13
+
14
+ 1.「デジタル・フォント・プログラム」とは、フォントを含み、レンダリングしまたは表示するために用いられるコンピュータ・プログラムをいいます。
15
+ 2.「許諾プログラム」とは、許諾者が本契約の下で許諾するデジタル・フォント・プログラムをいいます。
16
+ 3.「派生プログラム」とは、許諾プログラムの一部または全部を、改変し、加除修正等し、入れ替え、その他翻案したデジタル・フォント・プログラムをいい、許諾プログラムの一部もしくは全部から文字情報を取り出し、またはデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出し、取り出された文字情報をそのまま、または改変をなして新たなデジタル・フォント・プログラムとして製作されたものを含みます。
17
+ 4.「デジタル・コンテンツ」とは、デジタル・データ形式によってエンド・ユーザに提供される制作物のことをいい、動画・静止画等の映像コンテンツおよびテレビ番組等の放送コンテンツ、ならびに文字テキスト、画像、図形等を含んで構成された制作物を含みます。
18
+ 5.「デジタル・ドキュメント・ファイル」とは、PDFファイルその他、各種ソフトウェア・プログラムによって製作されたデジタル・コンテンツであって、その中にフォントを表示するために許諾プログラムの全部または一部が埋め込まれた(エンベッドされた)ものをいいます。フォントが「エンベッドされた」とは、当該フォントが埋め込まれた特定の「デジタル・ドキュメント・ファイル」においてのみ表示されるために使用されている状態を指し、その特定の「デジタル・ドキュメント・ファイル」以外でフォントを表示するために使用できるデジタル・フォント・プログラムに含まれている場合と区別されます。
19
+ 6.「コンピュータ」とは、本契約においては、サーバを含みます。
20
+ 7.「複製その他の利用」とは、複製、譲渡、頒布、貸与、公衆送信、上映、展示、翻案その他の利用をいいます。
21
+ 8.「受領者」とは、許諾プログラムを本契約の下で受領した人をいい、受領者から許諾プログラムを受領した人を含みます。
22
+
23
+ 第2条 使用許諾の付与
24
+
25
+ 許諾者は受領者に対し、本契約の条項に従い、すべての国で、許諾プログラムを使用することを許諾します。ただし、許諾プログラムに存在する一切の権利はすべて許諾者が保有しています。本契約は、本契約で明示的に定められている場合を除き、いかなる意味においても、許諾者が保有する許諾プログラムに関する一切の権利および、いかなる商標、商号、もしくはサービス・マークに関する権利をも受領者に移転するものではありません。
26
+
27
+ 1.受領者は本契約に定める条件に従い、許諾プログラムを任意の数のコンピュータにインストールし、当該コンピュータで使用することができます。
28
+ 2.受領者はコンピュータにインストールされた許諾プログラムをそのまま、または改変を行ったうえで、印刷物およびデジタル・コンテンツにおいて、文字テキスト表現等として使用することができます。
29
+ 3.受領者は前項の定めに従い作成した印刷物およびデジタル・コンテンツにつき、その商用・非商用の別、および放送、通信、各種記録メディアなどの媒体の形式を問わず、複製その他の利用をすることができます。
30
+ 4.受領者がデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出して派生プログラムを作成した場合には、かかる派生プログラムは本契約に定める条件に従う必要があります。
31
+ 5.許諾プログラムのエンベッドされたフォントがデジタル・ドキュメント・ファイル内のデジタル・コンテンツをレンダリングするためにのみ使用される場合において、受領者が当該デジタル・ドキュメント・ファイルを複製その他の利用をする場合には、受領者はかかる行為に関しては本契約の下ではいかなる義務をも負いません。
32
+ 6.受領者は、3条2項の定めに従い、商用・非商用を問わず、許諾プログラムをそのままの状態で改変することなく複製して第三者への譲渡し、公衆送信し、その他の方法で再配布することができます(以下、「再配布」といいます。)。
33
+ 7.受領者は、上記の許諾プログラムについて定められた条件と同様の条件に従って、派生プログラムを作成し、使用し、複製し、再配布することができます。ただし、受領者が派生プログラムを再配布する場合には、3条1項の定めに従うものとします。
34
+
35
+ 第3条 制限
36
+
37
+ 前条により付与された使用許諾は、以下の制限に服します。
38
+
39
+ 1.派生プログラムが前条4項及び7項に基づき再配布される場合には、以下の全ての条件を満たさなければなりません。
40
+  (1)派生プログラムを再配布する際には、下記もまた、当該派生プログラムと一緒に再配布され、オンラインで提供され、または、郵送費・媒体及び取扱手数料の合計を超えない実費と引き換えに媒体を郵送する方法により提供されなければなりません。
41
+   (a)派生プログラムの写し; および
42
+   (b)派生プログラムを作成する過程でフォント開発プログラムによって作成された追加のファイルであって派生プログラムをさらに加工するにあたって利用できるファイルが存在すれば、当該ファイル
43
+  (2)派生プログラムの受領者が、派生プログラムを、このライセンスの下で最初にリリースされた許諾プログラム(以下、「オリジナル・プログラム」といいます。)に置き換えることができる方法を再配布するものとします。かかる方法は、オリジナル・ファイルからの差分ファイルの提供、または、派生プログラムをオリジナル・プログラムに置き換える方法を示す指示の提供などが考えられます。
44
+  (3)派生プログラムを、本契約書に定められた条件の下でライセンスしなければなりません。
45
+  (4)派生プログラムのプログラム名、フォント名またはファイル名として、許諾プログラムが用いているのと同一の名称、またはこれを含む名称を使用してはなりません。
46
+  (5)本項の要件を満たすためにオンラインで提供し、または媒体を郵送する方法で提供されるものは、その提供を希望するいかなる者によっても提供が可能です。
47
+ 2.受領者が前条6項に基づき許諾プログラムを再配布する場合には、以下の全ての条件を満たさなければなりません。
48
+  (1)許諾プログラムの名称を変更してはなりません。
49
+  (2)許諾プログラムに加工その他の改変を加えてはなりません。
50
+  (3)本契約の写しを許諾プログラムに添付しなければなりません。
51
+ 3.許諾プログラムは、現状有姿で提供されており、許諾プログラムまたは派生プログラムについて、許諾者は一切の明示または黙示の保証(権利の所在、非侵害、商品性、特定目的への適合性を含むがこれに限られません)を行いません。いかなる場合にも、その原因を問わず、契約上の責任か厳格責任か過失その他の不法行為責任かにかかわらず、また事前に通知されたか否かにかかわらず、許諾者は、許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用または本契約上の権利の行使によって生じた一切の損害(直接・間接・付随的・特別・拡大・懲罰的または結果的損害)(商品またはサービスの代替品の調達、システム障害から生じた損害、現存するデータまたはプログラムの紛失または破損、逸失利益を含むがこれに限られません)について責任を負いません。
52
+ 4.許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用に関して、許諾者は技術的な質問や問い合わせ等に対する対応その他、いかなるユーザ・サポートをも行う義務を負いません。
53
+
54
+ 第4条 契約の終了
55
+
56
+ 1.本契約の有効期間は、受領者が許諾プログラムを受領した時に開始し、受領者が許諾プログラムを何らかの方法で保持する限り続くものとします。
57
+ 2.前項の定めにかかわらず、受領者が本契約に定める各条項に違反したときは、本契約は、何らの催告を要することなく、自動的に終了し、当該受領者はそれ以後、許諾プログラムおよび派生プログラムを一切使用しまたは複製その他の利用をすることができないものとします。ただし、かかる契約の終了は、当該違反した受領者から許諾プログラムまたは派生プログラムの配布を受けた受領者の権利に影響を及ぼすものではありません。
58
+
59
+ 第5条 準拠法
60
+
61
+ 1.IPAは、本契約の変更バージョンまたは新しいバージョンを公表することができます。その場合には、受領者は、許諾プログラムまたは派生プログラムの使用、複製その他の利用または再配布にあたり、本契約または変更後の契約のいずれかを選択することができます。その他、上記に記載されていない条項に関しては日本の著作権法および関連法規に従うものとします。
62
+ 2.本契約は、日本法に基づき解釈されます。
63
+
64
+
65
+ ----------
66
+
67
+ IPA Font License Agreement v1.0
68
+
69
+ The Licensor provides the Licensed Program (as defined in Article 1 below) under the terms of this license agreement (“Agreement”). Any use, reproduction or distribution of the Licensed Program, or any exercise of rights under this Agreement by a Recipient (as defined in Article 1 below) constitutes the Recipient's acceptance of this Agreement.
70
+
71
+ Article 1 (Definitions)
72
+ 1.“Digital Font Program” shall mean a computer program containing, or used to render or display fonts.
73
+ 2.“Licensed Program” shall mean a Digital Font Program licensed by the Licensor under this Agreement.
74
+ 3.“Derived Program” shall mean a Digital Font Program created as a result of a modification, addition, deletion, replacement or any other adaptation to or of a part or all of the Licensed Program, and includes a case where a Digital Font Program newly created by retrieving font information from a part or all of the Licensed Program or Embedded Fonts from a Digital Document File with or without modification of the retrieved font information.
75
+ 4.“Digital Content” shall mean products provided to end users in the form of digital data, including video content, motion and/or still pictures, TV programs or other broadcasting content and products consisting of character text, pictures, photographic images, graphic symbols and/or the like.
76
+ 5.“Digital Document File” shall mean a PDF file or other Digital Content created by various software programs in which a part or all of the Licensed Program becomes embedded or contained in the file for the display of the font (“Embedded Fonts”). Embedded Fonts are used only in the display of characters in the particular Digital Document File within which they are embedded, and shall be distinguished from those in any Digital Font Program, which may be used for display of characters outside that particular Digital Document File.
77
+ 6.“Computer” shall include a server in this Agreement.
78
+ 7.“Reproduction and Other Exploitation” shall mean reproduction, transfer, distribution, lease, public transmission, presentation, exhibition, adaptation and any other exploitation.
79
+ 8.“Recipient” shall mean anyone who receives the Licensed Program under this Agreement, including one that receives the Licensed Program from a Recipient.
80
+
81
+ Article 2 (Grant of License)
82
+ The Licensor grants to the Recipient a license to use the Licensed Program in any and all countries in accordance with each of the provisions set forth in this Agreement. However, any and all rights underlying in the Licensed Program shall be held by the Licensor. In no sense is this Agreement intended to transfer any right relating to the Licensed Program held by the Licensor except as specifically set forth herein or any right relating to any trademark, trade name, or service mark to the Recipient.
83
+
84
+ 1.The Recipient may install the Licensed Program on any number of Computers and use the same in accordance with the provisions set forth in this Agreement.
85
+ 2.The Recipient may use the Licensed Program, with or without modification in printed materials or in Digital Content as an expression of character texts or the like.
86
+ 3.The Recipient may conduct Reproduction and Other Exploitation of the printed materials and Digital Content created in accordance with the preceding Paragraph, for commercial or non-commercial purposes and in any form of media including but not limited to broadcasting, communication and various recording media.
87
+ 4.If any Recipient extracts Embedded Fonts from a Digital Document File to create a Derived Program, such Derived Program shall be subject to the terms of this agreement.
88
+ 5.If any Recipient performs Reproduction or Other Exploitation of a Digital Document File in which Embedded Fonts of the Licensed Program are used only for rendering the Digital Content within such Digital Document File then such Recipient shall have no further obligations under this Agreement in relation to such actions.
89
+ 6.The Recipient may reproduce the Licensed Program as is without modification and transfer such copies, publicly transmit or otherwise redistribute the Licensed Program to a third party for commercial or non-commercial purposes (“Redistribute”), in accordance with the provisions set forth in Article 3 Paragraph 2.
90
+ 7.The Recipient may create, use, reproduce and/or Redistribute a Derived Program under the terms stated above for the Licensed Program: provided, that the Recipient shall follow the provisions set forth in Article 3 Paragraph 1 when Redistributing the Derived Program.
91
+
92
+ Article 3 (Restriction)
93
+ The license granted in the preceding Article shall be subject to the following restrictions:
94
+
95
+ 1.If a Derived Program is Redistributed pursuant to Paragraph 4 and 7 of the preceding Article, the following conditions must be met :
96
+  (1)The following must be also Redistributed together with the Derived Program, or be made available online or by means of mailing mechanisms in exchange for a cost which does not exceed the total costs of postage, storage medium and handling fees:
97
+   (a)a copy of the Derived Program; and
98
+   (b)any additional file created by the font developing program in the course of creating the Derived Program that can be used for further modification of the Derived Program, if any.
99
+  (2)It is required to also Redistribute means to enable recipients of the Derived Program to replace the Derived Program with the Licensed Program first released under this License (the “Original Program”). Such means may be to provide a difference file from the Original Program, or instructions setting out a method to replace the Derived Program with the Original Program.
100
+  (3)The Recipient must license the Derived Program under the terms and conditions of this Agreement.
101
+  (4)No one may use or include the name of the Licensed Program as a program name, font name or file name of the Derived Program.
102
+  (5)Any material to be made available online or by means of mailing a medium to satisfy the requirements of this paragraph may be provided, verbatim, by any party wishing to do so.
103
+ 2.If the Recipient Redistributes the Licensed Program pursuant to Paragraph 6 of the preceding Article, the Recipient shall meet all of the following conditions:
104
+  (1)The Recipient may not change the name of the Licensed Program.
105
+  (2)The Recipient may not alter or otherwise modify the Licensed Program.
106
+  (3)The Recipient must attach a copy of this Agreement to the Licensed Program.
107
+ 3.THIS LICENSED PROGRAM IS PROVIDED BY THE LICENSOR “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTY AS TO THE LICENSED PROGRAM OR ANY DERIVED PROGRAM, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXTENDED, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO; PROCUREMENT OF SUBSTITUTED GOODS OR SERVICE; DAMAGES ARISING FROM SYSTEM FAILURE; LOSS OR CORRUPTION OF EXISTING DATA OR PROGRAM; LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE INSTALLATION, USE, THE REPRODUCTION OR OTHER EXPLOITATION OF THE LICENSED PROGRAM OR ANY DERIVED PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
108
+ 4.The Licensor is under no obligation to respond to any technical questions or inquiries, or provide any other user support in connection with the installation, use or the Reproduction and Other Exploitation of the Licensed Program or Derived Programs thereof.
109
+
110
+ Article 4 (Termination of Agreement)
111
+ 1.The term of this Agreement shall begin from the time of receipt of the Licensed Program by the Recipient and shall continue as long as the Recipient retains any such Licensed Program in any way.
112
+ 2.Notwithstanding the provision set forth in the preceding Paragraph, in the event of the breach of any of the provisions set forth in this Agreement by the Recipient, this Agreement shall automatically terminate without any notice. In the case of such termination, the Recipient may not use or conduct Reproduction and Other Exploitation of the Licensed Program or a Derived Program: provided that such termination shall not affect any rights of any other Recipient receiving the Licensed Program or the Derived Program from such Recipient who breached this Agreement.
113
+
114
+ Article 5 (Governing Law)
115
+ 1.IPA may publish revised and/or new versions of this License. In such an event, the Recipient may select either this Agreement or any subsequent version of the Agreement in using, conducting the Reproduction and Other Exploitation of, or Redistributing the Licensed Program or a Derived Program. Other matters not specified above shall be subject to the Copyright Law of Japan and other related laws and regulations of Japan.
116
+ 2.This Agreement shall be construed under the laws of Japan.
117
+