17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/woff/builder.rb', line 17
def font_with_metadata(licensee: nil, license_id: nil, license_text: nil, description: nil)
metadata_xml = data.metadata.length > 0 ? compressor.inflate(data.metadata) : default_metadata
metadata_doc = REXML::Document.new(metadata_xml)
if licensee
if metadata_doc.root.elements["licensee"]
metadata_doc.root.elements["licensee"].attributes["name"] = licensee
else
metadata_doc.root.add_element "licensee", { "name" => licensee }
end
end
if license_id
if metadata_doc.root.elements["license"]
metadata_doc.root.elements["license"].attributes["id"] = license_id
else
metadata_doc.root.add_element "license", { "id" => license_id }
end
end
if license_text
license_el = metadata_doc.root.elements["license"]
unless license_el
license_el = metadata_doc.root.add_element "license"
end
license_text_el = license_el.elements["text"]
unless license_text_el
license_text_el = license_el.add_element("text", { "lang" => "en "})
end
license_text_el.text = license_text
end
if description
description_el = metadata_doc.root.elements["description"]
unless description_el
description_el = metadata_doc.root.add_element "description"
end
description_text_el = description_el.elements["text"]
unless description_text_el
description_text_el = description_el.add_element("text", { "lang" => "en "})
end
description_text_el.text = description
end
compressed_metadata = compressor.deflate(metadata_doc.to_s)
data.meta_orig_length = metadata_doc.to_s.bytesize
data.metadata = compressed_metadata
data.meta_length = compressed_metadata.bytesize
data.meta_offset = data.metadata.abs_offset
data.data_length = data.num_bytes
data.to_binary_s
end
|