色を変更したい(#rgb / #cmyk / #luma

1rgb()    // RGBで指定
2cmyk()   // CMYKで指定
3luma()   // グレイスケールを指定

RGBしたい(rgb

 1rgb("#b1f2eb")  // カラーコード
 2rgb(87, 127, 230)  // RGB
 3rgb(87, 127, 230, 50%)  // RGB + Alpha
 4
 5#let color = rgb(87, 127, 230, 50%)
 6
 7// 成分
 8color.components()
 9// 色空間
10color.space()
11
12// 濃淡
13color.lighten(50%)
14color.darken(50%)
15
16// 補色
17color.negate()
18
19// 透明度
20color.transparentize(50%)
21color.opacify(-50%)

読みやすい黒にしたい

1#rgb("#222222")
2#rgb(34, 34, 34)
3#cmyk(0%, 0%, 0%, 87%)
4#luma(13%)

白地に黒いテキストを配置する場合、純黒(#000000)よりも、少し明るい黒の方が読みやすいそうです。 上記のサンプルでは、#222222#cmyk(0%, 0%, 0%, 87%)など、少し明るい黒を指定しています。

注釈

「オフブラック」や「ソフトブラック」と呼ばれるようです。

リッチブラックしたい(cmyk

1#let text-black = #cmyk(0%, 0%, 0%, 87%)
2#let rich-black = #cmyk(60%, 40%, 40%, 100%)

印刷時の黒は、RGBで指定するよりもCMYKで指定する方が推奨されます。 「リッチブラック」は、CMYKで指定する黒の中でも、とくに濃い黒のことを指します。

印刷する紙やインクの種類によって、リッチブラックの定義は変わるそうです。 上記のサンプルでは、標準的と言われる#cmyk(60%, 40%, 40%, 100%)で指定しています。

注釈

すべての黒をリッチブラックにするのは、インクの使用量が増えるため、あまり推奨されません。 リッチブラックは、タイトルや見出しなど、強調したい部分のみに使用するのがオススメです。 本文テキストは、通常の黒で十分です。

RGBからCMYKに変換したい

 1#let rgb2cmyk(r, g, b) = {
 2  let r = r / 255
 3  let g = g / 255
 4  let b = b / 255
 5
 6  let k = 1 - calc.max(r, g, b)
 7  if k == 1 {
 8    return (0%, 0%, 0%, 100%)
 9  }
10
11  let c = (1 - r - k) / (1 - k)
12  let m = (1 - g - k) / (1 - k)
13  let y = (1 - b - k) / (1 - k)
14
15  // return: (c, m, y, k)
16  (c * 100%, m * 100%, y * 100%, k * 100%)
17}
18
19// Usage
20#let (c, m, y, k) = rgb2cmyk(87, 127, 230)
21#cmyk(c, m, y, k)

RGBとCMYKは、異なる色空間であるため、直接的な変換はできません。 RGBからCMYKへの変換は、一般的には近似的な方法で行われます。 Typstに、RGBからCMYKへの変換メソッドはないため、自分で計算する必要があります。

CMYKからRGBに変換したい

 1#let cmyk2rgb(c, m, y, k) = {
 2  let c = c / 100
 3  let m = m / 100
 4  let y = y / 100
 5  let k = k / 100
 6
 7  let r = 255 * (1 - c) * (1 - k)
 8  let g = 255 * (1 - m) * (1 - k)
 9  let b = 255 * (1 - y) * (1 - k)
10
11    (r, g, b)
12}

CMYKからRGBへの変換も、同様に近似的な方法で行われます。 Typstに、CMYKからRGBへの変換メソッドはないため、自分で計算する必要があります。

リファレンス