summaryrefslogtreecommitdiff
path: root/repo/font/font-noto/noto-meta
diff options
context:
space:
mode:
Diffstat (limited to 'repo/font/font-noto/noto-meta')
-rw-r--r--repo/font/font-noto/noto-meta63
1 files changed, 63 insertions, 0 deletions
diff --git a/repo/font/font-noto/noto-meta b/repo/font/font-noto/noto-meta
new file mode 100644
index 0000000..1ac47a9
--- /dev/null
+++ b/repo/font/font-noto/noto-meta
@@ -0,0 +1,63 @@
+#!/usr/bin/ruby
+require 'erb'
+require 'fileutils'
+require 'json'
+require 'shellwords'
+
+include FileUtils
+
+
+def die!(msg)
+ warn msg
+ exit 1
+end
+
+def render_template(template, attrs = {})
+ context = Class.new(OpenStruct).new(**attrs).instance_eval('binding')
+ ERB.new(template, 0, '-').result(context)
+end
+
+def gen_font_confs(fonts, out_dir = '.')
+ out_dir = File.expand_path(out_dir)
+ mkdir_p(out_dir)
+
+ Dir.chdir(__dir__) do
+ template = File.read('fontconfig.xml.erb')
+
+ fonts.each do |subpkg, data|
+ conf_name = "58-noto#{'-' + subpkg if subpkg != '@'}.xml"
+
+ conf = if File.exists?(conf_name)
+ File.read(conf_name)
+ else
+ render_template(template, data: data)
+ end
+ File.write(File.join(out_dir, conf_name), conf)
+ end
+ end
+end
+
+
+fonts = JSON.load_file(File.join(__dir__, 'noto-meta.json'))
+
+case (action = ARGV[0])
+when 'list-subpkgs'
+ puts fonts.keys.select { _1 != '@' }.sort_by { [-_1.size, _1] }
+
+when 'gen-font-confs'
+ gen_font_confs(fonts, ARGV[1])
+
+when 'pkgdesc', 'font-basenames'
+ key = ARGV[1].sub(/^font-noto-/, '')
+ data = fonts[key] or die! "unknown font subpkgname: #{ARGV[1]}"
+
+ case action
+ when 'pkgdesc'
+ puts data['pkgdesc']
+ when 'font-basenames'
+ puts data['fonts'].map { _1['family'].gsub(' ', '') }
+ end
+
+else
+ die! "invalid action: #{action}"
+end