ローカルで Typst 環境を整える

さっそくチュートリアルを見ながら Typst を触っていこうと思ったのだが,ちょっと動かしてみたところ,クラウドサービスの環境では日本語がショボすぎて先へ進める気にならないので,ローカルに環境を作ってしまうことにした。

【2025-02-22 追記】

前回の記事に追記して,クラウドサービスの環境で日本語フォントが指定できることを確認した。 改めてクラウドサービスの環境で使えるフォントをよく見てみたが TeX Live に収録されている TTF/OTF フォントは全て使えるようだ。 原ノ味フォントも使える。

OS にバンドルされているフォントは OS の種類やバージョンによって異なるため,複数人で異なるプラットフォームでドキュメントを作成する場合はフォントを合わせるのに苦労する。 書籍出版とかではなく文字のデザインそのものに拘りがないのなら,クラウドサービスを使った協働作業にするとか Docker 等の仮想環境を使うなど,環境の方を合わせてしまったほうがいいかもしれない。 今回は私の個人的な作業なので好き勝手絶頂にやるけど(笑)

今回の環境は以下の通り:

動作確認しておこう。

$ typst --version
typst 0.13.0 (8dce676d)

$ typst --help
Typst 0.13.0 (8dce676d)

Usage: typst [OPTIONS] <COMMAND>

Commands:
  compile  Compiles an input file into a supported output format [aliases: c]
  watch    Watches an input file and recompiles on changes [aliases: w]
  init     Initializes a new project from a template
  query    Processes an input file to extract provided metadata
  fonts    Lists all discovered fonts in system and custom font paths
  help     Print this message or the help of the given subcommand(s)

Options:
      --color <COLOR>  Whether to use color. When set to `auto` if the terminal
                       to supports it [default: auto] [possible values: auto,
                       always, never]
      --cert <CERT>    Path to a custom CA certificate to use when making
                       network requests [env: TYPST_CERT=]
  -h, --help           Print help
  -V, --version        Print version

Resources:
  Tutorial:                 https://typst.app/docs/tutorial/
  Reference documentation:  https://typst.app/docs/reference/
  Templates & Packages:     https://typst.app/universe/
  Forum for questions:      https://forum.typst.app/

おっ。 typst fonts コマンドで利用可能なフォントの一覧が出るのか。 試してみよう。

$ typst fonts | grep Computer
New Computer Modern
New Computer Modern Math

$ typst fonts | grep "CJK JP"
Noto Sans CJK JP
Noto Sans Mono CJK JP
Noto Serif CJK JP

$ typst fonts | grep Inconsolata
Inconsolata

ふむむ。 Ubuntu に最初から入ってるフォントは使えるみたいだな。 Inconsolata フォントはコードを表示するために後から入れたフォント。 これもちゃんと使えるようだ。 New Computer Modern フォントは OS には入ってない筈だけど (fc-list コマンドで確認した) Typst 側で持ってるフォントなのかな?

この状態で簡単な文章を組版してみよう。 入力文書は前回と同じ。

= アルベルト・アインシュタインについて

アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

これを sample-1.typ ファイルに保存して以下のように typst compile する2

$ typst compile sample-1.typ

組版結果は以下の通り:

組版結果 (1)

フォントは以下のようになっていた。

組版結果 (1)

FirgeNerd ? そんなもん入れたっけ? いやこれ OS に最初っから入ってたやつだな。 てか,入ってるのか。 凄いな Ubuntu 勘違い。 このフォントは自分で入れてたわ。 よく分からないが,フォントリストから日本語コードが入ってるフォントを(アルファベット順で)探して割り当てたって感じ?

Typst では #set キーワードとそれに続く関数実行により文書スタイルを設定できる。 フォントの場合は以下のように設定する。

#set text(font: "Noto Serif CJK JP")

= アルベルト・アインシュタインについて

アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

この場合の組版結果は以下の通り:

組版結果 (2)
組版結果 (2)

Typst 0.13 ではラテン文字を別のフォントに割り当てられるようになった。 こんな感じに指定するらしい。

// for main text
#set text(font: (
  (
    name: "New Computer Modern",
    covers: "latin-in-cjk",
  ),
  "Noto Serif CJK JP"
))

= アルベルト・アインシュタインについて

アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

組版結果は以下の通り:

組版結果 (3)
組版結果 (2)

パッと見では分かりにくいだろうけど,数字部分が New Computer Modern フォントに変わっている。

見出しの書体が明朝体のままなのは面白くないので,これをゴシック体に変えたい。 色々と調べてみると以下のようにするのがいいらしい。

// for main text
#set text(font: (
  (
    name: "New Computer Modern",
    covers: "latin-in-cjk",
  ),
  "Noto Serif CJK JP"
))

// for headings
#let heading_font(body) = { // heading_font 関数を定義
    set text(font: (
      (
        name: "Noto Sans",
        covers: "latin-in-cjk",
      ),
      "Noto Sans CJK JP"
    ))
    body
}
#show heading: heading_font  // heading_font を適用する

= アルベルト・アインシュタインについて

アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

まず #let キーワードを使って body のフォントを変更する heading_font 関数を定義し,次に #show キーワードを使って見出し(heading)要素の表示時の処理として heading_font 関数を適用する,という流れである。 見出し要素に直接フォントを指定できれば簡単だったろうに,それはできないみたい。

組版結果は以下の通り:

組版結果 (4)
組版結果 (4)

よしよし。

別の書き方として

// for main text
#set text(font: (
  (
    name: "New Computer Modern",
    covers: "latin-in-cjk",
  ),
  "Noto Serif CJK JP"
))

// for headings
#show heading: it => {
    set text(font: (
      (
        name: "Noto Sans",
        covers: "latin-in-cjk",
      ),
      "Noto Sans CJK JP"
    ))
	it.body
}

= アルベルト・アインシュタインについて

アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

という書き方もある。 やってることは同じ。 フォントを変更する処理を無名関数として定義しているだけである。

ところで,最近は日本語フォントとしてモリサワ BIZ UD 明朝/ゴシックがお気に入りである。 このブログの Web フォントとしても使っている。

Typst でもこれを日本語フォントとして使いたい。 また見出しで使う欧文フォントには Helvetica を使いたい。 モリサワ BIZ UD フォントは Ubuntu にはないため,手動でインストールする。

ダウンロードした TTF ファイルを /usr/local/share/fonts/ ディレクトリに入れる。 fc-cache -fv コマンドでフォントキャッシュを更新するのを忘れずに。

$ fc-cache -fv

$ fc-list | grep "BIZ UD"
/usr/local/share/fonts/BIZUDMincho-Bold.ttf: BIZ UD明朝,BIZ UDMincho:style=Bold
/usr/local/share/fonts/BIZUDPMincho-Bold.ttf: BIZ UDP明朝,BIZ UDPMincho:style=Bold
/usr/local/share/fonts/BIZUDPGothic-Regular.ttf: BIZ UDPゴシック,BIZ UDPGothic:style=Regular
/usr/local/share/fonts/BIZUDPGothic-Bold.ttf: BIZ UDPゴシック,BIZ UDPGothic:style=Bold
/usr/local/share/fonts/BIZUDPMincho-Regular.ttf: BIZ UDP明朝,BIZ UDPMincho:style=Regular
/usr/local/share/fonts/BIZUDMincho-Regular.ttf: BIZ UD明朝,BIZ UDMincho:style=Regular
/usr/local/share/fonts/BIZUDGothic-Bold.ttf: BIZ UDゴシック,BIZ UDGothic:style=Bold
/usr/local/share/fonts/BIZUDGothic-Regular.ttf: BIZ UDゴシック,BIZ UDGothic:style=Regular

Ubuntu では Helvetica の代替として Liberation Sans が最初から入っているのでこれを使う3

これでフォント指定の最終形を以下とする。

// for main text
#set text(font: (
  (
    name: "New Computer Modern",
    covers: "latin-in-cjk",
  ),
  "BIZ UDMincho"
))

// for headings
#show heading: it => {
    set text(font: (
      (
        name: "Liberation Sans",
        covers: "latin-in-cjk",
      ),
      "BIZ UDGothic"
    ))
	it.body
}

= Albert Einsteinについて

Albert Einsteinは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。

フォント指定の効果を確認するために人名部分を英字に置き換えてみた。

組版結果は以下の通り:

組版結果 (5)
組版結果 (5)

んー。 やっぱモリサワ BIZ UD フォントは見やすくていいねぇ。

というわけで,ローカルマシンへの環境構築と日本語フォントの指定について試してみた。 フォント指定は要素ごとに指定する必要があり,ちょっと面倒くさい感じだな。 数式やコードなどのフォント指定については後日ということで。

ブックマーク

参考文献

photo
Typst完全入門: LaTeXより簡単、Markdownより強力、美しいドキュメント作成術
doitsu (著)
2024-12-08 (Release 2024-12-08)
Kindle版
B0DPXBNTRS (ASIN)
評価     

マークアップ言語および組版ツールである Typst についての解説。 Kindle 版のみの提供。固定レイアウトではないためレイアウトが崩れまくって読みにくい。この手の技術解説書は固定レイアウトの Kindle 版か,いっそ PDF で出してほしい。でも Typst についてまとまった解説のある日本語の本は他に見当たらなかったのでありがたい。

reviewed by Spiegel on 2025-02-20 (powered by PA-APIv5)

photo
[改訂第9版]LaTeX美文書作成入門
奥村 晴彦 (著), 黒木 裕介 (著)
技術評論社 2023-12-09 (Release 2023-12-09)
単行本(ソフトカバー)
4297138891 (ASIN), 9784297138899 (EAN), 4297138891 (ISBN)
評価     

2023年末に出てるのに気が付かなかった orz 今回は版元で PDF 版を買った。

reviewed by Spiegel on 2024-04-07 (powered by PA-APIv5)


  1. ググってみると VS Code 用の拡張機能として Typst LSP を紹介しているところが多かったが,2025-02-21 現在では Typst LSP はなくなっていて Tinymist Typst に統合されているらしい。 ↩︎

  2. VS Code 用の拡張機能 Tinymist Typst を導入している場合はコマンドパレットから “Typst: Exports the Opened File as PDF” を起動することで typst compile できる。 ↩︎

  3. Windows では Helvetica の代替として Arial フォントがよく使われる。 ↩︎