1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
コピーして貼るか、ファイルに保存して渡す。ネットにつながらない環境には「全部入り」を 1 つ渡せば足りる。
このパネルの中身を、URL の先にあるファイルの中身まで含めて 1 つにまとめた Markdown — 大きいのでファイルで渡す(コピーは 32KB まで)
以下の仕様でスライドを 1 枚作ってください。 - 版面 1920 × 1080 - 余白 上 96 右 140 下 96 左 140 - 2 カラム(等分)、間隔 96 ## 文字(版面 1920px に対する px) kicker 20px / 500 / 字間 0.16em name 64px / 700 / 字間 0.06em / 行送り 1.2 reading 22px / 400 / 字間 0.12em role 26px / 500 / 行送り 1.6 year 22px / 500 / 等幅数字 what 24px / 400 / 行送り 1.6 todayLabel 20px / 700 todayText 22px / 400 / 行送り 1.7 folio 16px / 400 / 等幅数字 ## 配色 地 #FFFFFF / 面 #F4F6F9 / 文字 #131820 / 補助 #667183 / 強調 #1F5FA8 / 罫 #DBE1E9 ## 外すと崩れる点 - 経歴は 3 行まで。今日の話に関係する年だけを選ぶ。履歴書にすると、聞き手は話す資格ではなく人生を読み始める - 顔写真の枠は 4:5 で、目の高さを上から 1/3 に置く。写真が無いうちは図形で比率と切り抜き位置だけを示し、人物の絵は描かない - 名前の下に読みを添える。初めて聞く名前を、説明の間ずっと読み違えさせない - 最後に「今日話すこと」を 1 行置き、紹介を本題につなぐ 内容は[ここに自分の内容を書く]に置き換えてください。寸法と配色はそのまま守ってください。 正確に再現する場合は、この HTML をそのまま使ってください: https://design-vault.pages.dev/designs/speaker-profile-portrait/pattern.html
/ai/designs/speaker-profile-portrait.json
format: slide-16x9
density: medium
layout:
kind: 2-column
canvas:
w: 1920
h: 1080
margin:
top: 96
right: 140
bottom: 96
left: 140
columns:
count: 2
gap: 96
type:
kicker:
size: 20
weight: 500
tracking: 0.16em
name:
size: 64
weight: 700
tracking: 0.06em
leading: 1.2
reading:
size: 22
weight: 400
tracking: 0.12em
role:
size: 26
weight: 500
leading: 1.6
year:
size: 22
weight: 500
numeric: tabular
what:
size: 24
weight: 400
leading: 1.6
todayLabel:
size: 20
weight: 700
todayText:
size: 22
weight: 400
leading: 1.7
folio:
size: 16
weight: 400
numeric: tabular
colors:
ground: "#FFFFFF"
surface: "#F4F6F9"
ink: "#131820"
muted: "#667183"
accent: "#1F5FA8"
rule: "#DBE1E9"
rules:
- 経歴は 3 行まで。今日の話に関係する年だけを選ぶ。履歴書にすると、聞き手は話す資格ではなく人生を読み始める
- 顔写真の枠は 4:5 で、目の高さを上から 1/3 に置く。写真が無いうちは図形で比率と切り抜き位置だけを示し、人物の絵は描かない
- 名前の下に読みを添える。初めて聞く名前を、説明の間ずっと読み違えさせない
- 最後に「今日話すこと」を 1 行置き、紹介を本題につなぐ{
"format": "slide-16x9",
"density": "medium",
"layout": {
"kind": "2-column",
"canvas": {
"w": 1920,
"h": 1080
},
"margin": {
"top": 96,
"right": 140,
"bottom": 96,
"left": 140
},
"columns": {
"count": 2,
"gap": 96
}
},
"type": {
"kicker": {
"size": 20,
"weight": 500,
"tracking": "0.16em"
},
"name": {
"size": 64,
"weight": 700,
"tracking": "0.06em",
"leading": 1.2
},
"reading": {
"size": 22,
"weight": 400,
"tracking": "0.12em"
},
"role": {
"size": 26,
"weight": 500,
"leading": 1.6
},
"year": {
"size": 22,
"weight": 500,
"numeric": "tabular"
},
"what": {
"size": 24,
"weight": 400,
"leading": 1.6
},
"todayLabel": {
"size": 20,
"weight": 700
},
"todayText": {
"size": 22,
"weight": 400,
"leading": 1.7
},
"folio": {
"size": 16,
"weight": 400,
"numeric": "tabular"
}
},
"colors": {
"ground": "#FFFFFF",
"surface": "#F4F6F9",
"ink": "#131820",
"muted": "#667183",
"accent": "#1F5FA8",
"rule": "#DBE1E9"
},
"rules": [
"経歴は 3 行まで。今日の話に関係する年だけを選ぶ。履歴書にすると、聞き手は話す資格ではなく人生を読み始める",
"顔写真の枠は 4:5 で、目の高さを上から 1/3 に置く。写真が無いうちは図形で比率と切り抜き位置だけを示し、人物の絵は描かない",
"名前の下に読みを添える。初めて聞く名前を、説明の間ずっと読み違えさせない",
"最後に「今日話すこと」を 1 行置き、紹介を本題につなぐ"
]
} /designs/speaker-profile-portrait/pattern.html — 版そのものの HTML。書体の部分集合ごと同梱で、開けばこの絵がそのまま出ます。
<!doctype html>
<meta charset="utf-8">
<title>登壇者紹介 — 顔写真の枠と、話す資格になる経歴だけ</title>
<meta name="dv-font" content="Zen Kaku Gothic New:400;500;700">
<link rel="stylesheet" href="./font.css">
<style>
/* この版そのもの。index.md の layout / type / colors は、この HTML を
scripts/render-pattern.mjs で実測した結果であって、別に書いた説明ではない。 */
:root {
--ground: #FFFFFF;
--surface: #F4F6F9;
--ink: #131820;
--muted: #667183;
--accent: #1F5FA8;
--rule: #DBE1E9;
/* 写真の差し替え枠。人物の写真は置かず、比率と切り抜き位置だけを図形で示す */
--frame-shade: color-mix(in srgb, var(--accent) 14%, var(--surface));
--frame-figure: color-mix(in srgb, var(--accent) 32%, var(--surface));
}
* { box-sizing: border-box; margin: 0; }
html, body { width: 1920px; height: 1080px; }
body { font-family: "Zen Kaku Gothic New", "IPAGothic", sans-serif; }
.artboard {
width: 1920px; height: 1080px;
background: var(--ground); color: var(--ink);
padding: 96px 140px; /* → layout.margin */
}
.content { height: 100%; display: grid; grid-template-rows: 1fr auto; row-gap: 40px; }
.body { display: grid; grid-template-columns: 600px 1fr; column-gap: 96px; align-items: center; }
/* 4:5。顔は上から 1/3 の線に目が来るよう、頭の円を上寄せに置く */
.portrait { width: 600px; height: 750px; background: var(--frame-shade); position: relative; overflow: hidden; }
.portrait svg { position: absolute; inset: 0; }
.kicker { font-size: 20px; font-weight: 500; letter-spacing: .16em; color: var(--accent); }
.name { font-size: 64px; font-weight: 700; letter-spacing: .06em; margin-top: 20px; line-height: 1.2; }
.reading { font-size: 22px; font-weight: 400; letter-spacing: .12em; color: var(--muted); margin-top: 8px; }
.role { font-size: 26px; font-weight: 500; margin-top: 28px; line-height: 1.6; }
.career { margin-top: 48px; border-top: 1px solid var(--rule); }
.item { display: grid; grid-template-columns: 140px 1fr; column-gap: 32px; padding: 20px 0; border-bottom: 1px solid var(--rule); }
.year { font-size: 22px; font-weight: 500; font-variant-numeric: tabular-nums; color: var(--muted); }
.what { font-size: 24px; font-weight: 400; line-height: 1.6; }
.what b { font-weight: 700; }
.today { margin-top: 40px; display: flex; gap: 16px; align-items: baseline; }
.todayLabel { font-size: 20px; font-weight: 700; color: var(--accent); white-space: nowrap; }
.todayText { font-size: 22px; font-weight: 400; line-height: 1.7; }
.folio { display: flex; justify-content: space-between; border-top: 1px solid var(--rule); padding-top: 20px;
font-size: 16px; font-weight: 400; color: var(--muted); font-variant-numeric: tabular-nums; }
</style>
<div class="artboard" data-artboard>
<div class="content" data-content>
<div class="body">
<div class="portrait" data-col="1">
<svg width="600" height="750" viewBox="0 0 600 750" aria-hidden="true">
<circle cx="300" cy="290" r="128" fill="var(--frame-figure)"/>
<path d="M60 750 C 60 560, 170 470, 300 470 C 430 470, 540 560, 540 750 Z" fill="var(--frame-figure)"/>
</svg>
</div>
<div data-col="2">
<p class="kicker" data-type="kicker">本日の説明者</p>
<h1 class="name" data-type="name">佐伯 美和</h1>
<p class="reading" data-type="reading">さえき みわ</p>
<p class="role" data-type="role">カスタマーサポート部 部長/問い合わせ窓口一本化の責任者</p>
<div class="career">
<div class="item">
<p class="year" data-type="year">2014</p>
<p class="what" data-type="what">入社。法人向け製品の電話窓口を 4 年担当</p>
</div>
<div class="item">
<p class="year">2019</p>
<p class="what">問い合わせ管理の仕組みを刷新。<b>一次回答の時間を 3 割短縮</b></p>
</div>
<div class="item">
<p class="year">2025</p>
<p class="what">現職。4 つに分かれた窓口の統合計画を立ち上げる</p>
</div>
</div>
<div class="today">
<p class="todayLabel" data-type="todayLabel">今日話すこと</p>
<p class="todayText" data-type="todayText">なぜ窓口を 1 つにするのか、来月から何が変わるのか</p>
</div>
</div>
</div>
<div class="folio" data-type="folio"><span>問い合わせ窓口の一本化 / 社内説明会</span><span>01 / 10</span></div>
</div>
</div>
/designs/speaker-profile-portrait/font.css — 全部入りには入れていない
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
* font Zen Kaku Gothic New 400;500;700
* chars 119 (4dfd68cac8f54589)
*
* pattern.html の文字だけを含む部分集合。描画時に外部へ取りに行かないよう同梱する。
* 版の文字を変えたら取り直すこと — 忘れると足りない字が豆腐になる。
* その取り忘れは pattern-entries.test.ts が上の指紋で検出する。
*/
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 400;
font-display: block;
src: url(./font-0.woff2) format('woff2');
unicode-range: U+20, U+2f-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-304e, U+3051-3056, U+3059-305c, U+305f-3062, U+3064-3065, U+3068-306b, U+306e, U+307f, U+3089, U+308b-308c, U+308f, U+3092, U+3099-309a, U+30ab-30ac, U+30b5-30b6, U+30b9-30ba, U+30bf-30c0, U+30c8-30c9, U+30db-30de, U+30fc, U+4e00, U+4e0a, U+4eba, U+4eca-4ecb, U+4ed5, U+4efb, U+4f1a, U+4f2f, U+4f50, U+4f55, U+5165, U+5185, U+5199, U+5206, U+5237, U+5272, U+5316, U+53e3, U+5408, U+5411, U+548c, U+54c1, U+554f, U+56de, U+58c7, U+5909, U+5e74, U+5f53, U+62c5, U+65b0, U+65e5, U+660e, U+6642, U+6708, U+672c, U+6765, U+67a0, U+683c, U+6b21, U+6b74, U+6cd5, U+73fe, U+7406, U+753b, U+767b, U+771f, U+77ed, U+793e, U+7a93, U+7acb, U+7b54, U+7ba1, U+7d39, U+7d44, U+7d4c, U+7d71, U+7e2e, U+7f8e, U+8005, U+8077, U+88fd, U+8a08, U+8a71, U+8aac, U+8cac, U+8cc7, U+90e8, U+9577, U+9593, U+96fb, U+9854, U+ff0f;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 500;
font-display: block;
src: url(./font-1.woff2) format('woff2');
unicode-range: U+20, U+2f-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-304e, U+3051-3056, U+3059-305c, U+305f-3062, U+3064-3065, U+3068-306b, U+306e, U+307f, U+3089, U+308b-308c, U+308f, U+3092, U+3099-309a, U+30ab-30ac, U+30b5-30b6, U+30b9-30ba, U+30bf-30c0, U+30c8-30c9, U+30db-30de, U+30fc, U+4e00, U+4e0a, U+4eba, U+4eca-4ecb, U+4ed5, U+4efb, U+4f1a, U+4f2f, U+4f50, U+4f55, U+5165, U+5185, U+5199, U+5206, U+5237, U+5272, U+5316, U+53e3, U+5408, U+5411, U+548c, U+54c1, U+554f, U+56de, U+58c7, U+5909, U+5e74, U+5f53, U+62c5, U+65b0, U+65e5, U+660e, U+6642, U+6708, U+672c, U+6765, U+67a0, U+683c, U+6b21, U+6b74, U+6cd5, U+73fe, U+7406, U+753b, U+767b, U+771f, U+77ed, U+793e, U+7a93, U+7acb, U+7b54, U+7ba1, U+7d39, U+7d44, U+7d4c, U+7d71, U+7e2e, U+7f8e, U+8005, U+8077, U+88fd, U+8a08, U+8a71, U+8aac, U+8cac, U+8cc7, U+90e8, U+9577, U+9593, U+96fb, U+9854, U+ff0f;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 700;
font-display: block;
src: url(./font-2.woff2) format('woff2');
unicode-range: U+20, U+2f-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-304e, U+3051-3056, U+3059-305c, U+305f-3062, U+3064-3065, U+3068-306b, U+306e, U+307f, U+3089, U+308b-308c, U+308f, U+3092, U+3099-309a, U+30ab-30ac, U+30b5-30b6, U+30b9-30ba, U+30bf-30c0, U+30c8-30c9, U+30db-30de, U+30fc, U+4e00, U+4e0a, U+4eba, U+4eca-4ecb, U+4ed5, U+4efb, U+4f1a, U+4f2f, U+4f50, U+4f55, U+5165, U+5185, U+5199, U+5206, U+5237, U+5272, U+5316, U+53e3, U+5408, U+5411, U+548c, U+54c1, U+554f, U+56de, U+58c7, U+5909, U+5e74, U+5f53, U+62c5, U+65b0, U+65e5, U+660e, U+6642, U+6708, U+672c, U+6765, U+67a0, U+683c, U+6b21, U+6b74, U+6cd5, U+73fe, U+7406, U+753b, U+767b, U+771f, U+77ed, U+793e, U+7a93, U+7acb, U+7b54, U+7ba1, U+7d39, U+7d44, U+7d4c, U+7d71, U+7e2e, U+7f8e, U+8005, U+8077, U+88fd, U+8a08, U+8a71, U+8aac, U+8cac, U+8cc7, U+90e8, U+9577, U+9593, U+96fb, U+9854, U+ff0f;
}
出典を持たない自作パターン。pattern.html が版そのもので、cover.png と frontmatter の
layout / type / colors はどちらもそこから機械的に測った結果。一式「基本の 10 枚」の 1 枚で、
配色は system-project 一式の淡地・濃地と同じ 2 組に揃えてある。
A self-authored pattern. pattern.html is the artboard itself; both cover.png and the
measurements in the frontmatter are derived from it. One of the ten basic slides, drawn in the
same two palettes as the system-project deck so the two can be mixed.