drawlib.fonts(タイポグラフィと多言語フォント)
多言語・技術図解向けフォント列挙体(Font, FontSansSerif, FontSerif, FontMonoSpace, FontRoboto, FontSourceCode、および地域言語スクリプト群)と外部フォントファイルローダー(FontFile)を提供します。from drawlib.fonts import Font, FontFile, FontMonoSpace, FontRoboto, FontSansSerif, FontSerif をインポートし、Style.text_font や BaseStyles.patch_font() に指定して使用します。
Source Code
from drawlib.canvas import save, setup
from drawlib.fonts import Font, FontMonoSpace, FontRoboto, FontSansSerif, FontSerif
from drawlib.icons import phosphor
from drawlib.shapes import rectangle
from drawlib.styles import Colors, Styles
from drawlib.text import text
setup(width=120, height=58)
phosphor.text_aa((27.0, 52.2), width=4.2, style=Styles.PrimaryBold)
text(
(30.8, 52.2),
"Multilingual & Technical Typography (drawlib.fonts)",
style=Styles.DarkBold.patch(text_size=12.0, halign="left"),
)
# Card 1 (Top-Left, Focal Hero): Universal CJK + Latin (Font)
rectangle((31.5, 37.0), width=53, height=18.5, style=Styles.PrimaryFlat.patch(shape_r=2.0))
text(
(31.5, 40.5),
"Font (Universal CJK + Latin)",
style=Styles.WhiteBold.patch(text_font=Font.SANSSERIF_BOLD, text_size=11.2),
)
text(
(31.5, 33.2),
"System Architecture / 図解・日本語",
style=Styles.White.patch(text_font=Font.SANSSERIF_REGULAR, text_size=10.5),
)
# Card 2 (Top-Right, Neutral): Western Sans-Serif (FontRoboto / FontSansSerif)
rectangle((88.5, 37.0), width=53, height=18.5, style=Styles.Neutral.patch(shape_r=2.0))
text(
(88.5, 40.5),
"FontRoboto & FontSansSerif",
style=Styles.DarkBold.patch(text_font=FontRoboto.ROBOTO_BOLD, text_size=11.2),
)
text(
(88.5, 33.2),
"Geometric UI · Thin / Regular / Bold",
style=Styles.Dark.patch(text_font=FontSansSerif.POPPINS_REGULAR, text_size=10.2),
)
# Card 3 (Bottom-Left, PrimaryNeutral): Editorial Serif (FontSerif)
rectangle((31.5, 14.5), width=53, height=18.5, style=Styles.PrimaryNeutral.patch(shape_r=2.0))
text(
(31.5, 18.0),
"FontSerif (Merriweather & Platypi)",
style=Styles.DarkBold.patch(text_font=FontSerif.MERRIWEATHER_BOLD, text_size=10.8),
)
text(
(31.5, 10.8),
"Editorial Reports & Whitepapers",
style=Styles.Dark.patch(text_font=FontSerif.MERRIWEATHER_REGULAR, text_size=10.2),
)
# Card 4 (Bottom-Right, SecondaryNeutral): Technical Monospace (FontMonoSpace)
rectangle((88.5, 14.5), width=53, height=18.5, style=Styles.SecondaryNeutral.patch(shape_r=2.0))
text(
(88.5, 18.0),
"FontMonoSpace & FontSourceCode",
style=Styles.DarkBold.patch(text_font=FontMonoSpace.SOURCECODEPRO_BOLD, text_size=10.5),
)
text(
(88.5, 10.8),
"POST /v1/nodes -> 10.0.4.12:8080",
style=Styles.PrimaryBold.patch(text_font=FontMonoSpace.ROBOTO_MONO_REGULAR, text_size=10.0),
)
save()
enumFontBase#
drawlib.fonts 内の全 12 種類の組み込みフォント列挙体が継承する抽象 StrEnum 基底クラスです(drawlib.types からも再エクスポート)。フォントバイナリは初回描画時にオンデマンドで取得・ローカルキャッシュされ、drawlib cache list や drawlib cache download --all で管理できます。
from drawlib.fonts import Font, FontBase
from drawlib.styles import Styles
assert isinstance(Font.SANSSERIF_REGULAR, FontBase)
label_style = Styles.Dark.patch(text_font=Font.SANSSERIF_BOLD, text_size=12.0)
| 項目 | 仕様 |
|---|---|
| 継承関係 | enum.StrEnum(直接の列挙メンバなし。Font, FontSansSerif, FontSerif, FontMonoSpace, FontRoboto, FontSourceCode, FontJapanese, FontChinese, FontKorean, FontArabic, FontThai, FontBrahmic の親クラス)。 |
| 主な用途 | Style.text_font(FontBase | FontFile | None)および BaseStyles.patch_font() の共通型指定。 |
classFontFile#
ローカルファイルシステム上の TrueType(.ttf)または OpenType(.otf)フォントファイルを読み込む Pydantic モデル(drawlib.fonts.FontFile)です。インスタンス生成時にファイルの存在確認バリデーションが行われます。
from drawlib.fonts import FontFile
from drawlib.styles import Styles
from drawlib.text import text
brand_font = FontFile("_assets/fonts/Inter-SemiBold.ttf")
text((60, 30), "Custom Brand Header", style=Styles.Dark.patch(text_font=brand_font, text_size=14.0))
| 引数 / 属性 | 型 | デフォルト | 説明 |
|---|---|---|---|
file |
str | Path |
必須 | 実在する .ttf または .otf フォントファイルへのパス(未存在時はバリデーションエラー)。 |
enumFont#
Noto Sans CJK / Noto Serif CJK をベースとする標準ユニバーサルフォント列挙体(drawlib.fonts.Font、全 6 メンバ)です。欧文(ラテン文字)・日本語(漢字・かな)・中国語・韓国語を単一フォントで同時に描画でき、Font.SANSSERIF_REGULAR が Drawlib 全体の既定フォントとして使用されます。
from drawlib.fonts import Font
from drawlib.styles import Styles
title_style = Styles.DarkBold.patch(text_font=Font.SANSSERIF_BOLD, text_size=13.0)
serif_style = Styles.Dark.patch(text_font=Font.SERIF_REGULAR, text_size=11.5)
列挙メンバ(Thin / Regular / Bold) |
書体ファミリ | キャッシュパッケージ名 |
|---|---|---|
SANSSERIF_THIN, SANSSERIF_REGULAR, SANSSERIF_BOLD |
Noto Sans CJK JP(標準ゴシック・既定) | font_cjk_japanese_noto_sans |
SERIF_THIN, SERIF_REGULAR, SERIF_BOLD |
Noto Serif CJK JP(明朝・セリフ) | font_cjk_japanese_noto_serif |
enumFontSansSerif#
欧文プレゼンテーション・UI デザイン向けのサンセリフ体フォント列挙体(drawlib.fonts.FontSansSerif、5 書体 × 3 ウェイト=全 15 メンバ)です。
from drawlib.fonts import FontSansSerif
from drawlib.styles import Styles
heading = Styles.DarkBold.patch(text_font=FontSansSerif.MONTSERRAT_BOLD, text_size=13.5)
| 書体名 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Lato | LATO_THIN, LATO_REGULAR, LATO_BOLD |
font_sans_lato |
| Montserrat | MONTSERRAT_THIN, MONTSERRAT_REGULAR, MONTSERRAT_BOLD |
font_sans_monstserrat |
| Oswald | OSWALD_THIN, OSWALD_REGULAR, OSWALD_BOLD |
font_sans_oswald |
| Poppins | POPPINS_THIN, POPPINS_REGULAR, POPPINS_BOLD |
font_sans_poppins |
| Raleway | RALEWAYS_THIN, RALEWAYS_REGULAR, RALEWAYS_BOLD |
font_sans_raleways |
enumFontSerif#
ホワイトペーパー・報告書・出版物向けの欧文セリフ体フォント列挙体(drawlib.fonts.FontSerif、全 10 メンバ)です。
from drawlib.fonts import FontSerif
from drawlib.styles import Styles
editorial = Styles.Dark.patch(text_font=FontSerif.MERRIWEATHER_REGULAR, text_size=11.5)
| 書体名 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Courier | COURIER_REGULAR, COURIER_BOLD |
font_mono_courier |
| Merriweather | MERRIWEATHER_THIN, MERRIWEATHER_REGULAR, MERRIWEATHER_BOLD |
font_serif_merriweather |
| Platypi | PLATYPI_THIN, PLATYPI_REGULAR, PLATYPI_BOLD |
font_serif_platypi |
| Playfair Display | PLAYFAIRDISPLAY_REGULAR, PLAYFAIRDISPLAY_BOLD |
font_serif_playfairdisplay |
enumFontMonoSpace#
IP アドレス・ポート番号・CLI オプション・REST エンドポイント・型定義などの技術表記に適した等幅フォント列挙体(drawlib.fonts.FontMonoSpace、全 11 メンバ)です。
from drawlib.fonts import FontMonoSpace
from drawlib.styles import Styles
endpoint_style = Styles.PrimaryBold.patch(
text_font=FontMonoSpace.SOURCECODEPRO_BOLD,
text_size=11.0,
)
| 書体名 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Roboto Mono | ROBOTO_MONO_THIN, ROBOTO_MONO_REGULAR, ROBOTO_MONO_BOLD |
font_roboto_mono |
| Courier | COURIER_REGULAR, COURIER_BOLD |
font_mono_courier |
| Source Code Pro | SOURCECODEPRO_THIN, SOURCECODEPRO_REGULAR, SOURCECODEPRO_BOLD |
font_mono_source_code_pro |
| Source Han Code JP | SOURCEHANCODEJP_THIN, SOURCEHANCODEJP_REGULAR, SOURCEHANCODEJP_BOLD(日本語対応等幅フォント) |
font_mono_source_han_code_jp |
enumFontRoboto#
Google Roboto スーパーファミリ全体を網羅するフォント列挙体(drawlib.fonts.FontRoboto、短縮エイリアス THIN, REGULAR, BOLD を含む全 18 メンバ名)です。
from drawlib.fonts import FontRoboto
from drawlib.preset_styles import GoogleStyles
Styles = GoogleStyles().patch_font(
FontRoboto.ROBOTO_REGULAR,
bold=FontRoboto.ROBOTO_BOLD,
thin=FontRoboto.ROBOTO_THIN,
)
| サブファミリ | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Roboto Sans | ROBOTO_THIN, ROBOTO_REGULAR, ROBOTO_BOLD(エイリアス: THIN, REGULAR, BOLD) |
font_roboto |
| Roboto Serif | SERIF_THIN, SERIF_REGULAR, SERIF_BOLD |
font_roboto_serif |
| Roboto Mono | MONO_THIN, MONO_REGULAR, MONO_BOLD |
font_roboto_mono |
| Roboto Condensed | CONDENSED_THIN, CONDENSED_REGULAR, CONDENSED_BOLD |
font_roboto_condensed |
| Roboto Slab | SLAB_THIN, SLAB_REGULAR, SLAB_BOLD |
font_roboto_slab |
enumFontSourceCode#
SourceCode SmartArt コンポーネントおよび BaseStyles.sourcecode_font 専用のソースコード用等幅フォントセレクタ列挙体(drawlib.fonts.FontSourceCode、全 4 メンバ)です。シンタックスハイライト描画時に通常・太字・斜体ウェイトを自動解決します。
from drawlib.fonts import FontSourceCode
from drawlib.preset_styles import DefaultStyles
Styles = DefaultStyles().patch_font(sourcecode=FontSourceCode.SOURCEHANCODEJP)
| 列挙メンバ | 書体 | 主な用途 |
|---|---|---|
ROBOTO_MONO |
Roboto Mono | モダンな欧文ソースコードスニペット。 |
COURIER |
Courier | クラシカルなターミナル出力やタイプライター表現。 |
SOURCECODEPRO |
Adobe Source Code Pro | BaseStyles.sourcecode_font の既定値(高い視認性のコードカード)。 |
SOURCEHANCODEJP |
Adobe 源ノ角ゴシック Code JP | 日本語コメントや日本語文字列を含むソースコード描画。 |
enumFontJapanese#
日本語ドキュメント・スライド向けの専用書体列挙体(drawlib.fonts.FontJapanese、全 14 メンバ)です。角ゴシック・明朝・丸ゴシックの各書体を収録しています。
from drawlib.fonts import FontJapanese
from drawlib.styles import Styles
ja_rounded = Styles.DarkBold.patch(text_font=FontJapanese.MPLUSROUNDED1C_BOLD, text_size=12.0)
| 書体名 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Noto Sans JP | SANSSERIF_THIN, SANSSERIF_REGULAR, SANSSERIF_BOLD |
font_japanese_noto_sans |
| Noto Serif JP | SERIF_THIN, SERIF_REGULAR, SERIF_BOLD |
font_japanese_noto_serif |
| M PLUS 1p | MPLUS1P_THIN, MPLUS1P_REGULAR, MPLUS1P_BOLD |
font_japanese_mplus_1p |
| M PLUS Rounded 1c | MPLUSROUNDED1C_THIN, MPLUSROUNDED1C_REGULAR, MPLUSROUNDED1C_BOLD |
font_japanese_mplus_rounded1c |
| さわらび書体 | SAWARABI_GOTHIC, SAWARABI_MINCHO |
font_japanese_sawarabi_gothic / mincho |
enumFontChinese#
簡体字(SC)・繁体字台湾(TC)・香港字形(HK)のサンセリフ体およびセリフ体を網羅する中国語フォント列挙体(drawlib.fonts.FontChinese、全 18 メンバ)です。
from drawlib.fonts import FontChinese
from drawlib.styles import Styles
zh_sans = Styles.DarkBold.patch(text_font=FontChinese.SIMPLIFIED_SANSSERIF_BOLD, text_size=12.0)
| 字形規格 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
簡体字(SC) |
SIMPLIFIED_SANSSERIF_THIN, SIMPLIFIED_SANSSERIF_REGULAR, SIMPLIFIED_SANSSERIF_BOLD, SIMPLIFIED_SERIF_THIN, SIMPLIFIED_SERIF_REGULAR, SIMPLIFIED_SERIF_BOLD |
font_chinese_simplified_noto_sans / serif |
繁体字(TC) |
TRADITIONAL_SANSSERIF_THIN, TRADITIONAL_SANSSERIF_REGULAR, TRADITIONAL_SANSSERIF_BOLD, TRADITIONAL_SERIF_THIN, TRADITIONAL_SERIF_REGULAR, TRADITIONAL_SERIF_BOLD |
font_chinese_traditional_noto_sans / serif |
香港繁体字(HK) |
HONGKONG_SANSSERIF_THIN, HONGKONG_SANSSERIF_REGULAR, HONGKONG_SANSSERIF_BOLD, HONGKONG_SERIF_THIN, HONGKONG_SERIF_REGULAR, HONGKONG_SERIF_BOLD |
font_chinese_hongkong_noto_sans / serif |
enumFontKorean#
Noto Sans KR および Noto Serif KR をベースとする韓国語(ハングル・漢字)フォント列挙体(drawlib.fonts.FontKorean、全 6 メンバ)です。
from drawlib.fonts import FontKorean
from drawlib.styles import Styles
ko_bold = Styles.DarkBold.patch(text_font=FontKorean.SANSSERIF_BOLD, text_size=12.0)
| スタイル | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| サンセリフ(ゴシック) | SANSSERIF_THIN, SANSSERIF_REGULAR, SANSSERIF_BOLD |
font_korean_noto_sans |
| セリフ(明朝) | SERIF_THIN, SERIF_REGULAR, SERIF_BOLD |
font_korean_noto_serif |
enumFontArabic#
Sans・Kufi・Naskh の 3 書体を収録したアラビア文字フォント列挙体(drawlib.fonts.FontArabic、全 8 メンバ)です。
from drawlib.fonts import FontArabic
from drawlib.styles import Styles
ar_kufi = Styles.DarkBold.patch(text_font=FontArabic.KUFI_BOLD, text_size=12.0)
| 書体名 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| Noto Sans Arabic | SANSSERIF_THIN, SANSSERIF_REGULAR, SANSSERIF_BOLD |
font_arabic_noto_sans |
| Noto Kufi Arabic | KUFI_THIN, KUFI_REGULAR, KUFI_BOLD |
font_arabic_noto_kufi |
| Noto Naskh Arabic | NASKH_REGULAR, NASKH_BOLD |
font_arabic_noto_naskh |
enumFontThai#
Noto Sans Thai および Noto Serif Thai をベースとするタイ文字フォント列挙体(drawlib.fonts.FontThai、全 6 メンバ)です。
from drawlib.fonts import FontThai
from drawlib.styles import Styles
th_sans = Styles.Dark.patch(text_font=FontThai.SANSSERIF_REGULAR, text_size=12.0)
| スタイル | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| サンセリフ | SANSSERIF_THIN, SANSSERIF_REGULAR, SANSSERIF_BOLD |
font_thai_noto_sans |
| セリフ | SERIF_THIN, SERIF_REGULAR, SERIF_BOLD |
font_thai_noto_serif |
enumFontBrahmic#
ベンガル文字・デーヴァナーガリー文字・タミル文字・テルグ文字の 4 言語 × サンセリフ/セリフ体を収録するブラーフミー系インド諸言語フォント列挙体(drawlib.fonts.FontBrahmic、全 24 メンバ)です。
from drawlib.fonts import FontBrahmic
from drawlib.styles import Styles
hi_bold = Styles.DarkBold.patch(text_font=FontBrahmic.DEVANAGARI_SANSSERIF_BOLD, text_size=12.0)
| 文字体系 | 列挙メンバ | キャッシュパッケージ名 |
|---|---|---|
| ベンガル文字 | BENGALI_SANSSERIF_THIN, BENGALI_SANSSERIF_REGULAR, BENGALI_SANSSERIF_BOLD, BENGALI_SERIF_THIN, BENGALI_SERIF_REGULAR, BENGALI_SERIF_BOLD |
font_brahmic_bengali_noto_sans / serif |
| デーヴァナーガリー | DEVANAGARI_SANSSERIF_THIN, DEVANAGARI_SANSSERIF_REGULAR, DEVANAGARI_SANSSERIF_BOLD, DEVANAGARI_SERIF_THIN, DEVANAGARI_SERIF_REGULAR, DEVANAGARI_SERIF_BOLD |
font_brahmic_devanagari_noto_sans / serif |
| タミル文字 | TAMIL_SANSSERIF_THIN, TAMIL_SANSSERIF_REGULAR, TAMIL_SANSSERIF_BOLD, TAMIL_SERIF_THIN, TAMIL_SERIF_REGULAR, TAMIL_SERIF_BOLD |
font_brahmic_tamil_noto_sans / serif |
| テルグ文字 | TELUGU_SANSSERIF_THIN, TELUGU_SANSSERIF_REGULAR, TELUGU_SANSSERIF_BOLD, TELUGU_SERIF_THIN, TELUGU_SERIF_REGULAR, TELUGU_SERIF_BOLD |
font_brahmic_telugu_noto_sans / serif |