SyntaxHighlighter

ラベル その他 の投稿を表示しています。 すべての投稿を表示
ラベル その他 の投稿を表示しています。 すべての投稿を表示

2017年12月16日土曜日

Outlook のキーワード強調表示用のフォントを作成する

Outlook のキーワード強調表示用のフォントを作成する

LigatureYourName

前回の Outlook でキーワードハイライトを実現する方法の続きです。

LigatureYourName というサイトでフォントを作成することができます。
せっかくなので、 Heroku で WEB サービスとして作成してみました。

フォントの情報

ベースフォント
ベースとなるフォントは、源真ゴシックです。
ライセンス
源真ゴシックに準じ、 SIL Open Font License 1.1 のもとに使用することができます。

その他

  • アルファベットなど、日本語以外の文字ではうまく強調表示されないことがあるようです。
    アプリケーションの描画方法に依存するようですが、理由をご存知でしたら教えてください。
  • 種類は、デフォルトで OpenType (PostScript) です。
    これは、 Windows10 の Creators Update より前では、TrueType 形式のフォントは汚く表示されることがあるためです。
    TrueType 形式が必要な場合、「詳細」欄で選択することができます。
  • このフォントの利用により生じたいかなる損害についても、一切責任を負いません。
    ご自身の責任の範囲でお使いください。

次回は、 LigatureYourName のサイトを作った際の技術的な内容について、まとめる予定です。

Outlook で本文中の固定キーワードを強調表示する方法

Outlook で本文中の固定キーワードを強調表示する方法

はじめに

Outlook は広く使われているメーラーの一つではないかと思いますが、なぜかキーワードハイライトができないようです。
例えば、自分の名前を本文中で常にハイライトしたいのですが、私が探した限り、そういった方法は見つかりませんでした。

以前に使ったことがある Becky!Thunderbird では標準機能やプラグインでサポートされていますので、不便に感じていました。

今回は Outlook で固定キーワードを強調表示する方法についてまとめます。

キーワードハイライトの仕組み

専用フォントによるハイライト

Outlook 用に、専用のフォントを入れ、そのフォントで表示することで実現します。
そのフォントでは、あらかじめ強調したいキーワードの文字だけを太字にしておくなどすることで、疑似的にキーワードハイライトすることができます。
例えば、「ハイライト」というキーワードを白黒反転で強調するような場合、以下のようになります。

このように、あらかじめ指定した「ハイライト」が指定した白黒反転で強調表示されています。
サンプルページで実際の挙動を確認できます。

リガチャ (合字) によるキーワード指定

前掲した例を見ると分かりますが、「ライト」は強調表示されていません。
これは、フォントの「リガチャ (合字)」機能を使って実現しているためです。

Wikipedia の合字ページを見ると分かりますが、リガチャとは欧文などで特定の並びの文字に専用のフォントを指定できるようにする機能です。
よく目にする例では、ff の並びに対し、二つの f がいい具合に合わさったものがあります。

このフォントの機能を活用し、日本語でも特定の並びの文字に対してリガチャを作成することで、疑似的なキーワードハイライトを実現することができます。
今回の例では、「ハイライト」を白黒反転したものを一つのグリフ (字形) として作成し、それを「ハイライト」の文字の並びに対して使うように、リガチャ指定しています。
こういった仕組みのため、部分文字列の「ライト」が強調表示されることはありません。

制限事項

この仕組みでキーワードハイライトを実現する場合、以下のような制限事項があります。

強調するキーワードを動的に変更できない
強調するキーワードを変更する場合、フォントを生成しなおす必要があるので、動的にキーワードを変更することはできません。
リガチャをサポートしている Outlook でのみ使える
具体的には Outlook 2010 以降が必要です。
(Outlook で使う場合) HTML メールの強調には使えない
テキストメールの読み書きに対してしか使えません。
改行がはさまるとリガチャにならない
改行が挟まった場合は、通常の文字として表示されます。

次回は、実際にフォントを作成する方法についてまとめます。

2014年8月17日日曜日

ASCII 文字だけの場合も Windows BAT ファイルを LF 改行コードで保存してはいけない

ASCII 文字だけの場合も Windows BAT ファイルを LF 改行コードで保存してはいけない

とある作業中に気付いた BAT ファイルの謎挙動について、書いておきます。

概要

Windows では、通常テキストファイルの改行コードには CR LF の 2バイトを使います。
プレーンテキストで記述されている BAT ファイルも、当然のことながら CR LF を改行コードに使います。

しかし、実際には改行コードを LF にしても、問題なく動くことが多いです。
よく問題となるのは、日本語を含む BAT ファイルの場合で、改行コード LF で日本語を含むバッチファイルの動作がおかしい件改行コードがLFなバッチファイルなどで、実例が挙がっています。

しかし、最近、ASCII のみで構成された BAT ファイルであっても、改行コードが LF の場合に変な挙動を示すケースに出会いましたので、メモとして残しておきます。

結論としては、当たり前ですが、 CR LF で保存しましょう、ということ以外にないです。
最近は、テストの自動化などで、 Linux サーバーで動くソフトウェアから、 Windows 向けのテスト用 BAT ファイルを生成することもあるかと思いますが、注意しましょう。

再現方法

通常の動作

まずは、下記のような BAT ファイルを考えます。

この BAT ファイルを実行すると、 3行目の goto label で 10行目の :label までジャンプするので、 11行目で "good" が出力されて終了します。

これは、改行コードが LF であっても CR LF であっても、どちらでも同じ結果になります。

奇妙な動作

続いて、下記のような BAT ファイルを考えます。

先の例と比べ、 goto label でスキップされる部分に文字列を追加しただけなので、本質的な違いはありません。
そのため、実行すると "good" が出力されることが期待されます。

しかし、これを改行コードを LF として保存すると、 "bad" が出力されます。

BAT ファイルの謎の挙動

上述したことが起こるのは、 3行目の goto label と 14行目末尾の :label の間に 512 バイト (改行コード LF 含む) がある場合です。
より正確には、 512, 1024 など、512 の倍数が含まれている場合です。

この場合、どうやら 14行目末尾の :label をラベルと誤認するようです。

改行コードが LF の場合、これ以外にも 3行目の goto label と 19行目の :label の間が 512バイト (改行コード LF 含む) 付近の場合、 :label を見つけるのに失敗し、 goto label に失敗します。

そもそも BAT ファイルには意味不明な挙動が多いですが、うっかり改行コードを LF にすると、さらに謎の挙動に悩まされることになるので、 Linux サーバーなどで BAT を生成する場合は、注意しましょう。

追記

ちなみに、「とある作業」とは、 Windows 上での Ruby のビルドのことです。
Ruby をソースコードからコンパイルする際に、この現象に出会いました。

Revision 47015 から Revision 47204 までの間、 Subversion の EOL の扱いに起因して、ダウンロードのやり方によっては win32\configure.bat が LF になってしまっていました。
私が指定したコマンドラインオプションの場合、今回の現象が偶然に起こっていました。
現象を単純化するのにとても疲れました。

改行コードそのものは Revision 47205 で修正していただけました。

2012年4月9日月曜日

YouTube に動画をアップロードしてみました

YouTube に動画をアップロードしてみました

長い間、記事を書いていなかったので、内容はないですが、 YouTube に初めて動画をアップロードしてみたので載せます。

動画の説明

Subversion

Git, Mercurial など、分散型のバージョン管理システムがはやってきていますが、習得の容易さや、切り替えのコストなどの理由から、特に会社などでは Subversion もまだまだ使われているようです。

Subversion は、 Apache が開発していることもあり、標準で Apache 経由での HTTP によるリポジトリの公開ができます。

ブラウザでのリポジトリの表示

ブラウザで、 Subversion のリポジトリにアクセスすると、最新のリビジョンの内容を表示させることができます。 また、 p=1234 のようなオプションを URL に付けると、任意のリビジョンを指定して表示させることもできます。

しかし、ログや変更日時、作者やファイルサイズなどは、標準では表示されません。

私としては、ログを表示できないのはかなり不満です。

そういうわけで、 TortoiseSVN のリポジトリビューのようなものを、ブラウザ内で実現してみました。

こちらは、そのサンプル動画です。

暇があればきちんと書いて公開し、説明を書こうと思います。

2011年11月5日土曜日

ブログを始めてみました

ブログを始めてみました

プログラミングに関する覚え書きなどを書くスペースがほしかったので、ブログを始めてみました。