Subject: bug#26702: [PATCH 1/2] gnu: Add font-cns11643

From: Brendan Tildesley <[email-masked]>
Date: Tue, 2 May 2017 00:43:41 +1000

Marius Bakke 於 2017-05-01 01:10 寫道:
> Hi Brendan, thanks for this!
>
> Brendan Tildesley <[email-masked]> writes:
>
>> * gnu/packages/fonts.scm (font-cns11643): New variable.
> [...]
>   
>> +(define-public font-cns11643
>> +  (package
>> +    (name "font-cns11643")
>> +    (version "98.1.20170405")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri "http://www.cns11643.gov.tw/AIDB/Open_Data.zip")
>> +              (sha256
>> +               (base32
>> +                "1kyfrwamr8zpdp4qw3z9j3cimhsvr4xd05dmxmfphiknlbr6d455"))))
> I'm getting a different hash when downloading this:
>
> @ build-failed /gnu/store/b4s6pjp7pvwn5028zxm7dn7hxb7akhxn-Open_Data.zip.drv - 1 output path `/gnu/store/kv2291fl8p8r3ic15pp68751qncrv830-Open_Data.zip' should have sha256 hash `1kyfrwamr8zpdp4qw3z9j3cimhsvr4xd05dmxmfphiknlbr6d455', instead has `02kb3bwjrra0k2hlr2p8xswd2y0xs6j8d9vm6yrby734h02a40qf'
>
> Maybe I'm getting a newer version? If this is updated in-place upstream
> very frequently, it would be good to have a way to access older
> downloads. Any ideas?
>
> Minor nit-picks follow, but I've corrected this in my local branch:
I have confirmed that the new hash represents an update to the font. I
have thought about hosting this file, but I'm not sure where I can host
~300MiB. Also, It means I have to bother updating that file frequently.
On the other hand if we use upstream, a failing hash typically means
there is an update. There is unlikely any other Guix user interested in
these fonts at the present. So I'm not sure what to do.
>> +    (outputs '("out" "tw-kai" "tw-sung"))
>> +    (build-system trivial-build-system)
>> +    (native-inputs
>> +     `(("unzip" ,unzip)))
>> +    (arguments
>> +     `(#:modules ((guix build utils))
>> +       #:builder
>> +       (begin
>> +         (use-modules (guix build utils))
>> +         (let* ((font-dir "/share/fonts/truetype/cns11643")
>> +                (out (string-append %output font-dir))
> I've changes this to use (assoc-ref outputs "out") instead of the
> magical %output.
Ok, I don't understand much about those. Are the uses of %outputs (with
the 's') below also problematic?
>> +                (unzip (string-append
>> +                        (assoc-ref %build-inputs "unzip") "/bin/unzip"))
>> +                (tw-kai (string-append
>> +                         (assoc-ref %outputs "tw-kai") font-dir))
>> +                (tw-sung (string-append
>> +                          (assoc-ref %outputs "tw-sung") font-dir)))
>> +           (system* unzip (assoc-ref %build-inputs "source"))
>> +           (chdir "Open_Data/Fonts/")
>> +           (install-file "TW-Kai-98_1.ttf" tw-kai)
>> +           (install-file "TW-Sung-98_1.ttf" tw-sung)
>> +           (install-file "TW-Kai-98_1.ttf" out)
>> +           (install-file "TW-Kai-Ext-B-98_1.ttf" out)
>> +           (install-file "TW-Kai-Plus-98_1.ttf" out)
>> +           (install-file "TW-Sung-98_1.ttf" out)
>> +           (install-file "TW-Sung-Ext-B-98_1.ttf" out)
>> +           (install-file "TW-Sung-Plus-98_1.ttf" out)))))
> And added a #t at the end here, since the return value of "install-file"
> is unspecified.
>
>> [...]
>> +    (license (license:non-copyleft
>> +              "http://data.gov.tw/license"))))
> ...and added a comment about this license being compatible with CC-BY
> 4.0 here.
>
> Thanks a lot for packaging these!

I have attached an updated patch file, and will follow up a with [PATCH
2/2] update

>From 88afaaa9307ccb62fbfa9a4809c5a6b27a69dc30 Mon Sep 17 00:00:00 2001
From: Brendan Tildesley <[email-masked]>
Date: Sat, 29 Apr 2017 04:30:48 +1000
Subject: [PATCH 1/2] gnu: Add font-cns11643

* gnu/packages/fonts.scm (font-cns11643): New variable.
---
 gnu/packages/fonts.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 2452a1c81..83ac27c6c 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2017 José Miguel Sánchez García <[email-masked]>
 ;;; Copyright © 2017 Alex Griffin <[email-masked]>
+;;; Copyright © 2017 Brendan Tildesley <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -518,6 +519,66 @@ fonts are intended to support the characters necessary to render or display
 text in Simplified Chinese, Traditional Chinese, Japanese, and Korean.")
     (license license:silofl1.1)))
 
+(define-public font-cns11643
+  (package
+    (name "font-cns11643")
+    (version "98.1.20170405")
+    (source (origin
+              (method url-fetch)
+              (uri "http://www.cns11643.gov.tw/AIDB/Open_Data.zip")
+              (sha256
+               (base32
+                "02kb3bwjrra0k2hlr2p8xswd2y0xs6j8d9vm6yrby734h02a40qf"))))
+    (outputs '("out" "tw-kai" "tw-sung"))
+    (build-system trivial-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((font-dir "/share/fonts/truetype/cns11643")
+                (out (string-append
+                      (assoc-ref %outputs "out") font-dir))
+                (tw-kai (string-append
+                         (assoc-ref %outputs "tw-kai") font-dir))
+                (tw-sung (string-append
+                          (assoc-ref %outputs "tw-sung") font-dir))
+                (unzip (string-append
+                        (assoc-ref %build-inputs "unzip") "/bin/unzip")))
+           (system* unzip (assoc-ref %build-inputs "source"))
+           (chdir "Open_Data/Fonts/")
+           (install-file "TW-Kai-98_1.ttf" tw-kai)
+           (install-file "TW-Sung-98_1.ttf" tw-sung)
+           (install-file "TW-Kai-98_1.ttf" out)
+           (install-file "TW-Kai-Ext-B-98_1.ttf" out)
+           (install-file "TW-Kai-Plus-98_1.ttf" out)
+           (install-file "TW-Sung-98_1.ttf" out)
+           (install-file "TW-Sung-Ext-B-98_1.ttf" out)
+           (install-file "TW-Sung-Plus-98_1.ttf" out)
+           #t))))
+    (home-page "http://www.cns11643.gov.tw/AIDB/welcome.do")
+    (synopsis "CJK TrueType fonts, TW-Kai and TW-Sung")
+    (description
+     "@code{CNS 11643} character set (Chinese National Standard, or Chinese
+Standard Interchange Code) is the standard character set of the Republic of
+China (Taiwan) for Chinese Characters and other Unicode symbols.  Contained
+are six TrueType fonts based on two script styles, Regular script (Kai), and
+Sung/Ming script, each with three variants:
+
+@itemize
+@item @code{CNS 11643} (@code{TW-Kai} and @code{TW-Sung}): Tens of thousands
+of CJK characters from frequency tables published by the Taiwanese
+Ministry of Education.  ISO 10646 and Unicode compatible encoding.
+@item @code{Big-5 Plus}: Several thousand frequently used CJK characters
+encoded in the user defined area of the Big-5 code.
+@item @code{Big-5 Extended}: A Big-5 character set based on the
+@code{Big-5 Plus} and @code{CNS 11643} character sets.
+@end itemize\n")
+    (license (license:non-copyleft
+              "http://data.gov.tw/license")))) ; CC-BY 4.0 compatible
+
 (define-public font-wqy-zenhei
   (package
     (name "font-wqy-zenhei")
-- 
2.12.2