Typst-color-gradients

官方 Blog Color gradients

介绍

Color gradients, 即颜色渐变, 能创建出平滑颜色过渡的效果.

Typst 中的 color gradients

Typst 中 color gradients 默认使用 Oklab color space (两个 color 之间的 distance 和人眼对两个 color 的 distance 的感知成正比) 实现.

有三种常用的 gradients:

  • linear gradients, 线性渐变, 颜色沿着一条直线平滑地变化. 你可以定义渐变的起点和终点, 颜色将从起点开始变化, 沿着直线向终点过渡
  • Radial gradients, 径向渐变, 颜色从一个中心点向外平滑地变化. 你可以定义渐变的中心和半径, 颜色将从中心开始变化, 沿着半径向外过渡
  • Conic gradients, 圆锥渐变, 颜色沿着一个圆形路径平滑地变化, 就像切开的圆锥一样. 你可以定义渐变的中心和角度, 颜色将从一条从中心开始的线开始变化, 沿着圆形路径过渡

Linear gradients 示例:

1
2
3
4
5
6
7
#rect(
width: 100%,
height: 30pt,
fill: gradient.linear(
..color.map.rainbow,
)
)

(fill 指填充)

Conic gradients 示例:

1
2
3
4
5
6
7
#set align(center)
#circle(
radius: 50pt,
stroke: 2pt + gradient
.conic(..color.map.rainbow)
.repeat(2, mirror: true)
)

(stroke 指描边)

Sharp transition 示例:

1
2
3
4
5
6
7
#rect(
width: 100%,
height: 30pt,
fill: gradient
.linear(black, yellow, red)
.sharp(3)
)

指定起始和结束示例:

1
2
3
4
5
6
7
8
9
10
11
#rect(
width: 100%,
height: 40pt,
fill: gradient.linear(
angle: 30deg,
(red, 0%),
(blue, 20%),
(green, 80%),
(purple, 100%),
)
)

对文本应用 linear gradients 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#set text(fill: gradient.linear(
..color.map.rainbow,
))

A famous Chinese #box[poem]
about the hard work of farming:

#box[
李绅《悯农》
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦
]

Typst-color-gradients
http://example.com/2024/05/03/Typst-color-gradients/
作者
Jie
发布于
2024年5月3日
许可协议