-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdoc-fss.ja.saty
315 lines (310 loc) · 9.97 KB
/
doc-fss.ja.saty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
@require: stdjabook
@require: code
@require: itemize
@require: fss/fss
@require: fss/fonts
@require: fss/style
@require: fss-fontset-bodoni-star/fontset
let-block ctx +frame content =
let pads = (10pt, 10pt, 10pt, 10pt) in
let decoset = VDecoSet.simple-frame-stroke 1pt (Color.gray 0.75) in
block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx content)
let-block ctx +display-boxes content code =
read-block (ctx |> set-paragraph-margin 12pt 0pt) '<+frame(content);>
+++ read-block (ctx |> set-paragraph-margin 0pt 12pt) '<+code(code);>
%in
%
%let () = Fss.set-debug-level 100
in
document (|
title = {satysfi-fss};
author = {\code(`@na4zagin3`);};
show-title = true;
show-toc = false;
|) '<
+p {
\font-style[bold]{警告}
まだ実験段階のパッケージであり、APIが大きく変更されるおそれがあります。
}
+section{忙しい人の為の概要} <
+p {
まず、\code(`fss/fss`);パッケージと\code(`fss/style`);パッケージをインポートすること。
}
+code (`
@require: fss/fss
@require: fss/style
`);
+p {
\code(`\font-style[スタイル; スタイル; ...]{インラインテキスト}`);
や
\code(`+font-style[スタイル; スタイル; ...]<ブロックテキスト>`);
で適用するスタイルを切り替えることができる。
}
+frame <
+p {
regular,
\font-style[font-size 16pt]{
regular 16pt,
}
\font-style[bold; italic]{
bold italic,
}
regular
}
>
+code(`
+p {
regular,
\font-style[font-size 16pt]{
regular 16pt,
}
\font-style[bold; italic]{
bold italic,
}
regular
}
`);
+p {
スタイル指定は入れ子になる。
}
+frame <
+p {
regular,
\font-style[bold]{
bold,
\font-style[italic]{
bold italic,
\font-style[medium]{
italic,
\font-style[upright]{
regular,
}
italic,
}
bold italic,
}
bold,
}
regular
}
>
+code(`
+p { % Medium Upright
regular,
\font-style[bold]{ % Bold Upright
bold,
\font-style[italic]{ % Bold Italic
bold italic,
\font-style[medium]{ % Medium Italic
italic,
\font-style[upright]{ % Medium Upright
regular,
}
italic,
}
bold italic,
}
bold
}
regular
}
`);
+p {
以下の様にスタイルは複数指定可能である。
}
+frame <
+font-style[bold]<
+p {
bold,
\font-style[medium; italic]{
italic,
}
bold
}
>
>
+code(`
+font-style[bold]<
+p {
bold,
\font-style[medium; italic]{
italic,
}
bold
}
>
`);
+p {
オプティカルサイズにも対応している。
}
+frame <
+font-style[font-set bodoni-star-font-set]<
+p {
\font-style[font-size 6pt]{6pt,}
\font-style[font-size 11pt]{11pt,}
\font-style[font-size 16pt]{16pt,}
\font-style[font-size 24pt]{24pt,}
\font-style[font-size 36pt]{36pt
\font-style[italic]{italic,}
}
\font-style[font-size 48pt]{48pt
\font-style[bold; italic]{bold italic,}
}
\font-style[font-size 72pt]{
72pt
\font-style[bold]{bold.}
}
}
>
>
+code(`
+font-style[font-set bodoni-star-font-set]<
+p {
\font-style[font-size 6pt]{6pt,}
\font-style[font-size 11pt]{11pt,}
\font-style[font-size 16pt]{16pt,}
\font-style[font-size 24pt]{24pt,}
\font-style[font-size 36pt]{36pt \font-style[italic]{italic,}}
\font-style[font-size 48pt]{48pt
\font-style[bold; italic]{bold italic,}}
\font-style[font-size 72pt]{72pt \font-style[bold]{bold.}
}
}
>
`);
>
+section{文書作成者向け解説} <
+p {
本パッケージは、スタイル変更キーワード群と
スタイル変更キーワードを適用する\code(`font-style`);コマンドを提供する。
}
+code (`
\font-style[キーワード; キーワード; ...]{インラインテキスト}
+font-style[キーワード; キーワード; ...]<ブロックテキスト>
`);
+subsection{フォントスタイル} <
+p {
フォントスタイルは大きさ・幅・太さ等の軸によりなっており、各軸を独立に変更することができる。
}
+frame <
+font-style[bold]<
+p {
bold,
\font-style[italic]{
bold italic,
}
bold
}
>
>
+code(`
+font-style[bold]<
+p {
bold,
\font-style[italic]{
bold italic,
}
bold
}
>
`);
+p {
以下のスタイル変更キーワードが\code(`fss/style`);パッケージに用意されている。
}
>
+listing {
* 大きさ軸:
** \code(`font-size : length -> style`); 指定された大きさに設定。
** \code(`with-font-size : (length -> length) -> style`); 現在の大きさを指定された函数に適用し、その返り値を大きさとして設定。
* 太さ軸:
** \code(`medium : style`); 中字に設定
** \code(`bold : style`); 太字に設定
* 書体軸:
** \code(`upright : style`); 立体に設定
** \code(`italic : style`); イタリック体に設定
}
+subsection{フォントセット} <
+p {
フォントセットは、フォントスタイルの各軸により張られる空間から実際のフォントへの写像である。
\code(`font-set`);キーワードにより適用するフォントセットを変更することができる。
}
+p {
\SATySFi; 0.0.5用の現バージョンにおいては、各フォントセットには対応書字体系が設定されており、
\code(`font-set`);キーワードは書字体系毎にフォントを上書きする。
}
+p {
現バージョンで用意されているフォントセットを以下に示す。
}
+listing {
* \code(`Fonts.default-font-set`);
(\code(`fss/fonts`);パッケージ)
\SATySFi;デフォルト文書クラスを摸したフォントセット。欧文にはJunicode (Regular, Bold, Italic, Bold Italic)を、和文
にはIPAexフォント(Medium Uprightスタイルでは\code(`ipaexm`);、
Bold乃至Italicスタイルでは\code(`ipaexg`);)が用いられる。
* \code(`Fonts.default-font-set-ja`);
(\code(`fss/fonts`);パッケージ)
\code(`Fonts.default-font-set`);の和文部分のみ。
* \code(`Fonts.default-font-set-la`);
(\code(`fss/fonts`);パッケージ)
\code(`Fonts.default-font-set`);の欧文部分のみ。
* \code(`bodoni-star-font-set`);
(\code(`fss-fontset-bodoni-star/fontset`);パッケージ)
オプティカルサイズフォントであるBodoni\*用の欧文フォントセット。
}
>
+subsection{上手く行かない時} <
+p {
文書の先頭で\code(`Fss.set-debug-level`);を設定すると、詳細なログが残るようになる。ログレベルが大きい程ログが詳細になる。
}
+code(`
let () = Fss.set-debug-level % 0 から 10 までの自然数
in
>
document (| ... |) < ... >
`);
>
>
+section{ライブラリ作成者向け解説・注意} <
+p {
フォントセットとフォントスタイルは\SATySFi;コンテキストではなく\code(`ffs/mutable`);パッケージ内の可変変数に格納されている。
}
>
+section{課題} <
+subsection{`emph`キーワード} <
+p {
\LaTeX;の`\emph`は`n`と`it`を交替で適用する。
また、理想的には、
イタリック体の代わりに、
日本語ではサンセリフ体・ゴシック体への書体変更乃至圏点の付与により、
ドイツ語(ブラックレター)やグルジア語では隔字体で実現されるべきであろう。
これを実装するにはどうすればよいのだろうか。
}
>
+subsection{フォントセットとフォントスタイルのコンテキストへの格納} <
+p {
\SATySFi; Confでgfnさんが発表されていたように、コンテキストを拡張可能にする計画がある。
実現した暁にはフォントセットとフォントスタイルもコンテキストに格納されるべきである。
}
>
+subsection{多言語組版} <
+p {
\SATySFi;は書記体系毎にフォントを自動で切替する機能があり、これとフォントセットを整合的に定義するのは自明ではない。
}
+p {
また、言語切替もffsパッケージが認知しなければならない。
}
>
+subsection{フォールバック} <
+p {
完全にマッチするフォントが見つからなかった場合に利用者に通知せねばならない。
どうするのが最善なのだろうか。
}
>
+subsection{動作速度} <
+p {
フォントセットに属するフォント数が小さいうちは問題がないだろうが、多くなってくると
最適化する必要があると思われる。
}
>
>
>