diff --git a/google-noto-fonts.spec b/google-noto-fonts.spec
index d78d39b..e44467e 100644
--- a/google-noto-fonts.spec
+++ b/google-noto-fonts.spec
@@ -514,8 +514,106 @@ local function genfcconf(table)
_fcconfbuild = (_fcconfbuild ~= '' and _fcconfbuild .. "\n" or '') .. "cat<<_EOL_>" .. table.fcconf .. "\\\n" .. xml .. "\n_EOL_\\"
end
+-- Borrowed from fonts-rpm-macros
+-- koji doesn't sasisfy BR during generating srpm yet.
+-- We can't add a dependant code to fonts-rpm-macros at this stage.
+
+-- https://github.com/rpm-software-management/rpm/issues/566
+-- Reformat a text intended to be used used in a package description, removing
+-- rpm macro generation artefacts.
+-- – remove leading and ending empty lines
+-- – trim intermediary empty lines to a single line
+-- – fold on spaces
+-- Should really be a %%{wordwrap:…} verb
+local function wordwrap(text)
+ text = rpm.expand(text .. "\n")
+ text = string.gsub(text, "\t", " ")
+ text = string.gsub(text, "\r", "\n")
+ text = string.gsub(text, " +\n", "\n")
+ text = string.gsub(text, "\n+\n", "\n\n")
+ text = string.gsub(text, "^\n", "")
+ text = string.gsub(text, "\n( *)[-*—][ ]+", "\n%1– ")
+ output = ""
+ for line in string.gmatch(text, "[^\n]*\n") do
+ local pos = 0
+ local advance = ""
+ for word in string.gmatch(line, "%s*[^%s]*\n?") do
+ local wl, bad = utf8.len(word)
+ if not wl then
+ print("%{warn:Invalid UTF-8 sequence detected in:}" ..
+ "%{warn:" .. word .. "}" ..
+ "%{warn:It may produce unexpected results.}")
+ wl = bad
+ end
+ if (pos == 0) then
+ advance, n = string.gsub(word, "^(%s*– ).*", "%1")
+ if (n == 0) then
+ advance = string.gsub(word, "^(%s*).*", "%1")
+ end
+ advance = string.gsub(advance, "– ", " ")
+ pos = pos + wl
+ elseif (pos + wl < 81) or
+ ((pos + wl == 81) and string.match(word, "\n$")) then
+ pos = pos + wl
+ else
+ word = advance .. string.gsub(word, "^%s*", "")
+ output = output .. "\n"
+ pos = utf8.len(word)
+ end
+ output = output .. word
+ if pos > 80 then
+ pos = 0
+ if not string.match(word, "\n$") then
+ output = output .. "\n"
+ end
+ end
+ end
+ end
+ output = string.gsub(output, "\n*$", "\n")
+ return output
+end
+
+-- Reformat some text into something that can be included in an AppStream
+-- XML description
+local function txt2xml(text)
+ local text = wordwrap(text)
+ local output = ""
+ local oldtag = nil
+ local oldadvance = nil
+ local newtag = nil
+ text = string.gsub(text, "^\n*", "")
+ text = string.gsub(text, "\n*$", "\n")
+ for line in string.gmatch(text, "[^\n]*\n") do
+ local change = true
+ local advance, n = string.gsub(line, "^(%s*– ).*", "%1")
+ if (n == 1) then
+ newtag = "li"
+ else
+ advance = string.gsub(line, "^(%s*).*", "%1")
+ if (line == "\n") then
+ newtag = nil
+ elseif (advance ~= oldadvance) then
+ newtag = "p"
+ else
+ change = false
+ end
+ end
+ local result = ""
+ if change then
+ result = string.gsub(line, "^" .. advance, switchtag(oldtag,newtag))
+ oldtag = newtag
+ oldadvance = string.gsub(advance, "– ", " ")
+ else
+ result = string.gsub(line, "^" .. advance, " ")
+ end
+ result = string.gsub(result, "\n$", "")
+ output = output .. result
+ end
+ output = output .. closetag(oldtag, nil)
+ return output
+end
+
local function genmetainfo(table)
- local fonts = require "fedora.rpm.fonts"
local xmlfontname = '$(cmd=$(for f in %{buildroot}' .. table.filename .. '; do fc-scan "$f" -f "echo \\\\\" %{fullname[0]}\\\\\";"; done); if test x"$cmd" != x; then echo "echo \\\\\" \\\\\"; $cmd echo \\\\\" \\\\\""|sh; fi|grep -v "font>%{lang}\\\\\";}}"; done); if test x"$cmd" != x; then echo "echo \\\\\" \\\\\"; ($cmd)|sort -u; echo \\\\\" \\\\\""|sh; fi)'
local xml = [[
@@ -528,7 +626,7 @@ local function genmetainfo(table)
Noto ]] .. table.family .. [[\
\
\
-]] .. fonts.txt2xml(table.description) .. "\\\n" .. [[
+]] .. txt2xml(table.description) .. "\\\n" .. [[
\
]] .. rpm.expand("%{fontcontact}") .. [[\
]] .. rpm.expand("%{url}") .. [[\