...
1
2
3
4
5
6 package liberation
7
8 import (
9 "fmt"
10 "sync"
11
12 "github.com/go-fonts/liberation/liberationmonobold"
13 "github.com/go-fonts/liberation/liberationmonobolditalic"
14 "github.com/go-fonts/liberation/liberationmonoitalic"
15 "github.com/go-fonts/liberation/liberationmonoregular"
16 "github.com/go-fonts/liberation/liberationsansbold"
17 "github.com/go-fonts/liberation/liberationsansbolditalic"
18 "github.com/go-fonts/liberation/liberationsansitalic"
19 "github.com/go-fonts/liberation/liberationsansregular"
20 "github.com/go-fonts/liberation/liberationserifbold"
21 "github.com/go-fonts/liberation/liberationserifbolditalic"
22 "github.com/go-fonts/liberation/liberationserifitalic"
23 "github.com/go-fonts/liberation/liberationserifregular"
24 stdfnt "golang.org/x/image/font"
25 "golang.org/x/image/font/opentype"
26
27 "gonum.org/v1/plot/font"
28 )
29
30 var (
31 once sync.Once
32 collection font.Collection
33 )
34
35 func Collection() font.Collection {
36 once.Do(func() {
37 addColl(font.Font{}, liberationserifregular.TTF)
38 addColl(font.Font{Style: stdfnt.StyleItalic}, liberationserifitalic.TTF)
39 addColl(font.Font{Weight: stdfnt.WeightBold}, liberationserifbold.TTF)
40 addColl(font.Font{
41 Style: stdfnt.StyleItalic,
42 Weight: stdfnt.WeightBold,
43 }, liberationserifbolditalic.TTF)
44
45
46 addColl(font.Font{Variant: "Mono"}, liberationmonoregular.TTF)
47 addColl(font.Font{
48 Variant: "Mono",
49 Style: stdfnt.StyleItalic,
50 }, liberationmonoitalic.TTF)
51 addColl(font.Font{
52 Variant: "Mono",
53 Weight: stdfnt.WeightBold,
54 }, liberationmonobold.TTF)
55 addColl(font.Font{
56 Variant: "Mono",
57 Style: stdfnt.StyleItalic,
58 Weight: stdfnt.WeightBold,
59 }, liberationmonobolditalic.TTF)
60
61
62 addColl(font.Font{Variant: "Sans"}, liberationsansregular.TTF)
63 addColl(font.Font{
64 Variant: "Sans",
65 Style: stdfnt.StyleItalic,
66 }, liberationsansitalic.TTF)
67 addColl(font.Font{
68 Variant: "Sans",
69 Weight: stdfnt.WeightBold,
70 }, liberationsansbold.TTF)
71 addColl(font.Font{
72 Variant: "Sans",
73 Style: stdfnt.StyleItalic,
74 Weight: stdfnt.WeightBold,
75 }, liberationsansbolditalic.TTF)
76
77 n := len(collection)
78 collection = collection[:n:n]
79 })
80
81 return collection
82 }
83
84 func addColl(fnt font.Font, ttf []byte) {
85 face, err := opentype.Parse(ttf)
86 if err != nil {
87 panic(fmt.Errorf("vg: could not parse font: %+v", err))
88 }
89 fnt.Typeface = "Liberation"
90 if fnt.Variant == "" {
91 fnt.Variant = "Serif"
92 }
93 collection = append(collection, font.Face{
94 Font: fnt,
95 Face: face,
96 })
97 }
98
View as plain text