徹底攻略！“SATySFiのロゴ”の出し方

**SATySFiのロゴ**といえば、もちろんコレですね。

![image-1a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/28081da3-2fd0-7098-cea3-9515fa47157f.png)

「ロゴ」といってもこれはソフトウェアの名前の表記（の一種）であるため、文章中でも普通に使われることがあります。（もちろん「ロゴ」を使わずに「SATySFi」と表記することも可能です。）

![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/5d8493ef-4fd6-3b2e-a24e-0ff4ead2358d.png)

「ロゴ」の特徴を形成しているのは文字の配置だけなので、文字についてのその他の特徴、例えば書体や色は周りのテキストに合わせる必要があります。

![image-1dt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/3452d88f-b667-9f95-660a-0e4eac76271b.png)

というわけで、本記事では、各種文書環境（ソフトウェア）においてSATySFiのロゴを**「装飾入りの文字列として」**表す方法を解説します。

## SATySFiでSATySFiロゴしよう！

SATySFiのロゴの話ですから、やっぱりSATySFiから始めるべきですね。

標準の文書クラス（stdja～）では、SATySFiのロゴを出力するための`\SATySFi`というインライン命令が用意されています。

```text:sample-1.saty
@require: stdjareport
document (|
  title = {アレのロゴ}; author = {某ZR};
|) '<
  +p {Merry \SATySFi;!}
>
```

![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/5d8493ef-4fd6-3b2e-a24e-0ff4ead2358d.png)

この`\SATySFi`という命令を定義しているのはpervasivesという標準パッケージです。なので、自作の文書クラスを使う場合でもこのpervasivesを読み込むと`\SATySFi`が使えるようになります。

```text
@require: pervasives
```

ちなみに、pervasivesパッケージにおける`\SATySFi`の定義は以下の通りです。

```text:pervasives.satyh中の定義
let kern len = inline-skip (0pt -' len)
let no-break ib =
  inline-frame-outer (0pt, 0pt, 0pt, 0pt) (fun _ _ _ _ -> []) ib
let-inline ctx \SATySFi =
  let size = get-font-size ctx in
  let f = read-inline ctx in
  let fd = ctx |> set-manual-rising (0pt -' (size *' 0.25)) |> read-inline in
  let ib =
    f {SAT} ++ kern (size *' 0.15) ++ fd {Y} ++ f {SF} ++ kern (size *' 0.05) ++ fd {I}
  in
    script-guard Latin (no-break ib)
```

## LaTeXででSATySFiロゴしよう！

LaTeXでは[bxtexlogo]というパッケージが「SATySFiのロゴ」（およびTeX関連のさまざま“ロゴ”）を出力する機能を提供しています。プレアンブルに次のように書いておくと`\SATySFi`で「SATySFiのロゴ」が出力できます。

[bxtexlogo]: https://www.ctan.org/pkg/bxtexlogo

```tex
\usepackage{bxtexlogo}
\bxtexlogoimport{SATySFi}% \SATySFi を"インポート"する
```

※bxtexlogoパッケージではSATySFiだけでなく他の多くのTeX関連のロゴを出力する機能を備えています。不要な命令を定義してしまうのを避けるため、必要な命令だけを`\bxtexlogoimport`という命令で定義するという仕組になっています。

bxtexlogoを使った例をみてみましょう。

```tex:sample-2.tex
\documentclass[a4paper]{article}
\usepackage{bxtexlogo}
\bxtexlogoimport{SATySFi}
\begin{document}
Merry \SATySFi!
\end{document}
```

![image-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/6a7a336d-ca48-acaa-7e10-547163632c99.png)

SATySFiでの実装と比べてみると、少し字が詰まり気味です。これはbxtexlogoの他のロゴの“詰まり具合”と合わせたからです。SATySFiでの実装に合わせたい場合は、次のような感じで、自分で（TeX言語で）実装することになります。

```tex:sample-3.tex
\documentclass[a4paper]{article}
\makeatletter %!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN
\newcommand*{\SATySFi}{%
  \leavevmode\hbox{%
    \@tempdima=\f@size\p@
    SAT\kern-.15\@tempdima\lower.25\@tempdima\hbox{Y}%
    SF\kern-.05\@tempdima\lower.25\@tempdima\hbox{I}}}
\makeatother  %!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END
\begin{document}
Merry \SATySFi!
\end{document}
```

![image-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/9252cebb-a12f-922d-f5be-7c4f886d40d1.png)

※もちろん実際の“詰まり具合”についてはフォントの種類にも強く依存します。

## HTML＋CSSでSATySFiロゴしよう！

HTML中のテキストの「SATySFi」について、「y」と「i」をspanで囲って以下のようなCSSを適用すると、SATySFiのロゴとして出力されます。

```css:CSS
.y {
  line-height: 0; text-transform: uppercase;
  margin-left: -0.15em; vertical-align: -0.25em;
}
.i {
  line-height: 0; text-transform: uppercase;
  margin-left: -0.05em; vertical-align: -0.25em;
}
```

```html:HTML
<p>Merry SAT<span class="y">y</span>SF<span class="y">i</span>!</p>
```

![image-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/8b1b4045-627d-45c1-1f07-2e396c7de090.png)

※「y」「i」にtext-transformを適用しているため、見た目は大文字の「Y」「I」となりますが、テキスト情報としては適切な「SATySFi」となっています。

## Microsoft WordでSATySFiロゴしよう！

Word 2016の場合、こんな感じです（説明サボり）。
他のバージョンでも同じ感じでしょう（説明サボり）。

![image-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14550/4d7e91d2-6d42-757d-dca7-6e1dc57556ae.png)

※「T」に「文字間隔＝狭く」「間隔＝1.5pt」、「F」に「文字間隔＝狭く」「間隔＝0.5pt」、「Y」と「I」に「位置＝下げる」「間隔＝2pt」を設定しています[^word]。

[^word]: Wordにおいて、ある文字に対する「文字間隔」の設定は次の文字との間に適用されるようです。だから「T」と「Y」の間を詰めたいときは、「T」に文字間隔を設定します。

## Qiita MarkdownでSATySFiロゴしよう！

```text
$\def\NF#1{\style{font:100% Segoe UI, Helvetica Neue, sans-serif}{#1}}
\def\mySATySFi{\NF{S}\NF{A}\NF{T}\kern-.15em\lower.25em{\NF{Y}}\NF{S}\NF{F}\kern-.05em\lower.25em{\NF{I}}}
$Merry $\mySATySFi$!
```

$\def\NF#1{\style{font:100% Segoe UI, Helvetica Neue, sans-serif}{#1}}
\def\mySATySFi{\NF{S}\NF{A}\NF{T}\kern-.15em\lower.25em{\NF{Y}}\NF{S}\NF{F}\kern-.05em\lower.25em{\NF{I}}}
$Merry $\mySATySFi$!

※よい子のみんなは真似しないでね！

## まとめ

SATySFiロゴの熱狂的なファンではない一般人は、**無理せずに普通に「SATySFi」と書きましょう！** （[またか][texlogo]）

[texlogo]: https://qiita.com/zr_tex8r/items/fcfbc27a083d335ef356