【Asciidoc】ダイアグラム ー PlantUMLのSkinparam ー
今回は「PlantUML」の「Skinparam」について
PDFに反映するため「PDFテンプレート」を利用します。
自分はこの方法を利用して
「PlantUML」をPDF変換する時の「SVG」文字化けを防いでいます。
取り敢えず、私の記事「【Asciidoc】PDFに変換する ー テンプレートを作る(後半) ー」のテンプレートを改造します。
extends: default-with-font-fallbacks
font:
catalog:
merge: true
ZenGothic:
normal: ZenKakuGothicNew-Regular.ttf
bold: ZenKakuGothicNew-Bold.ttf
italic: ZenMaruGothic-Regular.ttf
bold_italic: ZenMaruGothic-Bold.ttf
ZenMincho:
normal: ZenOldMincho-Regular.ttf
bold: ZenOldMincho-Bold.ttf
italic: ZenKurenaido-Regular.ttf
bold_italic: HenKurenaido-Bold.ttf
PlemolJP:
normal: PlemolJPConsoleNF-Regular.ttf
bold: PlemolJPConsoleNF-Bold.ttf
italic: PlemolJPConsoleNF-Italic.ttf
bold_italic: PlemolJPConsoleNF-BoldItalic.ttf
# 下記を追加します
ZenMaruGothic:
normal: ZenMaruGothic-Regular.ttf
bold: ZenMaruGothic-Bold.ttf
italic: ZenMaruGothic-Regular.ttf
bold_italic: ZenMaruGothic-Bold.ttf
丸ゴシックのフォントカタログを追加しました。
「Asciidoc」ファイルのヘッダは
= PlantUML skinparam
:doctype: article
:encoding: utf-8
:lang: ja
:scripts: cjk
:pdf-theme: ./themes/my-theme.yml
:pdf-fontsdir: ./fonts;GEM_FONTS_DIR
のようにテンプレートを読み込み利用する属性を設定します。
まず、フォントを利用してみましょう。
「【Asciidoc】ダイアグラム ー クラスとコードと ー」で作成したダイアグラムを変更します。
[plantuml,para1,svg]
--
@startuml
skinparam defaultFontName ZenMaruGothic
actor 夏目漱石
夏目漱石 -> (猫 初期化) : 作成
夏目漱石 -> (猫 名前) : 付ける
夏目漱石 -> (猫 描写) : 表示する
@enduml
--
[plantuml,para2,svg]
--
@startuml
skinparam defaultFontName ZenMincho
actor ダニエルデフォー
ダニエルデフォー -> (人間 初期化) : 作成
ダニエルデフォー -> (ロビンソン・クルーソー 名前) : 付ける
ダニエルデフォー -> (人間 描写) : 表示する
@enduml
--
「skinparam defaultFontName」でPDFテンプレートのフォントカタログ名を指定します。
変換すると
指定されたフォントが利用されているのを見て取れます。
次に「skinparam monochrome true」を指定します。
白黒印刷が多いので自分は多用しています。
[plantuml,para3,svg]
--
@startuml
skinparam defaultFontName ZenMaruGothic
class 動物 {
-種族: String
-名前: String
+Set種族(種族: String): void
+Set名前(名前: String): void
+Show描写(): void
}
作家 -> 動物 : 作成(初期化)
作家 -> 動物 : Set種族(種族名)
作家 -> 動物 : Set名前(氏名)
作家 -> 動物 : Show描写()
@enduml
--
[plantuml,para5,svg]
--
@startuml
skinparam defaultFontName ZenMaruGothic
skinparam monochrome true
class 動物 {
-種族: String
-名前: String
+Set種族(種族: String): void
+Set名前(名前: String): void
+Show描写(): void
}
作家 -> 動物 : 作成(初期化)
作家 -> 動物 : Set種族(種族名)
作家 -> 動物 : Set名前(氏名)
作家 -> 動物 : Show描写()
@enduml
--
変換すると
「クラス」の「C」及び「イベント」の「箇条書きマーク」が「白黒」になっていることが見て取れます。
さて、今回は「PlantUML」の「Skinparam」を利用してフォント利用等カスタマイズしてみました。「Asciidoc-PDF」のテンプレートとセットで利用するため、「PlantUML」単体で利用する場合と比べるとフォントの指定方法が少し違います。(ご注意を。)
下記「PlantUML」の公式ページ
にて「Skinparam」の説明がされているので興味の在る方はご一読を。
…ではまた。
当Noteは下記の「AsciiDoc Language Documentation」の文法に従っています。