diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fb3f9ee3..b8523da8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,7 +10,7 @@ jobs:
name: Build
strategy:
matrix:
- go-version: [1.25.x, 1.24.x]
+ go-version: [1.26.x, 1.25.x]
platform: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.platform }}
env:
diff --git a/go.mod b/go.mod
index 286390fc..c8e2888f 100644
--- a/go.mod
+++ b/go.mod
@@ -1,25 +1,27 @@
module gonum.org/v1/plot
-go 1.24.0
+go 1.25.0
require (
- codeberg.org/go-fonts/latin-modern v0.4.0
+ codeberg.org/go-fonts/latin-modern v0.5.0
codeberg.org/go-fonts/liberation v0.5.0
codeberg.org/go-latex/latex v0.2.0
codeberg.org/go-pdf/fpdf v0.11.1
git.sr.ht/~sbinet/gg v0.7.0
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b
- golang.org/x/image v0.30.0
- gonum.org/v1/gonum v0.16.0
+ golang.org/x/image v0.39.0
+ gonum.org/v1/gonum v0.17.0
rsc.io/pdf v0.1.1
)
require (
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
- golang.org/x/mod v0.27.0 // indirect
- golang.org/x/sync v0.16.0 // indirect
- golang.org/x/text v0.28.0 // indirect
- golang.org/x/tools v0.36.0 // indirect
+ golang.org/x/mod v0.34.0 // indirect
+ golang.org/x/sync v0.20.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c // indirect
+ golang.org/x/text v0.36.0 // indirect
+ golang.org/x/tools v0.43.0 // indirect
gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c // indirect
)
diff --git a/go.sum b/go.sum
index 5b0ae5fe..55314a52 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,7 @@
codeberg.org/go-fonts/dejavu v0.4.0 h1:2yn58Vkh4CFK3ipacWUAIE3XVBGNa0y1bc95Bmfx91I=
codeberg.org/go-fonts/dejavu v0.4.0/go.mod h1:abni088lmhQJvso2Lsb7azCKzwkfcnttl6tL1UTWKzg=
-codeberg.org/go-fonts/latin-modern v0.4.0 h1:vkRCc1y3whKA7iL9Ep0fSGVuJfqjix0ica9UflHORO8=
-codeberg.org/go-fonts/latin-modern v0.4.0/go.mod h1:BF68mZznJ9QHn+hic9ks2DaFl4sR5YhfM6xTYaP9vNw=
+codeberg.org/go-fonts/latin-modern v0.5.0 h1:5vzaHjM+3uTRHhqQUuTZ/4FoVZkqXufyuKB9SdpLGp0=
+codeberg.org/go-fonts/latin-modern v0.5.0/go.mod h1:p8kFovLhQWuvorvlEjhjCp/3NZ06u7h23LvuLwQFK84=
codeberg.org/go-fonts/liberation v0.5.0 h1:SsKoMO1v1OZmzkG2DY+7ZkCL9U+rrWI09niOLfQ5Bo0=
codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU=
codeberg.org/go-latex/latex v0.2.0 h1:Ol/a6VHY06N+5gPfewswymoRb5ZcKDXWVaVegcx4hbI=
@@ -28,13 +28,13 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/image v0.30.0 h1:jD5RhkmVAnjqaCUXfbGBrn3lpxbknfN9w2UhHHU+5B4=
-golang.org/x/image v0.30.0/go.mod h1:SAEUTxCCMWSrJcCy/4HwavEsfZZJlYxeHLc6tTiAe/c=
+golang.org/x/image v0.39.0 h1:skVYidAEVKgn8lZ602XO75asgXBgLj9G/FE3RbuPFww=
+golang.org/x/image v0.39.0/go.mod h1:sIbmppfU+xFLPIG0FoVUTvyBMmgng1/XAMhQ2ft0hpA=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
-golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
+golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=
+golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -42,29 +42,33 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
-golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c h1:6a8FdnNk6bTXBjR4AGKFgUKuo+7GnR3FX5L7CbveeZc=
+golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
-golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
+golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
+golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
-golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
+golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=
+golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
-gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ=
gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c/go.mod h1:fy6Otjqbk477ELp8IXTpw1cObQtLbRCBVonY+bTTfcM=
honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
diff --git a/vg/testdata/width_-1_golden.jpg b/vg/testdata/width_-1_golden.jpg
index eb4a07fe..cf98c69b 100644
Binary files a/vg/testdata/width_-1_golden.jpg and b/vg/testdata/width_-1_golden.jpg differ
diff --git a/vg/testdata/width_0_golden.jpg b/vg/testdata/width_0_golden.jpg
index eb4a07fe..cf98c69b 100644
Binary files a/vg/testdata/width_0_golden.jpg and b/vg/testdata/width_0_golden.jpg differ
diff --git a/vg/testdata/width_1_golden.jpg b/vg/testdata/width_1_golden.jpg
index bac05ba6..775cce3a 100644
Binary files a/vg/testdata/width_1_golden.jpg and b/vg/testdata/width_1_golden.jpg differ
diff --git a/vg/vg_test.go b/vg/vg_test.go
index 916b3edc..27c0ed5f 100644
--- a/vg/vg_test.go
+++ b/vg/vg_test.go
@@ -19,6 +19,10 @@ import (
"gonum.org/v1/plot/vg"
)
+const (
+ cmpDelta = 0.1
+)
+
// TestLineWidth tests output against test images generated by
// running tests with -tag good.
func TestLineWidth(t *testing.T) {
@@ -68,7 +72,7 @@ func TestLineWidth(t *testing.T) {
t.Fatalf("failed to read test image [%s]: %v\n", name, err)
}
- ok, err := cmpimg.Equal(typ, buf.Bytes(), want)
+ ok, err := cmpimg.EqualApprox(typ, buf.Bytes(), want, cmpDelta)
if err != nil {
t.Fatalf("failed to run cmpimg test [%s]: %v\n", name, err)
}
diff --git a/vg/vgimg/testdata/issue179_golden.jpg b/vg/vgimg/testdata/issue179_golden.jpg
index c9d041d8..288d486b 100644
Binary files a/vg/vgimg/testdata/issue179_golden.jpg and b/vg/vgimg/testdata/issue179_golden.jpg differ
diff --git a/vg/vgimg/vgimg_test.go b/vg/vgimg/vgimg_test.go
index 3f9fa3d9..462b7d28 100644
--- a/vg/vgimg/vgimg_test.go
+++ b/vg/vgimg/vgimg_test.go
@@ -25,6 +25,10 @@ import (
"gonum.org/v1/plot/vg/vgimg"
)
+const (
+ delta = 0.1
+)
+
var cache = font.NewCache(liberation.Collection())
func TestIssue179(t *testing.T) {
@@ -50,7 +54,7 @@ func TestIssue179(t *testing.T) {
t.Fatal(err)
}
- ok, err := cmpimg.Equal("jpg", b.Bytes(), want)
+ ok, err := cmpimg.EqualApprox("jpg", b.Bytes(), want, delta)
if err != nil {
t.Fatal(err)
}
@@ -154,7 +158,7 @@ func TestIssue687(t *testing.T) {
fname = "testdata/issue687.png"
size = 500
)
- cmpimg.CheckPlot(func() {
+ cmpimg.CheckPlotApprox(func() {
p := plot.New()
p.Title.Text = "Issue 687"
p.X.Label.Text = "X"
@@ -175,5 +179,5 @@ func TestIssue687(t *testing.T) {
t.Fatal(err)
}
- }, t, filepath.Base(fname))
+ }, t, delta, filepath.Base(fname))
}
diff --git a/vg/vgsvg/font_test.go b/vg/vgsvg/font_test.go
index b419d34c..c127bd70 100644
--- a/vg/vgsvg/font_test.go
+++ b/vg/vgsvg/font_test.go
@@ -63,7 +63,7 @@ func TestSVGFontDescr(t *testing.T) {
},
lmroman10regular.TTF,
),
- want: "font-family:Latin Modern Roman;font-variant:none;font-weight:normal;font-style:normal",
+ want: "font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:normal",
},
// variants
{
diff --git a/vg/vgsvg/testdata/embed_fonts_golden.svg b/vg/vgsvg/testdata/embed_fonts_golden.svg
index 77581491..da0b16a3 100644
--- a/vg/vgsvg/testdata/embed_fonts_golden.svg
+++ b/vg/vgsvg/testdata/embed_fonts_golden.svg
@@ -6,24 +6,24 @@
Scatter plot
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:12px">Scatter plot
x-Axis
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:12px">x-Axis
0.0
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">0.0
0.5
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">0.5
1.0
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">1.0
@@ -38,14 +38,14 @@
y-Axis
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:12px">y-Axis
0.0
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">0.0
0.5
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">0.5
1.0
+ style="font-family:LMRoman10;font-variant:none;font-weight:normal;font-style:italic;font-size:10px">1.0